// Declaring valid date character, minimum year and maximum year
//var dtCh= "-";
//var minYear=1900;
//var maxYear=2100;

//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, dtCh){
    var dtCh = dtCh ? dtCh : '-';
    
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strYear=dtStr.substring(0,pos1);
	var strMonth=dtStr.substring(pos1+1,pos2);
	var strDay=dtStr.substring(pos2+1);
	strYr=strYear;

	strYr=strYear;

	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);

	if ((month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false;
	}

    return true;
};

function buildYYYYMMDDDate(day, month, year){
  	var day = '' + day;
  	var month = '' + month;
  	
  	if(parseInt(year) < 100){
  		year = 2000 + parseInt(year);
  	}
    while(month.length < 2){
       month = '0' + month;
    }
    while(day.length < 2){
       day = '0' + day;
    }

    return ''+ year + month + day;
};

function buildSQLDate(day, month, year){
    while(month.length < 2){
       month = '0' + month;
    }
    while(day.length < 2){
       day = '0' + day;
    }

    return year + '-' + month + '-' + day;
};

function dayOfWeek(day, month, year){

    val1 = parseInt(day);
    if ((val1 < 0) || (val1 > 31)) {
        return -1;
    }

    val2 = parseInt(month, 10);
    if ((val2 < 0) || (val2 > 12)) {
        return -1;
    }
    val2x = parseInt(month, 10);
    val3 = parseInt(year, 10);
    if (val2 == 1) {
        val2x = 13;
        val3 = val3-1;
    }
    if (val2 == 2) {
        val2x = 14;
        val3 = val3-1;
    }
    val4 = Math.floor(((val2x+1)*3)/5);
    val5 = Math.floor(val3/4);
    val6 = Math.floor(val3/100);
    val7 = Math.floor(val3/400);
    val8 = val1+(val2x*2)+val4+val3+val5-val6+val7+2;
    val9 = Math.floor(val8/7);
    val0 = val8-(val9*7);

    //calculated day of week starts with 0 as Saturday. Adjust so that week
    //starts on Sunday
    weekday = val0 - 1;
    if(weekday < 0){
      weekday = 6;
    }
    return weekday;
};

function daysInMonth(month, year) {
   var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
   if (month != 2){
     return daysInMonth[month - 1];
   }
   return daysInFebruary(year);
};

function daysInFeb(year){

   //$year must be YYYY
   //[gregorian] leap year math :

   if (year < 0) year++;
   year += 4800;

   if ( (year % 4) == 0) {
       if ((year % 100) == 0) {
           if ((year % 400) == 0) {
               return(29);
           } else {
               return(28);
           }
       } else {
           return(29);
       }
   } else {
       return(28);
   }
};
