//-----------------------------------------------------------------------------------------
// date: 06/13/2003. 1.0. Validate functions - moving to body of HTML.
// date: 07/08/2003. 1.1. Added default for century.
//-----------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------------  
// JScript source code

function checkdate(objName) 
{
	var datefield = objName;

	if (chkdate(objName) == false) 
	{
		datefield.select();
		alert("That date is invalid (format is mm/dd/yyyy). Please try again.");
		datefield.focus();
		return false;
	}
	else 
	{
		return true;
	}
}

//-----------------------------------------------------------------------------------------  

function chkdate(objName) 
{
	var strDatestyle = "US"; //United States date style
	
//var strDatestyle = "EU";  //European date style

	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	
	strMonthArray[0] = "01";
	strMonthArray[1] = "02";
	strMonthArray[2] = "03";
	strMonthArray[3] = "04";
	strMonthArray[4] = "05";
	strMonthArray[5] = "06";
	strMonthArray[6] = "07";
	strMonthArray[7] = "08";
	strMonthArray[8] = "09";
	strMonthArray[9] = "10";
	strMonthArray[10] = "11";
	strMonthArray[11] = "12";
	strDate = datefield.value;
	
	if (strDate.length < 1) 
	{
		return true;
	}
	
	if (strDate.length < 6) 
	{
		return false;
	}

	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) 
	{
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) 
		{
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
		
			if (strDateArray.length != 3) 
			{
				err = 1;
				return false;
			}
			else 
			{
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			booFound = true;
		}
	}
	
	if (booFound == false) 
	{
		if (strDate.length > 5) 
		{
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
		}
	}
	
	if (strYear.length == 2)
	{ 
		if (strYear < 12)	{	strYear = '20' + strYear;	}
		else				{	strYear = '19' + strYear;	}
	}
// US style
	if (strDatestyle == "US") 
	{
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}
	
	intday = parseInt(strDay, 10);
	
	if (isNaN(intday)) 
	{
		err = 2;
		return false;
	}

	intMonth = parseInt(strMonth, 10);
	
	if (isNaN(intMonth)) 
	{
		for (i = 0;i<12;i++) 
		{
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) 
			{
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}

		if (isNaN(intMonth)) 
		{
			err = 3;
			return false;
		}
	}
	
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) 
	{
		err = 4;
		return false;
	}
	
	if (intMonth > 12 || intMonth < 1) 
	{
		err = 5;
		return false;
	}
	
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) 
	{
		err = 6;
		return false;
	}
	
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) 
	{
		err = 7;
		return false;
	}

	if (intMonth == 2) 
	{
		if (intday < 1) 
		{
			err = 8;
			return false;
		}

		if (LeapYear(intYear) == true) 
		{
			if (intday > 29) 
			{
				err = 9;
				return false;
			}
		}
		else 
		{
			if (intday > 28) 
			{
				err = 10;
				return false;
			}
		}
	}

	var strday = String(intday);
	
	if (strday.length == 1)
	strday = "0" + strday;  

	if (strDatestyle == "US") 
	{
		datefield.value = strMonthArray[intMonth-1] + "/" + strday+"/" + strYear;
	}
	else 
	{
		datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
	}

	return true;
}

//-----------------------------------------------------------------------------------------  

function LeapYear(intYear) 
{
	if (intYear % 100 == 0) 
	{
		if (intYear % 400 == 0) { return true; }
	}
	else 
	{
		if ((intYear % 4) == 0) { return true; }
	}

	return false;
}

//-----------------------------------------------------------------------------------------  

function doDateCheck(from, to) {
if (Date.parse(from.value) <= Date.parse(to.value)) {
alert("The dates are valid.");
}
else {
if (from.value == "" || to.value == "") 
alert("Both dates must be entered.");
else 
alert("To date must occur after the from date.");
   }
}
//  End -->

//-----------------------------------------------------------------------------------------  

function IsDate(DateValue)
{
var checkstr = "0123456789";
var DateTemp = "";
var seperator = "/";
var day;
var month;
var year;
var leap = 0;
var err = 0;
var i;

	/* Delete all chars except 0..9 */
   for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
   }
   DateValue = DateTemp;
   /* Always change date to 8 digits - string*/
   /* if year is entered as 2-digit / always assume 20xx */
   //if (DateValue.length == 6) {
   //   DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
   if (DateValue.length != 8) {
      err = 19;}
   /* year is wrong if year = 0000 */
   year = DateValue.substr(4,4);
   if (year == 0) {
      err = 20;
   }
   /* Validation of month*/
   month = DateValue.substr(0,2);
   if ((month < 1) || (month > 12)) {
      err = 21;
   }
   /* Validation of day*/
   day = DateValue.substr(2,2);
   if (day < 1) {
     err = 22;
   }
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }
//alert(err);
   if (err == 0)
	return (true);
   else
	return (false);
}

//-----------------------------------------------------------------------------------------  
// Ascii 48 is '0', Ascii 57 is '9'.
//
// 	add for debugging : alert(window.event.keyCode);
//-----------------------------------------------------------------------------------------  

function NumericOnly()
{
	window.event.cancelBubble = true;

	if (window.event.keyCode < 48 ||  window.event.keyCode > 57)
		window.event.keyCode = 0;
}

//-----------------------------------------------------------------------------------------  

function isPosInteger(inputVal) 
{
 
	inputStr = inputVal.toString()
	for (var i = 0; i < inputStr.length; i++) 
		{
		var oneChar = inputStr.charAt(i)
		if (oneChar < "0" || oneChar > "9") 
			return false;
		}
		return true;
}

//-----------------------------------------------------------------------------------------  

function isPositiveNumber(inputVal)
{

oneDecimal = false
inputStr = inputVal.toString()
	for (var i = 0; i < inputStr.length; i++) 
		{
			var oneChar = inputStr.charAt(i)

			if (oneChar == "." && !oneDecimal) 
			{
			oneDecimal = true
			continue
			}
		if ((oneChar < "0" || oneChar > "9" )&& oneChar != ",") 
			{
			return false
			}
		}
	return true
}
