//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(obj,lang, defDaysInFuture){
	var today 		= new Date();
	var todayDay 	= today.getDate();
	var todayMonth 	= today.getMonth();
	var todayYear 	= today.getFullYear();
	today 			= new Date(todayYear, todayMonth, todayDay, 0, 0, 0, 0);
	var checkDate 	= new Date();
	if (defDaysInFuture == undefined)defDaysInFuture = 14;
	//check if input is valid 
	var isValidInput = true;
	if (obj.value.length ==0) isValidInput = false;
	var strs = obj.value.split("/");
	if (strs.length > 3)	isValidInput = false;
	for(var i = 0;i<strs.length;i++){
		if(isNaN(strs[i]))isValidInput = false;
	}
	//validate format ddmm
	if(isValidInput && strs.length==1){
		var str = strs[0];
		if(str.length != 4)isValidInput = false;
		else{//make it format dd/mm, then it can be validated later on
			strs = [];
			strs[0] = str.substring(0,2);
			strs[1] = str.substring(2);
		}
	}
	//validate format dd/mm
	if(isValidInput && strs.length==2){
		checkDate = new Date(todayYear, strs[1]-1, strs[0]);
		//if date is in the past, make it next year
		if(checkDate <  today) checkDate = new Date(todayYear + 1, strs[1]-1, strs[0]);
		//check on invalid date e.g. 29/2/2010
		if (checkDate.getDate() != strs[0] || checkDate.getMonth()!= strs[1]-1) isValidInput = false;
	}
	//validate format dd/mm/yyyy
	else if(isValidInput && strs.length==3){
		//year can be max 6 years in the future
		var yeardiff = strs[2]-todayYear;
		if (yeardiff < 0 || 6 < yeardiff) isValidInput = false;
		//check on invalid date e.g. 29/2/2010
		checkDate = new Date(strs[2], strs[1]-1, strs[0]);
		if (checkDate.getDate() != strs[0] || checkDate.getMonth()!= strs[1]-1 || checkDate.getFullYear()!= strs[2])isValidInput = false;
		//date cannot be in the past either
		if (checkDate < today) isValidInput = false;
	}
	//set output
	var newDay = 0; var newMonth = 0; var newYear = 0;
	if(!isValidInput){
		var msg 									= "Please enter a valid, future date.";
		if (lang == "FR")msg 						= "Veuillez entrer une date valable dans l'avenir."; 
		else if (lang == "DE")msg 					= "Bitte tragen Sie einem späteren Datum ein.";
		else if (lang == "IT")msg 					= "Si prega di inserire una data valida futuro.";
		else if (lang == "NL" || lang == "DU") msg 	= "Geef een geldige datum in de toekomst.";
		alert(msg);
		var defaultDate = new Date(todayYear, todayMonth, todayDay + defDaysInFuture);					
		newDay 		= defaultDate.getDate();
		newMonth 	= defaultDate.getMonth()+1;
		newYear 	= defaultDate.getFullYear();
	}else{
		newDay 		= checkDate.getDate();
		newMonth 	= checkDate.getMonth()+1;
		newYear 	= checkDate.getFullYear();
	}
	if (newDay < 10)	newDay 		= "0"+newDay;
	if (newMonth < 10)	newMonth 	= "0"+newMonth;
	obj.value = newDay + "/" + newMonth + "/" + newYear;
}

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;
		*/
								
	}
