var selectedDates='';
var firstDate='';
YAHOO.namespace("travelresidences.calendar");

YAHOO.travelresidences.calendar.init = function() {
	var navConfig = {
		strings : {
			month: "Selecciona un mes",
			year: "Ingresa el a&ntilde;o",
			submit: "OK",
			cancel: "Cancelar",
			invalidYear: "Por favor, ingresa un a&ntilde;o v&acute;lido"
		},
		monthFormat: YAHOO.widget.Calendar.LONG,
		initialFocus: "year"
	};	
	// ARRIVAL
	YAHOO.travelresidences.calendar.cal1 = new YAHOO.widget.Calendar ("cal1","cal1Container", { 
		pagedate: PAGE_DATE,
		mindate: MIN_DATE, 
		maxdate: MAX_DATE,
		navigator:navConfig,
		title:TITLE_ARRIVAL,
		close:true,
		show_week_header: true
	});	
	YAHOO.travelresidences.calendar.cal1.cfg.setProperty("MONTHS_LONG", [ARRAY_MONTHS[0],ARRAY_MONTHS[1],ARRAY_MONTHS[2],ARRAY_MONTHS[3],ARRAY_MONTHS[4],ARRAY_MONTHS[5],ARRAY_MONTHS[6],ARRAY_MONTHS[7],ARRAY_MONTHS[8],ARRAY_MONTHS[9],ARRAY_MONTHS[10],ARRAY_MONTHS[11]]);
	YAHOO.travelresidences.calendar.cal1.cfg.setProperty("WEEKDAYS_SHORT", [ARRAY_DAYS[0],ARRAY_DAYS[1],ARRAY_DAYS[2],ARRAY_DAYS[3],ARRAY_DAYS[4],ARRAY_DAYS[5],ARRAY_DAYS[6]]);

	BloqueaFechas (YAHOO.travelresidences.calendar.cal1);
	YAHOO.travelresidences.calendar.cal1.render();
	YAHOO.travelresidences.calendar.cal1.changePageEvent.subscribe(function () {             
		window.setTimeout(function () {
			YAHOO.travelresidences.calendar.cal1.show();
		}, 0);
	});
	var myDeselectHandler = function(type,args,obj) {
		var selected = args[0][0];
		var DateSelection = selected[1]+"/"+selected[2]+"/"+selected[0];
		YAHOO.travelresidences.calendar.cal2.addRenderer(DateSelection, YAHOO.travelresidences.calendar.cal2.renderCellDefault);
	};
	YAHOO.travelresidences.calendar.cal1.deselectEvent.subscribe(myDeselectHandler, YAHOO.travelresidences.calendar.cal1, true);
	YAHOO.travelresidences.calendar.cal1.selectEvent.subscribe(function (p_sType, p_aArgs) {
		
		var aDate;
		if (p_aArgs) {
			aDate = p_aArgs[0][0];
            YAHOO.util.Dom.get("month-field").value = aDate[1];
            YAHOO.util.Dom.get("day-field").value = aDate[2];
            YAHOO.util.Dom.get("year-field").value = aDate[0];
			if (YAHOO.util.Dom.get("month-field_").value == '') {
               selectedDates = YAHOO.travelresidences.calendar.cal1.getSelectedDates();
               if (selectedDates.length > 0) {
                    firstDate = selectedDates[0];
                    YAHOO.travelresidences.calendar.cal2.cfg.setProperty("pagedate", (firstDate.getMonth()+1) + "/" + firstDate.getFullYear());
                    YAHOO.travelresidences.calendar.cal2.render();
               }
            }
		}
		document.info_json.fecha_inicio.value=aDate[1]+"/"+aDate[2]+"/"+aDate[0];
		
		
        YAHOO.travelresidences.calendar.cal1.hide();
		var DateSelection = aDate[1]+"/"+aDate[2]+"/"+aDate[0];
		var dDate = new Array();
		dDate[1] = YAHOO.util.Dom.get("month-field_").value;
		dDate[2] = YAHOO.util.Dom.get("day-field_").value;
		dDate[0] = YAHOO.util.Dom.get("year-field_").value;
		var StartDate= new Date(aDate[0],aDate[1]-1,aDate[2]);
		var EndDate= new Date(dDate[0],dDate[1]-1,dDate[2]);
		

		if (dDate[0] != "") {
			if (StartDate > EndDate) {
				// Calcular de nvo fecha de salida
		
				$( '#ErrorCalendario' ).html(ErrorDeparture);
				tb_show('', "#TB_inline?height=105&width=300&inlineId=Errors&modal=true", '');
				
				YAHOO.travelresidences.calendar.cal2.reset();
				YAHOO.util.Dom.get("month-field_").value = "";
				YAHOO.util.Dom.get("day-field_").value = "";
				YAHOO.util.Dom.get("year-field_").value = "";
				ResetPrices();
			}
		} 
		if($("#day-field_").val()!=""){
			ObtenPrecio();
		}	
		ReiniciaEstados('A');
	});
	YAHOO.util.Event.addListener("show2up", "click", YAHOO.travelresidences.calendar.cal1.show, YAHOO.travelresidences.calendar.cal1, true);
	// DEPARTURE
	YAHOO.travelresidences.calendar.cal2 = new YAHOO.widget.Calendar("cal2","cal2Container", { 
		pagedate: PAGE_DATE,
		mindate: MIN_DATE, 
		maxdate: MAX_DATE,
		navigator:navConfig,
		title:TITLE_DEPARTURE,
		close: true,
		show_week_header: true 
	});
	YAHOO.travelresidences.calendar.cal2.cfg.setProperty("MONTHS_LONG", [ARRAY_MONTHS[0],ARRAY_MONTHS[1],ARRAY_MONTHS[2],ARRAY_MONTHS[3],ARRAY_MONTHS[4],ARRAY_MONTHS[5],ARRAY_MONTHS[6],ARRAY_MONTHS[7],ARRAY_MONTHS[8],ARRAY_MONTHS[9],ARRAY_MONTHS[10],ARRAY_MONTHS[11]]);
	YAHOO.travelresidences.calendar.cal2.cfg.setProperty("WEEKDAYS_SHORT", [ARRAY_DAYS[0],ARRAY_DAYS[1],ARRAY_DAYS[2],ARRAY_DAYS[3],ARRAY_DAYS[4],ARRAY_DAYS[5],ARRAY_DAYS[6]]);
	BloqueaFechas(YAHOO.travelresidences.calendar.cal2);
	YAHOO.travelresidences.calendar.cal2.render();
	YAHOO.travelresidences.calendar.cal2.changePageEvent.subscribe(function () {             
		window.setTimeout(function () {
            YAHOO.travelresidences.calendar.cal2.show();              
		}, 0);
    });
	var myDeselectHandler2 = function(type,args,obj) {
		var selected = args[0][0];
		var DateSelection = selected[1]+"/"+selected[2]+"/"+selected[0];
		YAHOO.travelresidences.calendar.cal1.addRenderer(DateSelection, YAHOO.travelresidences.calendar.cal1.renderCellDefault);
	};
	YAHOO.travelresidences.calendar.cal2.deselectEvent.subscribe(myDeselectHandler2, YAHOO.travelresidences.calendar.cal2, true);				
	YAHOO.travelresidences.calendar.cal2.selectEvent.subscribe(function (p_sType, p_aArgs) {
	
		var dDate;
		if (p_aArgs) {
			dDate = p_aArgs[0][0];
            YAHOO.util.Dom.get("month-field_").value = dDate[1];
            YAHOO.util.Dom.get("day-field_").value = dDate[2];
            YAHOO.util.Dom.get("year-field_").value = dDate[0];
			if (YAHOO.util.Dom.get("month-field").value == '') {
				selectedDates = YAHOO.travelresidences.calendar.cal2.getSelectedDates();
				if (selectedDates.length > 0) {
					firstDate = selectedDates[0];
					YAHOO.travelresidences.calendar.cal1.cfg.setProperty("pagedate", (firstDate.getMonth()+1) + "/" + firstDate.getFullYear());
					YAHOO.travelresidences.calendar.cal1.render();
				}
			}
		}
		
		document.info_json.fecha_final.value=dDate[1]+"/"+dDate[2]+"/"+dDate[0];
		
        YAHOO.travelresidences.calendar.cal2.hide();
		var DateSelection = dDate[1]+"/"+dDate[2]+"/"+dDate[0];
		var aDate = new Array();
		aDate[1] = YAHOO.util.Dom.get("month-field").value;
		aDate[2] = YAHOO.util.Dom.get("day-field").value;
		aDate[0] = YAHOO.util.Dom.get("year-field").value;
		var StartDate= new Date(aDate[0],aDate[1]-1,aDate[2]);
		var EndDate= new Date(dDate[0],dDate[1]-1,dDate[2]);
		if (aDate[0] != "") {
			if (StartDate > EndDate) {
				// Calcular de nvo fecha de llegada
	
				$( '#ErrorCalendario' ).html(ErrorArrival);
				tb_show('', "#TB_inline?height=105&width=300&inlineId=Errors&modal=true", '');
				
				YAHOO.travelresidences.calendar.cal1.reset();
				YAHOO.util.Dom.get("month-field").value = "";
				YAHOO.util.Dom.get("day-field").value = "";
				YAHOO.util.Dom.get("year-field").value = "";
				ResetPrices();
			}
		} 
		if($("#day-field").val()!=""){
			ObtenPrecio();
		}	
		ReiniciaEstados('D');
	});
	// Listener to show the 1-up Calendar when the button is clicked
	YAHOO.util.Event.addListener("show1up", "click", YAHOO.travelresidences.calendar.cal2.show, YAHOO.travelresidences.calendar.cal2, true);
	var ReiniciaEstados = function(Procede) {
		Calendario1 = YAHOO.travelresidences.calendar.cal1;
		Calendario2 = YAHOO.travelresidences.calendar.cal2
		var aDate = new Array();
		aDate[1] = YAHOO.util.Dom.get("month-field").value;
		aDate[2] = YAHOO.util.Dom.get("day-field").value;
		aDate[0] = YAHOO.util.Dom.get("year-field").value;
		var dDate = new Array();
		dDate[1] = YAHOO.util.Dom.get("month-field_").value;
		dDate[2] = YAHOO.util.Dom.get("day-field_").value;
		dDate[0] = YAHOO.util.Dom.get("year-field_").value;
		// Fecha Inicial
		if (aDate[0] != "") {
			var DateSelection = aDate[1]+"/"+aDate[2]+"/"+aDate[0];
			Calendario1.addRenderer(DateSelection, Calendario1.renderCellStyleHighlight1);
			Calendario2.addRenderer(DateSelection, Calendario2.renderCellStyleHighlight1);
		}
		// Fecha Final
		if (dDate[0] != "") {
			var DateSelection = dDate[1]+"/"+dDate[2]+"/"+dDate[0];
			Calendario1.addRenderer(DateSelection, Calendario1.renderCellStyleHighlight2);
			Calendario2.addRenderer(DateSelection, Calendario2.renderCellStyleHighlight2);
		}
		//Valida Rango
		if (dDate[0] != "" && aDate[0] != "") {
			var StartDate= new Date(aDate[0],aDate[1]-1,aDate[2]);
			var EndDate= new Date(dDate[0],dDate[1]-1,dDate[2]);
			var Noches = Math.abs(Math.round((StartDate-EndDate)/86400000));
			if (Noches < MinStay) {
				//Mensajes("ErrorDates");
				$( '#ErrorCalendario' ).html(ErrorDates);
				tb_show('', "#TB_inline?height=105&width=300&inlineId=Errors&modal=true", '');

				ResetPrices();
				if (Procede == "A") {
					YAHOO.travelresidences.calendar.cal1.reset();
					YAHOO.util.Dom.get("month-field").value = "";
					YAHOO.util.Dom.get("day-field").value = "";
					YAHOO.util.Dom.get("year-field").value = "";
				} else {
					YAHOO.travelresidences.calendar.cal2.reset();
					YAHOO.util.Dom.get("month-field_").value = "";
					YAHOO.util.Dom.get("day-field_").value = "";
					YAHOO.util.Dom.get("year-field_").value = "";
				}
			} else {
				sw=1;
				Fecha = StartDate;
				for (i=0; i<=Noches && sw==1; i++) {
					var FechaTxt = (Fecha.getUTCMonth()+1) + "/" + Fecha.getUTCDate() + "/" + Fecha.getUTCFullYear ();
					if (ExistIn (FechaTxt, Disavailable) != -1)
						sw=0;
					Fecha.setDate(Fecha.getDate() + 1);
				}
				if (sw==0) {
					//Mensajes ("ErrorRange");
					$( '#ErrorCalendario' ).html(ErrorRange);
					tb_show('', "#TB_inline?height=105&width=300&inlineId=Errors&modal=true", '');
					
					Calendario1.reset();
					Calendario2.reset();
					YAHOO.util.Dom.get("month-field").value = "";
					YAHOO.util.Dom.get("day-field").value = "";
					YAHOO.util.Dom.get("year-field").value = "";
					YAHOO.util.Dom.get("month-field_").value = "";
					YAHOO.util.Dom.get("day-field_").value = "";
					YAHOO.util.Dom.get("year-field_").value = "";
					ResetPrices();
				} else {
					// Indica Estadia
					if (dDate[0] != "" && aDate[0] != "") {
						var StartDate= new Date(aDate[0],aDate[1]-1,aDate[2]);
						var EndDate= new Date(dDate[0],dDate[1]-1,dDate[2]);
						var Noches = Math.abs(Math.round((StartDate-EndDate)/86400000));
						getId("Estadia").innerHTML=DESCRIPTION + (Noches+1) + TEXT_DAYS + Noches + TEXT_NIGHTS;
						YAHOO.util.Dom.get("Detalle8").value = DESCRIPTION + (Noches+1) + TEXT_DAYS + Noches + TEXT_NIGHTS;						
						// Se cambia el formato (dd/mm/yyyy) y se envian
						var dayStart = (StartDate.getUTCDate()<10)?"0"+StartDate.getUTCDate():StartDate.getUTCDate();
						var TxtStartDate = dayStart  + "/" + (StartDate.getUTCMonth()+1) + "/" + StartDate.getUTCFullYear ();
						var TxtEndDate = EndDate.getUTCDate() + "/" + (EndDate.getUTCMonth()+1) + "/" + EndDate.getUTCFullYear ();
						UpdateInfoForPrice (TxtStartDate, TxtEndDate, Noches);
						for (i=1; i<Noches; i++) {
							Fecha = StartDate;
							Fecha.setDate(Fecha.getDate() + 1);
							var FechaTxt = (Fecha.getUTCMonth()+1) + "/" + Fecha.getUTCDate() + "/" + Fecha.getUTCFullYear ();
							Calendario1.addRenderer(FechaTxt, Calendario1.renderCellStyleHighlight3);
							Calendario2.addRenderer(FechaTxt, Calendario2.renderCellStyleHighlight3);
						}
					}
				}
				if($("#day-field").val()!="" && $("#day-field_").val()!="")
					ObtenPrecio();
			}
		}
		// Bloquea Fechas
		BloqueaFechas (Calendario1);
		BloqueaFechas (Calendario2);
		Calendario1.render();
		Calendario2.render();
	}
	
	
	function BloqueaFechas (Calendario) {
		for (i=0; i<Disavailable.length; i++) {
			Calendario.addRenderer(Disavailable[i], Calendario.renderBodyCellRestricted);
		}
	}
	
	function ExistIn (valeur, String) {
		var datos=valeur.split("/");
		if (datos[0].length ==1) ;
			valeur = "0" + valeur;
		for (var i in String) { 
			if (String[i] === valeur) 
				return i; 
		}
		return -1;
	}
}

YAHOO.util.Event.onDOMReady(YAHOO.travelresidences.calendar.init);

document.onclick=check;
function check(e){
var target = (e && e.target) || (event && event.srcElement);
var obj1 = document.getElementById('show2up');
var obj2 = document.getElementById('show1up');
var obj3 = document.getElementById('calnav');
if(target==obj1){YAHOO.travelresidences.calendar.cal2.hide();}
if(target==obj2){YAHOO.travelresidences.calendar.cal1.hide();}
}
function ResetPrices() {
	var v=document.info_json;
	
	// Values in form
	f.fecha_inicio.value="";
	f.fecha_final.value="";
	f.ocupacion_maxima.value=2;
	f.id_promocion.value=0;
	
	//Display
	$( '#hospedaje' ).html("0.00&nbsp;");
	$( '#DiscountOC' ).html("0.00&nbsp;");
	$( '#precioFinal' ).html("0.00&nbsp;");
	$( '#descriptionDiscount' ).html("");
	$( '#envia_datos' ).hide();
	$( '#signoDiscount' ) .hide();
	$( '#signoDiscountValor' ) .hide();
	$( '#currency_descuento' ) .hide();

	$("#cmb_promocion option[@value='0']").attr("selected","selected");	
} 

