﻿/********************************************************************************************************************************************************************************
 * Declaracion de la variable del calendario																											*
 ********************************************************************************************************************************************************************************/
var MV_Calendar = new Array();


/********************************************************************************************************************************************************************************
 * Constructor del calendario																													*
 ********************************************************************************************************************************************************************************/
function MVCalendar_Create(id) {
 MV_Calendar[id] = {'CalendarHTML':null, 'Date':new Date(), 'ElementPicker':null, 'DateISO':true, 'MinDate':new Date(1900, 01, 01), 'MaxDate':new Date(2099, 12, 31), 'RePaint':true, 'Top':0, 'Left':0, 'DrawPrevMonth':true, 'DrawNextMonth':true, 'AddMonth':null, 'LessMonth':null, 'LessMonthImage':'/hotel/Controles/BuscadorVuelHotel/img/flechaL.png', 'AddMonthImage':'/hotel/Controles/BuscadorVuelHotel/img/flechaR.png', 'SelectDay':null, 'ComplementShowCalendarCustom':null, 'DateSeparator':'-','Days':new Array('Lun','Mar','Mie','Jue','Vie','Sab','Dom'),'Months':new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre')}
}

/********************************************************************************************************************************************************************************
 * Funciones de pintado del calendario																											*
 ********************************************************************************************************************************************************************************/


/**
  * Crea la tabla del calendario
  * @param id String Identificador de calendario
  */
function MVCalendar_CreateTable(id) {
	var table = "";
	table += "<table width =\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" align=\"center\" >";
	table += MVCalendar_CreateTableHeader(id);
	table += MVCalendar_CreateWeekDays(id);
	table += MVCalendar_CreateDays(id);
	table += "</table>";
	
	return table;
}


/**
  * Crea la cabecera del calendario
  * @param id String Identificador de calendario
  */
function MVCalendar_CreateTableHeader(id) {
	var table = "";
	
	table += "<tr>";
	
	//Comprobamos si debemos o no pintar el enlace para retroceder un mes
	if(MV_Calendar[id]['DrawPrevMonth'] == false) {
		table += "<td class=\"MV_Calendar_Title\"></td>";
	} else {
		if((MV_Calendar[id]['Date'].getFullYear() == MV_Calendar[id]['MinDate'].getFullYear() && MV_Calendar[id]['Date'].getMonth() > MV_Calendar[id]['MinDate'].getMonth()) || MV_Calendar[id]['Date'].getFullYear() > MV_Calendar[id]['MinDate'].getFullYear()) {
			table += "<td class=\"MV_Calendar_Title\"><a href=\"javascript:MVCalendar_LessMonth('" + id + "')\"><img src=\"" + MV_Calendar[id]['LessMonthImage'] + "\" class=\"MV_Calendar_DaysImg\" alt=\"<\" /></td>";
		} else {
			table += "<td class=\"MV_Calendar_Title\"></td>";
		}
	}
	
	//Pintamos en nombre del mes y el año
	table += "<td colspan=\"5\" class=\"MV_Calendar_Title\">" + MVCalendar_MonthName(id,MV_Calendar[id]['Date'].getMonth() + 1) + " " + MV_Calendar[id]['Date'].getFullYear() + "</td>";
	
	//Comprobamos si debemos o no pintar el enlace para avanzar un mes
	if(MV_Calendar[id]['DrawNextMonth'] == false) {
		table += "<td class=\"MV_Calendar_Title\"></td>";
	} else {
		if((MV_Calendar[id]['Date'].getFullYear() == MV_Calendar[id]['MaxDate'].getFullYear() && MV_Calendar[id]['Date'].getMonth() < MV_Calendar[id]['MaxDate'].getMonth()) || MV_Calendar[id]['Date'].getFullYear() < MV_Calendar[id]['MaxDate'].getFullYear()) {
			table += "<td class=\"MV_Calendar_Title\"><a href=\"javascript:MVCalendar_AddMonth('" + id + "')\"><img src=\"" + MV_Calendar[id]['AddMonthImage'] + "\" class=\"MV_Calendar_DaysImg\" alt=\">\" /></td>";
		} else {
			table += "<td class=\"MV_Calendar_Title\"></td>";
		}
	}
	
	table += "</tr>";
	
	return table;
}


function MVCalendar_CreateWeekDays(id) {
	var tr = "";
	var i;
	tr += "<tr class=\"MV_Calendar_TitleWeekDay_row\">";
	if (MV_Calendar[id]['Days'] != null){
	    for (i=0; i < 7;i++)
	        tr += "<td class=\"MV_Calendar_TitleWeekDay\">" + MV_Calendar[id]['Days'][i] + "</td>";
	   
	}
	else {
    tr += "<td class=\"MV_Calendar_TitleWeekDay\">Lun</td>";
	tr += "<td class=\"MV_Calendar_TitleWeekDay\">Mar</td>";
	tr += "<td class=\"MV_Calendar_TitleWeekDay\">Mie</td>";
	tr += "<td class=\"MV_Calendar_TitleWeekDay\">Jue</td>";
	tr += "<td class=\"MV_Calendar_TitleWeekDay\">Vie</td>";
	tr += "<td class=\"MV_Calendar_TitleWeekEnd\">Sab</td>";
	tr += "<td class=\"MV_Calendar_TitleWeekEnd\">Dom</td>";
	
	}
    tr += "</tr>";
	
	return tr;
}


function MVCalendar_CreateDays(id) {
	var tr = "";
	var i;
	var j;
	var dayCount = 1;
	var nextMonthDay = 1;
	var prevMonthDay = 1;
	var firstDayOfWeek = 1;
	var myDate = new Date(MV_Calendar[id]['Date'].getFullYear(), MV_Calendar[id]['Date'].getMonth(), 1);
	var da=new Date();
	diaactual = da.getDate()
	
	firstDayOfWeek = myDate.getDay();
	if(firstDayOfWeek == 0) {
		firstDayOfWeek = 7;
	}

	prevMonthDay = MVCalendar_DayOfMonth(myDate.getMonth(),myDate.getFullYear())
	prevMonthDay -= firstDayOfWeek - 2;
	var bgcolor = "";
	
	for(i = 0; i < 6; i++) {
		tr += "<tr>";
		for(j = 0; j < 7; j++) {
			if(dayCount == diaactual)
				bgcolor = "#cccccc;";
			else
				if(j == 5 || j == 6)
					bgcolor = "#cccccc";
				else
					bgcolor = "";
					
			if (((j + 1) == firstDayOfWeek || firstDayOfWeek == null) && dayCount <= MVCalendar_DayOfMonth(myDate.getMonth() + 1,myDate.getFullYear())) {
				myDate.setDate(dayCount);
				
					
				
				if(MVCalendar_IsSmallDate(MV_Calendar[id]['MinDate'], myDate) || MVCalendar_IsBigDate(MV_Calendar[id]['MaxDate'], myDate)) {
					tr += "<td class=\"MV_Calendar_BehindDays\" style=\"background-color:"+bgcolor+"\" width=\"20\" height=\"20\"><label>" + dayCount + "</label></td>";
				} else {
					tr += "<td class=\"MV_Calendar_Days\" style=\"background-color:"+bgcolor+"\" width=\"20\" height=\"20\"><a href=\"javascript:MVCalendar_SelectDay('" + id + "', '" + myDate.getFullYear() + "', '" + MVCalendar_TwoDigit((myDate.getMonth() + 1)) + "', '" + MVCalendar_TwoDigit(dayCount) + "')\" class=\"MV_Calendar_DaysA\">" + dayCount + "</a></td>";
				}
				
				dayCount++;
				firstDayOfWeek = null;
			} else {
				if(dayCount <= MVCalendar_DayOfMonth(myDate.getMonth() + 1,myDate.getFullYear())) {
					if(MVCalendar_IsSmallDate(MV_Calendar[id]['MinDate'], myDate) || MVCalendar_IsBigDate(MV_Calendar[id]['MaxDate'], myDate)) {
						tr += "<td class=\"MV_Calendar_BehindDays\" style=\"background-color:"+bgcolor+"\" width=\"20\" height=\"20\"><label>" + prevMonthDay + "</label></td>";
					} else {
						tr += "<td class=\"MV_Calendar_OtherMonth\" style=\"background-color:"+bgcolor+"\" width=\"20\" height=\"20\"><label>" + prevMonthDay + "</label></td>";
					}
					prevMonthDay++;
				} else {
					if(MVCalendar_IsSmallDate(MV_Calendar[id]['MinDate'], myDate) || MVCalendar_IsBigDate(MV_Calendar[id]['MaxDate'], myDate)) {
						tr += "<td style=\"background-color:"+bgcolor+"\" width=\"20\" height=\"20\" class=\"MV_Calendar_BehindDays\"><label>" + nextMonthDay + "</label></td>";
					} else {
						tr += "<td style=\"background-color:"+bgcolor+"\" width=\"20\" height=\"20\" class=\"MV_Calendar_OtherMonth\"><label>" + nextMonthDay + "</label></td>";
					}
					nextMonthDay++;
				}
			}
		}
		tr += "</tr>";
	}
	
	return tr;
}


/********************************************************************************************************************************************************************************
 * Funciones control del calendario																												*
 ********************************************************************************************************************************************************************************/
function MVCalendar_LessMonth(id) {
	var month = MV_Calendar[id]['Date'].getMonth();
	var year;
	
	if(month == 0) {
		year = MV_Calendar[id]['Date'].getFullYear();
		year--;
		MV_Calendar[id]['Date'].setFullYear(year);
		month = 11;
		MV_Calendar[id]['Date'].setMonth(month);
	} else {
		month--;
		MV_Calendar[id]['Date'].setMonth(month);
	}
	
	if(MV_Calendar[id]['LessMonth'] != null) {
		eval(MV_Calendar[id]['LessMonth']);
	}
	
	MV_Calendar[id]['CalendarHTML'] = MVCalendar_CreateTable(id);
	document.getElementById(id).innerHTML = MV_Calendar[id]['CalendarHTML'];
}


function MVCalendar_AddMonth(id) {
	var month = MV_Calendar[id]['Date'].getMonth();
	var year;
	
	if(month == 11) {
		year = MV_Calendar[id]['Date'].getFullYear();
		year++;
		MV_Calendar[id]['Date'].setFullYear(year);
		month = 0;
		MV_Calendar[id]['Date'].setMonth(month);
	} else {
		month++;
		MV_Calendar[id]['Date'].setMonth(month);
	}
	
	if(MV_Calendar[id]['AddMonth'] != null) {
		eval(MV_Calendar[id]['AddMonth']);
	}
	
	MV_Calendar[id]['CalendarHTML'] = MVCalendar_CreateTable(id);
	document.getElementById(id).innerHTML = MV_Calendar[id]['CalendarHTML'];
}


function MVCalendar_ShowCalendar(id, parent) {
	var element = document.getElementById(id);
	var elementParent = document.getElementById(parent);
	var top;
	var left;

	if(MV_Calendar[id]['RePaint'] == true) {
		MV_Calendar[id]['CalendarHTML'] = MVCalendar_CreateTable(id);
		document.getElementById(id).innerHTML = MV_Calendar[id]['CalendarHTML'];
	}
	
	top = MVCalendar_GetTop(elementParent);
	left = MVCalendar_GetLeft(elementParent);
	
	top += MV_Calendar[id]['Top'];
	left += MV_Calendar[id]['Left'];
	
	if(MV_Calendar[id]['ComplementShowCalendarCustom'] != null) {
		eval(MV_Calendar[id]['ComplementShowCalendarCustom']);
	}

	element.style.left = "691px";
	element.style.top = "335px";
	element.style.display = "block";
	elementParent.blur();
}


function MVCalendar_HideCalendar(id) {
	var element = document.getElementById(id);
	element.style.display = "none";
}


function MVCalendar_SelectDay(id, year, month, day) {
    if(MV_Calendar[id]['DateISO'] == true) {
		document.getElementById(MV_Calendar[id]['ElementPicker']).value = year + MV_Calendar[id]['DateSeparator'] + month + MV_Calendar[id]['DateSeparator'] + day;
	} else {
		document.getElementById(MV_Calendar[id]['ElementPicker']).value = day + MV_Calendar[id]['DateSeparator'] + month + MV_Calendar[id]['DateSeparator'] + year;
	}
	
	MVCalendar_HideCalendar(id);
	
	if(MV_Calendar[id]['SelectDay'] != null) {
		eval(MV_Calendar[id]['SelectDay']);
	}
}


/********************************************************************************************************************************************************************************
 * Funciones de utilidades varias																												*
 ********************************************************************************************************************************************************************************/
function MVCalendar_GetLeft(elementOrigin) {
    var curNode = elementOrigin;
    var left = 0;

    do {
        left += curNode.offsetLeft;
		if(curNode.offsetParen)
	        curNode = curNode.offsetParent;
		else
			return 0;
    } while(curNode.tagName.toLowerCase() != 'body');

    return left;
}


function MVCalendar_GetTop(elementOrigin) {
    var curNode = elementOrigin;
    var top = -200;

    do {
        top += curNode.offsetTop;
		if(curNode.offsetParent)
        	curNode = curNode.offsetParent;
		else 
			return top;
    } while(curNode.tagName.toLowerCase() != 'body');

    return top;
}


function MVCalendar_DayOfMonth(month, year) {
	var days;
	
	switch(month) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			days = 31;
		break;
		case 2:
			if((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)) {
				days = 29;
			} else {
				days = 28;
			}
		break;
		case 4:
		case 6:
		case 9:
		case 11:
			days = 30;
		break;
		default:
			days = 30;
		break;
	}
	
	return days;
}


function MVCalendar_MonthName(id, month) {
	var name;

	name = MV_Calendar[id]['Months'][month - 1];
	
	return name;
}


function MVCalendar_IsSmallDate(dateA, dateB) {
	if(dateA.getFullYear() > dateB.getFullYear()) {
		return true;
	} else {
		if(dateA.getFullYear() == dateB.getFullYear()) {
			if(dateA.getMonth() > dateB.getMonth()) {
				return true;
			} else {
				if(dateA.getMonth() == dateB.getMonth()) {
					if(dateA.getDate() > dateB.getDate()) {
						return true;
					} else {
					
						return false;
					}
				} else {
					return false;
				}
			}
		} else {
			return false;
		}
	}
}


function MVCalendar_IsBigDate(dateA, dateB) {
	if(dateA.getFullYear() > dateB.getFullYear()) {
		return false;
	} else {
		if(dateA.getFullYear() == dateB.getFullYear()) {
			if(dateA.getMonth() > dateB.getMonth()) {
				return false;
			} else {
				if(dateA.getMonth() == dateB.getMonth()) {
					if(dateA.getDate() > dateB.getDate()) {
						return false;
					} else {
					
						return true;
					}
				} else {
					return true;
				}
			}
		} else {
			return true;
		}
	}
}


function MVCalendar_SetValue(id, name, value) {
	MV_Calendar[id][name] = value;
}


function MVCalendar_TwoDigit(number) {
	number = number.toString();
	if(number.length == 1) {
		number = "0" + number;
	}
	
	return number;
}


/********************************************************************************************************************************************************************************
 * Funciones personalizadas																													*
 ********************************************************************************************************************************************************************************/
 
function MV_Calendar_SelectDay_Custom(id, year, month, day) {
	//aqui pilla el dia
	//var comboDia = $("#divComboDia").children();
	//aqui pon el selected index del combo  = day -1
	//var comboDia = document.getElementById("entradaD")
	//comboDia.selectedIndex = day -1;

    //var fechaParaSeleccionar = "";
    //if(month.substring(0,1) == "0")
    //{
      //  fechaParaSeleccionar = month.substring(1) + "-" + year;
    //}
    //else
    //{
      //  fechaParaSeleccionar = month + "-" + year;
    //}
    
    //var comboMes = $("#divComboMes").children();
    //var comboMes = document.getElementById("entradaM")
    //comboMes.selectedIndex = fechaParaSeleccionar
 //comboMes.val(fechaParaSeleccionar);
 
document.getElementById("entradaD").selectedIndex = day - 1;
document.getElementById("entradaM").selectedIndex = month - 1;

	var dateTemp = new Date();
	if(dateTemp.getFullYear() == year) {
		document.getElementById("entradaY").selectedIndex = 0;
	} else {
 	document.getElementById("entradaY").selectedIndex = 1;
	}

	fechaCombo();

}

function fechaCombo() {
	if (hotel_combo_check()) {
		fecha1 = $("#entradaD").attr("value") + "/" + $("#entradaM").attr("value") + "/" + $("#entradaY").attr("value");
		fecha2 = $("#entradaM").attr("value") + "/" + $("#entradaD").attr("value") + "/" + $("#entradaY").attr("value");
		$("#fechaEntrada").attr("value", fecha1);
		$("#fechaEntradaMos").html(fecha1 + ", "+ GetDiaNombre(fecha1));
		fechaHotelVuelta();
		f =  new Date(fecha2);
		//calendarioCtrl.SetSelectedDate(f,true)
	} 
	
}

function hotel_combo_check() {
	probarFecha = (document.getElementById("entradaD").value + "/" + document.getElementById("entradaM").value + "/" + document.getElementById("entradaY").value);
   
	var reg = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
  if (probarFecha.match(reg)) {
	
		f =  new Date(document.getElementById("entradaM").value + "/" + document.getElementById("entradaD").value + "/" + document.getElementById("entradaY").value);
        var fArr = document.getElementById("fechaHoy").value.split("/");
		hoy = new Date(fArr[1] + "/" + fArr[0] + "/" + fArr[2]);
	    diferenciaDias = Math.round((f - hoy)/(24*60*60*1000));
    
	    if(diferenciaDias < -1) {
			return false;
		} else {
			return true
        }
    } else {
    return false;
    } 
}

function fechaHotelVuelta() {
    fecha =document.getElementById("fechaEntrada").value;
    n = parseInt(document.getElementById("noches").value);
    var fArr = fecha.split("/");
    var d = fArr[0];
    var m = fArr[1]-1;
    var y = fArr[2];
    var fVuelta=new Date();
    fVuelta.setFullYear(y,m,d);
    fVuelta.setDate(fVuelta.getDate()+n);
    fVuelta = fVuelta.getDate() + "/" + (fVuelta.getMonth()+1) + "/" + fVuelta.getFullYear();
    document.getElementById("fechaVuelta").innerHTML=fVuelta + ", "+ GetDiaNombre(fVuelta);
}



function MV_Calendar_ShowCalendarCustom(id, top, left) {
	var tempLeft = left + 0;
	var tempTop = top + 160;
	
	var frameTop3;
	var frameLeft1;
	var frameLeft2;
	var frameLeft3;


	document.getElementById("CalendarCloseLayer").style.top = "0px";
	document.getElementById("CalendarCloseLayer").style.left = "0px";
	document.getElementById("CalendarCloseLayer").style.display = "block";
	document.getElementById("CalendarCloseLayer").style.zIndex = "100";
	//document.getElementById("CalendarCloseLayer").style.background = "#444444";
	
	if(navigator.userAgent.toLowerCase().indexOf('MSIE 6.0') != -1) {
		frameTop1 = top - 4;
		frameTop2 = -2;
		frameTop3 = -2;
		frameLeft1 = left - 2;
		frameLeft2 = -2;
		frameLeft3 = -2;
	} else {
		frameTop1 = top;
		frameTop2 = 0;
		frameTop3 = 0;
		frameLeft1 = left;
		frameLeft2 = 0;
		frameLeft3 = 0;
	}
	
	document.getElementById("MVCalendarFrame1").style.top = "335px";
	document.getElementById("MVCalendarFrame1").style.left = "692px";
	document.getElementById("MVCalendarFrame1").style.border = "none";
	document.getElementById("MVCalendarFrame1").style.display = "block";
	
	
	document.getElementById("MVCalendarFrame3").style.top = "506px";
	document.getElementById("MVCalendarFrame3").style.left = "728px";
	document.getElementById("MVCalendarFrame3").style.width = "21px";
	document.getElementById("MVCalendarFrame3").style.height = "20px";
	document.getElementById("MVCalendarFrame3").style.border = "none";
	document.getElementById("MVCalendarFrame3").style.display = "block";
	
	
	//document.getElementById("containerCalendarButton").style.border = "solid 1px #336699";
	//document.getElementById("containerCalendarButton").style.backgroundColor = "#99ccff";
}


function MV_Calendar_HideCalendarCustom() {
	document.getElementById('MVCalendarFrame1').style.display = 'none';
	MVCalendar_HideCalendar('MVCalendarLayer');
	document.getElementById('MVCalendarFrame3').style.display = 'none';
	document.getElementById('CalendarCloseLayer').style.display = 'none';
	
	document.getElementById("containerCalendarButton").style.border = "none";
	document.getElementById("containerCalendarButton").style.backgroundColor = "transparent";
}

/********************************************************************************************************************************************************************************
 * Fin del calendario																														*
 ********************************************************************************************************************************************************************************/
