
//================================================================================
// Nombre: calendario.js
// Autor:  Solmelia
// Descripción: Tratamiento de calendario
//================================================================================

	var ie		= navigator.appName == "Microsoft Internet Explorer";
	var ns6		= document.getElementById&&!document.all;
	var ns4		= document.layers;
	var opera 	= navigator.userAgent.indexOf("Opera") > -1;
	var opera5	= (navigator.appVersion.indexOf("MSIE 5")!=-1 && navigator.userAgent.indexOf("Opera 5")!=-1)?true:false;
	var opera6	= (navigator.appVersion.indexOf("MSIE 5")!=-1 && navigator.userAgent.indexOf("Opera 6")!=-1)?true:false;
	var mac		= (navigator.userAgent.indexOf("Mac")!=-1);
	var win;


	// Variables globales con los campos de retorno de las fechas
	var return_form;
    var	return_en_dia;
	var return_en_mesanyo;
	var return_sa_dia;
	var return_sa_mesanyo

	var calendar = new CalendarPopup("calendarDiv");

	calendar.monthAbbreviations   = yxMonths;
	calendar.monthNames  = yxMonthsLarge;
	calendar.dayHeaders  = dayHeaders;
	calendar.setWeekStartDay(weekStartDay);

	//Configura el calendario para que las fechas anteriores a la actual no sean seleccionables
	var ayer = new Date();
	ayer.setDate(ayer.getDate()-1)
	calendar.addDisabledDates(null, (ayer.getMonth()+1) + "/" +  ayer.getDate()+ "/" + ayer.getFullYear());

	calendar.offsetX 						= 0;
	calendar.offsetY 						= 25;


	//*************************************************************************
	//
	// FUNCIONES DE TRATAMIENTO DE FECHAS CON EL FORMATO SOLMELIA.COM
	// Dia    = DD-MONTH
	// Anyo = YYYY
	//
	//*************************************************************************

	/**
	 * selectDato.
	 * Selecciona el campo de un select de
	 *
	 * @param lista: Nombre del campo del combo
	 * @param valor: Valor que se tiene que seleccionar
	 */
	function selectDato(lista,valor){
	  for (var i=0;i<lista.length;i++){
	    if (lista.options[i].value == valor){
	      lista.options.selectedIndex = i;
	      break;
	    }
	  }
	}

	//=========================================
	// dia = 1,2,3,4,...31
	// mes = 0,1,2,3, ...11
	// anyo = 2005,2006 ...
	// incDays, Incremento de dias 0,1,2,..
	// incMonths, Incremento de meses 0,1,2,..
	// incYears Incremento de años 0,1,2,..
	//=========================================
	function DateAdd(dia, mes, anyo, incDays, incMonths, incYears)
	{
		var sAux = ""
		var startDate 	= new Date(anyo,mes,dia,0,0,0);
		sAux = DateAddFecha(startDate, incDays, incMonths, incYears);
		return sAux;
	}

	function DateAddFecha(startDate, incDays, incMonths, incYears)
	{
		var sAux 	= "";
		var returnDate 	= new Date(startDate.getTime());
		var yearsToAdd 	= incYears;
		var month 	= returnDate.getMonth() + incMonths;
		if (month > 11)
		{
			yearsToAdd 	= Math.floor((month+1)/12);
			month 		-= 12*yearsToAdd;
			yearsToAdd 	+= incYears;
		}
		returnDate.setMonth(month);
		returnDate.setFullYear(returnDate.getFullYear()	+ yearsToAdd);
		//returnDate.setTime(returnDate.getTime()+60000*60*24*incDays);
		returnDate.setDate(returnDate.getDate()+incDays);
		if(returnDate.getDate()<10)
			sAux +="0"
		sAux +=returnDate.getDate()+"/"
		if((returnDate.getMonth() + 1)<10)
			sAux +="0"
		sAux +=(returnDate.getMonth() + 1)+"/"+ returnDate.getFullYear();
		return sAux;
	}
	//
	// Trata la fecha hasta en función de la fecha de inicio
	//
	function adaptahasta(form, en_dia, en_mesanyo, sa_dia, sa_mesanyo){
	  // Obtenemos los combos
	  var comboDiaIni = eval("document."+form+"."+en_dia);
	  var comboMesAnyoIni = eval("document."+form+"."+en_mesanyo);
	  var comboDiaFin = eval("document."+form+"."+sa_dia);
	  var comboMesAnyoFin = eval("document."+form+"."+sa_mesanyo);
	  // Obtenemos los valores de los combos
	  var dia=comboDiaFin.options[comboDiaFin.selectedIndex].value;
	  var mesano=comboMesAnyoFin.options[comboMesAnyoFin.selectedIndex].value.split("-");
	  var mes=mesano[0];
	  var anyo=mesano[1];
	  var diad=comboDiaIni.options[comboDiaIni.selectedIndex].value;
	  var mesanod=comboMesAnyoIni.options[comboMesAnyoIni.selectedIndex].value.split("-");
	  var mesd=mesanod[0];
	  var anyod=mesanod[1];
	  fhasta= new Date(anyo, mes-1, dia);
	  fdesde=new Date(anyod, mesd-1, diad);

	  var hoy=new Date();
	  fdesde2=fdesde.getTime()+63*24*60*60*1000;
	  if (fhasta.getTime()>0) {
	    if(fdesde>=fhasta){
	      loadDate( DateAdd(diad,mesd-1,anyod,1,0,0),comboDiaFin,comboMesAnyoFin);
	    }
	    else {
	      if(fhasta.getTime()>=fdesde2){
	        // Sobre pasa el rango de 62 dias de reserva
	        if (fechaAnterior.getTime() != fhasta.getTime()){
	          loadDate( DateAdd(fechaAnterior.getDate(),fechaAnterior.getMonth() ,fechaAnterior.getFullYear(),0,0,0),comboDiaFin,comboMesAnyoFin);
	        } else {
	          loadDate( DateAdd(diad,mesd-1,anyod,1,0,0),comboDiaFin,comboMesAnyoFin);
	        }
	        alert("Por favor, modifique las fechas de búsqueda. No es posible hacer una reserva de más de dos meses de duración.");
	      }
	    }
	  }
	  else {
	    loadDate( DateAdd(diad,mesd-1,anyod,1,0,0),comboDiaFin,comboMesAnyoFin);
	  }
	  // Guardamos la fecha anterior
	  dia=comboDiaFin.options[comboDiaFin.selectedIndex].value;
	  mesano=comboMesAnyoFin.options[comboMesAnyoFin.selectedIndex].value.split("-");
	  mes=mesano[0];
	  anyo=mesano[1];
	  fechaAnterior = new Date(anyo, mes-1, dia);
	}

	//
	// Trata la fecha hasta en función de la fecha de inicio
	//
	function validaFechas(){
	  adaptahasta(return_form, return_en_dia, return_en_mesanyo, return_sa_dia, return_sa_mesanyo);
	  
	  /*
	  var inicio = document.getElementById("Hidden6");
	  var final = document.getElementById("Hidden7");
	  
	  var diai = document.getElementById("en_dia");
	  var mesi = document.getElementById("en_mesano");
	  var diaf = document.getElementById("sa_dia");
	  var mesf = document.getElementById("sa_mesano");
	  
	  inicio.value = mesi.value + "-" + diai.value ;
	  final.value = mesf.value + "-" + diaf.value ;
	  */
	  
	}

	//
	// Funciones loadDate, loadDateSeparator, selectDato copiadas de funciones.js
	//

	/**
	 * loadDate.
	 * Carga la fecha en un combo de fecha.
	 * El combo de mes y año estan unificados en uno solo
	 *
	 * @param sFecha: Fecha que se carga formato dd/mm/yyyy
	 * @param campoDia: Nombre del cambo dia del formulario
	 * @param campoMesAnyo: Nombre del campo mes y año del formulario
	 */
	function loadDate(sFecha, campoDia, campoMesAnyo){
		 loadDateSeparator(sFecha, campoDia, campoMesAnyo, "/");
	}

	/**
	 * loadDateSeparator.
	 * Carga la fecha en un combo de fecha.
	 * El combo de mes y año estan unificados en uno solo delimitado
	 * por un separador
	 *
	 * @param sFecha: Fecha que se carga formato dd/mm/yyyy
	 * @param campoDia: Nombre del cambo dia del formulario
	 * @param campoMesAnyo: Nombre del campo mes y año del formulario
	 * @param separador: separador de mes y año
	 */
	function loadDateSeparator(sFecha, campoDia, campoMesAnyo, separador){
		var sDate 	= sFecha.split(separador);
		selectDato(campoDia,sDate[0]);
		selectDato(campoMesAnyo,""+sDate[1]+"-"+sDate[2]);
	}

	//*************************************************************************
	//
	// FUNCIONES DE VISUALIZACIÓN DE CALENDARIO
	//
	//*************************************************************************

	//
	// Asigna valor a combos de fecha
	//
	function setFecha(any, mes, dia, comboDia, comboMesAnyo) {
	  if (dia < 10){
	    comboDia.value = "0" + dia;
	  }
	  else {
	    comboDia.value = dia;
	  }

	  comboMesAnyo.value = valueMonth[mes-1] + "-" + any;
	}

	//
	// Inicializa el calendario
	//
	function initCalendario(form, en_dia, en_mesanyo, sa_dia, sa_mesanyo) {
		return_form = form;
	    return_en_dia = en_dia;
		return_en_mesanyo = en_mesanyo;
		return_sa_dia = sa_dia;
		return_sa_mesanyo = sa_mesanyo;
	}

	//
	// Muestra el calendario
	//
	function mostrarCalendario(funcion, anchor, sComboDia, sComboMesAnyo) {
	  var comboDia = eval("document." + return_form + "." + sComboDia);
	  var comboMesAnyo = eval("document." + return_form + "." + sComboMesAnyo);
	  // Obtenemos los valores de los combos
	  var dia=comboDia.options[comboDia.selectedIndex].value;
	  var mesano=comboMesAnyo.options[comboMesAnyo.selectedIndex].value;

	  var fechaShow = "";
	  if ((dia!="") && (mesano!=""))  {
	    var mesanoSplit = mesano.split("-");
	    var mes=mesanoSplit[0];
	    var anyo=mesanoSplit[1];
	    fechaShow = anyo + "-" + mes + "-" + dia;
	  }

	  calendar.setReturnFunction(funcion);
	  calendar.showCalendar(anchor, fechaShow);
	  //roundEm();
	}