﻿ ///************************************************************************************************************
 // llamada asincrona para cargar las paginas en diferentes idiomas desde la cabecera.ascx, controlado por
 // ajax, las peticiones se procesan desde la Cidomas y getpost.aspx
 ///************************************************************************************************************
var _select = ["selPais", "selOficina", "selProvincias", "selFechaMes","selOficina"];

function Idiomapag(pagina, idioma){
    var _pagina;
    url = document.location.href;
    partes = url.split('/'); 

    if(pagina != "reservar.aspx" && pagina != "reservar1.aspx" 
        && pagina != "reservar2.aspx" && pagina != "reservar3.aspx" 
        && pagina != "reserva.aspx" && pagina != "modifreserva2.aspx" 
        && pagina != "modifreserva3.aspx" && pagina != "datoshabit.aspx") {
        _pagina = "getPost.aspx?page=" + pagina + "&lang=" + idioma + "&funcion=reservar";
        
        var  _fechaent  = document.getElementById("wcReservar1_txtFechaEnt_1");
        var  _fechasal  = document.getElementById("wcReservar1_txtFechaSal_2");
        if (_fechaent != null && _fechasal != null) {
            _pagina = "getPost.aspx?page=" + pagina + "&diaent=" + _fechaent.value + "&diasal=" + _fechasal.value + "&lang=" + idioma + "&funcion=idiomas";
        }
    } else {
        _pagina = "getPost.aspx?page=" + pagina + "&lang=" + idioma + "&funcion=reservar";
    }

    return _pagina;
}
    
function GuardaSessionIdioma(contenido) {
    //alert(contenido);
    contenido = replace(contenido, "[_0_]", "'");
    var ctrlid = contenido.split("#");
    ponValoresForm(ctrlid);
    
   var IsPieReserva = document.getElementById("wcReservar1_lblPieFechaEnt") != null;
   var IsReservaOnline = document.getElementById("lblDiaSemanaEnt") != null;
   // Para traducir los días de la semana de entrada y salida
   var nomTxtFechaEnt, nomTxtFechaSal;
   var fechaEnt, fechaSal;
   
   if(IsPieReserva || IsReservaOnline) {
       if(IsPieReserva) {
           nomTxtFechaEnt = "wcReservar1_txtFechaEnt_1";
           nomTxtFechaSal = "wcReservar1_txtFechaSal_2";
       }
       if(IsReservaOnline) {
           nomTxtFechaEnt = "txtFechaEnt_1";
           nomTxtFechaSal = "txtFechaSal_2";
       }
       
       var txtwcFechaEnt = document.getElementById(nomTxtFechaEnt);
       var txtwcFechaSal = document.getElementById(nomTxtFechaSal);
       fechaEnt = txtwcFechaEnt.value;
       fechaSal = txtwcFechaSal.value;
       
       idioma = idiomaActual();
       
       CalendarioLib.GestionPet.Init(nomTxtFechaEnt, nomTxtFechaSal);
       CalendarioLib.GestionPet.SelectDate(fechaEnt.substring(0, fechaEnt.indexOf("/")), nomTxtFechaEnt, idioma, "ASP.peticionesserver_aspx", "divcalendar", fechaEnt);
       CalendarioLib.GestionPet.SelectDate(fechaSal.substring(0, fechaSal.indexOf("/")), nomTxtFechaSal, idioma, "ASP.peticionesserver_aspx", "divcalendar1", fechaSal);
   }
}


///************************************************************************************************************
// Esta funcion es llamada desde la capa DAL cidiomas cuando los datos a devolver no son asincronos
// cargamos las labels con el idioma seleccionado.
///************************************************************************************************************

function ponValoresForm(nomsCtl) {
    var valores;
     var nEncontrados = 0;
     var index = 0;
   
       for(var i = 0; i < nomsCtl.length; i++){
        valores = nomsCtl[i].split("(:)");
    
       var cadena = valores[i];
       var indice = valores[0].indexOf("_");
       var tipo = valores[0].substr(indice + 1,3);
       
       
       /*recuperamos los elementos del formulario*/
        
 var _formctrlid = document.getElementById(valores[0]);
      if(_formctrlid != null){
        if(_formctrlid.id == valores[0]){
        
            switch (tipo) {
                case "txt":
                case "hid":
                case "btn":
                   _formctrlid.value = valores[1];
                   break;                   
                case "lnk":
                case "lbl":
                case "hlk":
                case "spa":
                   _formctrlid.innerHTML = valores[1];
                   break;                   
               case "sel":
                   cargaListas(valores[i], "|", "(.)", valores[0], tipo);
                   break;               
               case "rbt":                   
                   break;                   
               case "img":
                   _formctrlid.src = valores[i];
                   break;
          }
        }
      }
       //aClientId = cadena.substring(1,cadena.lastIndexOf('@'));
       
    }
       
}
//Idioma navegador
function idioma() { 
        var idiomaNavegador;
        if (navigator.userAgent.indexOf("Opera")!=-1) (language=navigator.language) 
        else { if (navigator.appName == "Netscape") (language=navigator.language) 
        else language=navigator.browserLanguage }; 

        if (language){language=language.substring(0,3)} 
        else {language="zz"} 
        switch (language) { 
        case "en" : FInactivateLink("Cabecera1_" + "en",true); break; 
        case "es" : FInactivateLink("Cabecera1_" + "es",true); break; 
        case "fr" : FInactivateLink("Cabecera1_" + "fr",true); break; 
        case "de" : FInactivateLink("Cabecera1_" + "de",true); break; 
        case "pt" : FInactivateLink("Cabecera1_" + "pt",true); break; 
        case "it" : FInactivateLink("Cabecera1_" + "it",true); break; 
        case "zz" : FInactivateLink("Cabecera1_" + "zz",true);; break; 
        default : FInactivateLink("Cabecera1_" + "es",true);} 


 } 
 


//*************************************************************************************************************
//*************************************************************************************************************
//                                      FUNCIONES AJAX, relacionada con idiomas
//*************************************************************************************************************
//*************************************************************************************************************

// Esta función cargará las paginas
var _url;
var ArrValores = new Array();
var ArrCtrlId = new Array();


function llamarasincrono(url,async)
{
    var dataYPage = url.split("?");
    var page = dataYPage[0];
    var data = dataYPage[1];
   _url = url;
    var request = false;   
    
    if (window.XMLHttpRequest) {
        // Si es Mozilla, Safari etc
        request = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        // pero si es IE
        try 
        {
            request = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            // en caso que sea una versión antigua
            try
            {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
            }
        }
    } else return false;
    request.onreadystatechange = function() {
        // función de respuesta
        //ObtenerArrCtrl(form);
        cargarpagina(request, url);                
    }
    
    request.open('POST', url, async); // asignamos los métodos open y send
    request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
    request.send(data);
    traduceParteDinamica(url);
}

// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina(request, url) {
	if (request.readyState == 1) {
	} else if (request.readyState == 4) {
	    if (request.status == 200) {   
		     var res = request.responseText;
		     //alert(res);
		     res = TiempoRespuesta(res);
		     LoadXml(res);
		     ResaltaLink(url);
		 }
    }
}

function traduceParteDinamica(url) {
    if (getCtl("divLoading") != null) {
        verCtl("divLoading");
    }
    
    /* autocomplete en el idioma seleccionado */
    var ejecutarAutoComplete = true;
    var pagsNoEj = "datoshabit,dispohabit,elimmodifhabit,modifreserva2,modifreserva3,reserva,reservar,reservar1,reservar2,reservar3,cambio_precio,pruebas,mbreservar";
    var pags = pagsNoEj.split(",");
    var web = window.location.href.toLowerCase();
    for (var i = 0; i < pags.length && ejecutarAutoComplete; i++) {
        if (web.indexOf(pags[i] + ".aspx") != -1)  {
            ejecutarAutoComplete = false;
        }        
    }
    if (ejecutarAutoComplete) {
        GetAutoComplete("ListaDestinos", url.substring(url.indexOf("lang=") + 5, url.indexOf("&", url.indexOf("lang=") + 5)), null, "txtPiePoblacion", "selHotel", "hidCodDest");
    }
    /****************/
    
    var pag = getParamDeCad(url, "page");
    switch (pag.toLowerCase().substring(0, pag.toLowerCase().indexOf(".aspx"))) {
        case "ofertas": 
            cambioIdiomaOfertas();
            break;
        case "todoshoteles": 
            cambioIdiomaTodoHoteles();
            break;
        case "salones": 
            cambioIdiomaSalones();
            break;
        case "reservas":
            cambioIdiomaReservas();
            break;
        case "reserva":
            cambioIdiomaReserva();
            break;
        case "fitxahotel":
            var lang = getParamDeCad(url, "lang");
            window.location.href = "fitxahotel.aspx?idhotel=" + getParam("idhotel") + "&lng=" + lang;
            break;
        case "mapahoteles":
            var lang = getParamDeCad(url, "lang");
            window.location.href = "mapahoteles.aspx?lng=" + lang;
            break;
        case "topdestinos": 
            var destino = getParam("destino");
            var lang = getParamDeCad(url, "lang");
            window.location.href = "topdestinos.aspx?" + (destino != "" ? "destino=" + destino + "&" : "" ) + "lng=" + lang;
            break; 
        case "recomienda":
            actualizaIdiomaRecomienda();
            break;
        case "reservacancel":
            cambioIdiomaReservaCancel();
            break;
        case "reservar1":
            cambioIdiomas1();
            break;        
        case "reservar2":
            cambioIdiomas2();
            break;
        case "modifreserva3":
        case "reservar3":
            cambioIdiomas3();
            break;
        case "reservar":
        //case "todoshoteles":
        case "oferta":        
        case "datoshabit":
        case "elimmodifhabit":
        case "modifreserva2":        
        case "dispohabit":
            cambioIdiomas();
            break;
        case "modifparticular":
            cambioIdiomaModifParticular();
            break; 
        case "modifempresa":
            cambioIdiomaModifEmpresa();
            break;
        case "modifagencia":
            cambioIdiomaModifAgencia();
            break;
        case "registrate-agencia":
            cambioIdiomaRegistroAgencia();
            break;
        case "registrate-empresa":
            cambioIdiomaRegistroEmpresa();
            break;
        case "registrate-particular":
            cambioIdiomaRegistroParticular();
            break;
    }
}

function ResaltaLink(url) {
var idiomas = new Array("fr", "en", "es", "de", "it", "pt");
    var link;
    /*primero les ponemos a los links la css class por defecto
    y después resaltaremos el seleccionado*/
    for(var i = 0; i < 6; i++) {
        link = document.getElementById("Cabecera1_" + idiomas[i]);
        link.className = "a_blanco";
    } 
    
    idlink = url.substring(url.indexOf("lang=") + 5, url.indexOf("&", url.indexOf("lang=") + 5));
    var hidLang = document.getElementById("Cabecera1_hidLang");
    hidLang.value = idlink;
    var link = document.getElementById("Cabecera1_" + idlink);
    link.className = "a_blanco_act";
}


function LoadXml(res) {
	var temp = _url.split("&");
	var idioma = "es";
	for (var i = 0; i < temp.length; i++) {
		var elem = temp[i].split("=");
		if (elem[0] == "lang") {
			idioma = elem[1];
		} 
	}   
   var form = document.forms[0];
   var opcion, opcion1, opcion2, opcion3 = "";
   for(var i = 0; i < form.length; i ++ ) {
      var e = form.elements[i];
      var Is = document.getElementById("WcPublicidad1_divEscaparate") != null;
      var IsCaptacion = document.getElementById("WcPublicCaptacion1_divEscaparate") != null;
      var IsTopDestinos = document.getElementById("WcTopdestinos1_divdestinos") != null;
      var IsPieReserva = document.getElementById("wcReservar1_lblPieFechaEnt") != null;
      var IsReservaOnline = document.getElementById("lblDiaSemanaEnt") != null;
   }
   var parametros = "";
   var datos = "";
   var idiomaBanners = false;
   
    if (Is || IsCaptacion || IsTopDestinos) {
        idiomaBanners = true;
        opcion = "CambioIdiomaBanners";
        if (Is){
            opcion1 = "CambioIdiomaEscaparate";
        }
        if (IsCaptacion){
            opcion2 = "CambioIdiomaBannerCap";
        }
        if (IsTopDestinos){
            opcion3 = "CambioIdiomaDestinosTop";
        }
    }
   
   if(idiomaBanners) {
      Peticion_Ajax("setPost.aspx?opcion=" + opcion  + "&opcion1=" + opcion1 + "&opcion2=" + opcion2 + "&opcion3=" + opcion3 + "&idioma=" + idioma);
   }
   
   try{
//       var _idCtl  = $("Idctl");
//       if(_idCtl.value != "")
//       {
//          Funciones.Network.idCtl = _idCtl;
//          Funciones.Network.idioma = idioma;
//          Funciones.Network.opcion = "CambiaIdiomaGrid";
//          Funciones.Network.EnviaPeticion();
//       }
   }catch(e){}
   var ctrlid = res.split("#");
   ponValoresForm(ctrlid);
   
   // Para traducir los días de la semana de entrada y salida
   var nomTxtFechaEnt, nomTxtFechaSal;
   var fechaEnt, fechaSal;
   
   if(IsPieReserva || IsReservaOnline) {
       if(IsPieReserva) {
           nomTxtFechaEnt = "wcReservar1_txtFechaEnt_1";
           nomTxtFechaSal = "wcReservar1_txtFechaSal_2";
       }
       if(IsReservaOnline) {
           nomTxtFechaEnt = "txtFechaEnt_1";
           nomTxtFechaSal = "txtFechaSal_2";
       }
       
       var txtwcFechaEnt = document.getElementById(nomTxtFechaEnt);
       var txtwcFechaSal = document.getElementById(nomTxtFechaSal);
       fechaEnt = txtwcFechaEnt.value;
       fechaSal = txtwcFechaSal.value;
       
       CalendarioLib.GestionPet.Init(nomTxtFechaEnt, nomTxtFechaSal);
       CalendarioLib.GestionPet.SelectDate(fechaEnt.substring(0, fechaEnt.indexOf("/")), nomTxtFechaEnt, idioma, "ASP.peticionesserver_aspx", "divcalendar", fechaEnt);
       CalendarioLib.GestionPet.SelectDate(fechaSal.substring(0, fechaSal.indexOf("/")), nomTxtFechaSal, idioma, "ASP.peticionesserver_aspx", "divcalendar1", fechaSal);
   }
}

function idiomaActual() {
    var idiomas = new Array("fr", "en", "es", "de", "it", "pt");
    var link, encontrado, idioma;
    /*primero les ponemos a los links la css class por defecto
    y después resaltaremos el seleccionado*/
    encontrado = false;
    for(var i = 0; i < 6 && !encontrado; i++) {
        link = document.getElementById("Cabecera1_" + idiomas[i]);
        if (link.className == "a_blanco_act") {
            idioma = idiomas[i];
            encontrado = true;
        }
    }
    
    return idioma; 
}

function ponValoresForm(nomsCtl) {
    var valores;
    var nEncontrados = 0;
    var index = 0;
    var _url = document.location.href; 
    partes = _url.split('/');
    /* Jose - Comento porque creo innecesario la carga de listados 
       y hace que se visualicen incorrectamente en todosloshoteles */
    //CargaSelectsIdioma(); 
    //alert("ponValores\n\n" + nomsCtl);
    for(var i = 0; i < nomsCtl.length; i++) {
        valores = nomsCtl[i].split("(:)");    
        var cadena = valores[i];
        var indice = valores[0].indexOf("_");
        var tipo = valores[0].substr(indice + 1,3);       
       /*recuperamos los elementos del formulario*/
        var bSalir = false;       
        var bucle;
        var elementos;
         //bucle = DevuelTotalElementos(valores[1],valores[0]);
        var _formctrlid = document.getElementById(valores[0]);
        if (_formctrlid != null) {
            if (_formctrlid.id == valores[0]) {         
                switch (tipo) {
                    case "txt":
                    case "hid":
                    case "btn":
                        _formctrlid.value = valores[1];
                        break;
                    case "lnk":
                    case "lbl":
                    case "spa":
                    case "hlk":
                        _formctrlid.innerHTML = valores[1];
                        break;
                    case "sel":
                    case "select":
                        var filas = nomsCtl[i].split("|");
                        cargaListas(nomsCtl[i].substring(nomsCtl[i].indexOf("(:)")+3,nomsCtl[i].length), "|", "(.)", valores[0], tipo);
                        break;
                    case "rbt":
                        break;
                    case "img":
                        _formctrlid.src = valores[i];
                        break;
                }
            }
        }
        //aClientId = cadena.substring(1,cadena.lastIndexOf('@'));       
    }       
}

function DevuelTotalElementos(valor,id){
   var elementos;
   var num=0;
   var Attributo;
   var contador = 0;
   switch(id){
       case "lblMasCombinaciones":
       case "lblMenosCombinaciones":
       elementos = document.getElementsByTagName("SPAN"); 
       for(var i=0; i < elementos.length; i++){
           Attributo = elementos[i].getAttribute("attributo");
           if(Attributo != null){     
           var numId = Attributo.substring(Attributo.indexOf("_")+1,Attributo.length);
            $(id + numId).innerHTML = valor;
           }
      }
       break;
   }

   return num;
    
}

function CargaSelectsIdioma(){
    var lista = [];
    var parametros = "";
    for(var i=0;  i < _select.length; i++){
        var Isselect = $(_select[i].id) ? false : true;
        if(Isselect){
            if($(_select[i]) != null){
                lista += $(_select[i]).id + sepCtl;
            }
        }
        Isselect = false;
    }
    if(lista != ""){
        parametros = "Comun" + sepGra + "GetListas" + sepBloc + lista; 
        peticionAjax('main(_)' + parametros,RespuestaLista);
    }
}

function RespuestaLista(res){
     var opcion = "";
     var Texto = "";
     var Valor = "";
     var resuls = "";
    if(res !=""){
      var filas = res.split(sepBloc);
      for(var i=0; i< filas.length; i++){
        opcion = filas[i].substring(0,filas[i].indexOf("(_T_)"))
            var isCtrl = $(opcion) ? true : false;
        switch(opcion){
            
            case "selPais":
             if(isCtrl){
                resuls = filas[i].substring(filas[i].indexOf("(_T_)")+5,filas[i].length)
                cargaListas(resuls , "#",":", opcion, "sel");   
             }
            break;
            case "selProvincias":
            if(isCtrl){
                resuls = filas[i].substring(filas[i].indexOf("(_T_)")+5,filas[i].length)
                cargaListas(resuls , "#",":", opcion, "sel");   
            }
            break;
            case "selFechaMes":
            if(isCtrl){
                var meses = filas[i].split("(_)");
                var desglosaMeses = meses[1].split(",");
                var ponvalor = [];
                var contador = 1;
                ponvalor += "" + ":" + "" + "#";
                for(var i=0;i < desglosaMeses.length-1; i++){
                 ponvalor += desglosaMeses[i] + ":" + parseInt(i+1) + "#"; 
                
                }
                cargaListas(ponvalor,"#",":", opcion, "sel");   
            }
            break;
//            case "selOficina":
//            resuls = filas[i].substring(filas[i].indexOf("(_T_)")+5,filas[i].length)
//            cargaListas(resuls , "#",":", opcion, "sel");   
            break;
        }
      }
    }
}

function cargaListas(resuls, patron, sepValor, idCtrl, tipo) {  
    var valRes;
    var bNoTraduce = true;  
    switch(idCtrl){
        case "selOficina":
        resuls= "" + patron + "" + resuls;
        break;
        case "selPais":
        resuls= "" + patron + "" + resuls;
        break;
        case "selProvincias":
        bNoTraduce = false;
        break;
    }
    if(bNoTraduce){
        var opciones = resuls.split(patron);
        var CtrlTipo = document.getElementById(idCtrl);
        var nOptions = opciones.length;
        var sepadores;
            switch (tipo) {
               case "sel":
                  
                  CtrlTipo.options.length = nOptions;       
                  for (var i = 0; i < nOptions; i++) { 
                     valRes = opciones[i].split(sepValor);  
                     CtrlTipo.options[i].value = valRes[1];
                     CtrlTipo.options[i].text = valRes[0];
                  }
                  break;
           }
    }
}


var xhr = false;
function Peticion_Ajax(url) {
     if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
     }

     else {
        if (window.ActiveXObject) {
           try {
              xhr = new ActiveXObject ("Microsoft.XMLHTTP");
           }
           catch (e) { }
        }
     }

     if (xhr) {
        xhr.onreadystatechange = PrecesaDatos; 
        xhr.open("get", url, true);
        xhr.send(null);
     }
     else {
        //document.getElementById("updateArea"). innerHTML = "Error al precesar la solicitud XMLHttpRequest";
     }
}

function PrecesaDatos(params) {
     if (xhr.readyState == 4) {
        if (xhr.status == 200) {
           var outMsg = xhr.responseText;
           outMsg = TiempoRespuesta(outMsg);
           var desglosa = outMsg.split('(#)');
           var temp = desglosa.toString().split("(_)");
           
            switch(temp[0]){
                case "CambioIdiomaBanners":
                    var form = document.forms[0];
                        for(var i = 0; i < form.length; i++) {
                            var e = form.elements[i];
                            var Is = document.getElementById("WcPublicidad1_divEscaparate") != null; //devuelve boleano
                            if(Is){
                                var usercontrol = document.getElementById("WcPublicidad1_divEscaparate")
                                usercontrol.innerHTML = temp[1].substr(0,temp[1].toString().lastIndexOf(','));
                            }
                            var IsCap = document.getElementById("WcPublicCaptacion1_divEscaparate") != null; //devuelve boleano
                            if(IsCap){
                                var usercontrolCap = document.getElementById("WcPublicCaptacion1_divEscaparate")
                                usercontrolCap.innerHTML = temp[2].substr(0,temp[2].toString().lastIndexOf('CambioIdiomaBanners'));
                                
                            }
                            var Istop = document.getElementById("WcTopdestinos1_divdestinos") != null; 
                            if(Istop){
                                var wctopDestinos = document.getElementById("WcTopdestinos1_divdestinos")
                                wctopDestinos.innerHTML = temp[3];
                            }
                        }
                
                break;
                case "CambioIdiomaBannerCap":
                    var form = document.forms[0];
                        for(var i = 0; i < form.length; i++) {
                            var e = form.elements[i];
                            usercontrol.innerHTML = temp[1].substr(0,temp[2].toString().lastIndexOf(','));
                        }
                break;
                default:
                break;
            }
        }
        else {
           //var outMsg = "Problemas con la respuesta " + xhr.status;
        }
     }
     /* En algunas páginas se utiliza la imagen de carga al hacer la petición de cambio de idioma,
        lo ocultamos al finalizarla */
     try {
        var loading = document.getElementById("divloading");
        if (loading == null) loading = document.getElementById("divLoading");
        loading.style.display = "none";
     } catch(e) {};
}