﻿	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ño v&acute;lido"
			},
			monthFormat: YAHOO.widget.Calendar.LONG,
			initialFocus: "year"
		};

// ARRIVAL
	YAHOO.travelresidences.calendar.cal1 = new YAHOO.widget.Calendar ("cal1","cal1Container", 
																				{ 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]]);
	
	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];
			//(aDate[1]<10)?"0"+aDate[1]:aDate[1]
            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];
		}
        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		
				Mensajes ("ErrorDeparture");
				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 = "";
			}
		} 
		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", 
																				{ 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]]);
	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];
		}
        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
				Mensajes ("ErrorArrival");
				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 = "";
			}
		} 
		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));
			Fecha = StartDate;

			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 < 2) {
				tb_show('', "#TB_inline?height=90&width=300&inlineId=ErrorDates&modal=true", '');
				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 {
				var TxtStartDate = StartDate.getUTCDate()  + "/" + (StartDate.getUTCMonth()+1) + "/" + StartDate.getUTCFullYear ();
				var TxtEndDate = EndDate.getUTCDate() + "/" + (EndDate.getUTCMonth()+1) + "/" + EndDate.getUTCFullYear ();
				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);
				}
			}	
		}
		Calendario1.render();
		Calendario2.render();
	}
	var Mensajes = function(idMsg) {
		tb_show('', "#TB_inline?height=105&width=300&inlineId="+idMsg+"&modal=true", '');
	}
}

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();}
} 
