



var MSG_ERR_RANGE_DATE="Travel dates must be between "
var MSG_ERR_RANGE_DATE_AND=" and "
var MSG_ERR_FORMAT_DATE="The travel date format is not valid"


function isValidDateRange(dateToValid,n) // 
{
//dateToValid data da validare di tipo date(mm/gg(yyyy)
// n numero di giorni oltre il quale la data non è più valida
//converto le date in millisecondi
dateToValid.setHours(0,0,0,0) 
var ms_dateToValid = dateToValid.getTime()
var now = new Date()
now.setHours(0,0,0,0) 
var ms_now = now.getTime()

var now_n = new Date()
now_n.setDate(now_n.getDate() + n)
now_n.setHours(0,0,0,0)      
var ms_now_n = now_n.getTime()
if ((ms_dateToValid >= ms_now) && (ms_now_n > ms_dateToValid)) return true
else {
		alert(MSG_ERR_RANGE_DATE + now.toLocaleDateString() +  MSG_ERR_RANGE_DATE_AND  + now_n.toLocaleDateString())
    return false
    }
}

 


function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Controlla che il carattere sia un numero .
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // Tutti i caratteri sono numeri
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var 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){
	
    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 isDate(dtStr){
    var errorMessage = MSG_ERR_FORMAT_DATE
    var dtCh= "/";
    var minYear=1900;
    var maxYear=2100;
   
	var daysInMonth = DaysArray(12)
	
 
	var pos1=dtStr.indexOf(dtCh)
	
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	
	
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strDay=dtStr.substring(0,pos1)
	
	
	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(strDay)
	day=parseInt(strMonth)
	year=parseInt(strYr)
	//alert("mese=" + month + "giorno=" + day + "anno=" + year);
	if (pos1==-1 || pos2==-1){
		
		alert(errorMessage)
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
	
		alert(errorMessage)
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		
		alert(errorMessage)
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		
		alert(errorMessage)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		
		alert(errorMessage)
		return false
	}
return true
}

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}

function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
	}




function SetDayMonthSearchWizard(textAjaxControl){
            
            // alert("txtAjaxCalendarDate.Name: " + textAjaxControl);
               
                var myControl = textAjaxControl;
                //alert(myString.lastIndexOf("$"));
                var myControl = myControl.substring(0,myControl.lastIndexOf("_"));
                var myControl = myControl.substring(0,myControl.lastIndexOf("_"));
                //var myControl = myControl.replace(/\$/g,"_");
                // alert(myControl);
                //var sDepDate1 = document.getElementById("<%=AjaxCalendar1.ClientID %>"+"_"+"txtAjaxCalendarDate").value
                var sDepDate = document.getElementById(textAjaxControl).value;
               // alert(sDepDate); 

               
                
                var d1 = sDepDate.substring(0,2);
                d1 = parseInt(d1,10);
                var m1 = sDepDate.substring(3,5);
                m1 = parseInt(m1,10);
                
                var y1 = sDepDate.substring(6,10);  
                //alert("day.clientID: " + "<%=day.ClientID %>");
                //alert(parent.document.getElementById("<%=day.ClientID %>").value);
                var myDay = myControl + "_day";
                var myMonth = myControl + "_month";
           
                document.getElementById(myDay).value = m1//d1
                document.getElementById(myMonth).value = d1//m1
              
               // alert( document.getElementById(myMonth).value)
            
            }


function SetDayMonthSearchV2Advanced(textAjaxControl){
						//alert(textAjaxControl + " object: " + document.getElementById(textAjaxControl).value);
	            var sDepDate = document.getElementById(textAjaxControl).value;
	            //alert(" sDepDate: " + sDepDate);
                 var d1 = sDepDate.substring(0,2);
                d1 = parseInt(d1,10);
                var m1 = sDepDate.substring(3,5);
                m1 = parseInt(m1,10);              
               // var y1 = sDepDate.substring(6,10); 
               
                if (textAjaxControl=="AjaxCalendarDep_txtAjaxCalendarDate")
                {
                   	//alert("day1 " + document.getElementById("Day1").value);
                    document.getElementById("Day1").value = m1//d1
                    document.getElementById("Month1").value = d1//m1
                }
                else
                {
                    document.getElementById("Day2").value = m1//d1
                    document.getElementById("Month2").value = d1//m1
                }
               
	}
	
	
	 function SetDayMonthSearchV2OtherOption(textAjaxControl){
      
                 var sDepDate = document.getElementById(textAjaxControl).value;
                 var d1 = sDepDate.substring(0,2);
                d1 = parseInt(d1,10);
                var m1 = sDepDate.substring(3,5);
                m1 = parseInt(m1,10);              
                 if (textAjaxControl=="AjaxCalendar1_txtAjaxCalendarDate")
                {                   
                    document.getElementById("Day1").value = m1//d1
                    document.getElementById("Month1").value = d1//m1                   
                }
                else if(textAjaxControl=="AjaxCalendar2_txtAjaxCalendarDate")
                {
                    document.getElementById("Day2").value = m1//d1
                    document.getElementById("Month2").value = d1//m1
                }
                else if(textAjaxControl=="AjaxCalendar3_txtAjaxCalendarDate")
                {
                    document.getElementById("Day3").value = m1//d1
                    document.getElementById("Month3").value = d1//m1
                }
                else
                {
                    document.getElementById("Day4").value = m1//d1
                    document.getElementById("Month4").value = d1//m1
                }
                
    
    }
    
    function SetDayMonthAwardOneWay(textAjaxControl){
    
var sDepDate = document.getElementById(textAjaxControl).value;
                 var d1 = sDepDate.substring(0,2);
                d1 = parseInt(d1,10);
                var m1 = sDepDate.substring(3,5);
                m1 = parseInt(m1,10);              
                    document.getElementById("Day1").value = m1//d1
                    document.getElementById("Month1").value = d1//m1

}


function ChangedAjaxCalendarDate( textControl )
{
		var objText = document.getElementById(textControl);
		//alert("objText.value = " + objText.value + "\nobjText.name = " + objText.name);
//inverto mese e giorno
    var dt = objText.value;
    var m1 = dt.substring(0,2);
    var d1 = dt.substring(3,5);
    var y1 = dt.substring(6,10); 
    
    
   
   //perr isValidDateRange il formato della data è sempre inglese
    var myDate = new Date(m1+"/"+d1+"/"+y1);
    //alert("myDate = " + myDate);
  
	if ((isDate(dt)==false) || (isValidDateRange(myDate,340)==false)) {
	    var myNow = new Date();
	    myNow.setDate(myNow.getDate() + 5)
	    objText.value = formatDate(myNow,"MM/dd/yyyy");
	}	
	SetDayMonth(objText.id);
	if (document.getElementById("AjaxCalendarRet_txtAjaxCalendarDate") != null)
	{
		checkDateDiff(textControl);
	}
    return true
} 

       //ANDREA  
       var checkTextControl = "";
                        function checkDateDiff(textControl)
			{
				checkTextControl = textControl;
				//alert("entrato" + textControl);
			    var DateDep;
			    var DateRet;
			    
			    DateDep = document.getElementById("AjaxCalendarDep_txtAjaxCalendarDate");
			    DateRet = document.getElementById("AjaxCalendarRet_txtAjaxCalendarDate");
			    
			    var DateDepArr = DateDep.value.split("/");
			    var DateRetArr = DateRet.value.split("/");
			   
			    var myStrDateDep = DateDepArr[2] + DateDepArr[0] + DateDepArr[1];
			    var myStrDateRet = DateRetArr[2] + DateRetArr[0] + DateRetArr[1];
			    
			    //alert("myStrDateDep=" + myStrDateDep + " myStrDateRet=" + myStrDateRet);
			    if (textControl == "AjaxCalendarDep_txtAjaxCalendarDate")
			    {
			    	if (parseInt(myStrDateDep)>parseInt(myStrDateRet))
			    	{
			    		 DateRet.value = DateDep.value;
			    		 
			    		DateRetArr = DateRet.value.split("/");
			        	document.getElementById("Day2").value = DateDepArr[1];
			            	document.getElementById("Month2").value = DateDepArr[0];
			            	document.getElementById("Day1").value = DateDepArr[1];
			            	document.getElementById("Month1").value = DateDepArr[0];
			            	
			         //	alert("aggiornata data ritorno");
			    	}					
			    }else
			    {
			    	if (parseInt(myStrDateDep)>parseInt(myStrDateRet))
			    	{
			    	    DateDep.value = DateRet.value;
			    	     DateDepArr = DateDep.value.split("/");
			    	    document.getElementById("Day1").value = DateRetArr[1];
			            document.getElementById("Month1").value = DateRetArr[0];
			            document.getElementById("Day2").value = DateRetArr[1];
			            document.getElementById("Month2").value = DateRetArr[0];
			            
 			          //   alert("aggiornata data andata day1=" + DateRetArr[0] + " month1=" + DateRetArr[1] + " day2=" + DateRetArr[0] + " month2=" + DateRetArr[1]);
			      	}
			    }
			  
			    return true;
			   
			}

                 

			/*function checkDate(sender,args)
			{
				alert("checkdate")
				//alert(sender._selectedDate.format(sender._format));
			 if (sender._selectedDate < new Date()) 
			            {
			                alert("You cannot select a day earlier than today!");
			                sender._selectedDate = document.getElementById("AjaxCalendarDep_txtAjaxCalendarDate").value ;//new Date(); 
			                // set the date back to the current date
			
					//document.getElementById("AjaxCalendarDep_txtAjaxCalendarDate").value = sender._selectedDate.format(sender._format);
			            }
			}*/
			
			function initDate(sender,args)
			{
				//alert("trasutio" + document.getElementById("AjaxCalendarDep_txtAjaxCalendarDate").value + " checkTextControl " + checkTextControl  );
				
				if (checkTextControl != ""){
				DateTak = document.getElementById(checkTextControl);
				var DateTakArr = DateTak.value.split("/");
				//alert("DateDepArr" + DateTakArr[2]);
				var data=new Date(DateTakArr[2],DateTakArr[0] - 1,DateTakArr[1]);
				//alert(data);
				if (document.getElementById("AjaxCalendarDep_txtAjaxCalendarDate").value == document.getElementById("AjaxCalendarRet_txtAjaxCalendarDate").value){
						sender._selectedDate = data;
						//alert("bingo!!");
					}
				
				}
				
			}


