function chkdate(objName) 
{
  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] = "Jan";
  strMonthArray[1] = "Feb";
  strMonthArray[2] = "Mar";
  strMonthArray[3] = "Apr";
  strMonthArray[4] = "May";
  strMonthArray[5] = "Jun";
  strMonthArray[6] = "Jul";
  strMonthArray[7] = "Aug";
  strMonthArray[8] = "Sep";
  strMonthArray[9] = "Oct";
  strMonthArray[10] = "Nov";
  strMonthArray[11] = "Dec";
  strDate = datefield;
  if (strDate.length < 1)
    return true;

  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;
    }
  }
  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;
      }
    }
  }
  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, msg) 
{
  if (Date.parse(from.value) <= Date.parse(to.value)) 
    return true;
  else 
  {
    if (from.value == "" || to.value == "") 
      alert("Both dates must be entered.");
    else 
    {
      alert(msg);
      return false;
    }
  }
}

function checkDates(from, to, msg) 
{
	var fromDate = new Date(from.value);
	var toDate = new Date(to.value);
	if ( fromDate > toDate)
	{
		return false;
	}
	else
		return true;
}

function validateStartEndDate( startString, endString, msgAlert )
{
	var dtCh = "/";
	var pos1 = startString.indexOf(dtCh);
	var pos2 = startString.indexOf(dtCh,pos1+1);
	var sday = startString.substring(0,pos1);
	var smonth = startString.substring(pos1+1,pos2);
	var syear = startString.substring(pos2+1);
	if( syear.length == 2 )
	  syear = "20" + syear;

	pos1 = endString.indexOf(dtCh);
	pos2 = endString.indexOf(dtCh,pos1+1);
	var eday = endString.substring(0,pos1);
	var emonth = endString.substring(pos1+1,pos2);
	var eyear = endString.substring(pos2+1);
	if( eyear.length == 2 )
	  eyear = "20" + eyear;

	var startDate = new Date( syear, smonth - 1, sday, 1, 0, 0 );
	var endDate   = new Date( eyear, emonth - 1, eday, 1, 0, 0 );
	//alert(sday+" " +smonth+" " + syear+" " +eday+" " +emonth+" " + eyear + "\n" +startDate + " " + endDate + "\n" +startDate.getDate() + " " +(startDate.getMonth()+1)+" "+ startDate.getYear() + "  "+endDate.getDate()+" " + (endDate.getMonth()+1)+" "+endDate.getYear());

	if(endDate < startDate)
	{
		alert(msgAlert);
		return false;
	}
	else
		return true;	
}

function validateStartEndDateMaxYears( startString, endString, nMaxTime, strMaxTimeUnits, msgAlert )
{
	//alert("nMaxTime="+nMaxTime+" strMaxTimeUnits="+strMaxTimeUnits);
	var dtCh = "/";
	var pos1 = startString.indexOf(dtCh);
	var pos2 = startString.indexOf(dtCh,pos1+1);
	var sday = startString.substring(0,pos1);
	var smonth = startString.substring(pos1+1,pos2);
	var syear = startString.substring(pos2+1);
	//alert("sday="+sday+" smonth="+smonth+" syear="+syear);

  var startDate = new Date();	
	if (strMaxTimeUnits == "Years" || strMaxTimeUnits == "years" || strMaxTimeUnits == "Year" || strMaxTimeUnits == "year")
	{
	  // add number of years and then turn into a date
	  syear = parseInt(syear) + parseInt(nMaxTime);
	  startDate.setYear(( syear * 1 ));
	  startDate.setMonth(smonth - 1);
	  startDate.setDate(sday);
	  //alert("years add: sday="+sday+" smonth="+smonth+" syear="+syear); 	
	}
	else if (strMaxTimeUnits == "Months" || strMaxTimeUnits == "months" || strMaxTimeUnits == "Month" || strMaxTimeUnits == "month")
	{
		// call parseInt using base-10 values to avoid leading zero bug (ie the zero in front is trying to tell the browser that this is an octal (base-8) number)
		// http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256C85006A6604
	  smonth = parseInt(smonth, 10) + parseInt(nMaxTime);
	  if (smonth > 12)
	  {
	    smonth = parseInt(smonth) - 12;
	    syear = parseInt(syear) + 1;
	  }
	  //alert("months add: sday="+sday+" smonth="+smonth+" syear="+syear); 	
	  startDate.setYear(( syear * 1 ));
	  startDate.setMonth(smonth - 1);
	  startDate.setDate(sday);
	  //alert("months add: startDate="+startDate); 	
	}
	else if (strMaxTimeUnits == "Days" || strMaxTimeUnits == "days" || strMaxTimeUnits == "Day" || strMaxTimeUnits == "day")
	{
	  // turn into date and add number of days
	  startDate.setYear(( syear * 1 ));
	  startDate.setMonth(smonth - 1);
	  startDate.setDate(sday);
    startDate.setDate(startDate.getDate() + parseInt(nMaxTime));
	  alert("days added: "+startDate);
	}

	pos1 = endString.indexOf(dtCh);
	pos2 = endString.indexOf(dtCh,pos1+1);
	var eday = endString.substring(0,pos1);
	var emonth = endString.substring(pos1+1,pos2);
	var eyear = endString.substring(pos2+1);
  //alert("eday="+eday+" emonth="+emonth+" eyear="+eyear);
  
	var endDate = new Date();
	/*
	endDate.setYear(eyear);
	endDate.setMonth(emonth - 1);
	endDate.setDate(eday);
	*/
	endDate.setFullYear(eyear, emonth - 1, eday);
  //alert( "endDate=" + startDate + " endDate=" + endDate + "");
	if (endDate > startDate)
	{	  
		alert(msgAlert);
		return false;
	}
	else
		return true;	
}

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function daysElapsed(date1,date2) {
    //alert( "d1[ " + date1 + " ] d2[ " + date2 + " ]");
    var difference =
        Date.UTC(y2k(date1.getYear()),date1.getMonth(),date1.getDate(),0,0,0)
      - Date.UTC(y2k(date2.getYear()),date2.getMonth(),date2.getDate(),0,0,0);
    //alert(difference);
    return difference/1000/60/60/24;
}

function validateStartEndDateMaxDays( startString, endString, nMaxDays, msgAlert )
{
	var dtCh = "/";
	var pos1 = startString.indexOf(dtCh);
	var pos2 = startString.indexOf(dtCh,pos1+1);
	var sday = startString.substring(0,pos1);
	var smonth = startString.substring(pos1+1,pos2);
	var syear = startString.substring(pos2+1);

	pos1 = endString.indexOf(dtCh);
	pos2 = endString.indexOf(dtCh,pos1+1);
	var eday = endString.substring(0,pos1);
	var emonth = endString.substring(pos1+1,pos2);
	var eyear = endString.substring(pos2+1);

	var startDate = new Date();
	/*
	startDate.setYear( syear );
	startDate.setMonth( smonth - 1 );
	startDate.setDate( sday );
	*/
	startDate.setFullYear( syear, smonth-1, sday );
	var endDate = new Date();
	/*
	endDate.setYear( eyear );
	endDate.setMonth( emonth - 1 );
	endDate.setDate( eday );
	*/
  endDate.setFullYear( eyear, emonth-1, eday );
	if( (daysElapsed( endDate, startDate )+1) > nMaxDays  )
	{
		alert(msgAlert);
		return false;
	}
	else
		return true;	
}
