YAHOO.namespace("widget");

YAHOO.widget.init = function() {

	var date1 = new Date();
	date1.setHours(0);
	date1.setMinutes(0);
	date1.setSeconds(0);
	date1.setMilliseconds(0);
				
	var date2 = new Date();
	date2.setHours(0);
	date2.setMinutes(0);
	date2.setSeconds(0);
	date2.setMilliseconds(0);
	date2.setDate(date2.getDate() + 1);
						
	var min_date1 = dateToString(date1);
	var min_date2 = dateToString(date2);
	
	var min_mmyyyydate1 = dateMMYYYYToString(date1);
	var min_mmyyyydate2 = dateMMYYYYToString(date2);
			
	var txtdate1 = YAHOO.util.Dom.get("txtdate1");
	txtdate1.value = dateToString(date1)
	var txtdate2 = YAHOO.util.Dom.get("txtdate2");
	txtdate2.value = dateToString(date2)
	
	var nbnuits = YAHOO.util.Dom.get("nbnuits");
	nbnuits.value=1;
	
	var seloffre = YAHOO.util.Dom.get("seloffre");
	seloffre.value = "";
	var txtoffres = YAHOO.util.Dom.get("txtoffres");
	var array_offres = txtoffres.value.split("_");
	var blocoffredebut = YAHOO.util.Dom.get("blocoffredebut");
	var blocoffrefin = YAHOO.util.Dom.get("blocoffrefin");
	var seloffredebut = YAHOO.util.Dom.get("seloffredebut");
	var seloffrefin = YAHOO.util.Dom.get("seloffrefin");
	var seladults = YAHOO.util.Dom.get("seladults");
	seladults.value = 1;
	var selchildren = YAHOO.util.Dom.get("selchildren");
	selchildren.value = 0;
	
	var btnsubmitresa = YAHOO.util.Dom.get("btnsubmitresa");
	
						
	function dateToString(pDate) {
			var dStr = pDate.getDate();
            var mStr = pDate.getMonth()+1;
            var yStr = pDate.getFullYear();
            return dStr + "/" + mStr + "/" + yStr;
		};
	
	function stringToDate(pStr) {
			var array_str = pStr.split("/");
			
			var dStr = array_str[0];
            var mStr = array_str[1];
            var yStr = array_str[2];
            
            var ret = new Date(yStr,mStr,dStr,0,0,0,0);
            return ret;
            // new Date(année, mois, jour, heures, minutes, secondes[, millisecondes])
		};
		
	function dateMMYYYYToString(pDate) {
			var mStr = pDate.getMonth()+1;
            var yStr = pDate.getFullYear();
            return mStr + "/" + yStr;
		};
		
	function mySelectHandler1(type,args,obj) {
			var selected = args[0];
			date1 = this.toDate(selected[0]);
			txtdate1.value = dateToString(date1);
			updateNbNuits();
		};
		
	function mySelectHandler2(type,args,obj) {
			var selected = args[0];
			date2 = this.toDate(selected[0]);
			txtdate2.value = dateToString(date2)
			updateNbNuits();
		};
		
	function updateNbNuits() { 
			var Duree1 = Date.parse(YAHOO.widget.cal1.getSelectedDates(0)); 
			var Duree2 = Date.parse(YAHOO.widget.cal2.getSelectedDates(0)); 
			var Diffduree = Duree2-Duree1;
			nbnuits.value = Math.round(Diffduree/(24*60*60*1000));
		}; 
		
	//Calendar 1
	YAHOO.widget.cal1 = new YAHOO.widget.Calendar("cal1","cal1Container", 
																	{ LOCALE_WEEKDAYS:"short", 
																	  START_WEEKDAY: 1
																	 } );
			
	YAHOO.widget.cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
	YAHOO.widget.cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
	YAHOO.widget.cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);

	YAHOO.widget.cal1.cfg.setProperty("MD_DAY_POSITION", 1);
	YAHOO.widget.cal1.cfg.setProperty("MD_MONTH_POSITION", 2);
		
	YAHOO.widget.cal1.select(min_date1);
	YAHOO.widget.cal1.cfg.setProperty("PAGEDATE", min_mmyyyydate1);
	YAHOO.widget.cal1.cfg.setProperty("mindate", min_date1);
	
	YAHOO.widget.cal1.selectEvent.subscribe(mySelectHandler1, YAHOO.widget.cal1, true);
	YAHOO.widget.cal1.render();
	
	//Calendar 2
	YAHOO.widget.cal2 = new YAHOO.widget.Calendar("cal2","cal2Container", 
																	{ LOCALE_WEEKDAYS:"short", 
																	  START_WEEKDAY: 1
																	 } );
				
	YAHOO.widget.cal2.cfg.setProperty("MDY_DAY_POSITION", 1);
	YAHOO.widget.cal2.cfg.setProperty("MDY_MONTH_POSITION", 2);
	YAHOO.widget.cal2.cfg.setProperty("MDY_YEAR_POSITION", 3);

	YAHOO.widget.cal2.cfg.setProperty("MD_DAY_POSITION", 1);
	YAHOO.widget.cal2.cfg.setProperty("MD_MONTH_POSITION", 2);
	
	YAHOO.widget.cal2.select(min_date2);
	YAHOO.widget.cal2.cfg.setProperty("PAGEDATE", min_mmyyyydate2);
	YAHOO.widget.cal2.cfg.setProperty("mindate", min_date1);
	
	YAHOO.widget.cal2.selectEvent.subscribe(mySelectHandler2, YAHOO.widget.cal2, true);
	YAHOO.widget.cal2.render();
	
	//Submit
	YAHOO.util.Event.onContentReady("submitresafields", function () {

            //var btnsubmitresa = YAHOO.util.Dom.get("btnsubmitresa");
            btnsubmitresa;
                    
        });
	
	function onSubmitResa(p_oEvent) {
            
            var ok = true;
            var len = seloffredebut.value.length;
            var nbadults = parseInt(seladults.value);
            var nbchildren = parseInt(selchildren.value);
                                                 			
			if (nbnuits.value <= 0)
			{
				alert("The date of departure must be greater than the date of arrival");
				ok = false;
			} else if ((nbadults +  nbchildren) > 4)
			{
				alert("4 people maximum. Reduce the number of people.");
				ok = false;
			} else if ( len > 0)
			{
				var dat_offre_debut = stringToDate(seloffredebut.value);
				var dat_select_debut = stringToDate(txtdate1.value);
				var dat_offre_fin = stringToDate(seloffrefin.value);
				/*var dat_select_fin = stringToDate(txtdate2.value);*/
				
					if ((dat_select_debut < dat_offre_debut) || (dat_select_debut > dat_offre_fin)) 
				{
					alert("Not valid offer code with the dates selected ! \rDelete the offer code or select other dates.");
					ok = false;
				};
			};

			if (ok){
				btnsubmitresa.value = " Search in progress... ";
				btnsubmitresa.disabled = true;
			}else{
				YAHOO.util.Event.preventDefault(p_oEvent);		
			};									            
        };
        
     function onChangeOffre(p_oEvent) {
     
		var index = -1;
		var input = this.value;
		input = input.toUpperCase();
		var len = input.length;
		
		if (len == 5){
		
			for (var i=0; i<array_offres.length; i++) {
				
				var offre = array_offres[i];
				index = offre.indexOf(input);
				
				if (index > -1){
					break;
				};
			};
		
		};
                						
		if (index > -1){
		
				alert("Valid code");
									
				blocoffredebut.style.visibility = "visible";
				blocoffredebut.style.display = "block";
				
				blocoffrefin.style.visibility = "visible";
				blocoffrefin.style.display = "block";
				
				var array_offre = offre.split(" ");
				seloffredebut.value = array_offre[1];
				seloffrefin.value = array_offre[2];
											
			} else
			{
				if (len > 0){
					alert("Code not valid !");
					this.value = "";
				};
								
				seloffredebut.value = "";
				seloffrefin.value = "";
				
				blocoffredebut.style.visibility = "hidden";
				blocoffredebut.style.display = "none";
				
				blocoffrefin.style.visibility = "hidden";
				blocoffrefin.style.display = "none";
															
			};			
						
		};
	
	YAHOO.util.Event.on("frmresa", "submit", onSubmitResa);
	//YAHOO.util.Event.on("seloffre", "change", onChangeOffre);
	YAHOO.util.Event.on("seloffre", "blur", onChangeOffre);
	
};

YAHOO.util.Event.onDOMReady(YAHOO.widget.init);