﻿// JScript File
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function Now() {
    var d = new Date();
    var str = d.getDate() + '/' + (d.getMonth() + 1) + '/' + d.getFullYear();
    return str;
}

function DateDiffrent( strDate1, strDate2 ) {
    var result = 0;
    var date1 = Date.parse(DateChangeFormat(strDate1));
    var date2 = Date.parse(DateChangeFormat( strDate2 ));
  
    result = (date1-date2) / (24*60*60*1000*365);
    return result;
}

function DateChangeFormat( strDate ) {
    var arr = new Array();
    arr = strDate.split('/');
    var newDate = arr[1] + '/' + arr[0] + '/' + arr[2];
    return newDate;
}

//DateAdd("y",-27,"10/07/2006")
function DateAdd(timeU,byMany,dateObj) {
	var millisecond=1;
	var second=millisecond*1000;
	var minute=second*60;
	var hour=minute*60;
	var day=hour*24;
	var year=day*365;

	var newDate;
	var dVal=dateObj.valueOf();
	switch(timeU) {
		case "ms": newDate=new Date(dVal+millisecond*byMany); break;
		case "s": newDate=new Date(dVal+second*byMany); break;
		case "mi": newDate=new Date(dVal+minute*byMany); break;
		case "h": newDate=new Date(dVal+hour*byMany); break;
		case "d": newDate=new Date(dVal+day*byMany); break;
		case "y": newDate=new Date(dVal+year*byMany); break;
	}
	return newDate;
}

function isInteger(s){
var i;
for (i = 0; i < s.length; i++){   
	// Check that current character is number.
	var c = s.charAt(i);
	if (((c < "0") || (c > "9"))) return false;
}
// All characters are numbers.
return true;
}

function stripCharsInBag(s, bag){
var i;
var returnString = "";
// Search through string's characters one by one.
// If character is not in bag, append to returnString.
for (i = 0; i < s.length; i++){   
	var c = s.charAt(i);
	if (bag.indexOf(c) == -1) returnString += c;
}
return returnString;
}

function daysInFebruary (year){
// February has 29 days in any year evenly divisible by four,
// EXCEPT for centurial years which are not also divisible by 400.
return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
for (var i = 1; i <= n; i++) {
	this[i] = 31;
	if (i==4 || i==6 || i==9 || i==11) {this[i] = 30;}
	if (i==2) {this[i] = 29;}
} 
return this
}

function isDate(dtStr){
var daysInMonth = DaysArray(12);
var pos1=dtStr.indexOf(dtCh);
var pos2=dtStr.indexOf(dtCh,pos1+1);
var strDay=dtStr.substring(0,pos1);
var strMonth=dtStr.substring(pos1+1,pos2);
var strYear=dtStr.substring(pos2+1);
strYr=strYear;
if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
for (var i = 1; i <= 3; i++) {
	if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
}
month=parseInt(strMonth);
day=parseInt(strDay);
year=parseInt(strYr);
if (pos1==-1 || pos2==-1){
	//alert("The date format should be : mm/dd/yyyy")
	return false;
}
if (strMonth.length<1 || month<1 || month>12){
	//alert("Please enter a valid month")
	return false;
}
if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
	//alert("Please enter a valid day")
	return false;
}
if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
	//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
	return false;
}
if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
	//alert("Please enter a valid date")
	return false;
}
return true;
}


//For My Custom Validator
function IsDateValid(sender, args) {
if(isDate(args.Value))
	args.IsValid=true;
 else 
	args.IsValid=false;
}

//var gsMonthNames = new Array(
//    'January',
//    'February',
//    'March',
//    'April',
//    'May',
//    'June',
//    'July',
//    'August',
//    'September',
//    'October',
//    'November',
//    'December'
//);


//var gsDayNames = new Array(
//    'Sunday',
//    'Monday',
//    'Tuesday',
//    'Wednesday',
//    'Thursday',
//    'Friday',
//    'Saturday'
//);

//Date.prototype.format = function(f)
//{
//    if (!this.valueOf())
//        return '&nbsp;';

//    var d = this;

//    return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a\/p)/gi,
//        function($1)
//        {
//            switch ($1.toLowerCase())
//            {
//            case 'yyyy': return d.getFullYear();
//            case 'mmmm': return gsMonthNames[d.getMonth()];
//            case 'mmm':  return gsMonthNames[d.getMonth()].substr(0, 3);
//            case 'mm':   return (d.getMonth() + 1).zf(2);
//            case 'dddd': return gsDayNames[d.getDay()];
//            case 'ddd':  return gsDayNames[d.getDay()].substr(0, 3);
//            case 'dd':   return d.getDate().zf(2);
//            case 'hh':   return ((h = d.getHours() % 12) ? h : 12).zf(2);
//            case 'nn':   return d.getMinutes().zf(2);
//            case 'ss':   return d.getSeconds().zf(2);
//            case 'a/p':  return d.getHours() < 12 ? 'a' : 'p';
//            }
//        }
//    );
//}



