/****************************************
** Autor: Alejandro Bedoya Glez.       **
** Para: www.Stanque.com               **
** Calendario                          **
** Todas las funciones para el manejo  **
** de calendarios en la cdr de         **
** www.losrealejos.es                  **
****************************************/

// Funcion que maneja los calendarios de la busqueda
function Calendario1(formulario, campo) {
alert('Calendario1');
   window.open('../libs/calendario.asp?Accion=Seleccionar&formulario='+formulario+'&campo='+campo,'Calendario','top=100,left=200,height=190,width=165');
}

// Esta función extrae la fecha en formato dd/mm/aaaa a partir de una variable de fecha
function ExtraerFecha (fecha) {
debug('ExtraerFecha');
	Meses = new Array(12)
	Meses[1] = '01'
	Meses[2] = '02'
	Meses[3] = '03'
	Meses[4] = '04'
	Meses[5] = '05'
	Meses[6] = '06'
	Meses[7] = '07'
	Meses[8] = '08'
	Meses[9] = '09'
	Meses[10] = '10'
	Meses[11] = '11'
	Meses[12] = '12'
	
	var mes = Meses[fecha.getMonth() + 1]
	var anio = fecha.getFullYear()
	var fecha_aux = fecha.toUTCString()
	var dia = fecha_aux.substr(5,2);
	fecha = dia + '/' + mes + '/' + anio
	return fecha;
}

// Función generadora de calendarios de selección
function Calendario(formulario, campo) {
debug('Calendario');
   var fecha_inicio = '';
   var fecha_fin = '';
   var dia;
   var mes;
   var anio;
   switch (campo) {
   case "FechaLlegada":
	eval('document.forms.' + formulario + '.FechaLlegada.value = "";');
   	eval('document.forms.' + formulario + '.FechaSalida.value = "";');
   	//if (fecha_inicio == ''){
   	  	fecha_aux = new Date();
   		fecha_aux = ExtraerFecha(fecha_aux);
   		var direc = '../libs/calendario.asp?Accion=Seleccionar_Fecha&Formulario='+formulario+'&Campo='+campo+'&Fecha_Inicio='+fecha_aux+'&Fecha_aux='+fecha_aux;
   		//var direc = '../contenidos/front_end/prueba.html';
   		return direc;

   	break;
   	
   case "FechaSalida":
   	fecha_inicio = eval('document.forms.' + formulario + '.FechaLlegada.value;');
   	
   	if (fecha_inicio == '') {
   		alert('Debe indicar fecha de Llegada primero');
   		//window.open('../libs/calendario.asp?Accion=Seleccionar_Fecha&Formulario='+formulario+'&Campo='+campo,'Calendario','top=100,left=200,height=150,width=200');
   	}
   	else {
   		dia = fecha_inicio.substr(0,2);
   		dia++;
   		if (dia < 10) {
   			dia = '0' + dia
   		}
   		fecha_inicio = dia + fecha_inicio.substr(2,8);
   		if (verificar_fecha (fecha_inicio) == false) {
   			dia = '01';
   			mes = parseFloat(fecha_inicio.substr(3,2)) + 1;
   			anio = fecha_inicio.substr(6,4);
   			if (mes == 13) {
   				mes = '01';
   				anio = parseFloat(anio) + 1;
				}
   			fecha_inicio = dia + '/' + mes + '/' + anio;
   		}
   		//window.open('../libs/calendario.asp?Accion=Seleccionar_Fecha&Formulario='+formulario+'&Campo='+campo+'&Fecha_Inicio='+fecha_inicio+'&Fecha_aux='+fecha_inicio,'Calendario','top=100,left=200,height=190,width=165');
   		var direc = '../libs/calendario.asp?Accion=Seleccionar_Fecha&Formulario='+formulario+'&Campo='+campo+'&Fecha_Inicio='+fecha_inicio+'&Fecha_aux='+fecha_inicio;
   		return direc;
   	}
   	break;
   }
}

// Escribe en el formulario la fecha seleccionada en el calendario
function escribirFecha(fecha, formulario, campo){
debug('escribirFecha');
			
			/* Este código comentado es para la opción de combos desplegables paralelos para seleccionar fecha
			dia = parseFloat(fecha.substr(0,2));
			if (dia <10) dia = '0' + dia;
			mes = parseFloat(fecha.substr(3,2));
   			if (mes <10) mes = '0' + mes;
   			anio = fecha.substr(6,4);
   			
   			eval ("document.forms." + formulario + "." + "mes_" + campo + ".value='" + mes + "/" + anio + "'");
   			eval ("document.forms." + formulario + "." + "dia_" + campo + ".value='" + dia + "'");
   			*/


	eval ("document.forms." + formulario + "." + campo + ".value='" + fecha + "'");
	document.getElementById('campoCalendario').style.visibility='hidden';

}

function ComprobarOcupados(dia_inicio, dia_fin) {
	var dia_aux;
	if (dia_fin < dia_inicio) {
		dia_aux = dia_inicio;
		dia_inicio = dia_fin;
		dia_fin = dia_aux;
	}
	var clase = '';
	var no_disponible = 'no_disponible';
	for (i = dia_inicio; i < dia_fin; i++){
		clase = document.getElementById('tdCal' + i).className;
		if (clase == no_disponible) {
			alert('Las fechas que desea seleccionar no son posibles.');
			return 0;
		}
	}
	return 1;
}

function CambiarFecha(dia) {
	var dias = 'dias';
	var seleccion = 'seleccion';
	var ultimo = 'ultimo';
	var no_disponible = 'no_disponible';
	var clase;
	var inicio = '';
	inicio = document.getElementById('Fecha_Llegada').value;
	var fin = '';
	fin = document.getElementById('Fecha_Salida').value;
	var fecha = new Date();
	var valor = 0;
	//Dia + '/' + inicio.getMonth() + '/' + inicio.getFullYear()
	//document.getElementById('Fecha_Inicio').value = fecha;
	var tamanio = Calendario_Java.length;
	if (inicio != '') {
		if (fin != ''){
			for (i=0;i<tamanio;i++) {
				if (Calendario_Java[i][0] == inicio) {
					var indice_inicio = i;
				}
				if (Calendario_Java[i][0] == fin) {
					var indice_fin = i;
				}
			}
			if (dia < indice_inicio){
				if (ComprobarOcupados(dia, indice_inicio) == 1) {
					for (i = dia; i < indice_inicio; i++){
						document.getElementById('tdCal' + i).className=seleccion;
						document.getElementById('Fecha_Llegada').value=Calendario_Java[dia][0];
					}
				}
			}
			else {
				if (ComprobarOcupados(dia, indice_fin) == 1) {
					if (dia > indice_fin){
						for (i = indice_fin; i <= dia; i++){
							document.getElementById('tdCal' + i).className=seleccion;
							//document.getElementById('Fecha_Fin').value=Calendario_Java[dia][0];
						}
						document.getElementById('Fecha_Salida').value=Calendario_Java[dia][0];
						document.getElementById('tdCal' + dia).className=ultimo;
					}
					else {
						dia++;
						for (i = dia; i <= indice_fin; i++){
							document.getElementById('tdCal' + i).className=dia;
						}
						dia--;
						//document.getElementById('tdCal' + indice_fin).className=seleccion;
						document.getElementById('Fecha_Salida').value=Calendario_Java[dia][0];
						document.getElementById('tdCal' + dia).className=ultimo;
					}
				}
			}
		}
		else{
			for (i=0;i<tamanio;i++) {
				if (Calendario_Java[i][0] == inicio) {
					var indice_inicio = i;
				}
			}
			if (dia == indice_inicio) {
				alert('No puede seleccionar el mismo día de llegada y salida.');
			}
			else {
				if (ComprobarOcupados(dia, indice_inicio) == 1) {
					if (dia < indice_inicio){
						for (i = dia; i < indice_inicio; i++){
							document.getElementById('tdCal' + i).className=seleccion;
						}
						document.getElementById('Fecha_Salida').value=inicio;
						document.getElementById('tdCal' + indice_inicio).className=ultimo;
						document.getElementById('Fecha_Llegada').value=Calendario_Java[dia][0];
					}
					else{
						for (i = indice_inicio; i < dia; i++){
							document.getElementById('tdCal' + i).className=seleccion;
						}
						document.getElementById('Fecha_Salida').value=Calendario_Java[dia][0];
						//document.getElementById('tdCal' + dia).className=ultimo;
						document.getElementById('tdCal' + dia).className=ultimo;
					}
				}
			}
		}
	}
	else {
		document.getElementById('tdCal' + dia).className=seleccion;
		document.getElementById('Fecha_Llegada').value=Calendario_Java[dia][0];
	}
	CalcularTarifa();
}

// Pone todos los valores a 0 dentro de los calendarios, además de borrar las fechas seleccionadas y la tarifa
function LimpiarFechas() {
	var dia;
	var cal;
	var clase;
	var seleccion = 'seleccion';
	var ultimo = 'ultimo';
	var dias = 'dias';
	document.getElementById('Tarifa').value = '0';
	document.getElementById('Fecha_Llegada').value = '';
	document.getElementById('Fecha_Salida').value = '';
	var tamanio = Calendario_Java.length;
	for (dia = 0; dia < tamanio; dia++) {
		clase = document.getElementById('tdCal' + dia).className;
		if ((clase == seleccion) || (clase == ultimo)) {
			document.getElementById('tdCal' + dia).className=dias;
		}
	}
}

// Obtiene la tarifa para un día en concreto del calendario
function CalcularTarifa(){
	var valor = 0;
	var Tarifa = 0;
	var clase;
	var cal;
	var dia;
	var seleccion = 'seleccion';
	var tamanio = Calendario_Java.length;
	for (dia = 0; dia < tamanio; dia++) {
			clase = document.getElementById('tdCal' + dia).className;
			if (clase == seleccion) {
				valor = Calendario_Java[dia][1];
				Tarifa = Tarifa + valor;
			}
	}
	document.getElementById('Tarifa').value = Tarifa;
}

function verificar_fecha(field){
var checkstr = "0123456789";
var Fecha = field;
var Datevalue = "";
var DateTemp = "";
var seperator = "/";
var day;
var month;
var year;
var leap = 0;
var err = 0;
var i;
   err = 0;
   DateValue = Fecha;
   /* Delete all chars except 0..9 */
   for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
   }
   DateValue = DateTemp;
   /* Always change date to 8 digits - string*/
   /* if year is entered as 2-digit / always assume 20xx */
  // if (DateValue.length == 6) {
  //   DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
   if (DateValue.length != 8) {
      err = 19;}
   /* year is wrong if year = 0000 */
   year = DateValue.substr(4,4);
   if (year == 0) {
      err = 20;
   }
   /* Validation of month*/
   month = DateValue.substr(2,2);
   if ((month < 1) || (month > 12)) {
      err = 21;
   }
   /* Validation of day*/
   day = DateValue.substr(0,2);
   if (day < 1) {
     err = 22;
   }
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }
   /* if 00 ist entered, no error, deleting the entry */
   if ((day == 0) && (month == 0) && (year == 00)) {
      err = 0; day = ""; month = ""; year = ""; seperator = "";
   }

	if (DateTemp=='' || DateTemp=='undefined') {
		err=27;
	}
   /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
   if (err == 0) {
     // DateField.value = day + seperator + month + seperator + year;
	  return (true);
   }
   /* Error-message if err != 0 */
   else {
    //  alert("Fecha incorrecta. Formato válido DD/MM/AAAA");
    //  DateField.select();
	 // DateField.focus();
	  return (false);
   }

}


/* ---------------------------------------------
	Funciones para fechas
--------------------------------------------- */

var flag_verificando_fechas = false;



// ------------------------------------------------------------------------------
// function DuracionMes
// Nos devuelve cuantos dias tiene determinado mes, pasándole número de mes y año

function DuracionMes(mes, anyo) {

	if ((anyo % 4 == 0) || (anyo % 100 == 0) || (anyo % 400 == 0)) {
		febrero = 29;
	} else {
		febrero = 28;
	}

	Meses = new Array(12)
	Meses[1] = 31;
	Meses[2] = febrero;
	Meses[3] = 31;
	Meses[4] = 30;
	Meses[5] = 31;
	Meses[6] = 30;
	Meses[7] = 31;
	Meses[8] = 31,
	Meses[9] = 30;
	Meses[10] = 31;
	Meses[11] = 30;
	Meses[12] = 31;
	
	return Meses[mes];

}





// -----------------------------------------

function VerificarDia(formulario, salida_o_llegada) {

	AsignarFechas (formulario);
	
//alert("Fecha 1 hidden " + eval ("document.forms." + formulario + ".FechaLlegada.value") + " - Fecha 2 hidden " + eval ("document.forms." + formulario + ".FechaSalida.value"));

	if (flag_verificando_fechas) {
	
		// si estamos verificando fechas evitamos que los movimientos que hagamos de momento se verifiquen a su vez
		
	} else {
		flag_verificando_fechas = true;

		if (Llegada_es_menor_que_salida(formulario)) {

			
			if (salida_o_llegada == "dia_fecha_inicio") {


			}

		} else {
		
			if (salida_o_llegada == "dia_fecha_fin") {

				alert("La fecha de salida debe de ser posterior a la fecha de llegada.");
			}
			
			AjustarFechaDeSalida(formulario);
			
		}
	}

flag_verificando_fechas = false;
}

// -----------------------------------------

function VerificarMes(formulario, salida_o_llegada) {

	AsignarFechas (formulario);

	flag_verificando_fechas = true;

AjustarNumeroDeDias(formulario, salida_o_llegada);

	if (Llegada_es_menor_que_salida(formulario)) {

		// Si la fecha de llegada es menor que la fecha de salida no hacemos modificaciones en el calendario

		if (salida_o_llegada == "mes_fecha_inicio") {

		}

	} else {

		if (salida_o_llegada == "mes_fecha_fin") {
			alert("La fecha de salida debe de ser posterior a la fecha de llegada.");
		}
		
		AjustarFechaDeSalida(formulario);

	}

flag_verificando_fechas = false;
}

// -----------------------------------------
// function AjustarNumeroDeDias

function AjustarNumeroDeDias(formulario, salida_o_llegada) {

var mesyano = eval ("document.forms." + formulario + "." + salida_o_llegada + ".value");
var mes = parseFloat(mesyano.substr(0,2));
var anyo = parseFloat(mesyano.substr(3,4));

var numero_de_dias = DuracionMes(mes, anyo);

// alert("mes: " + mes + " año: " + anyo + " duracion: " + numero_de_dias);

	eval("document.forms." + formulario + ".dia_fecha_inicio.length=" + numero_de_dias + ";");

	for (i = 0; i < numero_de_dias; i++) {

		j = i + 1;
		if (j < 10) j = "0" + j;

		eval("document.forms." + formulario + ".dia_fecha_inicio.options[" + i + "].value='" + j + "';");
		eval("document.forms." + formulario + ".dia_fecha_inicio.options[" + i + "].text='" + j + "';");

	}

//alert(eval("document.forms." + formulario + ".dia_fecha_inicio.options[3].value"));

}


// -----------------------------------------

function AsignarFechas (formulario) {
	// Esta función asigna los valores de los formularios a las variables ocultas donde se almacenan las fechas

	dia_lle = eval ("document.forms." + formulario + ".dia_fecha_inicio.value");
	mes_lle = eval ("document.forms." + formulario + ".mes_fecha_inicio.value");
	dia_sal = eval ("document.forms." + formulario + ".dia_fecha_fin.value");
	mes_sal = eval ("document.forms." + formulario + ".mes_fecha_fin.value");

	eval ("document.forms." + formulario + ".FechaLlegada.value='" + dia_lle + "/" + mes_lle + "'");
	eval ("document.forms." + formulario + ".FechaSalida.value='" + dia_sal + "/" + mes_sal + "'");
}

// -----------------------------------------

function Llegada_es_menor_que_salida(formulario) {
	
	var fecha_llegada = Date.parse(CadenaAFecha(eval ("document.forms." + formulario + ".FechaLlegada.value")));
	var fecha_salida = Date.parse(CadenaAFecha(eval ("document.forms." + formulario + ".FechaSalida.value")));

	if (fecha_llegada >= fecha_salida) {
		return false;
	} else {
		return true;
	}
}

// -----------------------------------------

// Esta funcion suma un numero determinado de dias a una fecha en milisegundos

function SumarDias (fecha_en_ms, dias) {

	fecha_aux = fecha_en_ms + (86400000 * dias);

	return fecha_aux;
}


// -----------------------------------------

// Esta función es para asignar la fecha de salida al dia siguiente de la fecha de llegada

function AjustarFechaDeSalida (formulario) {

	var fecha_llegada_ms = Date.parse(CadenaAFecha(eval ("document.forms." + formulario + ".FechaLlegada.value")));
	var fecha_salida_ms = Date.parse(CadenaAFecha(eval ("document.forms." + formulario + ".FechaSalida.value")));
	
	fecha_salida_ms = SumarDias(fecha_llegada_ms, 1);
	
	fecha_aux = new Date();
	
	fecha_aux.setTime(fecha_salida_ms);

	fecha_aux_cadena = FechaACadena(fecha_aux);
	
	// Escribimos la fecha en su campo hidden
	
	eval ("document.forms." + formulario + ".FechaSalida.value='" + fecha_aux_cadena + "'");
	
	SincronizarSelects(formulario);
}

// -----------------------------------------

// Esta función sincroniza los combo select con los valores de las fechas almacenadas en los campos hidden
// (Los hidden sobreescriben a los select)

function SincronizarSelects(formulario) {

	fecha_ini_aux = eval ("document.forms." + formulario + ".FechaLlegada.value");
	fecha_fin_aux = eval ("document.forms." + formulario + ".FechaSalida.value");

	dia_ini_aux = fecha_ini_aux.substr(0,2);
	mes_ini_aux = fecha_ini_aux.substr(3,7);

	dia_fin_aux = fecha_fin_aux.substr(0,2);
	mes_fin_aux = fecha_fin_aux.substr(3,7);

	eval ("document.forms." + formulario + ".dia_fecha_inicio.value='" + dia_ini_aux + "'");
	eval ("document.forms." + formulario + ".mes_fecha_inicio.value='" + mes_ini_aux + "'");

	eval ("document.forms." + formulario + ".dia_fecha_fin.value='" + dia_fin_aux + "'");
	eval ("document.forms." + formulario + ".mes_fecha_fin.value='" + mes_fin_aux + "'");
}

// -----------------------------------------

// Esta funcion convierte una cadena con fecha en formato dd/mm/aaaa a una variable de fecha 

function CadenaAFecha (fecha) {

	dia = parseFloat(fecha.substr(0,2));
	mes = parseFloat(fecha.substr(3,2)) - 1; // Los meses van de 0 a 11. Hay que restar 1 para "traducir" la fecha
	anyo = parseFloat(fecha.substr(6,4));

	fecha_aux = new Date(anyo, mes, dia);

	return fecha_aux;
}

// -----------------------------------------

// Esta funcion convierte una variable de fecha en una cadena con formato dd/mm/aaaa

function FechaACadena (fecha) {

	dia = parseFloat(fecha.getDate());
	if (dia < 10) dia = "0" + dia;
	mes = parseFloat(fecha.getMonth() + 1);
	if (mes < 10) mes = "0" + mes;
	anyo = parseFloat(fecha.getFullYear());

	fecha_aux = dia + "/" + mes + "/" + anyo;

	return fecha_aux;
}


/*

miFechaActual = new Date();

miFechaActual.setTime(fecha_llegada);

dia = miFechaActual.getDate();
mes = miFechaActual.getMonth() + 1;
anyo = miFechaActual.getFullYear();
*/

//alert(ExtraerFecha(fecha_llegada));
	
	
	
/*
dia_ini = eval ("document.forms." + formulario + ".dia_fecha_inicio.value");
dia_fin = eval ("document.forms." + formulario + ".dia_fecha_fin.value");
mes_ini = eval ("document.forms." + formulario + ".mes_fecha_inicio.value");
mes_fin = eval ("document.forms." + formulario + ".mes_fecha_fin.value");

if (dia_ini_aux <10) dia_ini_aux = '0' + dia_ini_aux;
mes_ini_aux = parseFloat(fecha_ini_aux.substr(3,2));
if (mes_ini_aux <10) mes_ini_aux = '0' + mes_ini_aux;
anyo_ini_aux = fecha_ini_aux.substr(6,4);

dia_fin_aux = parseFloat(fecha_fin_aux.substr(0,2));
if (dia_fin_aux <10) dia_fin_aux = '0' + dia_fin_aux;
mes_fin_aux = parseFloat(fecha_fin_aux.substr(3,2));
if (mes_fin_aux <10) mes_fin_aux = '0' + mes_fin_aux;
anyo_fin_aux = fecha_fin_aux.substr(6,4);

eval ("document.forms." + formulario + "." + "mes_" + campo + ".value='" + mes + "/" + anio + "'");
eval ("document.forms." + formulario + "." + "dia_" + campo + ".value='" + dia + "'");
*/