/*
*************************************************************************
Function to validate the given date 
Created by : Vijaymahantesh Hugar 
Created on : 03/21/2001
Modified by: Sanjay P. Solanke(Modified to include new date format (mm-dd-yyyy))
Modified on: 04/17/2002
*************************************************************************
*/

function checkDate(date_to_verify)
{
	var dateType = "1" ;
	try
	{
		if(vdateFormat)
			dateType=vdateFormat ;
	}catch(err){}
		
 
	if(dateType=="2")
	{
		if(checkDDMMYYY(date_to_verify,"Y")) 
			return true ;
		else
			return false ;
		
	}
	 
	datevalue = date_to_verify.value;
	if(datevalue!="")
	{
		if(!datevalue)
		{		
				datevalue = date_to_verify;
		}
	}
		
	datevalue = datevalue.replace(/^\s+/, "");
	
	datevalue = datevalue.replace(/\s+$/, "");
    
 	msg = "Please Enter Valid Date (mm/dd/yyyy) or (mm-dd-yyyy) ";	
	if( datevalue.length == 8 )
	{
		month = datevalue.substr(0,1); 
		day = datevalue.substr(2,1);
		year = datevalue.substr(4,4);
	}
	else if( datevalue.length == 9 )
	{
		if( datevalue.charAt(2) == "/" || datevalue.charAt(2) == "-" )
		{
			month = datevalue.substr(0,2); 
			day = datevalue.substr(3,1);
			year = datevalue.substr(5,4);
		}
		else if( datevalue.charAt(1) == "/" || datevalue.charAt(1) == "-" )
		{
			month = datevalue.substr(0,1); 
			day = datevalue.substr(2,2);
			year = datevalue.substr(5,4);
		}	
	}
	else if( datevalue.length == 10 )
	{
		month = datevalue.substr(0,2); 
		day = datevalue.substr(3,2);
		year = datevalue.substr(6,4);
	}
	if( datevalue != "" )
	{
		if(datevalue.indexOf(".")!=-1)
		{
			alert(msg);
			date_to_verify.select();
			return false;
		}
		if( datevalue.length != 8 && datevalue.length != 9 && datevalue.length != 10 )
		{
			alert(msg);
			date_to_verify.select();
			return false;
		}
		if( datevalue.length == 8 )
		{
			if( !( datevalue.charAt(1) == "/" && datevalue.charAt(3) == "/" ) && !( datevalue.charAt(1) == "-" && datevalue.charAt(3) == "-" ) )
			{
				alert(msg);
				date_to_verify.select();
				return false;
			}
		}
		else if( datevalue.length == 9 )
		{
			if( !( datevalue.charAt(2) == "/" && datevalue.charAt(4) == "/" ) && !( datevalue.charAt(1) == "/" && datevalue.charAt(4) == "/" ) && !( datevalue.charAt(2) == "-" && datevalue.charAt(4) == "-" ) && !( datevalue.charAt(1) == "-" && datevalue.charAt(4) == "-" ) )
			{
				alert(msg);
				date_to_verify.select();
				return false;
			}
		}
		else if( datevalue.length == 10 )
		{
			if( !( datevalue.charAt(2) == "/" && datevalue.charAt(5) == "/" ) && !( datevalue.charAt(2) == "-" && datevalue.charAt(5) == "-" ))
			{
				alert(msg);
				date_to_verify.select();
				return false;
			}
		}
		if( isNaN(day) )
		{
			alert(msg);
			date_to_verify.select();
			return false;
		}
		if( isNaN(month) )
		{
			alert(msg);
			date_to_verify.select();
			return false;
		}
		else
		{
			if( month > 12 || month <= 0)
			{
				alert("Month must be between 1 and 12");
				date_to_verify.select();
				return false;
			}
			else if( (month== 4) || (month== 6) || (month== 9) || (month== 11) )
			{
				if( (day > 30) || (day <= 0) )
				{
					alert("Day must be between 1 and 30");
					date_to_verify.select();
					return false;
				}
			}
			else
			{
				if( (day > 31) || (day <= 0) )
				{
					alert("Day must be between 1 and 31");
					date_to_verify.select();
					return false;
				}
			}
		}
		if( !isNaN(year) )
		{
			if( year < 1753 ) 
			{
				alert(msg);
				date_to_verify.select();
				return false;
			}
			if( month == 2 )			
			{
				if (( year % 4 == 0 ) && ( day > 29 ))
				{
					alert("For this month days can't be greater than 29");
					date_to_verify.select();
					return false;
				}
				if (( year % 4 != 0 ) && ( day > 28 ))
				{
					alert("For this month days can't be greater than 28");
					date_to_verify.select();
					return false;
				}
			}
		}	
		else
		{
			alert(msg);
			date_to_verify.select();
			return false;
		}
	}
	return true;
	
}

/*
*************************************************************************
Function to create date from part dates
Created by : Ashik Ravindran
Created on : 08/19/2005
*************************************************************************
*/

function createDate(yr,mm,dd,hr,mn,ampm)
{			
	yr = (yr < 1000) ? yr + 1900 : yr;
	if((ampm == "PM") && (hr != 12))
		hr = hr + 12;
	if((ampm == "AM") && (hr == 12))
		hr = 0;
	var dt = new Date(yr,mm,dd,hr,mn,0);   	
	return dt;
}

/*
*************************************************************************
Function to compare two date times
Created by : Ashik Ravindran
Created on : 08/19/2005
*************************************************************************
*/
			
function checkDTDiff(dtS, dtE)
{
 
	if (dtS.getTime() > dtE.getTime())
		return false;
	return true;
}




function checkDDMMYYY(date_to_verify,ialert)
{
	 

	datevalue = date_to_verify.value;
	if(datevalue!="")
		{
			if(!datevalue)
				{		
					datevalue = date_to_verify;
				}	
		}
		
	datevalue = datevalue.replace(/^\s+/, "");
	
	datevalue = datevalue.replace(/\s+$/, "");
	
	
     
 	msg = "Please Enter Valid Date (dd/mm/yyyy) or (dd-mm-yyyy) ";	
	if( datevalue.length == 8 )
	{
		day = datevalue.substr(0,1); 
		month = datevalue.substr(2,1);
		year = datevalue.substr(4,4);
	}
	else if( datevalue.length == 9 )
	{
		if( datevalue.charAt(2) == "/" || datevalue.charAt(2) == "-" )
		{
			day = datevalue.substr(0,2); 
			month = datevalue.substr(3,1);
			year = datevalue.substr(5,4);
		}
		else if( datevalue.charAt(1) == "/" || datevalue.charAt(1) == "-" )
		{
			day = datevalue.substr(0,1); 
			month = datevalue.substr(2,2);
			year = datevalue.substr(5,4);
		}	
	}
	else if( datevalue.length == 10 )
	{
		day = datevalue.substr(0,2); 
		month = datevalue.substr(3,2);
		year = datevalue.substr(6,4);
	}
	if( datevalue != "" )
	{
		if(datevalue.indexOf(".")!=-1)
		{
			if(ialert=="Y"){alert(msg);
			date_to_verify.select();}
			return false;
		}
		if( datevalue.length != 8 && datevalue.length != 9 && datevalue.length != 10 )
		{
			if(ialert=="Y"){alert(msg);
			date_to_verify.select();}
			return false;
		}
		if( datevalue.length == 8 )
		{
			if( !( datevalue.charAt(1) == "/" && datevalue.charAt(3) == "/" ) && !( datevalue.charAt(1) == "-" && datevalue.charAt(3) == "-" ) )
			{
				if(ialert=="Y"){alert(msg);
				date_to_verify.select();}
				return false;
			}
		}
		else if( datevalue.length == 9 )
		{
			if( !( datevalue.charAt(2) == "/" && datevalue.charAt(4) == "/" ) && !( datevalue.charAt(1) == "/" && datevalue.charAt(4) == "/" ) && !( datevalue.charAt(2) == "-" && datevalue.charAt(4) == "-" ) && !( datevalue.charAt(1) == "-" && datevalue.charAt(4) == "-" ) )
			{
				if(ialert=="Y"){alert(msg);
				date_to_verify.select();}
				return false;
			}
		}
		else if( datevalue.length == 10 )
		{
			if( !( datevalue.charAt(2) == "/" && datevalue.charAt(5) == "/" ) && !( datevalue.charAt(2) == "-" && datevalue.charAt(5) == "-" ))
			{
				if(ialert=="Y"){alert(msg);
				date_to_verify.select();}
				return false;
			}
		}
		if( isNaN(day) )
		{
			if(ialert=="Y"){alert(msg);
			date_to_verify.select();}
			return false;
		}
		if( isNaN(month) )
		{
			if(ialert=="Y"){alert(msg);
			date_to_verify.select();}
			return false;
		}
		else
		{ 
			if( month > 12 || month <= 0)
			{
				if(ialert=="Y"){alert("Month must be between 1 and 12");
				date_to_verify.select();}
				return false;
			}
			else if( (month== 4) || (month== 6) || (month== 9) || (month== 11) )
			{
				if( (day > 30) || (day <= 0) )
				{
					if(ialert=="Y"){alert("Day must be between 1 and 30");
					date_to_verify.select();}
					return false;
				}
			}
			else
			{
				if( (day > 31) || (day <= 0) )
				{
					if(ialert=="Y"){alert("Day must be between 1 and 31");
					date_to_verify.select();}
					return false;
				}
			}
		}

		if( !isNaN(year) )
		{
			if( year < 1753 ) 
			{
				if(ialert=="Y"){alert(msg);
				date_to_verify.select();}
				return false;
			}
			if( month == 2 )			
			{
				if (( year % 4 == 0 ) && ( day > 29 ))
				{
					if(ialert=="Y"){alert("For this month days can't be greater than 29");
					date_to_verify.select();}
					return false;
				}
				if (( year % 4 != 0 ) && ( day > 28 ))
				{
					if(ialert=="Y"){alert("For this month days can't be greater than 28");
					date_to_verify.select();}
					return false;
				}
			}
		}	
		else
		{
			if(ialert=="Y"){alert(msg);
			date_to_verify.select();}
			return false;
		}
	}
	return true;
}

function _validDate(from,to,iAlert,intNoOfDays,vLessGreaterOpr)
{		

	if(from)
	{
		if(from.value =="") 
		{
			return false;
		}
	}
	
	if(to)
	{
		if(to.value =="") 
		{
			return false;
		}
	}

	var dateType = "1" ;
	try
	{
		if(vdateFormat)
			dateType=vdateFormat ;
	}catch(err){}
	

	var strMsg= "To date/End date cannot be less than from date/start date.";
	try
	{
		if(iAlert)
			strMsg=iAlert ;
	}catch(err){}
	
	var tmpFrom; 
	var tmpTo;

	//we are using Date.Parse for getting date difference-- for this Date format should be dd mon yyyy i.e. 18 Sep 2006
	tmpFrom =_chkdate(from)
	tmpTo = _chkdate(to)
      
	var lintNoOfDays=0;
	
	try
	{
		if(intNoOfDays)
			lintNoOfDays=intNoOfDays ;
	}catch(err){}


        
	if (Date.parse(tmpTo) < Date.parse(tmpFrom))  //From date To date Validation
	{
	   
	    if (iAlert!="" )
	    {
		    if (lintNoOfDays!= 0)
		    {
			    alert("To date/End date cannot be less than from date/start date.");		
		    }
		    else
		    {
			    alert(strMsg);
		    }
    	}
		    if(to.type =="text")
		    {
			    to.focus();
			    to.select();			
		    }
		    else if(from.type =="text")
		    {
			    from.focus();
			    from.select();
		    }
		
		
		return true;
	}
	
	//Check for the # of Days
	if (lintNoOfDays!= 0)
	{
		var intDateDiff  = (Date.parse(tmpTo) - Date.parse(tmpFrom));
		intDateDiff = intDateDiff/(24*60*60*1000); //convert to days
		
		var strOpr= ">";
		try
		{
			if(vLessGreaterOpr)
				strOpr =vLessGreaterOpr;
		}catch(err){}
		
		if (strOpr == "<")
		{
			if (intDateDiff  < lintNoOfDays)
			{
                                
				alert(strMsg);
				
				if(to.type =="text")
				{
					to.focus();
					to.select();			
				}
				else
				{
					from.focus();
					from.select();
				}
				
				return true;		
			}
		}
		else
		{			
			if (intDateDiff  > lintNoOfDays)
			{
				alert(strMsg);
				
				if(to.type =="text")
				{
					to.focus();
					to.select();			
				}
				else
				{
					from.focus();
					from.select();
				}
				
				return true;		
			}
		}
	}
	
	return false;
}
			
function _chkdate(objName) {
	var dateType = "1" ;
	try
	{
		if(vdateFormat)
			dateType=vdateFormat ;
	}catch(err){}
		
	var tmpstrDate;
	var tmpstrDateArray;
	var tmpstrDay;
	var tmpstrMonth;
	var tmpstrYear;
	var tmpintday;
	var tmpintMonth;
	var tmpintYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var tmpstrMonthArray = new Array(12);

	tmpstrMonthArray[0] = "Jan";
	tmpstrMonthArray[1] = "Feb";
	tmpstrMonthArray[2] = "Mar";
	tmpstrMonthArray[3] = "Apr";
	tmpstrMonthArray[4] = "May";
	tmpstrMonthArray[5] = "Jun";
	tmpstrMonthArray[6] = "Jul";
	tmpstrMonthArray[7] = "Aug";
	tmpstrMonthArray[8] = "Sep";
	tmpstrMonthArray[9] = "Oct";
	tmpstrMonthArray[10] = "Nov";
	tmpstrMonthArray[11] = "Dec";
	
	/*if(datefield!="")
	{
		tmpstrDate = datefield.value;
	}
	else
	{
		tmpstrDate = datefield
	}*/
	
	if(datefield)
	{
		if(datefield.value)
		{
			tmpstrDate = datefield.value;
		}
		else
		{
			tmpstrDate = datefield;
		}
	}
	
	if (!tmpstrDate) {
	return true;
	}		
	if (tmpstrDate.length < 1) {
	return true;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
	if (tmpstrDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
	tmpstrDateArray = tmpstrDate.split(strSeparatorArray[intElementNr]);
	if (tmpstrDateArray.length != 3) {
	err = 1;
	return false;
	}
	else {
	tmpstrDay = tmpstrDateArray[0];
	tmpstrMonth = tmpstrDateArray[1];
	tmpstrYear = tmpstrDateArray[2];
	}
	booFound = true;
	}
	}
	if (booFound == false) {
	if (tmpstrDate.length>5) {
	tmpstrDay = tmpstrDate.substr(0, 2);
	tmpstrMonth = tmpstrDate.substr(2, 2);
	tmpstrYear = tmpstrDate.substr(4);
	}
	}
	if (tmpstrYear.length == 2) {
	tmpstrYear = '20' + tmpstrYear;
	}
	// US style
	if (dateType == "1") {
	strTemp = tmpstrDay;
	tmpstrDay = tmpstrMonth;
	tmpstrMonth = strTemp;
	}
	tmpintday = parseInt(tmpstrDay, 10);
	if (isNaN(tmpintday)) {
	err = 2;
	return false;
	}
	tmpintMonth = parseInt(tmpstrMonth, 10);
	if (isNaN(tmpintMonth)) {
	for (i = 0;i<12;i++) {
	if (tmpstrMonth.toUpperCase() == tmpstrMonthArray[i].toUpperCase()) {
	tmpintMonth = i+1;
	tmpstrMonth = tmpstrMonthArray[i];
	i = 12;
	}
	}
	if (isNaN(tmpintMonth)) {
	err = 3;
	return false;
	}
	}
	tmpintYear = parseInt(tmpstrYear, 10);
	if (isNaN(tmpintYear)) {
	err = 4;
	return false;
	}
	if (tmpintMonth>12 || tmpintMonth<1) {
	err = 5;
	return false;
	}
	if ((tmpintMonth == 1 || tmpintMonth == 3 || tmpintMonth == 5 || tmpintMonth == 7 || tmpintMonth == 8 || tmpintMonth == 10 || tmpintMonth == 12) && (tmpintday > 31 || tmpintday < 1)) {
	err = 6;
	return false;
	}
	if ((tmpintMonth == 4 || tmpintMonth == 6 || tmpintMonth == 9 || tmpintMonth == 11) && (tmpintday > 30 || tmpintday < 1)) {
	err = 7;
	return false;
	}
	if (tmpintMonth == 2) {
	if (tmpintday < 1) {
	err = 8;
	return false;
	}
	if (LeapYear(tmpintYear) == true) {
	if (tmpintday > 29) {
	err = 9;
	return false;
	}
	}
	else {
	if (tmpintday > 28) {
	err = 10;
	return false;
	}
	}
	}

	if (dateType == "2") 
	{
		return tmpintday + " " + tmpstrMonthArray[tmpintMonth-1] + " " + tmpstrYear;
	}
	else
	{
		return tmpstrMonthArray[tmpintMonth-1] + " " + tmpintday+" " + tmpstrYear;
	}
	//return true;
}		

function LeapYear(tmpintYear) {
if (tmpintYear % 100 == 0) {
if (tmpintYear % 400 == 0) { return true; }
}
else {
if ((tmpintYear % 4) == 0) { return true; }
}
return false;
}						

function _validDateWithToday(from,i_ind, iAlert)
{		

	
	
	var dateType = "1" ;
		try
	{
		if(vdateFormat)
			dateType=vdateFormat ;
	}catch(err){}
	if(from)
	{
		if(from.value =="") 
		{
			return true;
		}
	}
	
	var tmpFrom; 
	var to,tmpTo;
	var tmpresult;
		
	to = new Date();
	
	if (dateType == "1" )
	{
		tmpTo = (to.getMonth() +1) + "/" + to.getDate() + "/" + to.getFullYear();
	}	
	else
	{
		tmpTo = to.getDate() + "/" + (to.getMonth()+1) + "/" + to.getFullYear();	
	}
	
	tmpFrom = from.value;

	tmpFrom =_chkdate(from )
	tmpTo =_chkdate(tmpTo)		

	var strMsg;
	
	switch(i_ind)
	{
		case 0:
			strMsg = "From date cannot be less than today's date."
			break;
		case 1:
			strMsg = "From date cannot be greater than today's date."
			break;
		case 2:
			strMsg = "From date and today's date is equal."
			break;
	}
	
	
	try
	{
		if(iAlert)
			strMsg=iAlert ;
	}catch(err){}	
	
	
	if (Date.parse(tmpFrom) < Date.parse(tmpTo)) 
	{
		tmpresult =0;// from date is less than today's date.
	}	
	else if (Date.parse(tmpFrom) > Date.parse(tmpTo)) 
	{
		tmpresult =1;// from date is greater than today's date.
	}
	else if (Date.parse(tmpFrom) == Date.parse(tmpTo)) 
	{
		tmpresult =2;// from date is greater than today's date.
	}
		
	if (tmpresult == i_ind)
	{
		if (typeof(iAlert)=="undefined" || iAlert!="")
			alert(strMsg);
		
		 if(to.type =="text")
		    {
			    to.focus();
			    to.select();			
		    }
		  else if(from.type =="text")
		    {
			    from.focus();
			    from.select();
		    }
		
		return false;	
	}
	else
	{
		return true;
	}
	
}

function getdateinsystemformat(i_strdate)
{
	var strdate;
	if (i_strdate=="" || i_strdate.length<8)
		return i_strdate;
	if(vdateFormat)
	{
		if (vdateFormat==2)
		{
			
			if (!(checkDDMMYYY(i_strdate)))
				return i_strdate
			
			
			var day,month,year
			if(i_strdate.length == 8 )
			{
				day = i_strdate.substr(0,1); 
				month = i_strdate.substr(2,1);
				year = i_strdate.substr(4,4);
			}
			else if( i_strdate.length == 9 )
			{
				if(i_strdate.charAt(2) == "/" || i_strdate.charAt(2) == "-")
				{
					day = i_strdate.substr(0,2); 
					month = i_strdate.substr(3,1);
					year = i_strdate.substr(5,4);
				}
				else if(i_strdate.charAt(1) == "/" || i_strdate.charAt(1) == "-")
				{
					day = i_strdate.substr(0,1); 
					month = i_strdate.substr(2,2);
					year = i_strdate.substr(5,4);
				}	
			}
			else if(i_strdate.length == 10)
			{		
				day = i_strdate.substr(0,2); 
				month = i_strdate.substr(3,2);
				year = i_strdate.substr(6,9);	
			}			
			i_strdate= month+"/"+day+"/"+year
		}
		
	}	
	return i_strdate
}

function splitdate(objtxtmonth,objcbomonth,objtcboday,objyear)
{
	var strFDate,strDate,strMonth,strYear,strIoDate;	
	if(strim(objyear.value)!="")
	{		
		strIoDate=getdateinsystemformat(objyear.value);		
		if(check4Date(strIoDate))
		{
			strFDate = new Date(strIoDate) ;
			strDate = strFDate.getDate();
			strMonth = strFDate.getMonth();
			strYear = strFDate.getFullYear();
			objtcboday.value = strDate;
			objtxtmonth.value = getMonthDesc(strFDate) ;
			objcbomonth.value = getMonthDesc(strFDate) ;
			objyear.value = strYear ;		
		}
	}
		
}

function IsDateValid(objdate)
{	
	var Stdate,dateType;	
	
	if(typeof(objdate.value)!="undefined")
		Stdate=objdate.value;
	else
		Stdate=objdate;
	try
	{
		if(vdateFormat)
			dateType=vdateFormat;
	}catch(err){}
	if(dateType=="2")
	{
		if(checkDDMMYYY(Stdate,"N")) 
			return true
		else
			return false
	}
	else
	{
		if(check4Date(Stdate))
			return true
		else
			return false
	}	
	/*var strIoDate=getdateinsystemformat(Stdate);		
	if(check4Date(strIoDate))
		return true;
	else
		return false;*/
}

 function getMonthDesc(strFDate)
{
	var msg,strMonth ;
	strMonth = strFDate.getMonth();
		switch(strMonth+1)
		{
		case 1:
			msg = "Jan"
			return msg ;
			break;
		case 01:
			msg = "Jan"
			return msg ;
			break;
		case 2:
			msg = "Feb"
			return msg ;
			break;
		case 02:
			msg = "Feb"
			return msg ;
			break;
		case 3:
			msg = "Mar"
			return msg ;
			break;
		case 03:
			msg = "Mar"
			return msg ;
			break;
		case 4:
			msg = "Apr"
			return msg ;
			break;
		case 04:
			msg = "Apr"
			return msg ;
			break;
		case 5:
			msg = "May"
			return msg ;
			break;
		case 05:
			msg = "May"
			return msg ;
			break;
		case 6:
			msg = "Jun"
			return msg ;
			break;
		case 06:
			msg = "Jun"
			return msg ;
			break;
		case 7:
			msg = "Jul"
			return msg ;
			break;
		case 07:
			msg = "Jul"
			return msg ;
			break;
		case 8:
			msg = "Aug"
			return msg ;
			break;
		case 08:
			msg = "Aug"
			return msg ;
			break;
		case 9:
			msg = "Sep"
			return msg ;
			break;
		case 09:
			msg = "Sep"
			return msg ;
			break;
		case 10:
			msg = "Oct"
			return msg ;
			break;
		case 11:
			msg = "Nov"
			return msg ;
			break;
		case 12:
			msg = "Dec"
			return msg ;
			break;
		}					
}	
			

		
