//function for check the date validation. user can input date in shor form also
var dtCh= "/";
var minYear=1900;
var maxYear=2100;
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 isDateValidation(dtStr){
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	//var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(0,pos1);
	//var strDay=dtStr.substring(pos1+1,pos2)
	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){
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
		return false;
		
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return false;
	}
return true
}

function ShortDateValidation(o,lng)
{
	
	var StrDate=o.value;
	var Len=StrDate.length;
	var StrDateWithSlash = "";
	var dd = "";
	var mm = "";
	var yy = "";
	var yyyy = "";
	var isFlag = 1;
	var dtToday1=new Date();
	var dtToday=new Date(dtToday1.getFullYear(),dtToday1.getMonth(),dtToday1.getDate());
	var formdate = "";
	var currMonth = dtToday1.getMonth() + 1;
	var currDate = dtToday1.getDate();
	//alert(currDate);
	if(isInteger(StrDate))
	{	
		
		if(Len==2)
		{
			dd=StrDate.substring(0,1);
			dd = "0" + dd;
			mm=StrDate.substring(1,2);
			mm = "0" + mm;
			if(eval(mm) < currMonth)
			{
				yyyy = dtToday.getFullYear();
			}
			else if(eval(mm) ==  currMonth && eval(dd) < currDate)
			{
				yyyy = dtToday.getFullYear();
			}
			else
			{
				yyyy = dtToday.getFullYear();
			}
			//alert("Len: " + Len);
			//alert("dd: " + dd + "mm: " + mm);
		}
		else if(Len==3)
		{
			dd=StrDate.substring(0,2);
			mm=StrDate.substring(2,3);
			mm = "0" + mm;
			if(eval(mm) <  currMonth)
			{
				yyyy = dtToday.getFullYear() ;
			}
			else if(eval(mm) ==  currMonth && eval(dd) < currDate)
			{
				yyyy = dtToday.getFullYear() ;
			}
			else
			{
				yyyy = dtToday.getFullYear();
			}
			//alert("Len: " + Len);
			//alert("dd: " + dd + "mm: " + mm);
		}
		else if(Len==4)
		{
			dd=StrDate.substring(0,2);
			mm=StrDate.substring(2,4);
			//alert("dd: " + dd + "mm: " + mm + "month" + currMonth);
			if(eval(mm) <  currMonth)
			{
				yyyy = dtToday.getFullYear() ;
			}
			else if(eval(mm) ==  currMonth && eval(dd) < currDate)
			{
				yyyy = dtToday.getFullYear() ;
			}
			else
			{
				yyyy = dtToday.getFullYear();
			}
			//alert("Len: " + Len);
			//alert("dd: " + dd + "mm: " + mm);
		}
		else if(Len==6)
		{
			dd=StrDate.substring(0,2);
			mm=StrDate.substring(2,4);
			yy = StrDate.substring(4,6);
			/*if(eval(mm) <  dtToday1.getMonth())
			{
				yy = eval(yy) + 1;
			}*/
			yyyy = "20" + yy; 
			//alert("Len: " + Len);
			//alert("dd: " + dd + "mm: " + mm + "yy: " + yy + " yyyy: " + yyyy);
			
		}
		else if(Len==8)
		{
			dd=StrDate.substring(0,2);
			mm=StrDate.substring(2,4);
			yyyy = StrDate.substring(4,8);
			//alert("Len: " + Len);
			//alert("dd: " + dd + "mm: " + mm + "yy: " + yyyy);
			
		}
		else
		{
			isFlag = 0;
		}
		if(isFlag != 0)
		{
			//var formdate = new Date(yyyy, mm-1, dd);
			o.value = dd + "/" + mm + "/" + yyyy
		}//if(isFlag != 0)
	
	}//if(isInteger(StrDate))
	else
	{
		
		if(StrDate.indexOf("/") != -1)
		{
			var arrSlashDate = StrDate.split("/");
			if(arrSlashDate.length == 3)
			{
				dd = arrSlashDate[0];
				if(dd.length == 1)
					dd = "0" + dd;
				mm = arrSlashDate[1];
				if(mm.length == 1)
					mm = "0" + mm;
				yy =  arrSlashDate[2];
				//alert(yy.length);
				if(yy.length == 2)
				{
					yyyy = "20" + yy;
				}
				else if (yy.length == 4)
				{
					yyyy = yy;
				}
				else if (yy.length == 0)
				{
					if(eval(mm) <  currMonth)
					{
						yyyy = dtToday.getFullYear() ;
					}
					else if(eval(mm) ==  currMonth && eval(dd) < currDate)
					{
						yyyy = dtToday.getFullYear() ;
					}
					else
					{
						yyyy = dtToday.getFullYear();
					}
				}
				else
					isFlag = 0;
				o.value = dd + "/" + mm + "/" + yyyy;
				
			}
			else if(arrSlashDate.length == 2)
			{
				dd = arrSlashDate[0];
				if(dd.length == 1)
					dd = "0" + dd;
				mm = arrSlashDate[1];
				if(mm.length == 1)
					mm = "0" + mm;
				if(eval(mm) <  currMonth)
				{
					yyyy = dtToday.getFullYear() ;
				}
				else if(eval(mm) ==  currMonth && eval(dd) < currDate)
				{
					yyyy = dtToday.getFullYear() ;
				}
				else
				{
					yyyy = dtToday.getFullYear();
				}
				o.value = dd + "/" + mm + "/" + yyyy;
			}
			else
			{
				isFlag = 0;
			}
		}//if(StrDate.indexOf("/") != -1)
		
	}//else(isInteger(StrDate))
	
	var newValueOfDate = o.value;
	
	var m_arrDate = newValueOfDate.split("/");
	var m_inDAY = m_arrDate[0];
	var m_inMONTH = m_arrDate[1];
	var m_inYEAR = m_arrDate[2];
	var formdate= new Date(m_inYEAR, m_inMONTH-1, m_inDAY);
	
	
	var msg = "";
	var strlng = lng.toUpperCase();

	if(strlng == "DE")
	{
		msg = "Bitte tragen Sie einem späteren Datum ein.";
	}
	else if(strlng == "FR")
	{
		msg = "Veuillez entrer une date valable dans l'avenir.";
	}
	else if(strlng == "IT")
	{
		msg = "Si prega di inserire una data valida futuro.";
	}
	else if(strlng == "DU")
	{
		msg = "Geef een geldige datum in de toekomst.";
	}
	else if(strlng == "NL")
	{
		msg = "Geef een geldige datum in de toekomst.";
	}
	else
	{
		msg = "Please enter a valid, future date.";
	}

	if(!isDateValidation(newValueOfDate) || dtToday > formdate || isFlag == 0)
	{
		
		alert(msg);
		o.value = '';
		o.focus();
		
		
		
	}
}
function ShortDateValidation_temp(o,lng)
{
	//var FieldID=argsID;
	//alert("dsgdfgf");
	var dd="";
	var mm="";
	var yyyy=0;
	var error="";
	var MaxDays="";
	//var dtToday=new Date();
	var dtToday=new Date();
	var dtToday1=new Date(dtToday.getFullYear(),dtToday.getMonth(),dtToday.getDate());
	var CurrentYear=dtToday.getFullYear();
	var leepYear=CurrentYear % 4;
	var leepYear2=(CurrentYear+1) % 4;
	var setyear=0;
	var SetStatus="on";
	var Error="";
	var StrDate=o.value;
	var Len=StrDate.length;
	
	
	var m_arrDate = StrDate.split("/");
	var m_inDAY = m_arrDate[0];
	var m_inMONTH = m_arrDate[1];
	var m_inYEAR = m_arrDate[2];
	var formdate= new Date(m_inYEAR, m_inMONTH-1, m_inDAY);
	
	var msg = "";
	var strlng = lng.toUpperCase();

	if(strlng == "DE")
	{
		msg = "Bitte tragen Sie einem späteren Datum ein.";
	}
	else if(strlng == "FR")
	{
		msg = "Veuillez entrer une date valable dans l'avenir.";
	}
	else if(strlng == "IT")
	{
		msg = "Si prega di inserire una data valida futuro.";
	}
	else if(strlng == "DU")
	{
		msg = "Geef een geldige datum in de toekomst.";
	}
	else if(strlng == "NL")
	{
		msg = "Geef een geldige datum in de toekomst.";
	}
	else
	{
		msg = "Please enter a valid, future date.";
	}
	
	var arrDate = StrDate.split("/");
	if(arrDate.length == 3)
	{
		if(!isDateValidation(StrDate) || dtToday1 > formdate)
		{
			
			alert(msg);
			o.value = '';
			o.focus();
			return;				
		}
	}
			
	// check if / is availabel if one / is available then dd/mm other wise d/m/y
	if(StrDate.substring(1,2) == "/" || StrDate.substring(2,3) == "/")
	{
		if(Len >= 3)
		{
			var sepSplit=StrDate.split("/");
			if(sepSplit.length ==2)
			{
				dd=sepSplit[0];
				mm=sepSplit[1];
			}
			if(sepSplit.length ==3)
			{
				dd=sepSplit[0];
				mm=sepSplit[1];
				if(sepSplit[2]=="")
				{
					SetStatus="off";
				}
				else if(sepSplit[2]==0)
				{
					SetStatus="off";
				}
				/*
				else
				{
					setyear=sepSplit[2];
				}
				*/
			}
		}
	}
	else
	{
		if(Len==2)
		{
			dd=StrDate.substring(0,1);
			mm=StrDate.substring(1,2);
		}
		if(Len==3)
		{
			dd=StrDate.substring(0,2);
			mm=StrDate.substring(2,3);
		}
		if(Len==4)
		{
			dd=StrDate.substring(0,2);
			mm=StrDate.substring(2,4);
		}
		//added by baliram from
		if(Len == 6)
		{
			dd=StrDate.substring(0,2);
			mm=StrDate.substring(2,4);
		}
		if(Len == 8)
		{
			dd=StrDate.substring(0,2);
			mm=StrDate.substring(2,4);
		}
		if(Len == 5)
		{
			dd="";
			mm="";
		}
		if(Len > 8)
		{
			dd="";
			mm="";
		}
		if(Len == 7)
		{
			dd="";
			mm="";
		}

		//added by baliram from
		/*
		if(Len > 5)
		{
			dd="";
			mm="";
		}
		*/
		if(dd == 0 || dd > 31)
		{
			dd="";
			mm="";
		}
		if(mm==0 || mm > 12)
		{
			dd="";
			mm="";
		}
	}
	// how many days in a month
	if(mm == 4 || mm == 6 || mm == 9 || mm == 11)
	{
		MaxDays=30;
	}
	else if(mm == 2 && leepYear == 0 && leepYear2!=0)
	{
		MaxDays=29;
	}
	else if(mm == 2 && (leepYear != 0 || leepYear2!=0))
	{
		MaxDays=28;
	}
	else
	{
		MaxDays=31;
	}	
	// if input year is passed and date is also passed in the current month then comming date will display in next year
	CurrentYear=dtToday.getFullYear();
	var leepYear3=10;
	if(setyear < 2100 && setyear > 1900)
	{
		var leepYear3=setyear % 4;
		if(mm==2 && leepYear3==0)
		{
			MaxDays=29;
		}	
		if(mm==2 && leepYear3!=0)
		{
			MaxDays=28;
		}
		if(setyear < CurrentYear)
		{
			setyear=0;		
		}
	}
	if(setyear >0 && setyear <100)
	{
		setyear=0;
	}				
	//alert("first "+leepYear+" second "+leepYear2+" third "+leepYear3)			
	//alert("DD "+dd+" / mm "+mm+" / MaxDayes "+MaxDays+" / SetSatus "+SetStatus+" / setyear "+setyear +" / CurrentYear"+CurrentYear)	;			
	if((dd !="" || mm !="") && dd <= MaxDays && mm <= 12 && SetStatus=="on" && setyear==0)
	{
		var theoccasion=new Date(dtToday.getFullYear(), mm, dd);
		var monthtext=new Array("Jan","Feb","Mar","April","May","June","July","Aug","Sep","Oct","Nov","Dec");
		theoccasion.setMonth(theoccasion.getMonth()-1);
		var showdate="("+monthtext[theoccasion.getMonth()]+" "+theoccasion.getDate()+")";
		var one_day=1000*60*60*24;
		var calculatediff="";
		calculatediff=Math.ceil((theoccasion.getTime()-dtToday.getTime())/(one_day))
		
		if (calculatediff<0)
		{
			var CurrentYear=dtToday.getFullYear()+1;
		}
		else
		{
			var CurrentYear=dtToday.getFullYear();
		}					
		dtToday.setFullYear(CurrentYear,mm-1,dd);
		
		if(dd < 10 && dd.length==1) 
		{						
   			dd="0" + dd;			   			
   		}
   		if(mm < 10 && mm.length==1)
   		{
   			mm="0" + mm;
    	}
		var ReturnDate=dd+"/"+mm+"/"+CurrentYear;
		var tempReturnDate = new Date(CurrentYear,mm,dd);
		//alert(dtToday1 + '===' + tempReturnDate);
		if(!isDateValidation(ReturnDate) || dtToday1 > tempReturnDate)
		{
			
			alert(msg);
			o.value = '';
			o.focus();
			return;				
		}
		o.value=ReturnDate;
		
		
	}
	else if((setyear < 2100 && setyear > 1900) && dd <= MaxDays && mm <= 12)
	{
		dtToday.setFullYear(setyear,mm-1,dd);
		
		if(dd < 10 && dd.length==1) 
		{						
   			dd="0" + dd;			   			
   		}
   		if(mm < 10 && mm.length==1)
   		{
   			mm="0" + mm;
    	}
		var ReturnDate=dd+"/"+mm+"/"+setyear;
		var tempReturnDate = new Date(CurrentYear,mm,dd);
		if(!isDateValidation(ReturnDate) || dtToday1 > tempReturnDate)
		{
			
			alert(msg);
			o.value = '';
			o.focus();
			return;				
		}
		o.value=ReturnDate;
		//window.location.reload( false );
	}
	else
	{
		Error="Enter date for use this format"
			+ '\n' +"63 (6/3/2008)"
			+ '\n' +"294 (29/4/2008)"
			+ '\n' +"1611 (16/11/2008)"
			+ '\n' +"31/3 (31/3/2008)"
			+ '\n' +"9/10 (9/10/2008)"
			+ '\n' +"28/2/2007 (28/2/2008)"
			+ '\n' +"6/12/2006 (6/12/2008)"
			+ '\n' +"15/06/2009 (15/06/2008)";					
		//alert(Error);
		alert(msg);
		o.value="";
		o.focus();
	}				
}
/* Convert Unicode to html character */
function convertUnicode(str){
	var newDiv = document.createElement(newDiv);
	newDiv.innerHTML = str;
	return newDiv.innerHTML;
}

function compareBackDates(o) {
		
		//var TodayDate='16/11/2009';
		var today = new Date();
		var date_today=today.getDate() + "/" + (today.getMonth()+1) + "/" + today.getFullYear(); 
		
		var CurDate = date_today.split("/");
		var Day_CurDate = CurDate[0];
		var MONTH_CurDate = CurDate[1];
		var YEAR_CurDate = CurDate[2];
		
		var CheckinDate 		= o.value.split("/");
		var Day_ChekinDate 		= CheckinDate[0];
		var MONTH_ChekinDate 	= CheckinDate[1];
		var YEAR_ChekinDate 	= CheckinDate[2];
				
						
		var setReturn=1;

		if (YEAR_CurDate > YEAR_ChekinDate) {
			setReturn=0;
		}
		
		if(YEAR_CurDate == YEAR_ChekinDate){
			if (MONTH_CurDate > MONTH_ChekinDate ) {
				setReturn=0;
			}
		}	
		
		if(YEAR_CurDate == YEAR_ChekinDate && MONTH_CurDate == MONTH_ChekinDate ){
			if (Day_CurDate > Day_ChekinDate ) {
				setReturn=0;
			}
		}
		if (setReturn==0 ) {
			alert("Please Enter Valid Date.");	
			o.value="";
			o.focus();		
		
		}
		/*else
		{
			alert("ok");
		}
		return setReturn;
		*/
								
	}