﻿//manejar popups ej calendarios y aeropuertos
function combo(disp) {
    //apagar o mostrar combos (en ie no puedes flotar elementos encima de un combo)
    for (var f = 0; f < document.forms.length; f++){
        for (var e = 0; e < document.forms[f].length; e++) {
            if (document.forms[f].elements[e].options) document.forms[f].elements[e].style.display = disp;
        }
    }
}
function hidepop() {
    combo('');
    $('#formspop').fadeOut();
}
function loadAeropuertos(callback) {
    combo('none');
    params = "callback=" + callback;
    load('includes/aeropuertos.aspx?' + params, 'formspop');
}
function loadCal(callback, quefecha, habdesde, habhasta) {
    //ver calendario.aspx para variables
    combo('none');
    var fechasel = $("#" + quefecha).attr("value");
    var fArr = fechasel.split("/");
    var d = mLength(fArr[0]);
    var m = mLength(fArr[1]);
    var y = yLength(fArr[2]);
    fechasel = y+"-"+m+"-"+d;
    params = "callback=" + callback + "&fechasel=" + fechasel + "&habdesde=" + habdesde + "&habhasta=" + habhasta;
    load('includes/calendario.aspx?' + params, 'formspop');
}
function aeroSalidaCB(aeropuerto) {
    if(aeropuerto){$('#origen').attr({ value: aeropuerto})};
    hidepop();
    submitCheck()
}
function aeroRegresoCB(aeropuerto) {
    if(aeropuerto){$('#destino').attr({ value: aeropuerto})};
    hidepop();
    submitCheck()
}
function fechaHotelCB(fecha) {
    if(fecha){
        $("#fechaEntrada").attr("value", fecha);
        $("#fechaEntradaMos").html(fecha + ", "+ GetDiaNombre(fecha));
        fechaHotelVuelta();
    };
    hidepop();
}
function fechaHotelVuelta() {
    fecha = $("#fechaEntrada").attr("value");
    n = parseInt($("#noches").fieldValue());
    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();
    $("#fechaVuelta").html(fVuelta + ", "+ GetDiaNombre(fVuelta));
}
function fechaIdaCB(fecha) {
    if(fecha){
        $("#fechaIda").attr("value", fecha);
        $("#fechaIdaMos").html(fecha + ", "+ GetDiaNombre(fecha));
        $("#fechaVuelta").attr("value", fecha);
        $("#fechaVueltaMos").html(fecha + ", "+ GetDiaNombre(fecha));
        var col =(compariridavuelta()? "#333" : "#f60")
        $("#fechaVueltaMos").css("color",col);
    };
    hidepop();
}
function fechaVueltaCB(fecha) {
    if(fecha){
        $("#fechaVuelta").attr("value", fecha);
        $("#fechaVueltaMos").html(fecha + ", "+ GetDiaNombre(fecha));
        var col =(compariridavuelta()? "#333" : "#f60")
        $("#fechaVueltaMos").css("color",col);
    };
    hidepop();
}
//funciones para probar si el formulario puede submit o no
function submitCheck() {
    if($("#vueloform").attr("name")) {
        (vuelo_origen_y_destino_check() && vuelo_adulto_check() ? submitshowhide(true) : submitshowhide(false))
    }
    if($("#hotelform").attr("name")) {
        (hotel_poblacion_check() && hotel_o_paquete_edad_check() ? submitshowhide(true) : submitshowhide(false))
    }
    if($("#paqueteform").attr("name")) {
        (paquete_origen_y_destino_check() && hotel_o_paquete_edad_check() ? submitshowhide(true) : submitshowhide(false))
    }
}
function submitshowhide(val) {
    if(val) {
        $("#buscar").show();
        $("#buscarDis").hide();
    } else {
        $("#buscar").hide()
        $("#buscarDis").show()
    }
}
function vuelo_origen_y_destino_check() {
    //segurar que poblacion no es igual a "poblacion" o con valor blanco
    var o = trim($("#origen").attr("value") ? $("#origen").attr("value") : " ")
    var d = trim($("#destino").attr("value") ? $("#destino").attr("value") : " ")
    if(o == 'Origen' || o =='' || d =='Destino' || d =='' || o.toLowerCase() == d.toLowerCase()) {
       return false
    }
    return true
}
function vuelo_adulto_check() {
    //segurar que hay mas que 0 adultos
    if(parseInt($("#adultos").fieldValue()) >= 1) {
       return true
    }
    return false
}
function hotel_poblacion_check() {
    //segurar que poblacion no es igual a "poblacion" o con valor blanco¡
    p = trim($("#poblacion").attr("value") ? $("#poblacion").attr("value") : " ")
    var ret = (p == 'Población' || p == '' ? false : true)
    return ret
}
function hotel_o_paquete_edad_check() {
    //segurar que los edades estan rellenados
    if($("#habitacion-1").fieldValue()) {
        var n = $("#habitacion-1").fieldValue().split('-')[1]; //cuantos ninios
        var ret = true
        for(var i=1;i<4;i++){
            if(n >= i && $("#edad-" + i).fieldValue() == "") ret = false
        }
        return (ret)
    } else {
        return true
    }
}
function paquete_origen_y_destino_check() {
    //segurar que destino y origen no son igual o con valor blanco
    if ($("#destino").fieldValue() == $("#origen").fieldValue()) {
        $("#destino")[0].selectedIndex = 0; //set destino back to "destino" if its = to origen
    }
    return ($("#origen").fieldValue() == 'Origen' || $("#destino").fieldValue() == 'Destino' ? false : true)
}
//manejar añadiendo y quitando habitaciones y edades en hotelform y paqueteform
function cambiarOcupacion(val) {
    var si= $("#habitacion-1")[0].selectedIndex;
    if($("#habitacion-1").children()[si].className !== 'disabled') {
        //(no puede utilizar el w3c estandard 'disabled' porque 
        //IE6 no lo reconoce por options dentro un select 
        $("#ocupa1").attr("value", val);//escribir el valor del opcion deleccionado en el hidden
        var n = val.split('-')[1]; //cuantos ninios
        n = (!n ? 0 : parseInt(n));
        if(n) {
            $("#edades").show(); //si hay ninios mostrar id=edades 
            for(var i=1;i<4;i++){
                if(n >= i ) { //por cada edad decedir si mostrar o no
                    $("#eMos" + i).show();
                } else {
                    $("#eMos" + i).hide();
                }
            }
        } else {
            $("#edades").hide(); //si no hay ninios ocultar id=edades
        }
        cambiarEdad();
    }
}
function cambiarEdad() { 
    var edadStr ="";
    for(var i=1;i<4;i++){
        edadStr += $("#edad-" + i).fieldValue() + "-";
    }
	edadStr = edadStr.substring(0,edadStr.length-1);
    $("#edades1").attr("value", edadStr);
    submitCheck()
}
function cambiarOcupacionAdd(val) {
    var si= $("#habitacionAdd")[0].selectedIndex;
    if($("#habitacionAdd").children()[si].className !== 'disabled') {
        //(no puedo utilizar el w3c estandard 'disabled' porque 
        //IE6 no lo reconoce por options dentro un select 
        var n = val.split('-')[1]; //cuantos ninios
        n = (!n ? 0 : parseInt(n));
        if(n) {
            $("#edadesAdd").show(); //si hay ninios mostrar id=edades 
            for(var i=1;i<4;i++){
                if(n >= i ) { //por cada edad decedir si mostrar o no
                    $("#eAdd" + i).show();
                } else {
                    $("#eAdd" + i).hide();
                }
            }
        } else {
            $("#edadesAdd").hide(); //si no hay ninios ocultar id=edades
        }
        cambiarEdadAdd();
    }
}
function cambiarEdadAdd() { 
    var n = $("#habitacionAdd").fieldValue().split('-')[1]; //cuantos ninios
    $("#anadirHab").show(); //boton de submit anadir hab
    $("#anadirHabDis").hide(); 
    for(var i=1;i<4;i++){
        if(n >= i && $("#edadAdd-" + i).fieldValue() == "") {
            $("#anadirHab").hide(); 
            $("#anadirHabDis").show();
        }
    }
}
function anadirHab(callback) {
    combo('none');
    params = "ran=" + Math.random() + "&callback=" + callback + "&habCount=" + (parseInt($("#habCount").attr("value"))+1);
    load('includes/habitaciones.aspx?' + params, 'formspop');
}
function anadirHabCB(add) {
    if(add) {
        var habC = parseInt($("#habCount").attr("value")) + 1; //numero de habitaciones
        if(habC == 3) { $("#anadirMas").hide() } else { $("#anadirMas").show() } //si hay tres habitaciones ocultar boton para anadir mas
        $("#habCount").attr("value", habC); //incrementar hidden con numero de habitaciones
        $("#ocupa" + habC).attr("value", $("#habitacionAdd").fieldValue()); //rellenar ocupaX con ocupacion en formato Adultos-Ninios 
        a = $("#habitacionAdd").fieldValue().split('-')[0]; //cuantos adultos en hab X
        n = $("#habitacionAdd").fieldValue().split('-')[1]; //cuantos ninios en hab X
        n = (!n ? 0 : parseInt(n));
        edadStr = "";
        for(var i=1;i<4;i++){
            edadStr += $("#edadAdd-" + i).fieldValue() + "-";
        }
	    edadStr = edadStr.substring(0,edadStr.length-1);
        $("#edades" + habC).attr("value", edadStr); //rellenar hidden edadesX con edades en formato X-Y-Z-
        var divStr
        divStr = "<span class='quitarHab'><a href='#' onclick='quitarHab("+habC+");return false;'><img src='img/menos.gif'></a></span>";//boton
        divStr += "<span class='habNumero'>" + habC + "</span>"; //numero del habitacion
        divStr +=": <span class='habCont'>" + a + "x<img src='img/adulto.gif'> "; //ocupacion del habitacion
        if(n)divStr +=  n + "x<img src='img/ninio.gif'> (" + edadStr + " años)</span>"; //ninios y sus edades si hay
        $("#oc" + habC).html(divStr); //rellenar div 'ocX' con string 
        probarHab1(); //dishabilitar opciones si llevan la cifra mas que maxPersonas
        
    }
    hidepop();
}
 function probarHab1() {
    /*caso:
    1)eligen hab1:1Adulto
    2)eligen hab2:1Adulto y 3 ninios
    3)eligen hab3:1adulto y 3 ninios
    ahora el combo de hab1 no deberia permitir la cifra a superar el variable maxPersonas 
    */   
    var tot = 0; //personas utilizado
    tot += contarPersonas($("#ocupa2").attr("value"));
	tot += contarPersonas($("#ocupa3").attr("value"));
	$("#habitacion-1").children().each(function(i){
        this.className = (''); //tengo que haer lo con un estilo y un js hack porque IE6 no soporta '<option disabled="disabled">'
        if (contarPersonas(this.getAttribute('value')) + tot > maxPersonas) {
             this.className = 'disabled';
        }
    });
}
function quitarHab(habNum) {
    var habC = parseInt($("#habCount").attr("value")) - 1; //numero de habitaciones
    $("#anadirMas").show(); //mostrar boton para anadir mas
    $("#habCount").attr("value", habC); //rellenar hidden con numero de habitaciones
    if (habNum == "2") {
        //quitando segunda habitacion = mover hab 3 a hab 2 y luego quitar 3
        if ($("#oc3").html() == "") { //si oc3 es vacio
            $("#oc2").html(""); //vaciar oc2 completamente
            $("#edades2").attr("value", ""); //vaciar edades2
            $("#ocupa2").attr("value", ""); //vaciar ocupa2
        } else {
            $("#oc2").children(".habCont").html($("#oc3").children(".habCont").html());//o transferir cont de oc3 a cont de oc2
            $("#edades2").attr("value", $("#edades3").attr("value")); //rellenar edades2 con edades3 
            $("#ocupa2").attr("value", $("#ocupa3").attr("value")); //rellenar ocupa2 con ocupa3 
        }
        
    }
    //quitando tercera habitacion
    $("#oc3").html(""); //vaciar oc3
    $("#edades3").attr("value", ""); //vaciar edades3 
    $("#ocupa3").attr("value", ""); //vaciar ocupa3
    probarHab1(); //dishabilitar opciones si llevan la cifra mas que maxPersonas
     
 }
 
//funciones generals para menejar fechas etc
function prepDest(cual) {
    v = cual.value
    cual.value=(v == "Origen" || v=="Población" || v=="Destino" ? "" : v)
}
function vueloPersonas(combo) {
    //segurar que adultos + ninios <= 9 in vuelos
    $("#vueloPersonas").hide()
    if(parseInt($("#adultos").fieldValue()) + parseInt($("#ninios").fieldValue()) > 9) {
        combo.selectedIndex = 0
        $("#vueloPersonas").show() //vuelo personas contiene un mensaje de error
    }
}
function compariridavuelta() {
    //comparir ida vs vuelta para avisar si vuelta antes que ida
    fIda = $("#fechaIda").attr("value");
    fVuelta = $("#fechaVuelta").attr("value");
    iArr = fIda.split('/');
	vArr = fVuelta.split('/');
	i = yLength(iArr[2])+mLength(iArr[1])+mLength(iArr[0]);
	v = yLength(vArr[2])+mLength(vArr[1])+mLength(vArr[0]);
	return ((Number(i))<=(Number(v)) ? true : false);
}
function contarPersonas(str){
    if(!str){str = "";}
    n= str.split("-");
    n[0] = (parseInt(n[0])? n[0] : 0);
    n[1] = (parseInt(n[1])? n[1] : 0);
    return parseInt(n[0]) + parseInt(n[1]);
}
function GetDiaNombre(fecha) {
	//fecha tiene que estar en formato dd/mm/yy o d/m/yy o yyyy
	m = fecha.match(/^(\d*)(\/?)(\d*)(\2)(\d\d)?(\d\d)$/);
	m[1] = mLength(m[1]); // 6 -> 06 dia
	m[3] = mLength(m[3]); // 6 -> 06 mes
	m[5] = yLength(m[5]); // 07 -> 2007 anio
	d =["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo"];
	return d[new Date(m[5] + m[6] + "/" + m[3] + "/" + m[1]).getDay()];
}
function yLength(y) {
	y = (parseInt(y) < 100 ? "20" + y : y);
	return y;
}
function mLength(m) {
	m = (m.length == 1 ? "0" + m : m);
	return m;
}
function cambiarFechaHotel(fecha) {
	iArr = fecha.split('/');
	y = yLength(iArr[2]);
	m = mLength(iArr[1]);
	d = mLength(iArr[0]);
	fecha = y + '-' + m + '-' + d;
	return fecha;
}
function quitarTilde(str) {
	rep ={"á":"-aacute","é":"-eacute","í":"-iacute","ó":"-oacute","ú":"-uacute","Á":"-Aacute","É":"-Eacute","Í":"-Iacute","Ó":"-Oacute","Ú":"-Uacute","ñ":"-ntilde","Ñ":"-Ntilde"};
	for(var p in rep) {
		str=str.replace(p,rep[p]);
	}
	return str;
}
function loading() {
    $("#cont").hide();
    $("#espera").show("slow");
}


/*
//VALIDAR VUELOS...................................................................
*/
function validarVuelo() {
    var msg = '';
    var origen = $("#origen").attr("value");
    var destino = $("#destino").attr("value");
    var ida = ($("#idaVuelta").fieldValue() ? '0' : '1');
    var fIda = $("#fechaIda").attr("value");
    var fVuelta = $("#fechaVuelta").attr("value");
    var hIda = $("#horaIda").fieldValue();
    var hVuelta = $("#horaVuelta").fieldValue();
    var adultos = $("#adultos").fieldValue();
    var ninios = $("#ninios").fieldValue();
    var bebes = $("#bebes").fieldValue();
	if ((origen.toLowerCase() == destino.toLowerCase()) && (origen != "")) {
		msg+='El destino y el origen no pueden ser los mismos.\n';
	}
	if (origen == "" || origen == "Origen") {
		msg+='Debes introducir un origen.\n'; 
	}
	if (destino == "" || destino == "Destino") {
		msg+='Debes introducir un destino.\n';
	}
	if (ida!=='1' && !compariridavuelta()) {
			msg+='La fecha de Regreso debe ser igual o posterior a la de Salida.';
	}
	if (!msg==''){
	    alert(msg);
	} else {
	    loading();
		var url='http://ofertas.muchoviaje.com/billetesavion/aspx/vuelos.aspx?D=' + destino + '&O=' + origen + '&FECS=' + fIda + '&FECV=' + fVuelta + '&NA=' + adultos + '&NN=' + ninios + '&NB=' + bebes + '&IDA=' + ida  + '&HS=' + hIda +'&HR=' + hVuelta;
		document.location.href=url;
	}
	return false;
}
/*
//VALIDAR HOTELES...................................................................
*/
function validarHoteles() {
    var msg=''
	var poblacion = quitarTilde($("#poblacion").attr("value"))
	var fechahotel = cambiarFechaHotel($("#fechaEntrada").attr("value"))
	var noches = $("#noches").fieldValue()
	var categoria = '1' //todas las estrellas por defecto (sort luego)
	var habitaciones = $("#habCount").attr("value")
    var ocupacion='';
	var edades='';
	for(var i=1;i<=habitaciones;i++) {
		//obtener ocupaciones y edades
		ocupacion += $("#ocupa" + i).attr("value") + "/";
		var ed = ($("#edades" + i).attr("value") == undefined ? '--': $("#edades" + i).attr("value"))
		//var ed = ($("#edades" + i).attr("value") == undefined ? '': $("#edades" + i).attr("value"))
		
		edades += ed + "/";
	}
	ocupacion = ocupacion.substring(0,ocupacion.length-1);
	loading();
	var url='http://hoteles.muchoviaje.com/hoteles/Buscador/ResultadosHoteles.aspx?pob=' + poblacion + '&cat=' + categoria + '&ocupa=' + ocupacion + '&edades=' + edades + '&numhab=' + habitaciones + '&ureg=OB&fent=' + fechahotel + '&n=' + noches;
	document.location.href=url;
	return false;
}
/*
//VALIDAR PAQUETES...................................................................
*/
function validarPaquetes() {
	var dest=4
	var origen = $("#origen").fieldValue()
	var destino = $("#destino").fieldValue()
	var fechabusqueda = cambiarFechaHotel($("#fechaEntrada").attr("value"))
	var bebes = $("#bebes").fieldValue()
	var noches = $("#noches").fieldValue()
	var categoria = '1' //todas las estrellas por defecto (sort luego)
	var habitaciones = $("#habCount").attr("value")
    var ocupacion='';
	var edades='';
	for(var i=1;i<=habitaciones;i++) {
		//obtener ocupaciones y edades
		ocupacion += $("#ocupa" + i).attr("value") + "/";
		var ed = ($("#edades" + i).attr("value") == undefined ? '--': $("#edades" + i).attr("value"))
		edades += ed + "/";
	}
	ocupacion = ocupacion.substring(0,ocupacion.length-1);
	loading()
	url='http://islas.muchoviaje.com/Vuelos-Hoteles/aspx/Buscador.aspx?codorg=' + origen + '&coddst=' + destino + '&fechs=' + fechabusqueda + '&noches=' + noches + '&bebes=' + bebes + '&ocup=' + ocupacion +  '&edad=' + edades + '&dest=' + dest;
	document.location.href=url;
	return false;
}
