﻿// Variables globales
var _idCtrlPob = "";
var _idCtrlPob = "";
var _idHidPod = "";
 var xmlHttp;
 
function CreateXmlHttp() {
     xmlHttp = false;

    /*Mozilla, Safari, ...*/
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
    	try {
			xmlHttp = new XMLHttpRequest();
        } catch(e) {
			xmlHttp = false;
        }
    /*IE*/
    } else if(window.ActiveXObject) {
       	try {
        	xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		xmlHttp = false;
        	}
		}
    }

    return xmlHttp;
}

function sendCall(url, data) {
    /*1.- Creamos el objeto xmlHttpRequest*/
    var xmlHttp = CreateXmlHttp();

    /*Si se ha creado correctamente*/
    if(xmlHttp) {
        /*2.- Marcar qué función manejará la respuesta*/
        xmlHttp.onreadystatechange = function() {
            getCallBack(xmlHttp, url, data);
        }
        
        /*3.- Enviar*/
        //alert(url);
        xmlHttp.open("POST", url, true);
        xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        xmlHttp.send(data);
    }
    else {
        alert("No se pudo crear el objeto XMLHttpRequest");
    }
}

function getCallBack(xmlHttp, url, data) {
    var accion = data.split('=');
    accion = accion[1].split('&');
    if(xmlHttp.readyState == 1){
        switch(accion[0]){
            case "GetListaHotelesPoblacion":
            var divselec = document.getElementById("divselec")
            divselec.disabled = true;    
            break;
        }
     } else if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            var res = xmlHttp.responseText;
            //alert(xmlHttp.status);
            if(res.substring(0, 8) == "ERROR(_)") {
                var loading = document.getElementById("divLoading");
                loading.style.visibility = "hidden";
                alert("Error en la petición.\n" + res.substring(8));
            } else {
                res = TiempoRespuesta(res);
                var pagina = url, opcion = "", form = "", idTab = "", idioma = "";
                
                if (data.indexOf("&opcion=") != -1) {
                    if(data.indexOf("&", data.indexOf("&opcion=") + 8) != -1) {
                        opcion = data.substring(data.indexOf("&opcion=") + 8, data.indexOf("&", data.indexOf("&opcion=") + 8));
                    } else {
                        opcion = data.substring(data.indexOf("&opcion=") + 8, data.length);
                    }
                } else {
                    if (data.indexOf("opcion=") != -1) {
                        if(data.indexOf("&", data.indexOf("opcion=") + 7) != -1) {
                            opcion = data.substring(data.indexOf("opcion=") + 7, data.indexOf("&", data.indexOf("opcion=") + 7));
                        } else {
                            opcion = data.substring(data.indexOf("opcion=") + 7, data.length);
                        }
                    }
                }
                
                if (data.indexOf("&form=") != -1) {
                    form = data.substring(data.indexOf("&form=") + 6, data.indexOf("&", data.indexOf("&form=") + 6));
                }
                
                if (data.indexOf("&idTab=") != -1) {
                    idTab = data.substring(data.indexOf("&idTab=") + 7, data.indexOf("&", data.indexOf("&idTab=") + 7));
                }
                
                if (data.indexOf("&idioma=") != -1) {
                    idioma = data.substring(data.indexOf("&idioma=") + 8, data.length);
                }
                
                switch(pagina) {
                   case "getPost.aspx":
                       //alert(opcion);
                       switch (opcion) {
                                case "ListaDestinos":
                                    AutoCompleteProv(res);
                                    break;
                                case "ListaDestinosOfertas":                            
                                    AutoCompleteProvOfertas(res);
                                    break;
                                case "ListaDestinosReser":
                                    AutoCompleteProvReser(res);
                                    break;
                                case "ListaHoteles":
                                case "ListaHotelesFiltrada":
                                    AutoCompleteSelHot(res);
                                    break;
                                case "ListaHotelesOfertas":
                                case "ListaHotelesFiltradaOfertas":
                                    AutoCompleteSelHotOfertas(res);
                                    break;
                                case "ListaHotelesReser":
                                case "ListaHotelesFiltradaReser":
                                    AutoCompleteSelHotReser(res);
                                    break;                                    
                                case "GetListaHotelesPoblacion":
                                    LoadGrid(opcion, res);
                                    break;
                               case "GetListaHotelesProv":
                               case "GetListaHotelesCat":
                               case "GetListaFiltra":
                                    LoadGrid(opcion, res);
                                    break;
                               case "ValidaUsuario":
                                    MensajeRespuesta(res,opcion);
                                    break;
                            }
                       break;
                       
                   case "setPost.aspx":
                       switch(opcion) {
                           case "EnviaRegEmpresa":
                                MensajeRespuesta(res,opcion);
                                break;
                           case "EnviaRegAgencia":
                                MensajeRespuesta(res,opcion);
                                break;
                           case "EstadisticaBanner":
                                //alert(res);
                                break;
                       }
                       //GuardadoDatosAdm(res);
                       
                       break;
                }
            }
        }
        else {
            var res = xmlHttp.responseText;
            if(res.substring(0, 8) == "ERROR(_)") {
                var loading = document.getElementById("divLoading");
                loading.style.visibility = "hidden";
                alert("Error en la petición.\nTiempo de espera excedido 45sec.");
            }
            //alert("Error en la petición.\nMensaje de error: " + xmlHttp.statusText);
        }
    }
}

function LoadGrid(opcion, res) {
var parametros;

switch (opcion) {
        case "GetListaHotelesPoblacion":
            parametro = "loadTodosHoteles(_)" + res;
        break;
        case "GetListaFiltra":
            parametro = "GetListaFiltra(_)" + res;
         break;
        } 
    
    WebForm_DoCallback('__Page', 'main(_)' + parametro + '(_G_)graj(_)todo(_)botNums(_)descargar(_)', LoadGridVuelta, null, expirarSesion, true);    

}

function LoadGridVuelta(res, context) {
    
    document.getElementById("dvCont").innerHTML = res.substring(res.indexOf("#")+1,res.length);
    var divselec = document.getElementById("divselec");
     divselec.disabled = false; 
}

function expirarSesion(txtError, context) {
    //location.href="Caducidad.aspx";    
}

function GetDatos(opcion, idioma) {
var parametros;
var Numidioma;
switch(idioma){
        case "es":
        Numidioma = "1"; 
        break;
        case "en":
        Numidioma = "2"; 
        break;
        case "fr":
        Numidioma = "3"; 
        break;
        case "de":
        Numidioma = "4"; 
        break;
        case "it":
        Numidioma = "5"; 
        break;
        case "pt":
        Numidioma = "6"; 
        break;
        
} //fin switch

switch (opcion) {
        case "GetListaHotelesPoblacion":
        parametros = "opcion=" + opcion + "&idioma=" + Numidioma;
        break;
        }
sendCall("getPost.aspx", parametros);

}

function GetAutoComplete(opcion, idioma, cod, idCtrlPob, idCtrlHot, idHidPod) {
    var operacion = "";
    var mensaje = "";
    var parametros = "";
    
    if(idCtrlPob != null) _idCtrlPob = idCtrlPob;
    if(idCtrlHot != null) _idCtrlHot = idCtrlHot;
    if(idHidPod != null) _idHidPod = idHidPod;
    
    // Deshabilitamos la lista de hoteles mientras se procesa la petición
    var selHoteles = document.getElementById(_idCtrlHot);
    if (selHoteles != null) {
        selHoteles.disabled = true;
    }    
    switch (opcion) {
        case "ListaDestinos":
        case "ListaHoteles":
            parametros = "opcion=" + opcion;
            break;
            
        case "ListaHotelesFiltrada":
            var poblacion = document.getElementById("poblacion-form");
            parametros = "opcion=" + opcion + "&cod=" + cod;
            var codPobla = document.getElementById("hidCodDest");
            codPobla.value = cod;
            break;
    }
    
    sendCall("getPost.aspx", parametros);
}

function AutoCompleteProv(res)
{
    if (res != "") {
        var resul =  res.split(sepBloc);
        var wordHotel = resul[0].split(sepElem);
        var arrAux = new Array();
        var customarray = resul[1].split("|"); // Andorra(23#14)
        for (var i = 0; i < customarray.length; i++) {
            arrAux = customarray[i].split("#");
            arrAux[0] += " ";
            if(parseInt(customarray[i].substring(customarray[i].indexOf("(") + 1, customarray[i].indexOf("#"))) > 1)
                arrAux[0] += wordHotel[1];
            else
                arrAux[0] += wordHotel[0];
            customarray[i] = arrAux[0] + "#" + arrAux[1];
        }
        //var vElements = new Array(customarray.length);
        var obj = new actb(_idCtrlPob, customarray, null, _idHidPod);
        GetAutoComplete("ListaHoteles", "es", null);
    }
}

function AutoCompleteHot(res)
{
    var hidHoteles = document.getElementById("hidHoteles");
    //hidHoteles.value = res;
//    var customarray2 = res.split("|");
//    
//    var obj3 = new actb(_idCtrlHot, customarray2);
//    try {
//        var obj4 = new actb('hotel-form', customarray2);
//    } catch(e) {
//    }
}

function AutoCompleteSelHot(res) {
    var selHot = document.getElementById(_idCtrlHot);
    selHot.options.length = 0;
    var result = "";
    var txtVal;
    var hayResult = false;
    
    var datos = res.split(sepGra);
    var hoteles = datos[0].split("|");
    if(hoteles.length > 1) result += "" + sepVal + "" + sepElem;
    
    for(var i = 0; i < hoteles.length; i++) {
        txtVal = hoteles[i].split("#");
        result += txtVal[0] + sepVal + txtVal[1] + sepElem;
    }
    
    if(result.length > 0) {
        result = result.substring(0, result.length - sepElem.length);
        cargaSel(_idCtrlHot, result);
    }
    
    // Y volvemos a habilitar el desplegable
    selHot.disabled = false;

    if (getNomPagina(location.href) == "oferta.aspx") {
        var selHotel = document.getElementById(_idCtrlHot);
        selHotel.value = getParamDeCad(url, "idhotel");
        GetConfigHotel(selHotel.value);
    } else {
        // config max. habitaciones, adultos, etc ...
        GetConfigVuelta(datos[1]);
    }
}

function MensajeRespuesta(res,opcion) {
     switch(opcion) {
        case "EnviaRegEmpresa":
        window.location.href = "registro_empresa_resp.aspx";    
        break;
        case "EnviaRegAgencia":
        window.location.href = "registro_agencia_resp.aspx";    
        break;
        case "ValidaUsuario":
        window.location.href = "login_resp.aspx";    
        break;
     }
}

function AutoCompletaDestino(apartado) {
    AsociaCtlAutoComplete(apartado);
    var selHot = document.getElementById(_idCtrlHot);
    selHot.disabled = true;
    var destino = document.getElementById(_idCtrlPob).value;
    var parametros = "Comun" + sepGra + "AutoCompletaDestino" + sepBloc + destino + sepArg + apartado;
    petiAjaxMain(parametros, AutoCompletaDestinoVuelta);
}

function AutoCompletaDestinoVuelta(res) {
    var bloques = res.split(sepBloc);
    var resul;
    var destino = document.getElementById(_idCtrlPob);
    resul = bloques[1].split(sepArg);
    var selHot = document.getElementById(_idCtrlHot);
    
    if(bloques[0] == "corregido" || bloques[0] == "ok") {
        destino.value = resul[1];
        switch(resul[2]) {
            case "ListaHotelesFiltrada":
                GetAutoComplete("ListaHotelesFiltrada", null, resul[0], _idCtrlPob, _idCtrlHot, _idHidPod);
                break;
                
            case "ListaHotelesFiltradaReser":
                GetAutoCompleteReser("ListaHotelesFiltradaReser", null, resul[0],  _idCtrlPob, _idCtrlHot, _idHidPod);
                break;
                
            case "ListaHotelesFiltradaOfertas":
                GetAutoCompleteOfertas("ListaHotelesFiltradaOfertas", null, resul[0],  _idCtrlPob, _idCtrlHot, _idHidPod);
                break;
        }
    } else if (bloques[0] == "ko") {
        var hidCod = document.getElementById(_idHidPod);
        hidCod.value = "";
        switch(resul[2]) {
            case "ListaHotelesFiltrada":
                AutoCompleteSelHot("");
                break;
                
            case "ListaHotelesFiltradaReser":
                AutoCompleteSelHotReser("");
                break;
                
            case "ListaHotelesFiltradaOfertas":
                AutoCompleteSelHotOfertas("");
                break;
        } 
    }
    selHot.disabled = false;
}

function AsociaCtlAutoComplete(apartado) {
    switch(apartado) {
        case "ListaHotelesFiltrada":
            _idCtrlPob = "txtPiePoblacion";
            _idCtrlHot = "selHotel";
            _idHidPod = "hidCodDest";
            break;
            
        case "ListaHotelesFiltradaReser":
            _idCtrlPob = "txtPoblacionRs";
            _idCtrlHot = "selHotelesRs";
            _idHidPod = "hidCodPobla";
            break;
            
        case "ListaHotelesFiltradaOfertas":
            _idCtrlPob = "txtPoblacion";
            _idCtrlHot = "selHoteles";
            _idHidPod = "hidCodPobla";
            break;
    } 
}