/**********************************************************************************************************/
/************************* CONTROL DE SUGERENCIAS PARA FORMULARIOS ****************************************/
/**********************************************************************************************************/


//Control de sugerencias
ControlSugerencias = function(objSugerencias, idTextBox, tituloSugerencias) {

    //Sugerencia actual
    this.actual = -1;

    //Lista a mostrar (div)
    this.divDesplegable = null;

    //Proveedor de sugerencias
    this.provider = objSugerencias;

    //TextBox en el que mostrar las sugerencias
    this.textbox = document.forms[objSugerencias.idFormulario].elements[idTextBox];

    //Id del div dónde se mostrará la lista
    this.idLayer = "idSuge" + Math.random().toString(10).substr(2, 8);

    //Título de las sugerencias
    this.tituloSugerencias = tituloSugerencias;

    //Inicializa el control
    this.init();

};

//Crea el dropdownlist para seleccionar las sugerencias
ControlSugerencias.prototype.crearDesplegable = function() {

    var objThis = this;

    //Crea el div y asigna los estilos
    this.divDesplegable = document.createElement("DIV");
    this.divDesplegable.id = this.idLayer;
    this.divDesplegable.className = "sugerencias";
    this.divDesplegable.style.visibility = "hidden";
    this.isIE = (navigator.userAgent.indexOf("MSIE") != -1);

    //Si es IE agregamos un iframe para que no se vean los selects que pueda haber detrás del div de sugerencias
    //Si es otro navegador, agregamos un hidden para mantener el número de nodos y trabajar con el mismo índice
    var nodo1 = null;
    if (this.isIE) {
        nodo1 = document.createElement("iframe");
    }
    else {
        nodo1 = document.createElement("input");
        nodo1.setAttribute("type", "hidden");
    }

    //Título
    var nodoTitulo = document.createElement("DIV");
    nodoTitulo.id = "tituloSugerencias";
    nodoTitulo.innerHTML = this.tituloSugerencias;


    //Agregamos los nodos
    this.divDesplegable.appendChild(nodo1);
    this.divDesplegable.appendChild(nodoTitulo);
    this.divDesplegable.appendChild(document.createElement("DIV"));

    //Cuando el usuario selecciona una sugerencia se pone en el textbox
    this.divDesplegable.onmousedown =
    this.divDesplegable.onmouseup =
    this.divDesplegable.onmouseover = function(objEvento) {

        objEvento = objEvento || window.event;
        objTarget = objEvento.target || objEvento.srcElement;

        if (objTarget.id != "tituloSugerencias") {

            if (objEvento.type == "mousedown") {
                objThis.provider.pintarSugerencia(objThis.actual);
                objThis.ocultarSugerencias();
            } else if (objEvento.type == "mouseover") {
                objThis.marcarSugerencia(objTarget);

            } else {
                objThis.textbox.focus();
            }
        }
    };

};

//Obtiene la coordenada izquierda del textbox
ControlSugerencias.prototype.getLeft = function() {

    var objNodo = this.textbox;
    var iLeft = 0;

    while (objNodo.tagName != "BODY" && objNodo.tagName != "HTML") {
        iLeft += objNodo.offsetLeft + ((objNodo.clientLeft > 2) ? objNodo.clientLeft : 0);
        objNodo = objNodo.offsetParent;
    }

    return iLeft;
};

//Obtiene la coordenada superior del textbox
ControlSugerencias.prototype.getTop = function() {

    var objNodo = this.textbox;
    var iTop = 0;

    while (objNodo.tagName != "BODY" && objNodo.tagName != "HTML") {
        iTop += objNodo.offsetTop + ((objNodo.clientTop > 2) ? objNodo.clientTop : 0);
        objNodo = objNodo.offsetParent;
    }

    return iTop;
};

//Cancela el evento que recibe por parámetro para que no se propageue
ControlSugerencias.prototype.cancelarEvento = function(objEvento) {

    if (objEvento.stopPropagation) {
        objEvento.stopPropagation();
    }

    if (objEvento.preventDefault) {
        objEvento.preventDefault();
    }

    objEvento.cancelBubble = true;
    objEvento.cancel = true;
    objEvento.returnValue = false;

    return false;
};

//Controla los eventos para las teclas arriba y abajo del pad y para el enter
ControlSugerencias.prototype.eventoKeyDown = function(objEvento) {

    //Se comprueba si antes de controlar la tecla, el div está desplegado para
    //más tarde cancelar la propagación del evento
    var isVisible = (this.divDesplegable.style.visibility == "visible");

    switch (objEvento.keyCode) {

        //Arriba       
        case 38:
            this.sugerenciaAnterior();
            
            //Si antes estaba visible, cancelamos el evento
            if (isVisible) {
                this.cancelarEvento(objEvento);
            }
            break;

        //Abajo      
        case 40:
            this.sugerenciaSiguiente();
            
            //Si antes estaba visible, cancelamos el evento
            if (isVisible) {
                this.cancelarEvento(objEvento);
            }
            break;

        //Enter 
        case 13:
            this.ocultarSugerencias();
            
            //Si antes estaba visible, cancelamos el evento
            if (isVisible) {
                this.cancelarEvento(objEvento);
            }
            break;
    }

    

};


//Maneja los eventos de la tecla arriba
ControlSugerencias.prototype.eventoKeyUp = function(objEvento) {

    var codTecla = objEvento.keyCode;

    //Solo si no es ninguna de las teclas del rango, pintamos las sugerencias
    if (!(codTecla < 8 || (codTecla > 8 && codTecla < 32) || (codTecla >= 33 && codTecla < 46) || (codTecla >= 112 && codTecla <= 123))) {

        //Obtenemos las sugerencias
        var listaSugerencias = this.provider.obtenerSugerencias(this.textbox.value);

        //Si hay elementos mostramos las sugerencias
        if (listaSugerencias.length > 0) {
            this.mostrarSugerencias(listaSugerencias);
        }
        else {
            this.ocultarSugerencias();
        }

    }
};

//Oculta las sugerencias
ControlSugerencias.prototype.ocultarSugerencias = function() {

    this.divDesplegable.style.visibility = "hidden";
    this.actual = -1;
};

//Marca la sugerencia en la lista
ControlSugerencias.prototype.marcarSugerencia = function(objNodoSug) {

    if (objNodoSug != null) {

        //Si el objeto que lanza el evento, no es el div de la sugerencia, entonces será
        //el padre
        if (objNodoSug.className != "divSugerencia" && objNodoSug.className != "actual") {
            objNodoSug = objNodoSug.parentNode;
        }

        //Recorremos todos los nodos y marcamos el correpondiente
        for (var i = 0; i < this.divDesplegable.childNodes[2].childNodes.length; i++) {

            var objNodo = this.divDesplegable.childNodes[2].childNodes[i];

            //Si es el mismo nodo, se establece la clase actual
            if (objNodo == objNodoSug) {
                objNodo.className = "actual";
                this.actual = i;

                //Si es otro, la clase divSugerencia
            } else {
                objNodo.className = "divSugerencia";
            }
        }
    }
};

//Inicializa el textbox asignándole los manejadores de eventos
ControlSugerencias.prototype.init = function() {

    //Guardamos la referencia al objeto
    var objThis = this;

    //Asignamos el evento onkeyup
    this.textbox.onkeyup = function(objEvento) {

        if (!objEvento) {
            objEvento = window.event;
        }

        objThis.eventoKeyUp(objEvento);
    };

    //Desactivamos el autocompletar del navegador en el textbox
    this.textbox.setAttribute("autocomplete", "off");

    //Asignamos el evento onkeydown
    this.textbox.onkeydown = function(objEvento) {

        if (!objEvento) {
            objEvento = window.event;
        }

        objThis.eventoKeyDown(objEvento);
    };

    //Asignamos el evento onBlur para que se oculten las sugerencias   
    this.textbox.onblur = function() {

        objThis.ocultarSugerencias();
    };

    //Creamos la lista de sugerencias
    this.crearDesplegable();
};

//Marca la siguiente sugerencia de la lista
ControlSugerencias.prototype.sugerenciaSiguiente = function() {

    var nodosSugerencias = this.divDesplegable.childNodes[2].childNodes;

    if (nodosSugerencias.length > 0 && this.actual < nodosSugerencias.length - 1) {
        var oNode = nodosSugerencias[++this.actual];
        this.marcarSugerencia(oNode);

        this.provider.pintarSugerencia(this.actual);
    }
};

//Marca la sugerencia anterior
ControlSugerencias.prototype.sugerenciaAnterior = function() {

    var nodosSugerencias = this.divDesplegable.childNodes[2].childNodes;

    if (nodosSugerencias.length > 0 && this.actual > 0) {
        var oNode = nodosSugerencias[--this.actual];
        this.marcarSugerencia(oNode);

        this.provider.pintarSugerencia(this.actual);
    }
};

//Agrega las sugerencias en el div las coloca y muestra el div
ControlSugerencias.prototype.mostrarSugerencias = function(listaSugerencias) {

    if (document.getElementById(this.idLayer) == null) {
        document.body.appendChild(this.divDesplegable);
    }

    //Vaciamos el div por si hubiera datos anteriores para rellenarlo de nuevo
    //y establecemos la posición seleccionada a -1
    var objDiv = null;
    this.divDesplegable.childNodes[2].innerHTML = "";
    this.actual = -1;

    for (var i = 0; i < listaSugerencias.length; i++) {
        objDiv = document.createElement("div");
        objDiv.className = "divSugerencia";
        objDiv.innerHTML = listaSugerencias[i];
        this.divDesplegable.childNodes[2].appendChild(objDiv);
    }

    //Marcamos la posición en la pantalla del desplegable
    this.divDesplegable.style.left = this.getLeft() + "px";
    this.divDesplegable.style.top = (this.getTop() + this.textbox.offsetHeight - 1) + "px";
    this.divDesplegable.style.visibility = "visible";

    //Si es IE ponemos la misma altura y anchura al iframe que el div de las sugerencias
    if (this.isIE) {
        this.divDesplegable.childNodes[0].style.height = this.divDesplegable.childNodes[2].offsetHeight;
        this.divDesplegable.childNodes[0].style.width = this.divDesplegable.childNodes[2].offsetWidth;
    }
};



/*******************************************************************************************************/
/********************** PROVEEDOR DE SUGERENCIAS PARA EL CONTROL DE SUGERENCIAS ************************/
/*******************************************************************************************************/

//En el constructor se cargan los valores de la cookie
BusquedasAnteriores = function(idFormulario, claveSugerencias, listaElementos, listaTextosResumen, listaElementosResumen, dataManager) {

    //Establecemos las variables de entrada
    this.idFormulario = idFormulario;
    this.claveSugerencias = claveSugerencias;
    this.listaElementos = listaElementos;
    this.listaElementosResumen = listaElementosResumen;
    this.listaTextosResumen = listaTextosResumen;
    this.dataManager = dataManager;

    //Cargamos la lista de todas las posibles sugerencias, la lista de textos a mostar 
    //como sugerencias, y la lista de datos con la que se compararan las candidatas
    this.cargarListas();
};


//Establece la lista de todas las sugerencias posibles y la de datos resumen 
//a partir de la lista de datos o sugerencias
BusquedasAnteriores.prototype.cargarListas = function() {

    //Listas de sugerencias
    this.listaSugerencias = new Array();
    this.listaSugeIndices = new Array();

    //Obtenemos los datos de las listas de sugerencias en el formato guardado en la cookie
    this.listaDatos = this.dataManager.getSugerencias(this.claveSugerencias);
    this.listaResumen = new Array();
    this.listaDatosResumen = new Array();

    for (var i = 0; i < this.listaDatos.length; i++) {

        //Lista de textos de resumen y de datos de resumen
        var textosResumen = new Array();
        var datosResumen = new Array();
        for (var j = 0; j < this.listaTextosResumen.length; j++) {

            //Elementos de las listas de textos de resumen y de datos de resumen
            var resumenActual = this.listaTextosResumen[j];
            var datosResumenActual = "";
            var noHayDatos = false;
            for (var k = 0; k < this.listaElementosResumen.length && !noHayDatos; k++) {

                if (resumenActual.indexOf("{" + k + "}") > -1) {

                    //Obtenemos el dato del elemento correspondiente al índice en la
                    //sugerencia pasados por parámetro
                    var datoResumen = this.getDatoResumen(this.listaDatos[i], k);
                    if (datoResumen != "") {
                        resumenActual = resumenActual.replace("{" + k + "}", datoResumen);
                        datosResumenActual += datoResumen;
                    }
                    else {
                        noHayDatos = true;
                    }
                }
            }

            //Solo si ha habido datos los agregamos a la lista
            if (!noHayDatos) {
                textosResumen.push(resumenActual);
                datosResumen.push(datosResumenActual);
            }

        }

        //Agregamos los datos a las listas finales
        this.listaResumen.push(textosResumen.join(", "));
        this.listaDatosResumen.push(datosResumen.join(" "));
    }
};


//Obtiene el dato de una sugerencia correspondiente al elemento de la lista listaElementosResumen
//con índice idxDato
BusquedasAnteriores.prototype.getDatoResumen = function(sugerencia, idxDato) {

    var listaDatosSugerencia = this.dataManager.getListaDatosSugerencia(sugerencia);

    var idxElemento = -1;

    for (var i = 0; i < this.listaElementos || idxElemento == -1; i++) {
        if (this.listaElementos[i] == this.listaElementosResumen[idxDato]) {
            idxElemento = i;
        }
    }

    return (idxElemento != -1) ? listaDatosSugerencia[idxElemento] : "";
};


//Obtiene la lista de coincidencias de los datos de la cookie
BusquedasAnteriores.prototype.obtenerSugerencias = function(texto) {

    //Recargamos las listas por si se hubieran guardado datos nuevos
    this.cargarListas();

    //Búsqueda de candidatos
    for (var i = 0; i < this.listaResumen.length; i++) {

        if (this.listaDatosResumen[i].toUpperCase().indexOf(texto.toUpperCase()) > -1) {
            this.listaSugerencias.push(this.listaResumen[i]);
            this.listaSugeIndices.push(i);
        }
    }

    return this.listaSugerencias;
};




//Carga los valores del índice de la lista de sugerencias en los elementos
BusquedasAnteriores.prototype.pintarSugerencia = function(idxSugerencia) {

    if (idxSugerencia >= 0 && idxSugerencia < this.listaSugeIndices.length) {

        this.cargarElementos(this.listaSugeIndices[idxSugerencia]);
    }
};

//Carga los valores en los elementos del índice de datos que se indica
BusquedasAnteriores.prototype.cargarElementos = function(idxDato) {

    if (this.listaDatos.length > 0) {

        try {

            //Separamos el resultado por el delimitador
            var datosElementos = this.dataManager.getListaDatosSugerencia(this.listaDatos[idxDato]);

            //Recorremos el formulario y asignamos los valores correspondientes a cada elemento
            if (datosElementos.length == this.listaElementos.length) {

                for (var i = 0; i < this.listaElementos.length; i++) {

                    var elemento = document.forms[this.idFormulario].elements[this.listaElementos[i]];

                    if (datosElementos[i].substring(0, 6) == "select") {
                        elemento.options.selectedIndex = datosElementos[i].substring(7, datosElementos[i].length - 1);
                    }
                    else if ((datosElementos[i] == "cbtrue") || (datosElementos[i] == "rbtrue")) {
                        elemento.checked = true;
                    }
                    else if ((datosElementos[i] == "cbfalse") || (datosElementos[i] == "rbfalse")) {
                        elemento.checked = false;
                    }
                    else {
                        elemento.value = (datosElementos[i]) ? datosElementos[i] : "";
                    }
                }
            }

        } catch (e) {
            alert(e.message);
        }

    }

};

//Guarda los datos del formulario en la cookie junto a los anteriores
BusquedasAnteriores.prototype.guardarElementos = function() {

    //Recargamos las listas por si se hubieran guardado datos nuevos
    this.cargarListas();

    var listaDatosElementos = new Array();

    //Recorremos todos los elementos del formulario
    for (var i = 0; i < this.listaElementos.length; i++) {

        var elemento = document.forms[this.idFormulario].elements[this.listaElementos[i]];

        var valorGuardar = "";

        //Dependiendo del tipo, se guarda de una manera y otra
        switch (elemento.type) {
            case "password":
                //No hacemos nada
                break;
            case "checkbox":
                valorGuardar = "cb" + elemento.checked;
                break;
            case "radio":
                valorGuardar = "rb" + elemento.checked;
                break;
            case "select-one":
                valorGuardar = "select" + elemento.options.selectedIndex;
                break;
            default:
                valorGuardar = elemento.value;
        }

        listaDatosElementos.push(valorGuardar);
    }

    var sugerencia = this.dataManager.getStringDatosSugerencia(listaDatosElementos);

    if (!this.estaVacia(sugerencia)) {
        this.dataManager.addSugerencia(this.claveSugerencias, sugerencia);
    }

};


//Comprueba si la sugerencia tiene datos a guardar
BusquedasAnteriores.prototype.estaVacia = function(sugerencia) {
    var contVacio = 0;
    var datosSugerencia = this.dataManager.getListaDatosSugerencia(sugerencia);
    for (var i = 0; i < datosSugerencia.length; i++) {
        if (datosSugerencia[i] == "") {
            contVacio++;
        }

    }

    return (contVacio == datosSugerencia.length) ? true : false;
};



/**********************************************************************************************************/
/******************************************** GESTOR DE COOKIES *******************************************/
/**********************************************************************************************************/

//Constructor de la clase CookieManager
CookieManager = function() { };

//Obtiene el valor de una cookie
CookieManager.prototype.getCookieVal = function(offset) {

    var endstr = document.cookie.indexOf(";", offset);
    if (endstr == -1) { endstr = document.cookie.length; }
    return decodeURIComponent(document.cookie.substring(offset, endstr));
};

//Obtiene una cookie
CookieManager.prototype.getCookie = function(nombre) {

    var arg = nombre + "=";
    var tamArgs = arg.length;
    var numCookies = document.cookie.length;
    var i = 0;

    while (i < numCookies) {

        var j = i + tamArgs;
        if (document.cookie.substring(i, j) == arg) {
            return this.getCookieVal(j);
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) {
            break;
        }
    }

    return null;
};

//Guarda una cookie
CookieManager.prototype.setCookie = function(nombre, valor) {

    var argv = this.setCookie.arguments;
    var argc = this.setCookie.arguments.length;

    var expires = (argc > 2) ? argv[2] : null;
    var path = (argc > 3) ? argv[3] : null;
    var domain = (argc > 4) ? argv[4] : null;
    var secure = (argc > 5) ? argv[5] : false;

    document.cookie = nombre + "=" + encodeURIComponent(valor) +
	    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
	    ((path == null) ? "" : ("; path=" + path)) +
	    ((domain == null) ? "" : ("; domain=" + domain)) +
	    ((secure == true) ? "; secure" : "");

};


/**********************************************************************************************************/
/***************** MANEJADOR DE DATOS PARA SUGERENCIAS GUARDADAS EN COOKIES *******************************/
/**********************************************************************************************************/

SugerenciasDataManager = function(nombreCookie, diasExp, maxSugerencias) {

    //Delimitadores
    this.LIM_NIVEL_1 = "#N1#"; //Grupos
    this.LIM_NIVEL_2 = "#N2#"; //ClaveGrupo
    this.LIM_NIVEL_3 = "#N3#"; //Sugerencias
    this.LIM_NIVEL_4 = "#N4#"; //Datos Sugerencia

    //Máximo número de elementos
    this.maxSugerencias = maxSugerencias;

    //Gestor de cookies
    this.cookieMan = new CookieManager();

    //Configuración del tiempo de validez de la cookie
    this.exp = new Date();
    this.exp.setTime(this.exp.getTime() + (diasExp * 24 * 60 * 60 * 1000));

    //Nombre de la cookie
    this.nombreCookie = nombreCookie;

};

//Obtiene la lista de grupos de sugerencias
SugerenciasDataManager.prototype.GetListaGrupos = function() {

    //Datos de la cookie
    var datosCookie = this.cookieMan.getCookie(this.nombreCookie);

    return (datosCookie != null) ? datosCookie.split(this.LIM_NIVEL_1) : new Array();

};

//Devuelve la lista de sugerencias de un formulario
SugerenciasDataManager.prototype.getSugerencias = function(claveSugerencias) {

    var listaGrupos = this.GetListaGrupos();

    var datosGrupo = "";
    var terminarBucle = false;
    for (var i = 0; i < listaGrupos.length && !terminarBucle; i++) {

        var tempListN2 = listaGrupos[i].split(this.LIM_NIVEL_2);

        if (tempListN2.length == 2 && tempListN2[0] == claveSugerencias) {
            datosGrupo = tempListN2[1];
            terminarBucle = true;
        }
    }
    return (datosGrupo != "") ? datosGrupo.split(this.LIM_NIVEL_3) : new Array();

};

//Devuelve los datos de cada elemento de una sugerencia
SugerenciasDataManager.prototype.getListaDatosSugerencia = function(sugerencia) {

    return sugerencia.split(this.LIM_NIVEL_4);
};

//Devuelve una sugerencia con los datos de la lista
SugerenciasDataManager.prototype.getStringDatosSugerencia = function(listaDatosSugerencia) {

    return listaDatosSugerencia.join(this.LIM_NIVEL_4);
};

//Agrega o modifica los datos de un grupo en la lista y se guarda en la cookie
SugerenciasDataManager.prototype.addSugerencia = function(claveSugerencias, sugerencia) {

    var listaSugerencias = this.getSugerencias(claveSugerencias);

    //Si no existe la sugerencia en la lista, las guardamos
    if (!this.existeSugerencia(listaSugerencias, sugerencia)) {

        listaSugerencias.push(sugerencia.capitalizar());

        var listaGrupos = this.GetListaGrupos();

        //Obtenemos el texto de todas las sugerencias a guardar y formamos el par de nivel 2,
        //correspondiente a un grupo
        var sugerencias = listaSugerencias.slice(-this.maxSugerencias).join(this.LIM_NIVEL_3);
        var grupo = new Array(claveSugerencias, sugerencias).join(this.LIM_NIVEL_2);

        //Recorremos la lista de grupos para ver si habrá que actualizarlo o agregarlo
        //al conjunto
        var grupoActualizado = false;
        for (var i = 0; i < listaGrupos.length && !grupoActualizado; i++) {

            var tempListN2 = listaGrupos[i].split(this.LIM_NIVEL_2);
            if (tempListN2[0] == claveSugerencias) {
                listaGrupos[i] = grupo;
                grupoActualizado = true;
            }
        }

        //Si no se ha actualizado lo agregamos a la lista
        if (!grupoActualizado) {
            listaGrupos.push(grupo);
        }

        //Formamos el valor que guardaremos en la cookie
        var grupos = listaGrupos.join(this.LIM_NIVEL_1);

        //Guardamos la cookie con el tiempo configurado en el constructor
        this.cookieMan.setCookie(this.nombreCookie, grupos, this.exp, "/");
    }
};

//Comprueba si existen los datos pasados por parámetros en la lista de sugerencias
SugerenciasDataManager.prototype.existeSugerencia = function(listaSugerencias, sugerencia) {

    for (var i = 0; i < listaSugerencias.length; i++) {
        if (listaSugerencias[i].toUpperCase() == sugerencia.toUpperCase()) {
            return true;
        }

    }
    return false;
};

//Añade a la clase String una función para capitalizar
String.prototype.capitalizar = function() {
    return this.replace(/\w+/g, function(a) {
        return a.charAt(0).toUpperCase() + a.slice(1).toLowerCase();
    });
};


/**********************************************************************************************************/
/********** DECLARACIÓN DE SugerenciasDataManager PARA LA GESTIÓN DE DATOS DE SUGERENCIAS *****************/
/**********************************************************************************************************/


//Objeto general para todos los controles de sugerencias
var dataManager = new SugerenciasDataManager('ControlSugerencias', 15, 5);/// Inicio Buscador ///


var kec_fix_x = 475;
var kec_fix_y = 278;

//Valores especiales para gastronomia
var kec_fix_gastronomia_x = 475;
var kec_fix_gastronomia_y = 278;

// Variables ajustables per IE
var kec_velocidad = 10; //Milisegundos entre iteraciones
var kec_incremento = 9; //pixeles por iteracion

if (navigator.userAgent.indexOf("Firefox") != -1) {
    //Variables ajustables per Firefox
    kec_velocidad = 25; //Milisegundos entre iteraciones
    kec_incremento = 21; //pixeles por iteracion
}


// Fin variables ajustables
var kec_semaforo = false;
var kec_obert = false;
var kec_veient = 1;
var kec_difIE6 = 0;
var kec_mesInfo = false;
var kec_que_es = 'cross';

if (document.getElementById && document.all && (navigator.appVersion.indexOf("MSIE 6.") >= 0)) {
    kec_difIE6 = 2;
}

function kec_over(quin) {
    if (kec_veient != quin && quin < 7 && quin > 0) {
        document.getElementById('btn_kec_' + quin).src = '/Comunes/Css/imagenes/img_buscador/ico' + quin + 'on.gif';
    }
}

function kec_out(quin) {
    if (kec_veient != quin && quin < 7 && quin > 0) {
        document.getElementById('btn_kec_' + quin).src = '/Comunes/Css/imagenes/img_buscador/ico' + quin + 'off.gif';
    }
}

function kec_openclose(newWidth, newHeight, specificKecContent) {
    if (kec_que_es == 'gastronomia') {
        kec_fix_x = kec_fix_gastronomia_x;
        kec_fix_y = kec_fix_gastronomia_y;
    }
    if (newWidth && newHeight) {
        kec_fix_x = newWidth;
        kec_fix_y = newHeight;
    }
    if (!kec_semaforo) {
        var abrir_kec_info = document.getElementById('abrir_kec_info');
        if (kec_obert) {
            // Tanquem
            kec_dilata(kec_veient, 0);
            if (abrir_kec_info) {
                abrir_kec_info.style.display = 'block';
            }
        } 
        else {
            //Obrim
            if (specificKecContent) {
                kec_veient = specificKecContent;
            }
            document.getElementById('contenido_kec_' + kec_veient).style.clip = "rect(0 0 0 0)";
            document.getElementById('contenido_kec_' + kec_veient).style.marginLeft = '0';
            kec_dilata(0, kec_veient);
            if (abrir_kec_info) {
                abrir_kec_info.style.display = 'none';
            }
        }
        kec_obert = !kec_obert;
    }
}

function kec_clic(quin) {
    if (!kec_semaforo) {
        if (quin != kec_veient) {
            if (kec_mesInfo == false) {
                document.getElementById('contenido_kec_' + kec_veient).style.marginLeft = '-1000';
                if (kec_veient < 7 && kec_veient > 0) {
                    document.getElementById('btn_kec_' + kec_veient).src = '/Comunes/Css/imagenes/img_buscador/ico' + kec_veient + 'off.gif';
                }
                
                document.getElementById('contenido_kec_' + quin).style.marginLeft = '0';
                document.getElementById('contenido_kec_' + quin).style.clip = "rect(0, 1000, 1000, 0)";
                if (quin < 7 && quin > 0) {
                    document.getElementById('btn_kec_' + quin).src = '/Comunes/Css/imagenes/img_buscador/ico' + quin + 'on.gif';
                }
                kec_veient = quin;
            } 
            else {
                kec_dilata(kec_veient, quin);
            }
        }
    }
}

function kec_mesinfo(quin, que) {
    if (!kec_semaforo) {

        kec_semaforo = true;

        if (que == 'des') {
            kec_mesInfo = false;
            var destinoX = kec_fix_x + kec_difIE6;
            
            var destinoY = kec_dimeHeight('contenido_kec_' + quin) + 15 + kec_difIE6 + kec_dimeHeight('avanzado_' + quin);

            document.getElementById('avanzado_' + quin).style.marginLeft = '0';

            document.getElementById('kec_' + quin + '_plegat').style.visibility = 'hidden';

        } 
        else if (que == 'ple') {
            var destinoX = kec_fix_x + kec_difIE6;
            var destinoY = kec_fix_y + kec_difIE6;

        }
        var incrementoX = destinoX - kec_dimeWidth('buscador_kec');
        var incrementoY = destinoY - kec_dimeHeight('buscador_kec');

        iteracions = (Math.abs(incrementoX) + Math.abs(incrementoY)) / (kec_incremento * 2);
        iteracioX = (incrementoX / iteracions);
        iteracioY = (incrementoY / iteracions);

        if (Math.abs(iteracioX) < 2) {
            iteracioX = 0;
            destinoX = kec_dimeWidth('buscador_kec');
        }

        kec_dilata_iteracions(quin, quin, Math.floor(iteracions), kec_dimeWidth('buscador_kec'), kec_dimeHeight('buscador_kec'), iteracioX, iteracioY, destinoX, destinoY, (que == 'des'));
    }
}

function kec_dilata(origen, destino) {

    kec_semaforo = true;

    if (destino != 0) {
        var destinoX = kec_fix_x + kec_difIE6;
        var destinoY = kec_fix_y + kec_difIE6;
    } 
    else {
        var destinoX = 64;
        var destinoY = 30;
    }
    var incrementoX = destinoX - kec_dimeWidth('buscador_kec');
    var incrementoY = destinoY - kec_dimeHeight('buscador_kec');

    if (incrementoX == 0 && incrementoY == 0) {
        //La mida ja es bona
    }
    else {
        //Creixement horitzontal i vertical
        iteracions = (Math.abs(incrementoX) + Math.abs(incrementoY)) / (kec_incremento * 2);
        iteracioX = (incrementoX / iteracions);
        iteracioY = (incrementoY / iteracions);

        if (Math.abs(iteracioX) < 2) {
            iteracioX = 0;
            destinoX = kec_dimeWidth('buscador_kec');
        }
        kec_dilata_iteracions(origen, destino, iteracions, kec_dimeWidth('buscador_kec'), kec_dimeHeight('buscador_kec'), iteracioX, iteracioY, destinoX, destinoY, false);
    }
}

function kec_dilata_iteracions(origen, destino, iteracions, tamanyX, tamanyY, iteracioX, iteracioY, destinoX, destinoY, mesinfo) {
    iteracions = iteracions - 1;
    if (iteracions < 4) {
        iteracions = iteracions + 0.5;
    }
    if (iteracions < 2) {
        iteracions = iteracions + 0.25;
    }

    iteracions = 0; //modificado por santy

    if (iteracions > 0) {
        if (iteracions < 2) {
            tamanyX = tamanyX + (iteracioX / 4);
            tamanyY = tamanyY + (iteracioY / 4);
        }
        else if (iteracions < 4) {
            tamanyX = tamanyX + (iteracioX / 2);
            tamanyY = tamanyY + (iteracioY / 2);
        }
        else {
            tamanyX = tamanyX + iteracioX;
            tamanyY = tamanyY + iteracioY;
        }
    }
    else {
        tamanyX = destinoX;
        tamanyY = destinoY;
    }
    if (iteracioX != 0) {
        document.getElementById('buscador_kec').style.width = tamanyX;
    }
    document.getElementById('buscador_kec').style.height = tamanyY;

    if (origen != 0) {
        document.getElementById('contenido_kec_' + origen).style.clip = "rect(0 " + (tamanyX - kec_difIE6) + " " + (tamanyY - 34 - kec_difIE6) + " 0)";
    }
    else {
        document.getElementById('contenido_kec_' + destino).style.clip = "rect(0 " + (tamanyX - kec_difIE6) + " " + (tamanyY - 34 - kec_difIE6) + " 0)";
    }
    var kec_alcada_botonera = '34';

    if (kec_que_es == 'gastronomia') {
        kec_alcada_botonera = '72';
    }
    document.getElementById('botonera_kec').style.clip = "rect(0 " + (tamanyX - kec_difIE6 - 30) + " " + kec_alcada_botonera + " 0)";

    if (iteracioX != 0) {
        document.getElementById('abrir_cerrar_kec').style.width = tamanyX;
    }

    if (iteracions > 0) {
        cadena = 'kec_dilata_iteracions (' + origen + ', ' + destino + ', ' + iteracions + ', ' + tamanyX + ', ' + tamanyY + ', ' + iteracioX + ', ' + iteracioY + ', ' + destinoX + ', ' + destinoY + ', ' + mesinfo + ')';
        setTimeout(cadena, kec_velocidad);
    }
    else {
        //Ja hem acabat el moviment
        if (origen != 0) {
            document.getElementById('contenido_kec_' + origen).style.clip = "rect(0, 1000, 1000, 0)";
        }
        else {
            document.getElementById('contenido_kec_' + destino).style.clip = "rect(0, 1000, 1000, 0)";
        }

        if (origen == 0) {
            document.getElementById('abrir_cerrar_img_kec').src = '/Comunes/Css/imagenes/img_buscador/cerrar.gif';
        }
        else {
            if (origen < 7 && origen > 0) {
                var eBtn = document.getElementById('btn_kec_' + origen);
                if (eBtn) {
                    eBtn.src = '/Comunes/Css/imagenes/img_buscador/ico' + origen + 'off.gif';
                }
            }

            document.getElementById('contenido_kec_' + origen).style.marginLeft = '-1000';
            if (kec_mesInfo) {
                document.getElementById('avanzado_1').style.marginLeft = '-1000';
                document.getElementById('avanzado_3').style.marginLeft = '-1000';
                document.getElementById('avanzado_4').style.marginLeft = '-1000';

                document.getElementById('kec_1_plegat').style.visibility = 'visible';
                document.getElementById('kec_3_plegat').style.visibility = 'visible';
                document.getElementById('kec_4_plegat').style.visibility = 'visible';
                kec_mesInfo = false;
            }
        }

        if (destino == 0) {
            document.getElementById('abrir_cerrar_img_kec').src = '/Comunes/Css/imagenes/img_buscador/abrir.gif';
        } else {
            document.getElementById('contenido_kec_' + destino).style.marginLeft = '0';
            if (destino < 7 && destino > 0) {
                var eBtn = document.getElementById('btn_kec_' + destino);
                if (eBtn) {
                    eBtn.src = '/Comunes/Css/imagenes/img_buscador/ico' + destino + 'on.gif';
                }
            }
            kec_veient = destino;
        }

        if (mesinfo) {
            if (!kec_mesInfo) {
                kec_mesInfo = true;
            }
            else {
                document.getElementById('avanzado_' + destino).style.marginLeft = '-1000';
                kec_mesInfo = false;
            }
        }
        kec_semaforo = false;
    }
}

function kec_dimeWidth(ide) {
    return document.getElementById(ide).offsetWidth;
}

function kec_dimeHeight(ide) {
    return document.getElementById(ide).offsetHeight;
}

/// Fin Buscador ///

/// Inicio Parametros ///

function obtenerParametro(nombreParametro) {
    var parametro = window.location.search.split(nombreParametro + '=')[1];
    if (parametro != undefined) {
        parametro = parametro.split('&')[0];
    }
    else {
        parametro = '';
    }
    return parametro;
}

/// Fin Parametros ///

// JavaScript Document

// Variables ajustables para IE
var kec2_velocidad = 25; //Milisegundos entre iteraciones
var kec2_iteraciones = 10; //Iteraciones para hacer el movimiento

if (navigator.userAgent.indexOf("Firefox") != -1) {
    //Variables ajustables para Firefox
    kec2_velocidad = 30; //Milisegundos entre iteraciones
    kec2_iteraciones = 10; //Iteraciones para hacer el movimiento
}

//Fin de variables ajustables

var kec2_pest_vist = 1;
var kec2_pest_vist_2 = 1;
var kec2_pest_vist_2_ultim = false;
var kec2_pest_vist_3 = 1;
var kec2_pestGran_vist = 1;
var kec2_sub_sub_menu = 0;

var kec2_memoriza_alCarregar = 0;

function kec2_clica(n) {

    if (kec2_pest_vist != n) {
        //Definimos nuevos estilos sobre la pestanya anterior

        var a = document.getElementById('kec2_pest_' + kec2_pest_vist);
        a.style.borderBottomColor = "#1D3063";
        a.style.backgroundColor = "#1D3063";
        a = document.getElementById('kec2_pest_' + kec2_pest_vist).getElementsByTagName('A');

        if (a != null) {
            for (var i = 0; i < a.length; i++) {
                a[i].style.color = '#FEEFDC';
                a[i].style.fontWeight = 'normal';
            }
        }


        //Definimos nuevos estilos sobre la pestanya actual
        var a2 = document.getElementById('kec2_pest_' + n);
        a2.style.borderBottomColor = "#FEEFDC";
        a2.style.backgroundColor = "#FEEFDC";
        a2 = document.getElementById('kec2_pest_' + n).getElementsByTagName('A');

        if (a2 != null) {
            for (var i2 = 0; i2 < a2.length; i2++) {
                a2[i2].style.color = '#1D3063';
                a2[i2].style.fontWeight = 'bold';
            }
        }

        //Cambiamos el contenido
        document.getElementById('kec2_cont_' + kec2_pest_vist).style.display = "none";
        document.getElementById('kec2_cont_' + n).style.display = "block";

        kec2_pest_vist = n;
    }
}

function kec3_clica(n) {

    if (kec2_pest_vist != n) {
        //Definimos nuevos estilos sobre la pestanya anterior

        var a = document.getElementById('kec2_pest_' + kec2_pest_vist);
        a.style.borderBottomColor = "#1D3063";
        a.style.backgroundColor = "#1D3063";
        a = document.getElementById('kec2_pest_' + kec2_pest_vist).getElementsByTagName('A');

        if (a != null) {
            for (var i = 0; i < a.length; i++) {
                a[i].style.color = '#FEEFDC';
                a[i].style.fontWeight = 'normal';
            }
        }

        var l = document.getElementById('kec2_pest_li_' + kec2_pest_vist);
        l.style.borderBottomWidth = 1;
        l.style.borderBottomColor = "#f99213";
        l.style.backgroundColor = "#1D3063";


        //Definimos nuevos estilos sobre la pestanya actual
        var a2 = document.getElementById('kec2_pest_' + n);
        a2.style.borderBottomColor = "#FEEFDC";
        a2.style.backgroundColor = "#FEEFDC";
        a2 = document.getElementById('kec2_pest_' + n).getElementsByTagName('A');

        if (a2 != null) {
            for (var i2 = 0; i2 < a2.length; i2++) {
                a2[i2].style.color = '#1D3063';
                a2[i2].style.fontWeight = 'bold';
            }
        }

        var l2 = document.getElementById('kec2_pest_li_' + n);
        l2.style.borderBottomWidth = 1;
        l2.style.borderBottomColor = "#FEEFDC";
        l2.style.backgroundColor = "#FEEFDC";

        //Cambiamos el contenido
        document.getElementById('kec2_cont_' + kec2_pest_vist).style.display = "none";
        document.getElementById('kec2_cont_' + n).style.display = "block";

        kec2_pest_vist = n;
    }
}

function kec2_clica_2(n, ultim) {
    if (kec2_pest_vist_2 != n) {

        //Cambiamos la pestanya
        var posaEstil = "on";
        var treuEstil = "";

        if (ultim) {
            posaEstil = "ultim on";
        }
        if (kec2_pest_vist_2_ultim) {
            treuEstil = "ultim";
        }

        document.getElementById('kec2_pest_2_' + kec2_pest_vist_2).className = treuEstil;
        document.getElementById('kec2_pest_2_' + n).className = posaEstil;

        //Cambiamos el contenido
        document.getElementById('kec2_cont_2_' + kec2_pest_vist_2).style.display = "none";
        document.getElementById('kec2_cont_2_' + n).style.display = "block";

        kec2_pest_vist_2 = n;
        kec2_pest_vist_2_ultim = ultim;
    }
}

function kec2_clicaGran(n) {
    if (kec2_pestGran_vist != n) {
        //Cambiamos el contenido
        document.getElementById('kec2_contGran_' + kec2_pestGran_vist).style.display = "none";
        document.getElementById('kec2_contGran_' + n).style.display = "block";

        kec2_pestGran_vist = n;
    }
}

function kec2_clica_3(n) {

    if (kec2_sub_sub_menu != 0) {
        //Estamos viendo un contenido del subsubmenu
        document.getElementById('kec2_cont_3_' + kec2_pest_vist_3 + '_' + kec2_sub_sub_menu).style.display = 'none';
        document.getElementById('kec2_pest_3_' + kec2_pest_vist_3 + '_' + kec2_sub_sub_menu).className = '';
        kec2_sub_sub_menu = 0;
    }

    //Cambiamos la pestanya
    document.getElementById('kec2_pest_3_' + kec2_pest_vist_3).className = "";
    document.getElementById('kec2_pest_3_' + n).className = "on";

    //Cambiamos el contenido
    document.getElementById('kec2_cont_3_' + kec2_pest_vist_3).style.display = "none";
    document.getElementById('kec2_cont_3_' + n).style.display = "block";

    // Si hi havia submenu, locultem
    if (kec2_existeixCapa('kec2_div' + kec2_pest_vist_3) && kec2_pest_vist_3 != n) {
        //Existe sub-sub-menu
        document.getElementById('kec2_pest_3_' + kec2_pest_vist_3).style.height = '17';

        //Iniciamos transicion de repliegue
        kec2_transicion(kec2_pest_vist_3, kec2_dimeHeight('kec2_div' + kec2_pest_vist_3), 0, kec2_dimeHeight('kec2_div' + kec2_pest_vist_3) / kec2_iteraciones * -1, 'kec2_oculta(' + kec2_pest_vist_3 + ')');
    }
    //Si hi ha submenu, el mostrem
    if (kec2_existeixCapa('kec2_div' + n)) {
        //Existe sub-sub-menu
        document.getElementById('kec2_div' + n).style.marginLeft = '-18';

        //Iniciamos transicion de despliegue
        document.getElementById('kec2_div' + n).style.clip = 'rect(0 0 0 0)';
        kec2_transicion(n, 0, kec2_dimeHeight('kec2_div' + n), kec2_dimeHeight('kec2_div' + n) / kec2_iteraciones, '');
    }
    kec2_pest_vist_3 = n;

}


function kec2_clica_4(n, y) {
    if (kec2_sub_sub_menu == 0) {
        //Estabamos viendo un contenido del menú
        document.getElementById('kec2_cont_3_' + n).style.display = 'none';
    } 
    else {
        //Estamos viendo un contenido del subsubmenu
        document.getElementById('kec2_cont_3_' + n + '_' + kec2_sub_sub_menu).style.display = 'none';
        document.getElementById('kec2_pest_3_' + n + '_' + kec2_sub_sub_menu).className = '';
    }

    document.getElementById('kec2_cont_3_' + n + '_' + y).style.display = 'block';
    document.getElementById('kec2_cont_3_' + n + '_' + y).className = 'on';
    document.getElementById('kec2_pest_3_' + n + '_' + y).className = 'on';
    kec2_sub_sub_menu = y;
}

function kec2_existeixCapa(ide) {
    try {
        if (document.getElementById(ide)) {
            var hiHaCapa = true;
        } 
        else {
            var hiHaCapa = false;
        }
    } catch (err_codi) {
        var hiHaCapa = false;
    }
    return hiHaCapa;
}

function kec2_dimeHeight(ide) {
    return document.getElementById(ide).offsetHeight;
}

function kec2_pest_alCarregar() {
    kec2_clica_3(kec2_memoriza_alCarregar);
}

function kec2_pest_inic(n) {
    if (window.addEventListener) {
        window.addEventListener('load', kec2_pest_alCarregar, false);
    } 
    else {
        window.attachEvent('onload', kec2_pest_alCarregar);
    }
    kec2_memoriza_alCarregar = n;
}

function kec2_transicion(opcion, actual, finalVar, paso, alacabar) {
    actual = actual + paso;

    if ((paso > 0 && actual > finalVar) || (paso < 0 && actual < finalVar)) {
        actual = finalVar;
    }

    document.getElementById('kec2_pest_3_' + opcion).style.height = 18 + Math.floor(actual);
    document.getElementById('kec2_div' + opcion).style.clip = "rect(0 1000 " + Math.floor(actual) + " 0)";

    if (actual != finalVar) {
        cadena = 'kec2_transicion(' + opcion + ',' + actual + ',' + finalVar + ',' + paso + ',"' + alacabar + '")';
        setTimeout(cadena, kec2_velocidad);
    }
    else {
        if (alacabar != '') {
            eval(alacabar);
        }
    }
}

function kec2_oculta(que) {
    document.getElementById('kec2_div' + que).style.marginLeft = '-1000';
    document.getElementById('kec2_div' + que).style.clip = 'none';
}



function kec_avanzado_2(obj) {

    /*** kec2_cont_2_1 ***/


    if (document.getElementById("kec_avanzado").style.display == "block") {
        obj.value = "Avanzada +";
        document.getElementById("kec_avanzado").style.display = "none";
        document.getElementById("buscador_principal").style.marginTop = "auto";

    }
    else {
        obj.value = "Normal -";
        document.getElementById("kec_avanzado").style.display = "block";
        document.getElementById("buscador_principal").style.marginTop = 0;

    }
}

//*****************************************************************************************************************************************************************************************************
//*************************     Declaración de namespaces   *******************************************************************************************************************************************
//*****************************************************************************************************************************************************************************************************

if (!GuiaRepsol) var GuiaRepsol = {};
if (!GuiaRepsol.BuscadorCross) GuiaRepsol.BuscadorCross = {};
if (!GuiaRepsol.BuscadorCross.BuscadorRutas) GuiaRepsol.BuscadorCross.BuscadorRutas = {};
if (!GuiaRepsol.BuscadorCross.Callejero) GuiaRepsol.BuscadorCross.Callejero = {};
if (!GuiaRepsol.BuscadorCross.Carreteras) GuiaRepsol.BuscadorCross.Carreteras = {};
if (!GuiaRepsol.BuscadorCross.BuscadorRestaurantes) GuiaRepsol.BuscadorCross.BuscadorRestaurantes = {};
if (!GuiaRepsol.BuscadorCross.BuscadorHoteles) GuiaRepsol.BuscadorCross.BuscadorHoteles = {};
if (!GuiaRepsol.BuscadorCross.BuscadorMunicipios) GuiaRepsol.BuscadorCross.BuscadorMunicipios = {};
if (!GuiaRepsol.BuscadorCross.BuscadorReportajes) GuiaRepsol.BuscadorCross.BuscadorReportajes = {};
if (!GuiaRepsol.BuscadorCross.BuscadorEstaciones) GuiaRepsol.BuscadorCross.BuscadorEstaciones = {};


/*************************************************************************************************************************************
*************************     Declaración de variables   ****************************************************************************
*************************************************************************************************************************************/

/*Indica el tipo de búsqueda entre 'CALLEJERO' y 'RUTA'*/
var tipoBusqueda;
//Indica si la última búsqueda realizada fue un callejero o una ruta
var ultCallejero = false;
var ultRuta = false;

//Ids de control del cross
GuiaRepsol.BuscadorCross.IdElementos = {

    divBC: "buscadorcross_v2", //Div que engloba todo el buscador
    divBCOculto: "bc_minimizado", //Div que se muestra cuando el cross está oculto
    btnBCMinimizar: "bc_minimizarbasico_btn", //Botón de minimzar
    divBCPrincipal: "bc_maximizado", //Div a mostrar cuando el cross está visible
    ulBCBotones: "bc_ul_botones", //Id del ul que contiene los li con los botones
    formBC: "bc_form", //Id del formulario que engloba todos los elementos del cross
    divBCPopUp: "PopUp", //Div con los resultados de búsqueda de localidadedes
    hdBcNoCoincidencias: "bc_hd_no_coincidencias", //Mensaje de no coincidencias
    hdBcIdIdioma: "bc_hd_id_idioma", //Id de idioma

    //Ids de rutas
    divRutas: "bc_der_calcula",
    divRutasAvanzadas: "bc_avanzado_calcula",
    divRutasAvanzadas2: "bc_avanzado_calcula_2",

    //Ids de callejeros
    divCallejeros: "bc_der_callejero",
    divCarreteras: "bc_der_carreteras",

    //Ids de restaurantes
    divRestaurantes: "bc_der_restaurantes",
    divRestaurantesAvanzadas: "bc_avanzado_restaurantes",

    //Ids de hoteles
    divHoteles: "bc_der_hoteles",
    divHotelesAvanzadas: "bc_avanzado_hoteles",

    //Ids de municipios
    divMunicipios: "bc_der_municipios",

    //Ids de reportajes
    divReportajes: "bc_der_reportajes",

    //Ids de estaciones de servicio
    divEstaciones: "bc_der_estaciones",
    divEstacionesAvanzadas: "bc_avanzado_estaciones"
};

//Ids de los elementos del formulario de búsqueda de rutas.
GuiaRepsol.BuscadorCross.BuscadorRutas.IdElementos = {

    //Ids origen
    cboPaisOr: "bc_cbo_pais_or",
    txtLocalidadOr: "bc_txt_localidad_or",
    txtDireccionOr: "bc_txt_direccion_or",
    txtNumeroOr: "bc_txt_numero_or",

    //Ids destino
    cboPaisDes: "bc_cbo_pais_des",
    txtLocalidadDes: "bc_txt_localidad_des",
    txtDireccionDes: "bc_txt_direccion_des",
    txtNumeroDes: "bc_txt_numero_des",

    //Ids punto de paso 1
    cboPaisPaso1: "bc_cbo_pais_paso1",
    txtLocalidadPaso1: "bc_txt_localidad_paso1",
    txtDireccionPaso1: "bc_txt_direccion_paso1",
    txtNumeroPaso1: "bc_txt_numero_paso1",

    //Ids punto de paso 2
    cboPaisPaso2: "bc_cbo_pais_paso2",
    txtLocalidadPaso2: "bc_txt_localidad_paso2",
    txtDireccionPaso2: "bc_txt_direccion_paso2",
    txtNumeroPaso2: "bc_txt_numero_paso2",

    //Opciones de ruta
    cboPrevisionTiempo: "bc_cbo_prevision_tiempo",
    cboTipoVehiculo: "bc_cbo_tipo_vehiculo",
    chkEvitarIncidencias: "bc_chk_evitar_incidencias",
    nameOpcionesRuta: "bc_name_opciones_ruta",
    chkRutaRapida: "bc_chk_ruta_rapida",
    chkRutaCorta: "bc_chk_ruta_corta",
    chkEvitarPeajes: "bc_chk_evitar_peajes",
    txtConsumoVolumen: "bc_txt_ConV13",
    txtConsumoPrecio: "bc_txt_ConP13",

    //Botones
    btnBuscar: "bc_btn_rutas",
    btnBuscar2: "bc_btn_rutas2",
    btnAvanzadas: "bc_btn_configuracion_rutas",

    //Contenedores 
    hdContenedorUnaCoincidenciaRutas: "bc_hd_contenedor_una_coincidencia_rutas",
    hdContenedorCoincidenciasRutas: "bc_hd_contenedor_coincidencias_rutas"
};

//Ids de los elementos del formulario de búsqueda de calles.
GuiaRepsol.BuscadorCross.Callejero.IdElementos = {

    //Datos de búsqueda
    cboPaisCallejeros: "bc_cbo_pais_callejeros",
    txtLocalidadCallejeros: "bc_txt_localidad_callejeros",
    txtCalleCallejeros: "bc_txt_calle_callejeros",
    txtNumeroCallejeros: "bc_txt_numero_callejeros",
    txtCPCallejeros: "bc_txt_cp_callejeros",

    //Ids de callejeros
    divCallejeros: "bc_der_callejero",

    // Ids de Carreteras
    divCarreteras: "bc_der_carreteras",

    //Contendor de coincidencias
    hdContenedorCoincidenciasCallejero: "bc_hd_contenedor_coincidencias_callejero"
};

//Ids de los elementos del formulario de búsqueda de calles.
GuiaRepsol.BuscadorCross.Carreteras.IdElementos = {

    //Datos de búsqueda
    cboPaisCarreteras: "bc_cbo_pais_carreteras",
    txtCarreteraCarreteras: "bc_txt_carretera_carreteras",
    txtPkCarreteras: "bc_txt_pk_carreteras",

    // Ids de Carreteras
    divCarreteras: "bc_der_carreteras",

    //Contendor de coincidencias
    hdContenedorCoincidenciasCallejero: "bc_hd_contenedor_coincidencias_carreteras"
};



//Ids de los elementos del formulario de búsqueda de restaurantes.
GuiaRepsol.BuscadorCross.BuscadorRestaurantes.IdElementos = {

    //Búsqueda por nombre del restaurante
    txtNombreRestaurante: "bc_txt_nombre_restaurante",

    //Búsqueda por posición
    cboPaisRestaurante: "bc_cbo_pais_restaurante",
    txtLocalidadRestaurante: "bc_txt_localidad_restaurante",
    txtDireccionRestaurante: "bc_txt_direccion_restaurante",
    txtNumeroRestaurante: "bc_txt_numero_restaurante",

    //Opciones de ruta
    cboCategoriaRestaurante: "bc_cbo_categoria_restaurante",
    cboPrecioRestaurante: "bc_cbo_precio_restaurante",
    cboTipoCocina: "bc_cbo_tipo_cocina",
    chkRestaurantesReco: "bc_chk_restaurantes_reco",
    nameServiciosRestaurantes: "bc_name_servicios_restaurantes",

    //Botones
    btnBuscar: "bc_btn_restaurantes",
    btnBuscar2: "bc_btn_restaurantes2",
    btnAvanzadas: "bc_btn_configuracion_restaurantes",

    //Datos compartidos con la página de destino
    hdGuidCRes: "bc_hd_guidc_res",
    hdCoordXRes: "bc_hd_coordx_res",
    hdCoordYRes: "bc_hd_coordy_res",

    //Texto para alert
    hdAlertRes: "bc_hd_alert_res"
};


//Ids de los elementos del formulario de búsqueda de hoteles.
GuiaRepsol.BuscadorCross.BuscadorHoteles.IdElementos = {

    //Búsqueda por nombre de hotel
    txtNombreHotel: "bc_txt_nombre_hotel",

    //Búsqueda por posición
    cboPaisHotel: "bc_cbo_pais_hotel",
    txtLocalidadHotel: "bc_txt_localidad_hotel",
    txtDireccionHotel: "bc_txt_direccion_hotel",
    txtNumeroHotel: "bc_txt_numero_hotel",

    //Opciones de búsqueda
    cboCategoriaHotel: "bc_cbo_categoria_hotel",
    cboPrecioHotel: "bc_cbo_precio_hotel",
    nameServiciosHoteles: "bc_name_servicios_hoteles",

    //Botones
    btnBuscar: "bc_btn_hoteles",
    btnBuscar2: "bc_btn_hoteles2",
    btnAvanzadas: "bc_btn_configuracion_hoteles",

    //Datos compartidos con la página de destino
    hdGuidCHot: "bc_hd_guidc_hot",
    hdCoordXHot: "bc_hd_coordx_hot",
    hdCoordYHot: "bc_hd_coordy_hot",

    //Texto para el alert
    hdAlertHot: "bc_hd_alert_hot"

};

//Ids de los elementos del formulario de búsqueda de municipios.
GuiaRepsol.BuscadorCross.BuscadorMunicipios.IdElementos = {

    //Búsqueda de municipios por nombre
    txtNombreMun: "bc_txt_nombre_mun"
};

//Ids de los elementos del formulario de búsqueda de reportajes.
GuiaRepsol.BuscadorCross.BuscadorReportajes.IdElementos = {

    //Localización de reportajes
    cboPaisReportajes: "bc_cbo_pais_reportajes",
    cboComunidadesReportajes: "bc_cbo_comunidades_reportajes",
    cboProvinciasReportajes: "bc_cbo_provincias_reportajes",

    //Temática
    nameTelematica: "bc_name_tematica",
    chkGastronomiaReportajes: "bc_chk_gastronomia_reportajes",
    chkTurismoReportajes: "bc_chk_turismo_reportajes",
    chkDenominacionReportajes: "bc_chk_denominacion_reportajes",

    //Características especiales
    nameCaracteristicas: "bc_name_caracteristicas",
    chkCulturalReportajes: "bc_chk_cultural_reportajes",
    chkDeportivoReportajes: "bc_chk_deportivo_reportajes",
    chkFiestasReportajes: "bc_chk_fiestas_reportajes",
    chkNaturalezaReportajes: "bc_chk_naturaleza_reportajes",
    chkOtrosReportajes: "bc_chk_otros_reportajes",
    chkRuralReportajes: "bc_chk_rural_reportajes"
};

//Ids de los elementos del formulario de búsqueda de estaciones de servicio.
GuiaRepsol.BuscadorCross.BuscadorEstaciones.IdElementos = {

    //Datos de búsqueda
    hdBcIdIdioma: "bc_hd_id_idioma", //Id de idioma
    txtLocalidadEstaciones: "bc_txt_localidad_estaciones",
    txtCalleEstaciones: "bc_txt_calle_estaciones",
    txtNumeroEstaciones: "bc_txt_numero_estaciones"
};



//Datos para los contadores
GuiaRepsol.BuscadorCross.urlSiteStat = "http://es.sitestat.com/repsolypf/guiacampsa/s?";
GuiaRepsol.BuscadorCross.prefijoContador = "gr";
GuiaRepsol.BuscadorCross.codigoContador = "cross";
GuiaRepsol.BuscadorCross.arrContadores = new Array("ruta", "callejero", "restaurante", "hotel", "municipio", "reportaje");

//Variables para la resolucion de las localidades
GuiaRepsol.BuscadorCross.objSelectOrigen = null;
GuiaRepsol.BuscadorCross.objSelectCallejero = null;
GuiaRepsol.BuscadorCross.candidata = null;

//Variables de estado del buscador
GuiaRepsol.BuscadorCross.fichaActual = 1;


//Array con los ids de los divs
GuiaRepsol.BuscadorCross.lstIdFichas = new Array(
    GuiaRepsol.BuscadorCross.IdElementos.divRutas,
    GuiaRepsol.BuscadorCross.IdElementos.divCallejeros,
    GuiaRepsol.BuscadorCross.IdElementos.divRestaurantes,
    GuiaRepsol.BuscadorCross.IdElementos.divHoteles,
    GuiaRepsol.BuscadorCross.IdElementos.divMunicipios,
    GuiaRepsol.BuscadorCross.IdElementos.divReportajes,
    GuiaRepsol.BuscadorCross.IdElementos.divEstaciones
);

//Constructor del objeto buscador. Permitirá definir callbacks de apertura y cierre
GuiaRepsol.BuscadorCross.Buscador = function() {

    try {

        this.isOpened = false;

        //Abre el cross
        this.callBackOpen = null;
        this.open = function() {

            try {

                //Si no está cerrado, lo abrimos
                if (!this.isOpened) {

                    //Si se ha definido un callback de apertura, lo lanzamos
                    if (this.callBackOpen != null && typeof (this.callBackOpen) == "function") {
                        this.callBackOpen();
                    }

                    hideElement(GuiaRepsol.BuscadorCross.IdElementos.divBCOculto);
                    showElement(GuiaRepsol.BuscadorCross.IdElementos.divBCPrincipal);

                    //Si corresponde se despliegan las opciones avanzadas
                    GuiaRepsol.BuscadorCross.desplegarAvanzadasConDatos();

                    this.isOpened = true;
                }
            } catch (ex) {
                throw ex;
            }

        };

        //Cierra el cross
        this.callBackClose = null;
        this.close = function() {

            try {


                //Si está abierto lo cerramos
                if (this.isOpened) {

                    //Si se ha definido un callback de cierre, lo lanzamos
                    if (this.callBackClose != null && typeof (this.callBackClose) == "function") {
                        this.callBackClose();
                    }

                    hideElement(GuiaRepsol.BuscadorCross.IdElementos.divBCPrincipal);
                    showElement(GuiaRepsol.BuscadorCross.IdElementos.divBCOculto);

                    this.isOpened = false;
                }
            } catch (ex) {
                throw ex;
            }

        };

        //Abre si está cerrado y viceversa
        this.openclose = function() {

            if (this.isOpened) {
                //Ocultamos el cross
                this.close();
            }
            else {
                //Mostramos el buscador
                this.open();
            }
        };

    } catch (ex) {
        manageException(ex);
    }

};


GuiaRepsol.BuscadorCross.objBuscador = new GuiaRepsol.BuscadorCross.Buscador();

/******************************************************************************************************************************
*************************     Metodos de Manejo del buscador    **************************************************************
******************************************************************************************************************************/

//Muestra u oculta el buscador cross dependiendo de si está o no desplegado
GuiaRepsol.BuscadorCross.verOcultar = function() {

    try {

        this.objBuscador.openclose();

    } catch (ex) {
        manageException(ex);
    }

};

//Muestra el buscador cross
GuiaRepsol.BuscadorCross.abrirBuscador = function() {

    try {

        this.objBuscador.open();

    } catch (ex) {
        manageException(ex);
    }

};

//Oculta el buscador cross
GuiaRepsol.BuscadorCross.cerrarBuscador = function() {

    try {

        this.objBuscador.close();

    } catch (ex) {
        manageException(ex);
    }

};

//Indica si el cross está abierto o cerrado
GuiaRepsol.BuscadorCross.isAbierto = function() {
    try {
        return this.objBuscador.isOpened;
    }
    catch (ex) {
        manageException(ex);
    }
};

//Establece la pestaña de busqueda que se le pasa por parametro
GuiaRepsol.BuscadorCross.setFicha = function(buscador) {

    try {

        //Solo si la ficha actual es distinta a la que se quiere mostrar
        if (buscador != this.fichaActual) {

            //Si el buscador entra en el rango válido, recorremos la lista para mostrar y ocultar
            //los divs correspondientes
            if (buscador > 0 && buscador <= this.lstIdFichas.length) {

                var lstBotones = $(this.IdElementos.ulBCBotones).getElementsByTagName("LI");

                for (var i = 0; i < this.lstIdFichas.length; i++) {

                    if (buscador == i + 1) {

                        //Mostramos el div de la pestaña
                        showElement(this.lstIdFichas[i]);

                        //Establecemos el class de seleccionado
                        lstBotones[i].className = "on";

                        this.fichaActual = buscador;

                        //Si corresponde desplegamos las avanzadas
                        this.desplegarAvanzadasConDatos();

                    } else {

                        //Ocultamos el div
                        hideElement(this.lstIdFichas[i]);

                        //Establecemos el class de no seleccionado
                        lstBotones[i].className = "";

                        //Si están desplegadas y la pestaña tiene avanzadas, las ocultamos
                        this.ocultarAvanzadas(i + 1);

                    }
                }
            }
        }

    } catch (ex) {
        manageException(ex);
    }

};

//Abre el cross si es necesario y muestra la ficha del buscador indicado por parámetro. ¡Atención!: No utilizar
//esta función si se ha defido un callback de apertura para mostrar una pestaña, pues entraría en un bucle infinito
GuiaRepsol.BuscadorCross.mostrarFicha = function(buscador) {

    try {

        this.abrirBuscador();
        this.setFicha(buscador);

    } catch (ex) {
        manageException(ex);
    }

};

//Si una pestaña del cross tiene opciones avanzadas, entonces se comprueba si hay datos en ellas,
//si es así se despliega automáticamente
GuiaRepsol.BuscadorCross.desplegarAvanzadasConDatos = function() {

    try {
        //Solo si hay datos avanzados se despliega esta parte
        switch (this.fichaActual) {
            case 1:
                if (this.isHayDatos(this.IdElementos.divRutasAvanzadas)) {
                    this.mostrarAvanzadas(this.fichaActual);
                }
                break;
            case 3:
                if (this.isHayDatos(this.IdElementos.divRestaurantesAvanzadas)) {
                    this.mostrarAvanzadas(this.fichaActual);
                }
                break;
            case 4:
                if (this.isHayDatos(this.IdElementos.divHotelesAvanzadas)) {
                    this.mostrarAvanzadas(this.fichaActual);
                }
                break;
            default:
                break;
        }

    } catch (ex) {
        manageException(ex);
    }

};


//Comprueba si hay datos introducidos por el usuario en los inputs del div pasado por parámetro
GuiaRepsol.BuscadorCross.isHayDatos = function(idDiv) {

    try {

        //Obtenemos los inputs que contine el div
        var elementos = $(idDiv).getElementsByTagName("INPUT");

        //Recorremos los elementos, y si están modificados devolvemos true
        for (var i = 0; i < elementos.length; i++) {
            var hayDatos = false;
            switch (elementos[i].type) {
                case "select-one":
                    //Lo ignoramos
                    break;
                case "button":
                    //Lo ignoramos
                    break;
                case "hidden":
                    //Lo ignoramos
                    break;
                case "checkbox":
                    if (elementos[i].checked) {
                        return true;
                    }
                    break;
                case "radio":
                    if (elementos[i].checked) {
                        return true;
                    }
                    break;
                default:
                    if (elementos[i].value != "") {
                        return true;
                    }
            }
        }
        return false;
    }
    catch (ex) {
        manageException(ex);
    }

};


//Muestra el desplegable de avanzadas del número de buscador pasado por parámetro
GuiaRepsol.BuscadorCross.mostrarAvanzadas = function(buscador) {

    try {

        //Dependiendo del buscador mostramos un div de avanzadas u otro
        switch (buscador) {

            case 1:
                showElement(this.IdElementos.divRutasAvanzadas);
                if (this.fichaActual == buscador) {
                    $(this.IdElementos.btnBCMinimizar).style.visibility = "hidden";
                    $(GuiaRepsol.BuscadorCross.BuscadorRutas.IdElementos.btnBuscar).style.visibility = "hidden";
                    $(GuiaRepsol.BuscadorCross.BuscadorRutas.IdElementos.btnAvanzadas).style.visibility = "hidden";
                }
                break;

            case 3:
                showElement(this.IdElementos.divRestaurantesAvanzadas);
                if (this.fichaActual == buscador) {
                    $(this.IdElementos.btnBCMinimizar).style.visibility = "hidden";
                    $(GuiaRepsol.BuscadorCross.BuscadorRestaurantes.IdElementos.btnBuscar).style.visibility = "hidden";
                    $(GuiaRepsol.BuscadorCross.BuscadorRestaurantes.IdElementos.btnAvanzadas).style.visibility = "hidden";
                }
                break;

            case 4:
                showElement(this.IdElementos.divHotelesAvanzadas);
                if (this.fichaActual == buscador) {
                    $(this.IdElementos.btnBCMinimizar).style.visibility = "hidden";
                    $(GuiaRepsol.BuscadorCross.BuscadorHoteles.IdElementos.btnBuscar).style.visibility = "hidden";
                    $(GuiaRepsol.BuscadorCross.BuscadorHoteles.IdElementos.btnAvanzadas).style.visibility = "hidden";
                }
                break;
            case 7:
                showElement(this.IdElementos.divEstacionesAvanzadas);
                if (this.fichaActual == buscador) {
                    $(this.IdElementos.btnBCMinimizar).style.visibility = "hidden";
                    $(GuiaRepsol.BuscadorCross.BuscadorEstaciones.IdElementos.btnBuscar).style.visibility = "hidden";
                    $(GuiaRepsol.BuscadorCross.BuscadorEstaciones.IdElementos.btnAvanzadas).style.visibility = "hidden";
                }
                break;
            default:
                break;
        }

    } catch (ex) {
        manageException(ex);
    }
};

//Muestra el desplegable de avanzadas del número de buscador pasado por parámetro
GuiaRepsol.BuscadorCross.ocultarAvanzadas = function(buscador) {

    try {

        hideElement(this.IdElementos.divCarreteras);
        //Dependiendo del buscador ocultamos un div de avanzadas u otro
        switch (buscador) {

            case 1:
                hideElement(this.IdElementos.divRutasAvanzadas);
                if (this.fichaActual == buscador) {
                    $(this.IdElementos.btnBCMinimizar).style.visibility = "visible";
                    $(GuiaRepsol.BuscadorCross.BuscadorRutas.IdElementos.btnBuscar).style.visibility = "visible";
                    $(GuiaRepsol.BuscadorCross.BuscadorRutas.IdElementos.btnAvanzadas).style.visibility = "visible";
                }
                break;

            case 3:
                hideElement(this.IdElementos.divRestaurantesAvanzadas);
                if (this.fichaActual == buscador) {
                    $(this.IdElementos.btnBCMinimizar).style.visibility = "visible";
                    $(GuiaRepsol.BuscadorCross.BuscadorRestaurantes.IdElementos.btnBuscar).style.visibility = "visible";
                    $(GuiaRepsol.BuscadorCross.BuscadorRestaurantes.IdElementos.btnAvanzadas).style.visibility = "visible";
                }
                break;

            case 4:
                hideElement(this.IdElementos.divHotelesAvanzadas);
                if (this.fichaActual == buscador) {
                    $(this.IdElementos.btnBCMinimizar).style.visibility = "visible";
                    $(GuiaRepsol.BuscadorCross.BuscadorHoteles.IdElementos.btnBuscar).style.visibility = "visible";
                    $(GuiaRepsol.BuscadorCross.BuscadorHoteles.IdElementos.btnAvanzadas).style.visibility = "visible";
                }
                break;

            case 7:
                hideElement(this.IdElementos.divEstacionesAvanzadas);
                if (this.fichaActual == buscador) {
                    $(this.IdElementos.btnBCMinimizar).style.visibility = "visible";
                    $(GuiaRepsol.BuscadorCross.BuscadorEstaciones.IdElementos.btnBuscar).style.visibility = "visible";
                    $(GuiaRepsol.BuscadorCross.BuscadorEstaciones.IdElementos.btnAvanzadas).style.visibility = "visible";
                }
                break;
            default:
                break;
        }

    } catch (ex) {
        manageException(ex);
    }
};

//Vacía todos los campos de la pestaña del buscador de rutas
GuiaRepsol.BuscadorCross.BuscadorRutas.VaciaPestaña = function() {
    //Ids origen
    $(this.IdElementos.cboPaisOr).value = "ESP";
    $(this.IdElementos.txtLocalidadOr).value = "";
    $(this.IdElementos.txtDireccionOr).value = "";
    $(this.IdElementos.txtNumeroOr).value = "";

    //Ids destino
    $(this.IdElementos.cboPaisDes).value = "ESP";
    $(this.IdElementos.txtLocalidadDes).value = "";
    $(this.IdElementos.txtDireccionDes).value = "";
    $(this.IdElementos.txtNumeroDes).value = "";

    //Ids punto de paso 1
    $(this.IdElementos.cboPaisPaso1).value = "ESP";
    $(this.IdElementos.txtLocalidadPaso1).value = "";
    $(this.IdElementos.txtDireccionPaso1).value = "";
    $(this.IdElementos.txtNumeroPaso1).value = "";

    //Ids punto de paso 2
    $(this.IdElementos.cboPaisPaso2).value = "ESP";
    $(this.IdElementos.txtLocalidadPaso2).value = "";
    $(this.IdElementos.txtDireccionPaso2).value = "";
    $(this.IdElementos.txtNumeroPaso2).value = "";

    //Opciones de ruta
    $(this.IdElementos.cboPrevisionTiempo).value = "1";
    $(this.IdElementos.cboPrevisionTiempo).value = "1";
    $(this.IdElementos.cboTipoVehiculo).value = "1";
    $(this.IdElementos.chkEvitarIncidencias).checked = "";
    document.getElementsByName(GuiaRepsol.BuscadorCross.BuscadorRutas.IdElementos.nameOpcionesRuta)[0].checked = "checked";
    $(this.IdElementos.chkRutaRapida).checked = "checked";
    $(this.IdElementos.chkRutaCorta).checked = "";
    $(this.IdElementos.chkEvitarPeajes).checked = "";
    $(this.IdElementos.txtConsumoVolumen).value = "";
    $(this.IdElementos.txtConsumoPrecio).value = "";
};

//Vacía todos los campos de la pestaña del callejero
GuiaRepsol.BuscadorCross.Callejero.VaciaPestaña = function() {
    $(this.IdElementos.cboPaisCallejeros).value = "ESP";
    $(this.IdElementos.txtLocalidadCallejeros).value = "";
    $(this.IdElementos.txtCalleCallejeros).value = "";
    $(this.IdElementos.txtNumeroCallejeros).value = "";
    $(this.IdElementos.txtCPCallejeros).value = "";
};



/*************************************************************************************************************
**********************************   Funciones Comunes   ****************************************************
*************************************************************************************************************/

//Devuelve el objeto del DOM con id pasado por parámetro
if (!$) var $ = function(id) {
    return (document.getElementById) ? document.getElementById(id) : (document.all) ? document.all[id] : null;
};

//Muestra un elemento estableciendo la propiedad css display a block
if (!showElement) var showElement = function(id) {
    if (!isNullOrUndefined($(id)))
        $(id).style.display = "block";
};

//Oculta un elemento estableciendo la propiedad css display a none
if (!hideElement) var hideElement = function(id) {
    if (!isNullOrUndefined($(id)))
        $(id).style.display = "none";
};

//Si el modo debug está activado lanza un alert con información de la excepción
if (!isDebug) var isDebug = true;
if (!manageException) var manageException = function(ex) {

    if (isDebug) {
        alert(ex.name + ":\n\t" + ex.message);
    }

};

//Cancela la propagación del evento recibido por parámetro
if (!cancelEvent) var cancelEvent = function(objEvento) {

    if (objEvento.stopPropagation) {
        objEvento.stopPropagation();
    }

    if (objEvento.preventDefault) {
        objEvento.preventDefault();
    }

    objEvento.cancelBubble = true;
    objEvento.cancel = true;
    objEvento.returnValue = false;

    return false;
};

//Función left trim para String
String.prototype.lTrim = function() {
    return this.replace(/^\s\s*/, "");
};

//Función right trim para String
String.prototype.rTrim = function() {
    return this.replace(/\s\s*$/, "");
};

//Función trim para String
String.prototype.trim = function() {
    return this.lTrim().rTrim();
};

//Hace un trim a un string y lo pone en minúsculas
String.prototype.trimAndLowerCase = function() {
    return this.trim().toLowerCase();
};

//Devuelve el texto del idioma pasado por parámetro. Si no lo encuentra devuelve el de por defecto, es_es
GuiaRepsol.BuscadorCross.getCultura = function() {

    try {

        switch ($(this.IdElementos.hdBcIdIdioma).value) {
            case "1":
                return "es_es";
                break;
            case "2":
                return "es_en";
                break;
            case "7":
                return "es_gl";
                break;
            case "8":
                return "es_eu";
                break;
            case "9":
                return "es_ca";
                break;
            default:
                return "es_es";
                break;
        }

    }
    catch (ex) {
        manageException(ex);
    }

};

//Si se pulsa la tecla enter se cancela la propagación del evento
GuiaRepsol.BuscadorCross.cancelarEnter = function(objEvento) {

    try {

        objEvento = objEvento ? objEvento : window.event;
        var tecla = (document.all) ? objEvento.keyCode : objEvento.which;
        if (tecla == 13) {
            cancelEvent(objEvento);
        }
        else {
            return true;
        }
    }
    catch (ex) {
        manageException(ex);
    }
};

//Cuenta un click sobre un botón (cambio de pestaña)
GuiaRepsol.BuscadorCross.countClick = function(objReferer, numPestana, tipo) {

    try {

        var nombreContador = this.prefijoContador;

        switch (tipo.toUpperCase()) {

            case "FICHA":
                nombreContador += "."
                    + this.getCultura()
                    + "."
                    + this.codigoContador
                    + "."
                    + this.arrContadores[numPestana - 1];
                break;
            case "BUSCAR":
                nombreContador += "."
                    + this.getCultura()
                    + "."
                    + this.codigoContador
                    + "."
                    + this.arrContadores[numPestana - 1]
                    + ".buscar";
                break;
            default:
                break;
        }

        GuiaRepsol.Contadores.ns_onclick(objReferer, "", nombreContador, "clickin");
    }
    catch (ex) {
        manageException(ex);
    }
};

//*****************************************************************************************************************************************************************************************************
//*************************     Metodos de Busqueda     ***********************************************************************************************************************************************
//*****************************************************************************************************************************************************************************************************

//Si se pulsa la tecla enter lanza la búsqueda correspondiente
GuiaRepsol.BuscadorCross.tramitarBusqueda = function(e) {

    try {

        e = e ? e : window.event;
        var tecla = (document.all) ? e.keyCode : e.which;

        if (tecla == 13) {

            //Dependiendo de la ficha actual se tramita de manera distinta
            switch (this.fichaActual) {
                case 1:
                    this.BuscadorRutas.ResolverItinerario();
                    break;
                case 2:
                    this.Callejero.ResolverCallejero();
                    break;
                case 3:
                    this.BuscadorRestaurantes.buscarRestaurante();
                    break;
                case 4:
                    this.BuscadorHoteles.buscarHotel();
                    break;
                case 5:
                    this.BuscadorMunicipios.buscarMunicipio();
                    break;
                case 6:
                    this.BuscadorReportajes.buscarReportaje();
                    break;
                default:
                    return true;
            }
            GuiaRepsol.BuscadorCross.countClick(this, this.fichaActual, 'BUSCAR');

            return false;
        }
    } catch (ex) {
        manageException(ex);
    }
};

//Método para buscar restaurantes
GuiaRepsol.BuscadorCross.BuscadorRestaurantes.buscarRestaurante = function() {

    try {

        //Recogemos los Datos de la busqueda
        var Nombre = encodeURIComponent($(this.IdElementos.txtNombreRestaurante).value.trim());
        var Pais = $(this.IdElementos.cboPaisRestaurante).value;
        var Localidad = encodeURIComponent($(this.IdElementos.txtLocalidadRestaurante).value);
        var Direccion = encodeURIComponent($(this.IdElementos.txtDireccionRestaurante).value);
        var Numero = $(this.IdElementos.txtNumeroRestaurante).value;
        var Categoria = $(this.IdElementos.cboCategoriaRestaurante).value;
        var Precio = $(this.IdElementos.cboPrecioRestaurante).value;
        var TipoCocina = $(this.IdElementos.cboTipoCocina).value;
        var SubTipoCocina = "";
        var RestauranteReco = $(this.IdElementos.chkRestaurantesReco).checked;
        var guidC = $(this.IdElementos.hdGuidCRes).value;
        var CP = "";
        var Servicios = document.getElementsByName(this.IdElementos.nameServiciosRestaurantes);
        var idServicios = "";
        for (var cont = 0; cont < Servicios.length; cont++) {
            if (Servicios.item(cont).checked == true) {
                idServicios += Servicios.item(cont).value + ",";
            }
        }

        //Comprobamos si estamos ya en la pagina de Restaurantes para navegar o sólo recargar datos con la nueva busqueda
        if (window.location.toString().toLowerCase().lastIndexOf("listadorestaurantes.aspx") != -1) {

            //Comprobamos si vamos a realizar la busqueda por nombre o por posición (localidad).
            if (Nombre != "") {
                if (Localidad == "") {
                    //Realizamos la consulta y cacheamos los resultados si los hubiera.
                    var Resultado = grAjax.getUrl("/Modulos/Restaurantes/ocultoResolverQuery.aspx"
                    + "?nombre=" + Nombre
                    + "&cordX=0&cordY=0"
                    + "&categoria=" + Categoria
                    + "&precio=" + Precio
                    + "&servicios=" + idServicios
                    + "&TipoCocina=" + TipoCocina
                    + "&SubTipoCocina=" + SubTipoCocina
                    + "&RestauranteReco=" + RestauranteReco);
                    //Comprobamos que existen resultados de la busqueda para navegar o no.
                    if (Resultado == 0) {
                        GuiaRepsol.BuscadorCross.mostrarNoResultados();
                    }
                    // Si sólo hay un restaurante, dirigimos directamente a la ficha
                    else if (Resultado.indexOf("Id_resturante") > -1 && Resultado.split("=")[1] != null) {
                        window.location = "/Gastronomia/Restaurantes/FichaRestaurante.aspx?Guia=1&IdRestaurante=" + Resultado.split("=")[1];
                    } else {
                        //Recargamos los datos de la nueva busqueda (sin navegacion).
                        $("guid_C").value = "||" + Resultado.replace("#", "_") + "||";
                        $("nombre").value = "||" + Nombre + "||";
                        $("cord_X").value = "||0||";
                        $("cord_Y").value = "||0||";

                        //Si esta abierto, lo cerramos
                        GuiaRepsol.BuscadorCross.cerrarBuscador();

                        iniciar();
                    }
                }
                else {
                    //Mostramos la capa con las opciones de resolucion de la localidad.
                    var Resultado = GuiaRepsol.BuscadorCross.buscarLocalidad(Pais, Localidad, Direccion, Numero, "");

                    GuiaRepsol.BuscadorCross.mostrarResultados(Resultado);

                    //Guardamos la búsqueda para más adelante
                    if (Resultado != null && Resultado.Count > 0) {
                        busquedasRe.guardarElementos();
                    }
                }
            }
            //En caso de busqueda por posición (localidad).
            else if (Localidad != "") {
                //Mostramos la capa con las opciones de resolucion de la localidad.
                var Resultado = GuiaRepsol.BuscadorCross.buscarLocalidad(Pais, Localidad, Direccion, Numero, "");

                GuiaRepsol.BuscadorCross.mostrarResultados(Resultado);

                //Guardamos la búsqueda para más adelante
                if (Resultado != null && Resultado.Count > 0) {
                    busquedasRe.guardarElementos();
                }
            }
            //Enumerator caso de no haber rellenado nungún parametro de busqueda mostramos una alerta
            else {
                alert($(this.IdElementos.hdAlertRes).value);
            }
        }
        //En caso de estar en una pagina externa a Restaurantes.
        else {
            //Comprobamos si vamos a realizar la busqueda por nombre o por posición (localidad).
            if (Nombre != "") {
                if (Localidad == "") {
                    //Realizamos la consulta y cacheamos los resultados si los hubiera.
                    var Resultado = grAjax.getUrl("/Modulos/Restaurantes/ocultoResolverQuery.aspx?"
                    + "nombre=" + Nombre
                    + "&cordX=0&cordY=0"
                    + "&categoria=" + Categoria
                    + "&precio=" + Precio
                    + "&servicios=" + idServicios
                    + "&TipoCocina=" + TipoCocina
                    + "&SubTipoCocina=" + SubTipoCocina
                    + "&RestauranteReco=" + RestauranteReco);

                    //Comprobamos que existen resultados de la busqueda para navegar o no.
                    if (Resultado == 0) {
                        GuiaRepsol.BuscadorCross.mostrarNoResultados();
                    }
                    // Si sólo hay un restaurante, dirigimos directamente a la ficha
                    else if (Resultado.indexOf("Id_resturante") != -1 && Resultado.split("=")[1] != null) {
                        window.location = "/Gastronomia/Restaurantes/FichaRestaurante.aspx?Guia=1&IdRestaurante=" + Resultado.split("=")[1];
                    } else {
                        //Navegamos a la pagina para mostrar los resultados
                        $(this.IdElementos.hdGuidCRes).value = Resultado;
                        $(GuiaRepsol.BuscadorCross.IdElementos.formBC).action = "/Gastronomia/Restaurantes/ListadoRestaurantes.aspx";
                        $(GuiaRepsol.BuscadorCross.IdElementos.formBC).submit();
                    }
                }
                else {
                    //Resolucion de la localidad
                    var Resultado = GuiaRepsol.BuscadorCross.buscarLocalidad(Pais, Localidad, Direccion, Numero, "");
                    GuiaRepsol.BuscadorCross.mostrarResultados(Resultado);

                    //Guardamos la búsqueda para más adelante
                    if (Resultado != null && Resultado.Count > 0) {
                        busquedasRe.guardarElementos();
                    }
                }
            }
            //En el caso de realizar la busqueda por posicion (localidad).
            else if (Localidad != "") {
                //Resolucion de la localidad
                var Resultado = GuiaRepsol.BuscadorCross.buscarLocalidad(Pais, Localidad, Direccion, Numero, "");
                GuiaRepsol.BuscadorCross.mostrarResultados(Resultado);

                //Guardamos la búsqueda para más adelante
                if (Resultado != null && Resultado.Count > 0) {
                    busquedasRe.guardarElementos();
                }
            }
            //En el caso que no hayan rellenado los parametros de busqueda necesarios mostramos un mensaje de alerta
            else {
                alert($(this.IdElementos.hdAlertRes).value);
            }
        }

    } catch (ex) {
        manageException(ex);
    }
};

//Método para la búsqueda de hoteles
GuiaRepsol.BuscadorCross.BuscadorHoteles.buscarHotel = function() {

    try {

        //Recogemos los Datos de la busqueda
        var Nombre = encodeURIComponent($(this.IdElementos.txtNombreHotel).value);
        var Pais = $(this.IdElementos.cboPaisHotel).value;
        var Localidad = encodeURIComponent($(this.IdElementos.txtLocalidadHotel).value);
        var Direccion = encodeURIComponent($(this.IdElementos.txtDireccionHotel).value);
        var Numero = $(this.IdElementos.txtNumeroHotel).value;
        var Categoria = $(this.IdElementos.cboCategoriaHotel).value;
        var Precio = $(this.IdElementos.cboPrecioHotel).value;
        var guidC = $(this.IdElementos.hdGuidCHot).value;
        var Servicios = document.getElementsByName(this.IdElementos.nameServiciosHoteles);
        var idServicios = "";
        for (var cont = 0; cont < Servicios.length; cont++) {
            if (Servicios.item(cont).checked == true) {
                idServicios += Servicios.item(cont).value + ",";
            }
        }

        //Comprobamos si estamos ya en la pagina de Hoteles para navegar o sólo recargar datos con la nueva busqueda
        if (window.location.toString().toLowerCase().lastIndexOf("listadohoteles.aspx") != -1) {
            //Comprobamos si vamos a realizar la busqueda por nombre o por posición (localidad).
            if (Nombre != "") {
                if (Localidad == "") {
                    //Realizamos la consulta y cacheamos los resultados si los hubiera.
                    var Resultado = grAjax.getUrl("/Modulos/Hoteles/ocultoResolverQuery.aspx"
                    + "?nombre=" + Nombre
                    + "&cordX=0&cordY=0"
                    + "&categoria=" + Categoria
                    + "&precio=" + Precio
                    + "&servicios=" + idServicios
                    + "&Numero=" + Numero
                    + "&Direccion=" + Direccion);

                    //Comprobamos que existen resultados de la busqueda para navegar o no.
                    if (Resultado == 0) {
                        GuiaRepsol.BuscadorCross.mostrarNoResultados();
                    }
                    // Si sólo hay un restaurante, dirigimos directamente a la ficha
                    else if (Resultado.indexOf("Id_hotel") > -1 && Resultado.split("=")[1] != null) {
                        window.location = "/Turismo/Hoteles/FichaHoteles.aspx?Guia=1&IdHotel=" + Resultado.split("=")[1];
                    }
                    else {
                        //Recargamos los datos de la nueva busqueda (sin navegacion).
                        $("guid_C").value = "||" + Resultado.replace("#", "_") + "||";
                        $("nombre").value = "||" + Nombre + "||";
                        $("cord_X").value = "||0||";
                        $("cord_Y").value = "||0||";
                        $("precio").value = "||" + Precio + "||";
                        $("categoria").value = "||" + Categoria + "||";
                        $("servicios").value = "||" + idServicios + "||";

                        //Si esta abierto, lo cerramos
                        GuiaRepsol.BuscadorCross.cerrarBuscador();

                        iniciar();
                    }
                }
                else {
                    //Mostramos la capa con las opciones de resolucion de la localidad.
                    var Resultado = GuiaRepsol.BuscadorCross.buscarLocalidad(Pais, Localidad, Direccion, Numero, "");
                    GuiaRepsol.BuscadorCross.mostrarResultados(Resultado);

                    //Guardamos la búsqueda para más adelante
                    if (Resultado != null && Resultado.Count > 0) {
                        busquedasHo.guardarElementos();
                    }
                }
            }
            //En caso de busqueda por posición (localidad).
            else if (Localidad != "") {
                //Mostramos la capa con las opciones de resolucion de la localidad.
                var Resultado = GuiaRepsol.BuscadorCross.buscarLocalidad(Pais, Localidad, Direccion, Numero, "");
                GuiaRepsol.BuscadorCross.mostrarResultados(Resultado);

                //Guardamos la búsqueda para más adelante
                if (Resultado != null && Resultado.Count > 0) {
                    busquedasHo.guardarElementos();
                }
            }
            //En caso de no haber rellenado nungún parametro de busqueda mostramos una alerta
            else {
                alert($(this.IdElementos.hdAlertHot).value);
            }
        }
        //En caso de estar en una pagina externa a hoteles.
        else {
            //Comprobamos si vamos a realizar la busqueda por nombre o por posición (localidad).
            if (Nombre != "") {
                if (Localidad == "") {

                    //Realizamos la consulta y cacheamos los resultados si los hubiera.
                    var Resultado = grAjax.getUrl("/Modulos/Hoteles/ocultoResolverQuery.aspx"
                    + "?nombre=" + Nombre
                    + "&cordX=0&cordY=0"
                    + "&categoria=" + Categoria
                    + "&precio=" + Precio
                    + "&servicios=" + idServicios
                    + "&Numero=" + Numero
                    + "&Direccion=" + Direccion);

                    //Comprobamos que existen resultados de la busqueda para navegar o no.
                    if (Resultado == 0) {
                        GuiaRepsol.BuscadorCross.mostrarNoResultados();
                    }
                    // Si sólo hay un restaurante, dirigimos directamente a la ficha
                    else if (Resultado.indexOf("Id_hotel") > -1 && Resultado.split("=")[1] != null) {
                        window.location = "/Turismo/Hoteles/FichaHoteles.aspx?Guia=1&IdHotel=" + Resultado.split("=")[1];
                    }
                    else {
                        //Navegamos a la pagina para mostrar los resultados
                        $(this.IdElementos.hdGuidCHot).value = Resultado;
                        $(GuiaRepsol.BuscadorCross.IdElementos.formBC).action = "/Turismo/Hoteles/ListadoHoteles.aspx";
                        $(GuiaRepsol.BuscadorCross.IdElementos.formBC).submit();
                    }
                }
                else {
                    //Resolucion de la localidad
                    var Resultado = GuiaRepsol.BuscadorCross.buscarLocalidad(Pais, Localidad, Direccion, Numero, "");
                    GuiaRepsol.BuscadorCross.mostrarResultados(Resultado);

                    //Guardamos la búsqueda para más adelante
                    if (Resultado != null && Resultado.Count > 0) {
                        busquedasHo.guardarElementos();
                    }
                }
            }
            //En el caso de realizar la busqueda por posicion (localidad).
            else if (Localidad != "") {
                //Resolucion de la localidad
                var Resultado = GuiaRepsol.BuscadorCross.buscarLocalidad(Pais, Localidad, Direccion, Numero, "");
                GuiaRepsol.BuscadorCross.mostrarResultados(Resultado);

                //Guardamos la búsqueda para más adelante
                if (Resultado != null && Resultado.Count > 0) {
                    busquedasHo.guardarElementos();
                }
            }
            //En el caso que no hayan rellenado los parametros de busqueda necesarios mostramos un mensaje de alerta
            else {
                alert($(this.IdElementos.hdAlertHot).value);
            }
        }

    } catch (ex) {
        manageException(ex);
    }
};


//Método para la búsqueda de municipios
GuiaRepsol.BuscadorCross.BuscadorMunicipios.buscarMunicipio = function() {

    try {

        var Localidad = encodeURIComponent($(this.IdElementos.txtNombreMun).value);

        //Buscamos la localidad o municipio
        var resBusqueda = GuiaRepsol.BuscadorCross.buscarLocalidad("", Localidad, "", "", "");

        //Mostramos los resultados
        GuiaRepsol.BuscadorCross.mostrarResultados(resBusqueda);

    } catch (ex) {
        manageException(ex);
    }
};

//Método para buscar reportajes
GuiaRepsol.BuscadorCross.BuscadorReportajes.buscarReportaje = function() {

    try {

        //Recogemos los Datos de la busqueda

        var var_country = encodeURIComponent($(this.IdElementos.cboPaisReportajes).value);
        var var_ccaa = encodeURIComponent($(this.IdElementos.cboComunidadesReportajes).value);
        var var_provincia = encodeURIComponent($(this.IdElementos.cboProvinciasReportajes).value);
        var var_opcion_gastronomia = "";
        var var_opcion_turismo = "";
        var var_opcion_denominacion = "";
        var var_opcion_cultural = "";
        var var_opcion_deportivo = "";
        var var_opcion_fiestas = "";
        var var_opcion_naturaleza = "";
        var var_opcion_otros = "";
        var var_opcion_rural = "";
        var var_opcion_todas = "False";
        var cultura = GuiaRepsol.BuscadorCross.getCultura();

        if ($(this.IdElementos.chkGastronomiaReportajes).checked) {
            var_opcion_gastronomia = encodeURIComponent($(this.IdElementos.chkGastronomiaReportajes).value);
        }
        if ($(this.IdElementos.chkTurismoReportajes).checked) {
            var_opcion_turismo = encodeURIComponent($(this.IdElementos.chkTurismoReportajes).value);
        }
        if ($(this.IdElementos.chkDenominacionReportajes).checked) {
            var_opcion_denominacion = encodeURIComponent($(this.IdElementos.chkDenominacionReportajes).value);
        }
        if ($(this.IdElementos.chkCulturalReportajes).checked) {
            var_opcion_cultural = encodeURIComponent($(this.IdElementos.chkCulturalReportajes).value);
        }
        if ($(this.IdElementos.chkDeportivoReportajes).checked) {
            var_opcion_deportivo = encodeURIComponent($(this.IdElementos.chkDeportivoReportajes).value);
        }
        if ($(this.IdElementos.chkFiestasReportajes).checked) {
            var_opcion_fiestas = encodeURIComponent($(this.IdElementos.chkFiestasReportajes).value);
        }
        if ($(this.IdElementos.chkNaturalezaReportajes).checked) {
            var_opcion_naturaleza = encodeURIComponent($(this.IdElementos.chkNaturalezaReportajes).value);
        }
        if ($(this.IdElementos.chkOtrosReportajes).checked) {
            var_opcion_otros = encodeURIComponent($(this.IdElementos.chkOtrosReportajes).value);
        }
        if ($(this.IdElementos.chkRuralReportajes).checked) {
            var_opcion_rural = encodeURIComponent($(this.IdElementos.chkRuralReportajes).value);
        }

        if ((var_opcion_gastronomia == "") && (var_opcion_turismo == "") && (var_opcion_denominacion == "")) {
            var_opcion_gastronomia = "%";
            var_opcion_turismo = "%";
            var_opcion_denominacion = "%";
        }
        //Si están marcadas cultural, deportivo, fiestas, naturaleza, otros y rural o no está marcada ninguna
        if ((var_opcion_cultural != "" && var_opcion_deportivo != "" && var_opcion_fiestas != "" &&
            var_opcion_naturaleza != "" && var_opcion_otros != "" && var_opcion_rural != "") ||
        (var_opcion_cultural == "" && var_opcion_deportivo == "" && var_opcion_fiestas == "" &&
            var_opcion_naturaleza == "" && var_opcion_otros == "" && var_opcion_rural == ""))
        { var_opcion_todas = "True"; }

        var query =
        "?var_country=" + var_country +
        "&var_ccaa=" + var_ccaa +
        "&var_provincia=" + var_provincia +
        "&var_opcion_gastronomia=" + var_opcion_gastronomia +
        "&var_opcion_turismo=" + var_opcion_turismo +
        "&var_opcion_denominacion=" + var_opcion_denominacion +
        "&var_opcion_cultural=" + var_opcion_cultural +
        "&var_opcion_deportivo=" + var_opcion_deportivo +
        "&var_opcion_fiestas=" + var_opcion_fiestas +
        "&var_opcion_naturaleza=" + var_opcion_naturaleza +
        "&var_opcion_otros=" + var_opcion_otros +
        "&var_opcion_rural=" + var_opcion_rural +
        "&var_opcion_todas=" + var_opcion_todas +
        "&cultura=" + cultura;

        window.location = "/App/resultadosbuscador/default.aspx" + query;

    } catch (ex) {
        manageException(ex);
    }
};



//Método para buscar estaciones de servicio
GuiaRepsol.BuscadorCross.BuscadorEstaciones.buscarEstaciones = function() {
    try {
        //Recogemos los Datos de la busqueda
        var idioma = $(this.IdElementos.hdBcIdIdioma).value;
        var Localidad = encodeURIComponent($(this.IdElementos.txtLocalidadEstaciones).value);
        var Direccion = encodeURIComponent($(this.IdElementos.txtCalleEstaciones).value);
        var Numero = $(this.IdElementos.txtNumeroEstaciones).value;
        //var CP = $(this.IdElementos.txtCPEstaciones).value; 

        //?codidioma=1&localidad=alcobendas&calle=espa%C3%B1a&numero=N%C3%BAm
        var query =
        "?codidioma=" + idioma +
        "&localidad=" + Localidad +
        "&calle=" + Direccion +
        "&numero=" + Numero;


        window.location = "http://www.repsol.com/es_es/productos_y_servicios/servicios/estaciones_servicio/buscador_estaciones/default.aspx" + query;

    } catch (ex) {
        manageException(ex);
    }
};

//*****************************************************************************************************************************************************************************************************
//*************************     Metodos de Busqueda con Resolucion de Localidad     *******************************************************************************************************************
//*****************************************************************************************************************************************************************************************************

//Busca una localidad y devuelve un listado de candidatas
GuiaRepsol.BuscadorCross.buscarLocalidad = function(pais, localidad, calle, numero, codigoPostal) {

    try {

        var resultado = grAjax.getUrl("/Comunes/BuscadorRepsol/ocultoResolverLocalidad.aspx"
        + "?pais=" + pais
        + "&localidad=" + localidad
        + "&calle=" + calle
        + "&numero=" + numero
        + "&cp" + codigoPostal);

        return eval("(" + resultado + ")");

    } catch (ex) {
        manageException(ex);
    }

};

//Llama al método de búsqueda que utilizará la localidad seleccionada dependiendo de la ficha actual
GuiaRepsol.BuscadorCross.aceptarLocalidad = function() {

    try {

        switch (this.fichaActual) {
            case 3:
                this.BuscadorRestaurantes.aceptarLocalidadRestaurante();
                break;
            case 4:
                this.BuscadorHoteles.aceptarLocalidadHotel();
                break;
            case 5:
                this.BuscadorMunicipios.aceptarLocalidadMunicipio();
                break;
            default:
                //No hay más buscadores que llamen a esta función
                break;
        }

    } catch (ex) {
        manageException(ex);
    }

};

//Oculta el div con los resultados de la búsqueda de localidades
GuiaRepsol.BuscadorCross.cerrarPopUp = function() {

    try {

        hideElement(this.IdElementos.divBCPopUp);

    } catch (ex) {
        manageException(ex);
    }
};


//Metodo que muestra los resultados de búsqueda de localidades
GuiaRepsol.BuscadorCross.mostrarResultados = function(Resultado) {

    try {

        if (Resultado && Resultado.Count > 0) {
            this.objSelectOrigen = new GCBuscadorSelect("CapaOrigen", "selectOrigen", 10, false, "selectorigen", Resultado);
            this.objSelectOrigen.mostrarTodos();
            showElement(this.IdElementos.divBCPopUp);

            var selectResultados = $(this.objSelectOrigen.name);

            selectResultados.focus();

            selectResultados.ondblclick = function(e) {
                GuiaRepsol.BuscadorCross.aceptarLocalidad();
            };

            selectResultados.onkeydown = function(e) {
                e = e ? e : window.event;
                var tecla = (document.all) ? e.keyCode : e.which;
                switch (tecla) {
                    //Tecla Enter                  
                    case 13:
                        GuiaRepsol.BuscadorCross.aceptarLocalidad();
                        break;
                    //Tecla Escape                  
                    case 27:
                        GuiaRepsol.BuscadorCross.cerrarPopUp();
                        break;
                    default:
                        break;
                }
            };
        }
        else {

            this.mostrarNoResultados();
        }

    } catch (ex) {
        manageException(ex);
    }

};


//Muestra un mensaje diciendo que no hay resultados
GuiaRepsol.BuscadorCross.mostrarNoResultados = function() {

    try {

        alert($(this.IdElementos.hdBcNoCoincidencias).value);

    } catch (ex) {
        manageException(ex);
    }
};

//Submit del formualario de hoteles con la localidad y las opciones seleccionadas
GuiaRepsol.BuscadorCross.BuscadorHoteles.aceptarLocalidadHotel = function() {

    try {

        //Capturamos los otros parametros de busqueda
        var Nombre = $(this.IdElementos.txtNombreHotel).value;
        var Pais = $(this.IdElementos.cboPaisHotel).value;
        var Localidad = $(this.IdElementos.txtLocalidadHotel).value;
        var Direccion = $(this.IdElementos.txtDireccionHotel).value;
        var Numero = $(this.IdElementos.txtNumeroHotel).value;
        var CP = $("");
        var Categoria = $(this.IdElementos.cboCategoriaHotel).value;
        var Precio = $(this.IdElementos.cboPrecioHotel).value;
        var Servicios = document.getElementsByName(this.IdElementos.nameServiciosHoteles);
        var idServicios = "";
        for (var cont = 0; cont < Servicios.length; cont++) {
            if (Servicios.item(cont).checked == true) {
                idServicios += Servicios.item(cont).value + ",";
            }
        }

        //Capturamos la seleccion de la localidad resuelta y ocultamos la capa de resolución
        GuiaRepsol.BuscadorCross.cerrarPopUp();
        if (GuiaRepsol.BuscadorCross.objSelectOrigen != null) {
            GuiaRepsol.BuscadorCross.candidata = GuiaRepsol.BuscadorCross.objSelectOrigen.obtenerCandidata();
            $(this.IdElementos.hdCoordXHot).value = GuiaRepsol.BuscadorCross.candidata.X;
            $(this.IdElementos.hdCoordYHot).value = GuiaRepsol.BuscadorCross.candidata.Y;
            //Realizamos la consulta y en caso de obtener resultados los tendremos ya cacheados, en caso contrario mostramos - No hay resultados -
            var Resultado = grAjax.getUrl("/Modulos/Hoteles/ocultoResolverQuery.aspx"
            + "?nombre=" + Nombre
            + "&cordX=" + GuiaRepsol.BuscadorCross.candidata.X
            + "&cordY=" + GuiaRepsol.BuscadorCross.candidata.Y
            + "&categoria=" + Categoria
            + "&precio=" + Precio
            + "&servicios=" + idServicios
            + "&Numero=" + Numero
            + "&Direccion=" + Direccion);
            if (Resultado == 0) {
                GuiaRepsol.BuscadorCross.mostrarNoResultados();
            }
            // AMO - 27/01/2009
            // Si sólo hay un restaurante, dirigimos directamente a la ficha
            else if (Resultado.indexOf("Id_hotel") > -1 && Resultado.split("=")[1] != null) {
                window.location = "/Turismo/Hoteles/FichaHoteles.aspx?Guia=1&IdHotel=" + Resultado.split("=")[1];
            }
            else {
                //Si nos encontramos en la pagina correspondiente a la busqueda, sólo recargamos los resultados, no la pagina completa
                if (window.location.toString().toLowerCase().lastIndexOf("listadohoteles.aspx") != -1) {
                    $("guid_C").value = "||" + Resultado.replace("#", "_") + "||";
                    $("nombre").value = "||" + Nombre + "||";
                    $("cord_X").value = "||" + GuiaRepsol.BuscadorCross.candidata.X + "||";
                    $("cord_Y").value = "||" + GuiaRepsol.BuscadorCross.candidata.Y + "||";
                    $("precio").value = "||" + Precio + "||";
                    $("categoria").value = "||" + Categoria + "||";
                    $("servicios").value = "||" + Servicios + "||";
                    //Si esta abierto, lo cerramos
                    GuiaRepsol.BuscadorCross.cerrarBuscador();
                    iniciar();
                }
                else {
                    //En caso de realizar la busqueda desde una pagina externa, navegamos a la pagina del listado
                    $(this.IdElementos.hdGuidCHot).value = Resultado;
                    $(GuiaRepsol.BuscadorCross.IdElementos.formBC).action = "/Turismo/Hoteles/ListadoHoteles.aspx";
                    $(GuiaRepsol.BuscadorCross.IdElementos.formBC).submit();
                }
            }
        }

    } catch (ex) {
        manageException(ex);
    }
};

//Submit del formualario de restaurantes con la localidad y las opciones seleccionadas
GuiaRepsol.BuscadorCross.BuscadorRestaurantes.aceptarLocalidadRestaurante = function() {

    try {

        //Capturamos los otros parametros de busqueda
        var Nombre = encodeURIComponent($(this.IdElementos.txtNombreRestaurante).value);
        var Pais = $(this.IdElementos.cboPaisRestaurante).value;
        var Localidad = encodeURIComponent($(this.IdElementos.txtLocalidadRestaurante).value);
        var Direccion = encodeURIComponent($(this.IdElementos.txtDireccionRestaurante).value);
        var Numero = encodeURIComponent($(this.IdElementos.txtNumeroRestaurante).value);
        var Categoria = $(this.IdElementos.cboCategoriaRestaurante).value;
        var Precio = $(this.IdElementos.cboPrecioRestaurante).value;
        var TipoCocina = $(this.IdElementos.cboTipoCocina).value;
        var SubTipoCocina = "";
        var RestauranteReco = $(this.IdElementos.chkRestaurantesReco).checked;
        var guidC = $(this.IdElementos.hdGuidCRes).value;
        var CP = "";
        var Servicios = document.getElementsByName(this.IdElementos.nameServiciosRestaurantes);
        var idServicios = "";
        for (var cont = 0; cont < Servicios.length; cont++) {
            if (Servicios.item(cont).checked == true) {
                idServicios += Servicios.item(cont).value + ",";
            }
        }

        //Capturamos la seleccion de la localidad resuelta y ocultamos la capa de resolución
        GuiaRepsol.BuscadorCross.cerrarPopUp();
        if (GuiaRepsol.BuscadorCross.objSelectOrigen != null) {
            GuiaRepsol.BuscadorCross.candidata = GuiaRepsol.BuscadorCross.objSelectOrigen.obtenerCandidata();
            $(this.IdElementos.hdCoordXRes).value = GuiaRepsol.BuscadorCross.candidata.X;
            $(this.IdElementos.hdCoordYRes).value = GuiaRepsol.BuscadorCross.candidata.Y;
            //Realizamos la consulta y en caso de obtener resultados los tendremos ya cacheados, en caso contrario mostramos - No hay resultados -
            var Resultado = grAjax.getUrl("/Modulos/Restaurantes/ocultoResolverQuery.aspx"
            + "?nombre=" + Nombre
            + "&cordX=" + GuiaRepsol.BuscadorCross.candidata.X
            + "&cordY=" + GuiaRepsol.BuscadorCross.candidata.Y
            + "&categoria=" + Categoria
            + "&precio=" + Precio
            + "&servicios=" + idServicios
            + "&TipoCocina=" + TipoCocina
            + "&SubTipoCocina=" + SubTipoCocina
            + "&RestauranteReco=" + RestauranteReco);
            if (Resultado == 0) {
                GuiaRepsol.BuscadorCross.mostrarNoResultados();
            }
            // AMO - 27/01/2009
            // Si sólo hay un restaurante, dirigimos directamente a la ficha
            else if (Resultado.indexOf("Id_resturante") > -1 && Resultado.split("=")[1] != null) {
                window.location = "/Gastronomia/Restaurantes/FichaRestaurante.aspx?Guia=1&IdRestaurante=" + Resultado.split("=")[1];
            } else {
                //Si nos encontramos en la pagina correspondiente a la busqueda, sólo recargamos los resultados, no la pagina completa
                if (window.location.toString().toLowerCase().lastIndexOf("listadorestaurantes.aspx") != -1) {
                    /* TODO: Ver si tira...
                    $("nombreRes").value = "||" + Nombre + "||";
                    $("precioRes").value = "||" + Precio + "||";
                    $("categoriaRes").value = "||" + Categoria + "||";
                    $("TipoCocina").value = "||" + TipoCocina + "||";
                    $("SubTipoCocina").value = "||" + SubTipoCocina + "||";
                    $("RestaurantesReco").value = "||" + RestauranteReco + "||";
                    $("serviciosRes").value = "||" + Servicios + "||";*/

                    $("guid_C").value = "||" + Resultado.replace("#", "_") + "||";

                    //Si esta abierto, lo cerramos
                    GuiaRepsol.BuscadorCross.cerrarBuscador();
                    iniciar();
                }
                else {
                    //En caso de realizar la busqueda desde una pagina externa, navegamos a la pagina del listado
                    $(this.IdElementos.hdGuidCRes).value = Resultado;
                    $(GuiaRepsol.BuscadorCross.IdElementos.formBC).action = "/Gastronomia/Restaurantes/ListadoRestaurantes.aspx";
                    $(GuiaRepsol.BuscadorCross.IdElementos.formBC).submit();
                }
            }
        }

    } catch (ex) {
        manageException(ex);
    }
};

//Submit del formualario de municipios con la localidad seleccionada
GuiaRepsol.BuscadorCross.BuscadorMunicipios.aceptarLocalidadMunicipio = function() {

    try {

        //Ocultamos el popup
        GuiaRepsol.BuscadorCross.cerrarPopUp();

        if (GuiaRepsol.BuscadorCross.objSelectOrigen != null) {
            GuiaRepsol.BuscadorCross.candidata = GuiaRepsol.BuscadorCross.objSelectOrigen.obtenerCandidata();

            if (!isNullOrUndefined(GuiaRepsol.BuscadorCross.candidata)) {

                //Obtenemos los datos a pasar a la página
                var idPoblacion = GuiaRepsol.BuscadorCross.candidata.IdPoblacion;
                var axcd = GuiaRepsol.BuscadorCross.candidata.Axcd;
                var coordX = GuiaRepsol.BuscadorCross.candidata.X;
                var coordY = GuiaRepsol.BuscadorCross.candidata.Y;
                var idta = GuiaRepsol.BuscadorCross.candidata.Idta;
                var idBusqueda = 1; //Mostrará la primera pestaña en la home de municipios

                //Formamos la url
                var url = "/Turismo/Municipios/Home.aspx"
                    + "?idPoblacion=" + idPoblacion
                    + "&axcd=" + axcd
                    + "&coordX=" + coordX
                    + "&coordY=" + coordY
                    + "&idta=" + idta
                    + "&idBusqueda=" + idBusqueda;

                $(GuiaRepsol.BuscadorCross.IdElementos.formBC).action = url;
                $(GuiaRepsol.BuscadorCross.IdElementos.formBC).submit();

            }
        }

    } catch (ex) {
        manageException(ex);
    }
};


//********************************************************************************************************************************************************
//**********************     Funcionalidades para implementar la parte Como Llegar   *********************************************************************
//********************************************************************************************************************************************************

//Si a la hora de buscar una ruta, estas variables estan rellenas
//invocamos la resolucion inversa de direcciones en el ocultoResolverItinerario.aspx
GuiaRepsol.BuscadorCross.BuscadorRutas.isMostrarComoLlegar = false;
GuiaRepsol.BuscadorCross.BuscadorRutas.jsonComoLlegar = null;

//Implementa la funcionalidad de introducir los parametros adecuados en la parte
//de Rutas del Buscador Repsol, y activa la pestaña de Rutas
GuiaRepsol.BuscadorCross.BuscadorRutas.ComoLlegarDestino = function(Parametros) {

    try {

        this.jsonComoLlegar = eval("(" + Parametros + ")");

        //Creo el punto de destino del Buscador Cross para que sólo muestre una coincidente
        if (!String.IsNullOrEmpty(this.jsonComoLlegar.X) && !String.IsNullOrEmpty(this.jsonComoLlegar.Y)) {
            ParamRutasDeCross = new PuntoCross();
            ParamRutasDeCross.X = this.jsonComoLlegar.X;
            ParamRutasDeCross.Y = this.jsonComoLlegar.Y;
            ParamRutasDeCross.Pais = this.jsonComoLlegar.Pais;
            ParamRutasDeCross.Localidad = this.jsonComoLlegar.Localidad;
            ParamRutasDeCross.Via = this.jsonComoLlegar.Direccion;
            ParamRutasDeCross.Numero = this.jsonComoLlegar.Numero;
            ParamRutasDeCross.Idta = this.jsonComoLlegar.Idta;
        }

        this.isMostrarComoLlegar = true;

        //Se rellenan los parametros del destino
        if (!isNullOrUndefined(this.jsonComoLlegar.Pais))
            $(this.IdElementos.cboPaisDes).value = this.jsonComoLlegar.Pais;

        if (!isNullOrUndefined(this.jsonComoLlegar.Localidad))
            $(this.IdElementos.txtLocalidadDes).value = this.jsonComoLlegar.Localidad;

        if (!isNullOrUndefined(this.jsonComoLlegar.Direccion))
            $(this.IdElementos.txtDireccionDes).value = this.jsonComoLlegar.Direccion;

        if (!isNullOrUndefined(this.jsonComoLlegar.Numero))
            $(this.IdElementos.txtNumeroDes).value = this.jsonComoLlegar.Numero;

        //Mostramos la ficha 1
        GuiaRepsol.BuscadorCross.mostrarFicha(1);

        this.isMostrarComoLlegar = false;

    } catch (ex) {
        manageException(ex);
    }

};


//****************************************************************************************************************************************
//**********************     Funcionalidades para la parte de buscador cross de Rutas     ************************************************
//****************************************************************************************************************************************

//Variables Globales
//A estas primeras variables se les asignan valores por defecto
//para que no den ningún tipo de problema
var EvitarIncidencias = "0";
var Velocidades = "120;110;75;70;60;50;40;30";
var TipoVehiculo = "1";
var DiaPronostico = "1";
var Criterio = "1";
var Peaje = "0";
var RadioBusqueda = "15000";
var ConsumoPrecio = "0";
var ConsumoVolumen = "0";

var PaisOrigen;
var LocalidadOrigen;
var DireccionOrigen;
var NumeroOrigen;
var CodigoPostalOrigen;
var PaisPaso1;
var LocalidadPaso1;
var DireccionPaso1;
var NumeroPaso1;
var CodigoPostalPaso1;
var PaisPaso2;
var LocalidadPaso2;
var DireccionPaso2;
var NumeroPaso2;
var CodigoPostalPaso2;
var PaisDestino;
var LocalidadDestino;
var DireccionDestino;
var NumeroDestino;
var CodigoPostalDestino;
var JSONPaises;
var XOrigen;
var YOrigen;
var IdtaOrigen;
var XCallejero;
var YCallejero;
var IdtaCallejero;
var LocCallejero;
var DirCallejero;
var NumCallejero;
var CodigoPostalCallejero;
var LocalidadCallejero;
var DireccionCallejero;
var NumeroCallejero;
var CodigoPostalCallejero;
var PaisCarretera;
var NombreCarretera;
var PKCarretera;

//Se han hecho globales estas variables para poder imprimir el callejero seleccionado
var _candidata;
var derivaZoom;
var onChangeActivated = false;


//Especifica si se han pasado parámetros a la pestaña de búsqueda de rutas del Buscador Cross
var ParamRutasOrCross = null;
var ParamRutasDeCross = null;
//Especifica si se han pasado parámetros a la pestaña de búsqueda de callejero del Buscador Cross
var ParamRutasCaCross = null;

//Se pueden crear puntos con la información neecsarioa para pasar los parámetros al Cross
//y que se muestren más tarde como candidatas
function PuntoCross() {
    this.Nombre = "";
    this.Coincidencia = "";
    this.Idta = "";
    this.X = "";
    this.Y = "";
    this.Pais = "";
    this.Provincia = "";
    this.Localidad = "";
    this.Via = "";
    this.Numero = "";
    this.Cp = "";
    this.IdPoblacion = "";

};

GuiaRepsol.BuscadorCross.BuscadorRutas.CargaComboDiasPrevisionTiempo = function() {

    try {

        //Días de la semana y actual
        var arrDiasSemana = new Array(arrBusqCross["domingo"], arrBusqCross["lunes"], arrBusqCross["martes"], arrBusqCross["miercoles"], arrBusqCross["jueves"], arrBusqCross["viernes"], arrBusqCross["sabado"]);
        var diaHoy = new Date();
        var cboPrevisionTiempo = $(this.IdElementos.cboPrevisionTiempo);

        //Cargamos en el combo los 5 días siguientes al día actual
        for (var i = 0; i < 5; i++) {

            //Creamos la opción para el combo y la agregamos
            var elemento = document.createElement("option");
            elemento.text = arrDiasSemana[diaHoy.getDay()];
            elemento.value = i + 1;
            cboPrevisionTiempo.options.add(elemento);

            //Sumamos un día al actual
            diaHoy.setDate(diaHoy.getDate() + 1);
        }

        //Seleccionamos la primera opción día actual
        cboPrevisionTiempo.selectedIndex = 0;
    } catch (ex) {
        manageException(ex);
    }
};


GuiaRepsol.BuscadorCross.BuscadorRutas.ComprobarNoHayCoincidencias = function(Respuesta) {

    try {
        var Mensaje;
        if (typeof (Respuesta.Origen) != "undefined") {
            if (Respuesta.Origen.Count == 0) {
                Mensaje = arrBusqCross["nodirecciones"] + " " + arrBusqCross["origen"];
            }
        }
        else {
            Mensaje = arrBusqCross["nodirecciones"] + " " + arrBusqCross["origen"];
        }

        if ((typeof (Mensaje) == "undefined") && (typeof (Respuesta.Paso1) != "undefined")) {
            if (Respuesta.Paso1.Count == 0) {
                Mensaje = arrBusqCross["nodirecciones"] + " " + arrBusqCross["localidadespaso"];
            }
        }

        if ((typeof (Mensaje) == "undefined") && (typeof (Respuesta.Paso2) != "undefined")) {
            if (Respuesta.Paso2.Count == 0) {
                Mensaje = arrBusqCross["nodirecciones"] + " " + arrBusqCross["localidadespaso"];
            }
        }

        if ((typeof (Mensaje) == "undefined") && (typeof (Respuesta.Paso3) != "undefined")) {
            if (Respuesta.Paso3.Count == 0) {
                Mensaje = arrBusqCross["nodirecciones"] + " " + arrBusqCross["localidadespaso"];
            }
        }

        if (typeof (Mensaje) == "undefined") {

            if (Respuesta.Destino != undefined) {
                if (Respuesta.Destino.Count == 0) {
                    Mensaje = arrBusqCross["nodirecciones"] + " " + arrBusqCross["destino"];
                }


            }
            else {
                Mensaje = arrBusqCross["nodirecciones"] + " " + arrBusqCross["destino"];
            }
        }

        if (typeof (Mensaje) != "undefined") {
            alert(Mensaje);
            return true;
        }

    } catch (ex) {
        manageException(ex);
    }

};


GuiaRepsol.BuscadorCross.BuscadorRutas.CompruebaCampos = function() {

    try {

        //Variables
        var elCampoCasque = null;
        var resultado = true;
        var iCont = 0;
        var elementoFormulario;
        var textoIns = new String();

        //Recogida de datos
        var val_nombres = new Array(this.IdElementos.txtLocalidadOr, this.IdElementos.txtDireccionOr, this.IdElementos.txtNumeroOr, this.IdElementos.txtLocalidadDes, this.IdElementos.txtDireccionDes, this.IdElementos.txtNumeroDes, this.IdElementos.txtLocalidadPaso1, this.IdElementos.txtDireccionPaso1, this.IdElementos.txtNumeroPaso1, this.IdElementos.txtLocalidadPaso2, this.IdElementos.txtDireccionPaso2, this.IdElementos.txtNumeroPaso2);
        var val_descrip = new Array(arrBusqCross["localidad"], arrBusqCross["calle"], arrBusqCross["numero"], arrBusqCross["localidad"], arrBusqCross["calle"], arrBusqCross["numero"], arrBusqCross["localidad"], arrBusqCross["calle"], arrBusqCross["numero"], arrBusqCross["localidad"], arrBusqCross["calle"], arrBusqCross["numero"]);
        var val_tipo = new Array("string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string");
        var val_obligat = new Array("false", "false", "false", "false", "false", "false", "false", "false", "false", "false", "false", "false");
        var val_minval = new Array("", "", "0", "", "", "0", "", "", "0", "", "", "0");

        //Trim de todos los campos
        while (iCont < val_nombres.length) {
            elementoFormulario = $(val_nombres[iCont]);
            if (elementoFormulario.type == "text") {
                //Si se ha intruducido algún espacio a la izq o der del texto se suprime
                elementoFormulario.value = elementoFormulario.value.trim();
            }
            iCont++;
        }

        iCont = 0;

        //Recorrido de los campos del formulario
        while ((resultado) && (iCont < val_nombres.length)) {
            elementoFormulario = $(val_nombres[iCont]);
            if (elementoFormulario.type == "text") {

                textoIns = elementoFormulario.value;
                // Si el campo es obligatorio y está vacío
                if ((textoIns == "") && (val_obligat[iCont] == "true")) {
                    alert(arrBusqCross["campovacio"].replace("%s0", val_descrip[iCont]));
                    resultado = false;
                }

                // Si el campo es int y es menor que el valor mínimo
                if ((textoIns != "") && (val_tipo[iCont] == "int") && (resultado)) {
                    if (parseInt(textoIns.toString()) < parseInt(val_minval[iCont])) {
                        alert(arrBusqCross["menorque"].replace("%s0", val_descrip[iCont]).replace("%s1", val_minval[iCont]));
                        resultado = false;
                    }
                }

                //Si se esta recorriendo el origen o el destino
                if (iCont == 0 || iCont == 3) {

                    //Si el campo es la direccion, y no esta relleno el campo de poblacion
                    if ($(val_nombres[iCont]).value == "") {
                        if (iCont == 0) {
                            alert(arrBusqCross["alertlocalidadorigen"]);
                        } else {
                            alert(arrBusqCross["alertlocalidaddestino"]);
                        }

                        $(val_nombres[iCont]).focus();
                        resultado = false;
                        iCont++;
                        break;
                    }


                    //Si el campo es la direccion, y no esta relleno el campo de poblacion ni el codigo postal
                    if (($(val_nombres[iCont + 1]).value == "") &&
                                ($(val_nombres[iCont + 2]).value == "")) {
                        if ($(val_nombres[iCont]).value == "") {
                            if (iCont == 0) {
                                alert(arrBusqCross["alertlocalidadorigen"]);
                            } else {
                                alert(arrBusqCross["alertlocalidaddestino"]);
                            }
                            $(val_nombres[iCont]).focus();
                            resultado = false;
                            iCont++;
                            break;
                        }
                    }


                    //Si el campo es el numero, y no esta relleno el campo de poblacion
                    if (($(val_nombres[iCont + 2]).value != "") && ($(val_nombres[iCont + 1]).value == "")) {
                        if ($(val_nombres[iCont + 1]).value == "") {
                            if (iCont == 0) {
                                alert(arrBusqCross["alertdireccionorigen"]);
                            } else {
                                alert(arrBusqCross["alertdirecciondestino"]);
                            }
                            $(val_nombres[iCont + 1]).focus();
                            resultado = false;
                            iCont += 2;
                            break;
                        } else {
                            if ($(val_nombres[iCont]).value == "") {
                                if (iCont == 0) {
                                    alert(arrBusqCross["alertlocalidadorigen"]);
                                } else {
                                    alert(arrBusqCross["alertlocalidaddestino"]);
                                }
                                $(val_nombres[iCont]).focus();
                                resultado = false;
                                iCont++;
                                break;
                            }
                        }
                    }

                }

                //Si se estan recorriendo los puntos de paso
                if (iCont == 6 || iCont == 9) {
                    //Si los campos estan vacios, no se hace nada
                    if (!(($(val_nombres[iCont]).value == "") &&
                                ($(val_nombres[iCont + 1]).value == "") &&
                                ($(val_nombres[iCont + 2]).value == ""))) {


                        //Si el campo es la direccion, y no esta relleno el campo de poblacion
                        if ($(val_nombres[iCont]).value == "") {
                            alert(arrBusqCross["faltalocalidad"] + " " + arrBusqCross["localidadespaso"]);
                            GuiaRepsol.BuscadorCross.mostrarAvanzadas(1);
                            $(val_nombres[iCont]).focus();
                            resultado = false;
                            iCont++;
                            break;
                        }


                        //Si el campo es la direccion, y no esta relleno el campo de poblacion ni el codigo postal
                        if (($(val_nombres[iCont + 1]).value == "") &&
                                ($(val_nombres[iCont + 2]).value == "")) {
                            if ($(val_nombres[iCont]).value == "") {
                                alert(arrBusqCross["faltalocalidad"] + " " + arrBusqCross["localidadespaso"]);
                                GuiaRepsol.BuscadorCross.mostrarAvanzadas(1);
                                $(val_nombres[iCont]).focus();
                                resultado = false;
                                iCont++;
                                break;
                            }
                        }


                        //Si el campo es el numero, y no esta relleno el campo de poblacion 
                        if (($(val_nombres[iCont + 2]).value != "") && ($(val_nombres[iCont + 1]).value == "")) {
                            if ($(val_nombres[iCont + 1]).value == "") {
                                alert(arrBusqCross["faltadireccion"] + " " + arrBusqCross["localidadespaso"]);
                                GuiaRepsol.BuscadorCross.mostrarAvanzadas(1);
                                $(val_nombres[iCont + 1]).focus();
                                resultado = false;
                                iCont += 2;
                                break;
                            } else {
                                if ($(val_nombres[iCont]).value == "") {
                                    alert(arrBusqCross["faltalocalidad"] + " " + arrBusqCross["localidadespaso"]);
                                    GuiaRepsol.BuscadorCross.mostrarAvanzadas(1);
                                    $(val_nombres[iCont]).focus();
                                    resultado = false;
                                    iCont++;
                                    break;
                                }
                            }
                        }
                    }
                }
            }

            iCont++;
        }

        if (!resultado) {
            eval($(val_nombres[iCont - 1]).focus());
        }
        return resultado;

    } catch (ex) {
        manageException(ex);
    }

};


GuiaRepsol.BuscadorCross.BuscadorRutas.EncontrarCoincidencias = function() {
    try {
        //Recogida de valores para los parametros de busqueda de rutas
        this.RecogerValoresFormulario();

        //Peticion de coincidencias para el origen, destino y puntos de paso   
        var Respuesta = this.RecogerCoincidencias();
        //Comprobacion del numero de coincidencias para el origen, destion y puntos de paso
        if (!this.ComprobarNoHayCoincidencias(Respuesta)) {

            //Guardamos los elementos para la próxima búsqueda
            busquedasOr.guardarElementos();
            busquedasDes.guardarElementos();

            busquedasPaso1.guardarElementos();
            busquedasPaso2.guardarElementos();

            //Si hay coincidencias, debemos ver si hay una sola
            //por tramo o existen varias
            if (!this.ComprobarUnaCoincidencia(Respuesta)) {
                //Si hay varias coincidencias, entonces relleno el input hidden
                //del formulario, hago un submit hacia el Fmapa y alli recojo las
                //coincidencias
                this.PeticionMultiplesCoincidencias(Respuesta, false);
            }
            else {
                //Si solo hay una coincidencia por destino, comprobamos que origen y destino son distintos
                //y entonces se forma la Querystring a Fmapa.aspx con los primeros valores y se lanza
                if (Respuesta.Origen.Candidata[0].Idta != Respuesta.Destino.Candidata[0].Idta || Respuesta.Origen.Candidata[0].Idta == "")
                    this.PeticionMultiplesCoincidencias(Respuesta, true);
                else {
                    alert(arrBusqCross["origydestdist"]);
                    return;
                }

            }

        }

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.BuscadorRutas.RecogerValoresFormulario = function() {

    try {

        //Recoger los parametros del itinerario de la forma en que
        //lo va a aceptar el aspx de ocultoResolverItinerarioRuta aspx    
        if ($(this.IdElementos.chkEvitarIncidencias).checked) {
            EvitarIncidencias = "1";
        } else {
            EvitarIncidencias = "0";
        }

        TipoVehiculo = $(this.IdElementos.cboTipoVehiculo).value;
        DiaPronostico = $(this.IdElementos.cboPrevisionTiempo).value;

        for (var i = 0; i < document.getElementsByName(this.IdElementos.nameOpcionesRuta).length; i++) {
            if (document.getElementsByName(this.IdElementos.nameOpcionesRuta)[i].checked) {
                Criterio = document.getElementsByName(this.IdElementos.nameOpcionesRuta)[i].value;
            }
        }

        //Si elijo autopista preferente, aumento artificialmente las velocidades
        if (Criterio == 3) {
            Velocidades = "180;160;75;70;60;50;40;30";
        } else {
            Velocidades = "120;110;75;70;60;50;40;30";
        }

        if ($(this.IdElementos.chkEvitarPeajes).checked) {
            Peaje = "1";
        } else {
            Peaje = "0";
        }

        RadioBusqueda = "15000";

        PaisOrigen = $(this.IdElementos.cboPaisOr).value;
        LocalidadOrigen = $(this.IdElementos.txtLocalidadOr).value;
        DireccionOrigen = $(this.IdElementos.txtDireccionOr).value;
        NumeroOrigen = $(this.IdElementos.txtNumeroOr).value;
        CodigoPostalOrigen = "";

        PaisPaso1 = $(this.IdElementos.cboPaisPaso1).value;
        LocalidadPaso1 = $(this.IdElementos.txtLocalidadPaso1).value;
        DireccionPaso1 = $(this.IdElementos.txtDireccionPaso1).value;
        NumeroPaso1 = $(this.IdElementos.txtNumeroPaso1).value;
        CodigoPostalPaso1 = "";

        PaisPaso2 = $(this.IdElementos.cboPaisPaso2).value;
        LocalidadPaso2 = $(this.IdElementos.txtLocalidadPaso2).value;
        DireccionPaso2 = $(this.IdElementos.txtDireccionPaso2).value;
        NumeroPaso2 = $(this.IdElementos.txtNumeroPaso2).value;
        CodigoPostalPaso2 = "";

        PaisDestino = $(this.IdElementos.cboPaisDes).value;
        LocalidadDestino = $(this.IdElementos.txtLocalidadDes).value;
        DireccionDestino = $(this.IdElementos.txtDireccionDes).value;
        NumeroDestino = $(this.IdElementos.txtNumeroDes).value;
        CodigoPostalDestino = "";

        ConsumoPrecio = $(this.IdElementos.txtConsumoPrecio).value;
        ConsumoVolumen = $(this.IdElementos.txtConsumoVolumen).value;

        //Fin recogida de parametros

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.BuscadorRutas.RecogerCoincidencias = function() {
    var arrCoincidentes;
    var strRespuesta;

    try {
        //Si las variables de Como Llegar estan rellenas, y además la localidad, direccion y numero de los textbox
        //de la pestaña de rutas es igual a lo que tenemos almacenado de como llegar, la resolucion de candidatas
        //es INVERSA
        if ((this.jsonComoLlegar != null
            && this.jsonComoLlegar.X != ""
            && this.jsonComoLlegar.Y != ""
            && this.jsonComoLlegar.Pais == $(this.IdElementos.cboPaisDes).value
            && this.jsonComoLlegar.Localidad.trimAndLowerCase() == $(this.IdElementos.txtLocalidadDes).value.trimAndLowerCase()
            && this.jsonComoLlegar.Direccion.trimAndLowerCase() == $(this.IdElementos.txtDireccionDes).value.trimAndLowerCase()
            && this.jsonComoLlegar.Numero.trimAndLowerCase() == $(this.IdElementos.txtNumeroDes).value.trimAndLowerCase())
            || ParamRutasOrCross != null
            || ParamRutasDeCross != null) {

            strRespuesta = grAjax.getUrl("/Comunes/BuscadorRepsol/ocultoResolverItinerarioRuta.aspx?"
            + "POrigen=" + encodeURIComponent(PaisOrigen)
            + "&LocOrigen=" + encodeURIComponent(LocalidadOrigen)
            + "&DirOrigen=" + encodeURIComponent(DireccionOrigen)
            + "&NumOrigen=" + encodeURIComponent(NumeroOrigen)
            + "&CPOrigen=" + encodeURIComponent(CodigoPostalOrigen)
            + "&PPaso1=" + encodeURIComponent(PaisPaso1)
            + "&LocPaso1=" + encodeURIComponent(LocalidadPaso1)
            + "&DirPaso1=" + encodeURIComponent(DireccionPaso1)
            + "&NumPaso1=" + encodeURIComponent(NumeroPaso1)
            + "&CPPaso1=" + encodeURIComponent(CodigoPostalPaso1)
            + "&PPaso2=" + encodeURIComponent(PaisPaso2)
            + "&LocPaso2=" + encodeURIComponent(LocalidadPaso2)
            + "&DirPaso2=" + encodeURIComponent(DireccionPaso2)
            + "&NumPaso2=" + encodeURIComponent(NumeroPaso2)
            + "&CPPaso2=" + encodeURIComponent(CodigoPostalPaso2)
            + "&PDestino=" + encodeURIComponent(PaisDestino)
            + "&LocDestino=" + encodeURIComponent(LocalidadDestino)
            + "&DirDestino=" + encodeURIComponent(DireccionDestino)
            + "&NumDestino=" + encodeURIComponent(NumeroDestino)
            + "&CPDestino=" + encodeURIComponent(CodigoPostalDestino));

            arrCoincidentes = eval("(" + strRespuesta.replace("{,", "{") + ")");

            //Sustituyo el origen si es necesario
            if (ParamRutasOrCross != null) {
                if (!arrCoincidentes.Origen)
                    arrCoincidentes.Origen = new Array();

                arrCoincidentes.Origen.Coincidencia = new Array();
                arrCoincidentes.Origen.Coincidencia.length = 0;
                arrCoincidentes.Origen.Coincidencia.length = 1;
                arrCoincidentes.Origen.Coincidencia[0] = new Array();
                arrCoincidentes.Origen.Coincidencia[0] = "10";

                if (!arrCoincidentes.Origen.Candidata)
                    arrCoincidentes.Origen.Candidata = new Array();

                arrCoincidentes.Origen.Candidata.length = 0;
                arrCoincidentes.Origen.Candidata.length = 1;
                arrCoincidentes.Origen.Candidata[0] = new Object();
                arrCoincidentes.Origen.Candidata[0].Nombre = ParamRutasOrCross.Localidad;
                if (ParamRutasOrCross.Provincia != "")
                    arrCoincidentes.Origen.Candidata[0].Nombre += "(" + ParamRutasOrCross.Provincia + ")";
                if (ParamRutasOrCross.Via != "")
                    arrCoincidentes.Origen.Candidata[0].Nombre += ", " + ParamRutasOrCross.Via;
                if (ParamRutasOrCross.Numero != "")
                    arrCoincidentes.Origen.Candidata[0].Nombre += ", " + ParamRutasOrCross.Numero;
                arrCoincidentes.Origen.Candidata[0].Coincidencia = "10";
                arrCoincidentes.Origen.Candidata[0].Idta = ParamRutasOrCross.Idta;
                arrCoincidentes.Origen.Candidata[0].X = ParamRutasOrCross.X;
                arrCoincidentes.Origen.Candidata[0].Y = ParamRutasOrCross.Y;
                arrCoincidentes.Origen.Candidata[0].Provincia = ParamRutasOrCross.Provincia;
                arrCoincidentes.Origen.Candidata[0].Localidad = ParamRutasOrCross.Localidad;
                arrCoincidentes.Origen.Candidata[0].Calle = ParamRutasOrCross.Via;
                arrCoincidentes.Origen.Candidata[0].Numero = ParamRutasOrCross.Numero;
                arrCoincidentes.Origen.Candidata[0].Cp = ParamRutasOrCross.Cp;
                arrCoincidentes.Origen.Candidata[0].IdPoblacion = ParamRutasOrCross.IdPoblacion;

                arrCoincidentes.Origen.Count = "1";
            }

            //Sustituyo el destino si es necesario
            if (ParamRutasDeCross != null) {
                if (!arrCoincidentes.Destino)
                    arrCoincidentes.Destino = new Array();

                arrCoincidentes.Destino.Coincidencia = new Array();
                arrCoincidentes.Destino.Coincidencia.length = 0;
                arrCoincidentes.Destino.Coincidencia.length = 1;
                arrCoincidentes.Destino.Coincidencia[0] = new Array();
                arrCoincidentes.Destino.Coincidencia[0] = "10";

                if (!arrCoincidentes.Destino.Candidata)
                    arrCoincidentes.Destino.Candidata = new Array();
                arrCoincidentes.Destino.Candidata.length = 0;
                arrCoincidentes.Destino.Candidata.length = 1;
                arrCoincidentes.Destino.Candidata[0] = new Object();
                arrCoincidentes.Destino.Candidata[0].Nombre = ParamRutasDeCross.Localidad;
                if (ParamRutasDeCross.Provincia != "")
                    arrCoincidentes.Destino.Candidata[0].Nombre += "(" + ParamRutasDeCross.Provincia + ")";
                if (ParamRutasDeCross.Via != "")
                    arrCoincidentes.Destino.Candidata[0].Nombre += ", " + ParamRutasDeCross.Via;
                if (ParamRutasDeCross.Numero != "")
                    arrCoincidentes.Destino.Candidata[0].Nombre += ", " + ParamRutasDeCross.Numero;
                arrCoincidentes.Destino.Candidata[0].Coincidencia = "10";
                arrCoincidentes.Destino.Candidata[0].Idta = ParamRutasDeCross.Idta;
                arrCoincidentes.Destino.Candidata[0].X = ParamRutasDeCross.X + "";
                arrCoincidentes.Destino.Candidata[0].Y = ParamRutasDeCross.Y + "";
                arrCoincidentes.Destino.Candidata[0].Provincia = ParamRutasDeCross.Provincia;
                arrCoincidentes.Destino.Candidata[0].Localidad = ParamRutasDeCross.Localidad;
                arrCoincidentes.Destino.Candidata[0].Calle = ParamRutasDeCross.Via;
                arrCoincidentes.Destino.Candidata[0].Numero = ParamRutasDeCross.Numero;
                arrCoincidentes.Destino.Candidata[0].Cp = ParamRutasDeCross.Cp;
                arrCoincidentes.Destino.Candidata[0].IdPoblacion = ParamRutasDeCross.IdPoblacion;

                arrCoincidentes.Destino.Count = "1";
            }

            return arrCoincidentes;

        } else {

            //Si no estan rellenas las variables de Como Llegar, o se ha cambiado el destino, la resolucion de candidatas
            //es DIRECTA
            strRespuesta = grAjax.getUrl("/Comunes/BuscadorRepsol/ocultoResolverItinerarioRuta.aspx?"
            + "POrigen=" + encodeURIComponent(PaisOrigen)
            + "&LocOrigen=" + encodeURIComponent(LocalidadOrigen)
            + "&DirOrigen=" + encodeURIComponent(DireccionOrigen)
            + "&NumOrigen=" + encodeURIComponent(NumeroOrigen)
            + "&CPOrigen=" + encodeURIComponent(CodigoPostalOrigen)
            + "&PPaso1=" + encodeURIComponent(PaisPaso1)
            + "&LocPaso1=" + encodeURIComponent(LocalidadPaso1)
            + "&DirPaso1=" + encodeURIComponent(DireccionPaso1)
            + "&NumPaso1=" + encodeURIComponent(NumeroPaso1)
            + "&CPPaso1=" + encodeURIComponent(CodigoPostalPaso1)
            + "&PPaso2=" + encodeURIComponent(PaisPaso2)
            + "&LocPaso2=" + encodeURIComponent(LocalidadPaso2)
            + "&DirPaso2=" + encodeURIComponent(DireccionPaso2)
            + "&NumPaso2=" + encodeURIComponent(NumeroPaso2)
            + "&CPPaso2=" + encodeURIComponent(CodigoPostalPaso2)
            + "&PDestino=" + encodeURIComponent(PaisDestino)
            + "&LocDestino=" + encodeURIComponent(LocalidadDestino)
            + "&DirDestino=" + encodeURIComponent(DireccionDestino)
            + "&NumDestino=" + encodeURIComponent(NumeroDestino)
            + "&CPDestino=" + encodeURIComponent(CodigoPostalDestino));

            return eval("(" + strRespuesta + ")");

        }

        //Se reinician las variables de Como Llegar para volver al estado inicial
        this.jsonComoLlegar = null;

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.BuscadorRutas.ComprobarUnaCoincidencia = function(Respuesta) {

    try {

        if (!isNullOrUndefined(Respuesta.Origen)) {
            if (Respuesta.Origen.Count > 1) {
                return false;
            }
        }
        else {
            return false;
        }

        if (!isNullOrUndefined(Respuesta.Paso1)) {
            if (Respuesta.Paso1.Count > 1) {
                return false;
            }
        }

        if (!isNullOrUndefined(Respuesta.Paso2)) {
            if (Respuesta.Paso2.Count > 1) {
                return false;
            }
        }

        if (!isNullOrUndefined(Respuesta.Paso3)) {
            if (Respuesta.Paso3.Count > 1) {
                return false;
            }
        }

        if (!isNullOrUndefined(Respuesta.Destino)) {
            if (Respuesta.Destino.Count > 1) {
                return false;
            }

        }
        else {
            return false;
        }

        return true;

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.BuscadorRutas.PeticionMultiplesCoincidencias = function(respuesta, unaCoinc) {
    try {
        var enMapa = (self.location.href.toLowerCase().indexOf("/mapa.aspx") != (-1));
        var enFMapa = (self.location.href.toLowerCase().indexOf("/fmapa.aspx") != (-1));
        //Si se esta en Fmapa o Mapa, no hay  necesidad de hacer un submit, sino que hay que rellenar de nuevo las coincidencias
        if (enMapa || enFMapa) {
            //Se borra la anterior ruta, si es que la hubiese
            objMapa.delAllRoutes();
            //Actualizar las coincidencias con la nueva informacion
            jsonCoincidencias = respuesta;
            //Plegar el buscador Repsol
            GuiaRepsol.BuscadorCross.cerrarBuscador();
            //Se esconde el resumen ejecutivo
            hideElement("cuerpoEjecutivo");
            //Mostrar de nuevo las candidatas
            //Si sólo hay una coincidente para cada punto, cargo la ruta
            if (unaCoinc) {
                var estaRuta = new Ruta();
                estaRuta.Incidencias = EvitarIncidencias;
                estaRuta.Velocidades = Velocidades;
                estaRuta.Tipo = TipoVehiculo;
                estaRuta.Dia = DiaPronostico;
                estaRuta.Criterio = Criterio;
                estaRuta.Peajes = Peaje;
                estaRuta.Radio = RadioBusqueda;
                estaRuta.ConP = ConsumoPrecio;
                estaRuta.ConV = ConsumoVolumen;

                if (jsonCoincidencias.Origen != undefined)
                    estaRuta.Puntos.push(this.CreaPtosDesdeCand(jsonCoincidencias.Origen.Candidata[0], $(this.IdElementos.cboPaisOr).value));

                if (jsonCoincidencias.Paso1 != undefined)
                    estaRuta.Puntos.push(this.CreaPtosDesdeCand(jsonCoincidencias.Paso1.Candidata[0], $(this.IdElementos.cboPaisPaso1).value));

                if (jsonCoincidencias.Paso2 != undefined)
                    estaRuta.Puntos.push(this.CreaPtosDesdeCand(jsonCoincidencias.Paso2.Candidata[0], $(this.IdElementos.cboPaisPaso2).value));

                if (jsonCoincidencias.Paso3 != undefined)
                    estaRuta.Puntos.push(this.CreaPtosDesdeCand(jsonCoincidencias.Paso3.Candidata[0], ""));

                if (jsonCoincidencias.Destino != undefined)
                    estaRuta.Puntos.push(this.CreaPtosDesdeCand(jsonCoincidencias.Destino.Candidata[0], $(this.IdElementos.cboPaisDes).value));
                //Añado la ruta al array de rutas
                GuiaRepsol.MapasRutas.InformeRuta.AddRutaToArr(estaRuta);
                //Actualizo la ruta
                GuiaRepsol.MapasRutas.InformeRuta.CargaRutaPagina(estaRuta);
            }
            else
                GuiaRepsol.MapasRutas.InformeRuta.MostrarCandidatas();

            //Si se esta fuera de Fmapa, hay que recoger los parametros de configuracion, almacenar las coincidencias
            //en un hidden y hacer submit a Fmapa
        } else {

            //Formacion del Querystring con parametros necesarios para el calculo de la ruta
            //cuando hay candidatas

            this.RecogerValoresFormulario();

            var Querystring = "";
            Querystring = Querystring + "Incidencias=" + EvitarIncidencias + "&Velocidades=" + Velocidades + "&Tipo=" + TipoVehiculo +
                    "&Dia=" + DiaPronostico + "&Criterio=" + Criterio + "&Peajes=" + Peaje + "&Radio=" + RadioBusqueda + "&ConP=" + ConsumoPrecio + "&ConV=" + ConsumoVolumen;

            $(this.IdElementos.hdContenedorCoincidenciasRutas).value = JSON.stringify(respuesta);
            $(GuiaRepsol.BuscadorCross.IdElementos.formBC).action = "/MapasRutas/Ruta/mapa.aspx#" + Querystring;
            $(GuiaRepsol.BuscadorCross.IdElementos.formBC).submit();
        }

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.BuscadorRutas.ResolverItinerario = function() {
    try {
        DivCarga.Mostrar();
        if (this.CompruebaCampos()) {
            if (!isNullOrUndefined(tipoBusqueda)) {
                tipoBusqueda = "RUTA";
            }
            //this.ResetearValoresPuntosPaso();
            this.EncontrarCoincidencias();
            if (self.location.href.toLowerCase().indexOf("/mapa.aspx") != (-1)) {
                // Ocultamos la capas de candidatas del callejero
                hideElement('panelCandidatasCallejero');
                hideElement('contenedorCandidatasCallejero');
            }
        }

        DivCarga.Ocultar();

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.BuscadorRutas.RecalculaRutaBuscadorRepsol = function(Respuesta) {
    var estaRuta = new Ruta();
    var _candidata;

    try {
        //Recogida de parametros de Origen, destino y puntos de paso
        if (Respuesta.Origen != undefined) {
            estaRuta.Puntos.push(GuiaRepsol.BuscadorCross.BuscadorRutas.CreaPtosDesdeCand(Respuesta.Origen.Candidata[0], $(this.IdElementos.cboPaisOr).value));

            //Aumentar contadores de Tele Atlas para los hits de Geoposición
            objCounter.addCounterTA(1);
        }

        if (Respuesta.Paso1 != undefined) {
            estaRuta.Puntos.push(GuiaRepsol.BuscadorCross.BuscadorRutas.CreaPtosDesdeCand(Respuesta.Paso1.Candidata[0], $(this.IdElementos.cboPaisPaso1).value));

            //Aumentar contadores de Tele Atlas para los hits de Geoposición
            objCounter.addCounterTA(1);
        }

        if (Respuesta.Paso2 != undefined) {
            estaRuta.Puntos.push(GuiaRepsol.BuscadorCross.BuscadorRutas.CreaPtosDesdeCand(Respuesta.Paso2.Candidata[0], $(this.IdElementos.cboPaisPaso2).value));

            //Aumentar contadores de Tele Atlas para los hits de Geoposición
            objCounter.addCounterTA(1);
        }

        if (Respuesta.Paso3 != undefined) {
            estaRuta.Puntos.push(GuiaRepsol.BuscadorCross.BuscadorRutas.CreaPtosDesdeCand(Respuesta.Paso3.Candidata[0], ""));

            //Aumentar contadores de Tele Atlas para los hits de Geoposición
            objCounter.addCounterTA(1);
        }

        if (Respuesta.Destino != undefined) {
            estaRuta.Puntos.push(GuiaRepsol.BuscadorCross.BuscadorRutas.CreaPtosDesdeCand(Respuesta.Destino.Candidata[0], $(this.IdElementos.cboPaisDes).value));

            //Aumentar contadores de Tele Atlas para los hits de Geoposición
            objCounter.addCounterTA(1);
        }

        //Añado la ruta al array de rutas
        GuiaRepsol.MapasRutas.InformeRuta.AddRutaToArr(estaRuta);
        GuiaRepsol.MapasRutas.InformeRuta.ActualizarRuta(arrRutas[0]);

    } catch (ex) {
        manageException(ex);
    }

};

//Crea un punto de ruta a partir de una candidata
GuiaRepsol.BuscadorCross.BuscadorRutas.CreaPtosDesdeCand = function(candidata, pais) {
    var estePunto = new PuntoRuta();
    var posMERC;
    if (!String.IsNullOrEmpty(candidata.Calle))
        estePunto.Txt = estePunto.Txt + candidata.Calle + ", ";
    if (!String.IsNullOrEmpty(candidata.Numero))
        estePunto.Txt = estePunto.Txt + candidata.Numero + ", ";
    estePunto.Txt = estePunto.Txt + "|" + candidata.Localidad;
    if (!String.IsNullOrEmpty(candidata.Provincia))
        estePunto.Txt = estePunto.Txt + "-" + candidata.Provincia;
    estePunto.Txt = estePunto.Txt + "|";

    //Compruebo, de forma chapucera, si la coordenada es geográfica
    if (GuiaRepsol.MapasRutas.InformeRuta.IsGeoCoord(parseFloat(candidata.X), parseFloat(candidata.Y)))
        posMERC = new positionGeographic(parseFloat(candidata.Y), parseFloat(candidata.X)).toMercator();
    else
        posMERC = new positionMercator(parseInt(candidata.X), parseInt(candidata.Y));
    estePunto.X = posMERC.x;
    estePunto.Y = posMERC.y;
    posMERC = null;

    estePunto.Idta = candidata.Idta;
    estePunto.IdPobl = candidata.IdPoblacion;
    estePunto.IdPais = pais;
    estePunto.Loc = candidata.Localidad;
    estePunto.Dir = candidata.Calle;
    estePunto.Num = candidata.Numero;

    return estePunto;

};

//Carga e inicializa los objetos necesarios para mostrar una ruta
GuiaRepsol.BuscadorCross.BuscadorRutas.CargaRutaPagina = function(Respuesta) {

    try {
        //Activamos la ruta del mapa principal
        objMapa.enableRoute();
        //Actualizo la ruta
        this.RecalculaRutaBuscadorRepsol(Respuesta);

        //Cargo la información de Alrededores
        /*$("divAlrededores").innerHTML = CargarAlrededores(parseFloat(Respuesta.Destino.Candidata[0].X), parseFloat(Respuesta.Destino.Candidata[0].Y), "", "mapa", idIdioma, "objMapa");*/

        //Mostrar capas y objetos que deben estar visibles sólo cuando haya ruta
        GuiaRepsol.MapasRutas.InformeRuta.MostrarObjetosRuta();

    } catch (ex) {
        manageException(ex);
    }

};

//Recoge el origen desde el que se han hecho los cambios, y debe propagarlos al otro
//control. Si el origen es el resumen ejecutivo, debe propagar los cambios al buscador
//cross, y viceversa
GuiaRepsol.BuscadorCross.BuscadorRutas.SincronizarOpcionesBuscador = function(origen) {

    try {

        switch (origen.toUpperCase()) {

            case "EJECUTIVO":

                //Actualizacion de peajes                                
                if ($("cbPeaje").checked) {

                    arrRutas[0].Peajes = "1";
                    $(this.IdElementos.chkEvitarPeajes).checked = "checked";

                } else {

                    arrRutas[0].Peajes = "0";
                    $(this.IdElementos.chkEvitarPeajes).checked = "";

                }

                //Actualizacion del criterio            
                for (var i = 0; i < document.getElementsByName("radioCriterio").length; i++) {
                    if (document.getElementsByName("radioCriterio")[i].checked) {
                        arrRutas[0].Criterio = document.getElementsByName("radioCriterio")[i].value;
                        break;
                    }
                }

                for (var i = 0; i < document.getElementsByName(this.IdElementos.nameOpcionesRuta).length; i++) {
                    if (document.getElementsByName(this.IdElementos.nameOpcionesRuta)[i].value == arrRutas[0].Criterio) {
                        document.getElementsByName(this.IdElementos.nameOpcionesRuta)[i].checked = "checked";
                        break;
                    }
                }

                break;

            case "BUSCADOR":

                //Solamente se actualiza el resumen ejecutivo y las variables correspondientes
                //si se esta en mapa.aspx. Si no se está dentro, no tiene sentido sincronizarlo
                if (window.location.toString().toLowerCase().lastIndexOf("mapa.aspx") != -1) {

                    //Actualizacion de peajes
                    if ($(this.IdElementos.chkEvitarPeajes).checked) {

                        arrRutas[0].Peajes = "1";
                        $("cbPeaje").checked = "checked";

                    } else {

                        arrRutas[0].Peajes = "0";
                        $("cbPeaje").checked = "";

                    }

                    //Actualizacion del criterio
                    for (var i = 0; i < document.getElementsByName(this.IdElementos.nameOpcionesRuta).length; i++) {
                        if (document.getElementsByName(this.IdElementos.nameOpcionesRuta)[i].checked) {
                            arrRutas[0].Criterio = document.getElementsByName(this.IdElementos.nameOpcionesRuta)[i].value;
                            break;
                        }
                    }

                    for (var i = 0; i < document.getElementsByName("radioCriterio").length; i++) {
                        if (document.getElementsByName("radioCriterio")[i].value == arrRutas[0].Criterio) {
                            document.getElementsByName("radioCriterio")[i].checked = "checked";
                            break;
                        }
                    }

                }

                break;

            default:
                break;

        }

    } catch (ex) {
        manageException(ex);
    }

};

//****************************************************************************************************************************************
//**********************     Funcionalidades para la parte de buscador cross de Carreteras     ********************************************
//****************************************************************************************************************************************
GuiaRepsol.BuscadorCross.Carreteras.ResolverCarretera = function() {
    try {

        DivCarga.Mostrar();


        if (this.CompruebaCampos()) {
            /*
            //Indico que la última petición ha sido un callejero y no una ruta
            if (!isNullOrUndefined(ultCallejero))
            ultCallejero = true;
            if (!isNullOrUndefined(ultRuta))
            ultRuta = false;
            */
            this.EncontrarCoincidencias();

        }

        DivCarga.Ocultar();

    } catch (ex) {
        manageException(ex);
    }
};

GuiaRepsol.BuscadorCross.Carreteras.CompruebaCampos = function() {
    try {
        //Variables
        var resultado = true;
        var elementos = new Array();

        //formacion del array de campos de texto del buscador Repsol para Carreteras
        elementos.push(this.IdElementos.txtCarreteraCarreteras);
        elementos.push(this.IdElementos.txtPkCarreteras);

        var iCont = 0;

        //Hacer trim de todos los campos de texto    
        while (iCont < elementos.length) {

            elementoFormulario = $(elementos[iCont]);
            //Si se ha intruducido algún espacio a la izq o der del texto se suprime
            elementoFormulario.value = elementoFormulario.value.trim();

            iCont++;
        }


        if ($(elementos[0]).value == "") {
            resultado = false;
            mensaje = arrBusqCross["Faltacarretera"];
        }


        if (!resultado) {
            alert(mensaje);
            GuiaRepsol.BuscadorCross.abrirBuscador();
            eval($(elementos[0]).focus());
        }

        return resultado;


    }
    catch (ex) {
        manageException(ex);
    }
};



GuiaRepsol.BuscadorCross.Carreteras.EncontrarCoincidencias = function() {
    try {

        //Recogida de valores para los parametros de busqueda de callejero
        this.RecogerValoresFormulario();

        //Peticion de coincidencias para la direccion del callejero solicitada
        var Respuesta = this.RecogerCoincidencias();


        //Comprobacion del numero de coincidencias para la direccion del callejero solicitada
        if (!this.ComprobarNoHayCoincidencias(Respuesta)) {

            //Guardamos los elementos para próximas búsquedas
            //busquedasCa.guardarElementos();

            //Si hay coincidencias, se muestran siempre múltiples coincidencias
            //this.PeticionMultiplesCoincidencias(Respuesta);
            GuiaRepsol.BuscadorCross.Callejero.PeticionMultiplesCoincidencias(Respuesta);
            GuiaRepsol.BuscadorCross.cerrarBuscador();
        }


    }
    catch (ex) {
        manageException(ex);
    }
};

GuiaRepsol.BuscadorCross.Carreteras.RecogerValoresFormulario = function() {
    try {

        PaisCarretera = $(this.IdElementos.cboPaisCarreteras).value;
        NombreCarretera = $(this.IdElementos.txtCarreteraCarreteras).value;
        PKCarretera = $(this.IdElementos.txtPkCarreteras).value;

    }
    catch (ex) {
        manageException(ex);
    }
};

GuiaRepsol.BuscadorCross.Carreteras.RecogerCoincidencias = function() {
    var arrCoincidentes;
    var strRespuesta;
    try {

        strRespuesta = grAjax.getUrl("/Comunes/BuscadorRepsol/ocultoResolverItinerarioRuta.aspx?"
        + "PaisCarretera=" + encodeURIComponent(PaisCarretera)
        + "&NombreCarretera=" + encodeURIComponent(NombreCarretera)
        + "&PKCarretera=" + encodeURIComponent(PKCarretera)
        + "&TipoPeticion=DIRECTO");

        arrCoincidentes = eval("(" + strRespuesta.replace("{,", "{") + ")");

        return arrCoincidentes;
    }
    catch (ex) {
        manageException(ex);
    }
};

GuiaRepsol.BuscadorCross.Carreteras.ComprobarNoHayCoincidencias = function(Respuesta) {
    try {
        var Mensaje;

        if (Respuesta.Origen != undefined) {
            if (Respuesta.Origen.Count == 0) {
                Mensaje = arrBusqCross["nodirecciones"];
            }
        }

        if (typeof (Mensaje) != "undefined") {
            alert(Mensaje);
            return true;
        } else {
            return false;
        }

    }
    catch (ex) {
        manageException(ex);
    }
};

GuiaRepsol.BuscadorCross.Carreteras.PeticionMultiplesCoincidencias = function(Respuesta) {
    try {


    }
    catch (ex) {
        manageException(ex);
    }
};

//****************************************************************************************************************************************
//**********************     Funcionalidades para la parte de buscador cross de Callejero     ********************************************
//****************************************************************************************************************************************

GuiaRepsol.BuscadorCross.Callejero.CompruebaCampos = function() {

    try {

        //Variables
        var resultado = true;
        var mensaje;
        var iCont;
        var elementoFormulario;
        var elementos = new Array();

        //formacion del array de campos de texto del buscador Repsol para Callejero
        elementos.push(this.IdElementos.txtLocalidadCallejeros);
        elementos.push(this.IdElementos.txtCalleCallejeros);
        elementos.push(this.IdElementos.txtNumeroCallejeros);
        elementos.push(this.IdElementos.txtCPCallejeros);

        var iCont = 0;

        //Hacer trim de todos los campos de texto    
        while (iCont < elementos.length) {

            elementoFormulario = $(elementos[iCont]);
            //Si se ha intruducido algún espacio a la izq o der del texto se suprime
            elementoFormulario.value = elementoFormulario.value.trim();

            iCont++;
        }

        iCont = 0;

        /*Una vez se ha hecho el trim a todos los elementos de texto, se analiza las posibilidades que ofrece
        cada uno de ellos --> 0.- Localidad, 1.- Calle, 2.- Numero, 3.- Codigo Postal*/

        while ((iCont < elementos.length) && (resultado)) {

            elementoFormulario = $(elementos[iCont]);

            switch (iCont) {
                //Proceso de la localidad                   
                case 0:
                    if (elementoFormulario.value == "") {
                        if (!(($(elementos[3]).value != "") &&
                        ($(elementos[1]).value == "") &&
                        ($(elementos[2]).value == ""))) {
                            resultado = false;
                            mensaje = arrBusqCross["faltalocalidad"] + " " + arrBusqCross["destino"];
                            iCont = 0;
                        }
                    }
                    break;
                //Proceso de la calle                   
                case 1:
                    if (elementoFormulario.value != "") {
                        if ($(elementos[0]).value == "") {
                            resultado = false;
                            mensaje = arrBusqCross["faltalocalidad"] + " " + arrBusqCross["destino"];
                            iCont = 0;
                        }
                    }
                    break;
                //Proceso del numero                   
                case 2:
                    if (elementoFormulario.value != "") {
                        if (($(elementos[1]).value == "") || ($(elementos[0]).value == "")) {
                            resultado = false;
                            mensaje = arrBusqCross["faltadireccion"] + " " + arrBusqCross["destino"];
                            iCont = 1;
                        }
                    }
                    break;
                //Proceso del codigo postal                   
                case 3:
                    break;

                default:
                    break;
            }

            if (resultado) {
                iCont++;
            }

        }

        if (!resultado) {
            alert(mensaje);
            GuiaRepsol.BuscadorCross.abrirBuscador();
            eval($(elementos[iCont]).focus());
        }

        return resultado;

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.Callejero.ComprobarNoHayCoincidencias = function(Respuesta) {

    try {

        var Mensaje;

        if (Respuesta.Origen != undefined) {
            if (Respuesta.Origen.Count == 0) {
                Mensaje = arrBusqCross["nodirecciones"];
            }
        }

        if (typeof (Mensaje) != "undefined") {
            alert(Mensaje);
            return true;
        } else {
            return false;
        }

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.Callejero.MostrarOcultarCarretera = function(cual) {
    try {
        if (cual == "Carretera") {
            hideElement(this.IdElementos.divCallejeros);
            showElement(this.IdElementos.divCarreteras);
        }
        else {

            hideElement(this.IdElementos.divCarreteras);
            showElement(this.IdElementos.divCallejeros);
        }

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.Callejero.ResolverCallejero = function() {

    try {

        DivCarga.Mostrar();


        if (this.CompruebaCampos()) {
            //Indico que la última petición ha sido un callejero y no una ruta
            if (!isNullOrUndefined(ultCallejero))
                ultCallejero = true;
            if (!isNullOrUndefined(ultRuta))
                ultRuta = false;

            this.EncontrarCoincidencias();
        }

        DivCarga.Ocultar();

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.Callejero.EncontrarCoincidencias = function() {

    try {

        //Recogida de valores para los parametros de busqueda de callejero
        this.RecogerValoresFormulario();

        //Peticion de coincidencias para la direccion del callejero solicitada
        var Respuesta = this.RecogerCoincidencias();

        //Comprobacion del numero de coincidencias para la direccion del callejero solicitada
        if (!this.ComprobarNoHayCoincidencias(Respuesta)) {

            //Guardamos los elementos para próximas búsquedas
            busquedasCa.guardarElementos();

            //Si hay coincidencias, se muestran siempre múltiples coincidencias
            this.PeticionMultiplesCoincidencias(Respuesta);
            GuiaRepsol.BuscadorCross.cerrarBuscador();
        }

    } catch (ex) {
        manageException(ex);
    }

};

//Recogida de valores del formulario para el callejero
GuiaRepsol.BuscadorCross.Callejero.RecogerValoresFormulario = function() {

    try {

        PaisOrigen = $(this.IdElementos.cboPaisCallejeros).value;
        LocalidadOrigen = $(this.IdElementos.txtLocalidadCallejeros).value;
        DireccionOrigen = $(this.IdElementos.txtCalleCallejeros).value;
        NumeroOrigen = $(this.IdElementos.txtNumeroCallejeros).value;
        CodigoPostalOrigen = $(this.IdElementos.txtCPCallejeros).value;

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.Callejero.RecogerCoincidencias = function() {
    var arrCoincidentes;
    var strRespuesta;

    try {

        //Aumentar los contadores de geoposicionamiento
        objCounter.addCounterTA(1);

        strRespuesta = grAjax.getUrl("/Comunes/BuscadorRepsol/ocultoResolverItinerarioRuta.aspx?"
        + "POrigen=" + encodeURIComponent(PaisOrigen)
        + "&LocOrigen=" + encodeURIComponent(LocalidadOrigen)
        + "&DirOrigen=" + encodeURIComponent(DireccionOrigen)
        + "&NumOrigen=" + encodeURIComponent(NumeroOrigen)
        + "&CPOrigen=" + encodeURIComponent(CodigoPostalOrigen)
        + "&TipoPeticion=DIRECTO");

        arrCoincidentes = eval("(" + strRespuesta.replace("{,", "{") + ")");

        //Sustituyo el origen y el destino si es necesario
        if (ParamRutasCaCross != null) {
            if (!arrCoincidentes.Origen)
                arrCoincidentes.Origen = new Array();

            arrCoincidentes.Origen.Coincidencia = new Array();
            arrCoincidentes.Origen.Coincidencia.length = 0;
            arrCoincidentes.Origen.Coincidencia.length = 1;
            arrCoincidentes.Origen.Coincidencia[0] = new Array();
            arrCoincidentes.Origen.Coincidencia[0] = "10";

            if (!arrCoincidentes.Origen.Candidata)
                arrCoincidentes.Origen.Candidata = new Array();

            arrCoincidentes.Origen.Candidata.length = 0;
            arrCoincidentes.Origen.Candidata.length = 1;
            arrCoincidentes.Origen.Candidata[0] = new Array();
            arrCoincidentes.Origen.Candidata[0].Nombre = ParamRutasCaCross.Localidad;
            if (ParamRutasCaCross.Provincia != "")
                arrCoincidentes.Origen.Candidata[0].Nombre += "(" + ParamRutasCaCross.Provincia + ")";
            if (ParamRutasCaCross.Via != "")
                arrCoincidentes.Origen.Candidata[0].Nombre += ", " + ParamRutasCaCross.Via;
            if (ParamRutasCaCross.Numero != "")
                arrCoincidentes.Origen.Candidata[0].Nombre += ", " + ParamRutasCaCross.Numero;
            arrCoincidentes.Origen.Candidata[0].Coincidencia = "10";
            arrCoincidentes.Origen.Candidata[0].Idta = ParamRutasCaCross.Idta;
            arrCoincidentes.Origen.Candidata[0].X = ParamRutasCaCross.X;
            arrCoincidentes.Origen.Candidata[0].Y = ParamRutasCaCross.Y;
            arrCoincidentes.Origen.Candidata[0].Provincia = ParamRutasCaCross.Provincia;
            arrCoincidentes.Origen.Candidata[0].Localidad = ParamRutasCaCross.Localidad;
            arrCoincidentes.Origen.Candidata[0].Calle = ParamRutasCaCross.Via;
            arrCoincidentes.Origen.Candidata[0].Numero = ParamRutasCaCross.Numero;
            arrCoincidentes.Origen.Candidata[0].Cp = ParamRutasCaCross.Cp;
            arrCoincidentes.Origen.Candidata[0].IdPoblacion = ParamRutasCaCross.IdPoblacion;

            arrCoincidentes.Origen.Count = "1";
        }
        return arrCoincidentes;

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.Callejero.AnnadirIcono = function(obj, Multiples) {

    try {

        //Eliminamos el icono
        objMapa.delIcon(1);

        //Recogida de parametros de candidata para el callejero. Si viene de peticion
        //multiple el objeto obj es un select, y si no es el json de respuesta de coincidentes

        if (Multiples) {

            _candidata = obj.obtenerCandidata();
        }
        else {
            _candidata = obj.Origen.Candidata[0];
        }

        //Parte comun para pintar el icono y centrarlo en el mapa

        if (!isNullOrUndefined(obj)) {

            XCallejero = _candidata.X;
            YCallejero = _candidata.Y;
            IdtaCallejero = _candidata.Idta;
            LocCallejero = _candidata.Localidad;
            DirCallejero = _candidata.Calle;
            NumCallejero = _candidata.Numero;
            CodigoPostalCallejero = _candidata.Cp;

            if (DirCallejero != "") {
                derivaZoom = 100;
            }
            else {
                derivaZoom = 1000;
            }

            //Creacion de las posiciones minima y maxima para enfocar el mapa
            /*var posMin = new positionMercator(parseInt(XCallejero) - parseInt(2 * derivaZoom), parseInt(YCallejero) - derivaZoom);
            var posMax = new positionMercator(parseInt(XCallejero) + derivaZoom, parseInt(YCallejero) + derivaZoom);
            objMapa.boundingBox(posMin, posMax);*/
            //Se utiliza como nivel de zoom el nivel 16, el mismo que se utiliza para el callejero
            objMapa.centerAndZoom(new positionMercator(parseInt(XCallejero), parseInt(YCallejero)), 16);

            //Creacion y adicion de un icono en el mapa
            var icon = new grMapIcon(1, new positionMercator(parseInt(XCallejero), parseInt(YCallejero)), "", grMapImage.tackRed, "", "", "");

            objMapa.addIcon(icon);

            //Añado los parámetros al hash de la dirección
            //GuiaRepsol.MapasRutas.Callejero.CallejeroAddressBar();

            //Actualizar publicidad de GoogleAdSense
            GuiaRepsol.MapasRutas.Callejero.ActualizaGoogleAdSense(LocCallejero);

        }

        //Contador 58  Coincidencias
        objCounter.addCounterV2(58);
        //Sumar los contadores
        objCounter.count();

    } catch (ex) {
        manageException(ex);
    }

};

GuiaRepsol.BuscadorCross.Callejero.PeticionMultiplesCoincidencias = function(respuesta) {

    try {

        //Si no esta en FCallejero.aspx ni en Mapa.aspx hay que redirigir y rellenar los parametros del Querystring

        var enMapa = (self.location.href.toLowerCase().indexOf("/mapa.aspx") != (-1));
        var enFCallejero = (self.location.href.toLowerCase().indexOf("/fcallejero.aspx") != (-1));

        /*if (enMapa) {
        hideElement('panelCandidatas');
        }*/

        if (!enMapa && !enFCallejero) {

            $(this.IdElementos.hdContenedorCoincidenciasCallejero).value = JSON.stringify(respuesta);
            $(GuiaRepsol.BuscadorCross.IdElementos.formBC).action = "/MapasRutas/Ruta/mapa.aspx";
            $(GuiaRepsol.BuscadorCross.IdElementos.formBC).submit();

        } else {

            hideElement("contenedorCandidatasCallejero");
            hideElement("panelCandidatasFCallejero");
            //Actualizar las coincidencias con la nueva informacion
            jsonCoincidencias = respuesta;
            if (!isNullOrUndefined(jsonCoincidencias.Origen)) {

                //Capa con las candidatas para la calle a resolver
                if (enMapa || enFCallejero) objSelectCallejero = new GCBuscadorSelect("capacandidatasCallejero", "opcionesCallejero", 5, false, "coincidenciasLocalidades", jsonCoincidencias.Origen);
                else objSelectCallejero = new GCBuscadorSelect("capacandidatas", "opcionesCallejero", 5, false, "coincidenciasLocalidades", jsonCoincidencias.Origen);
                objSelectCallejero.mostrarVisibles();

                GuiaRepsol.MapasRutas.InformeRuta.setSelectSizeHeight("opcionesCallejero", objSelectCallejero, maxSelectSize);

                $("opcionesCallejero").onclick = function() {

                    if (!onChangeActivated) {
                        GuiaRepsol.BuscadorCross.Callejero.AnnadirIcono(objSelectCallejero, true);
                    }
                    onChangeActivated = false;

                };
                $("opcionesCallejero").onchange = function() {
                    GuiaRepsol.BuscadorCross.Callejero.AnnadirIcono(objSelectCallejero, true);
                    onChangeActivated = true;
                };
                //Si las opciones que hay en el select son menores que todas las candidatas
                //entonces se muestra el boton de mostrar mas resultados
                if (objSelectCallejero.opciones.length < jsonCoincidencias.Origen.Candidata.length) {
                    showElement("mostrartodas");
                } else {
                    hideElement("mostrartodas");
                }

                this.AnnadirIcono(objSelectCallejero, true);

                //Indico que la última petición ha sido un callejero y no una ruta
                if (!isNullOrUndefined(ultCallejero))
                    ultCallejero = true;
                if (!isNullOrUndefined(ultRuta))
                    ultRuta = false;

                if (enMapa) {
                    //Oculto el panel de candidatas de rutas, por si se está mostrando
                    hideElement('panelCandidatas');

                    GuiaRepsol.MapasRutas.Callejero.mostrarCallejero();
                    abiertoCallejero = true;
                    abiertoEjecutivo = false;
                    showElement("panelCandidatasCallejero");
                }
                else {
                    //se hace visible la capa de candidatas
                    $("abrirCerrarCandidatas").src = "/Comunes/Css/Imagenes/Img_Buscador/cerrar.gif";
                    showElement("contenedorCandidatas");
                    showElement("contenedorCandidatasCallejero");
                    showElement("panelCandidatas");
                    showElement("panelCandidatasFCallejero");
                }

            }

        }

    } catch (ex) {
        manageException(ex);
    }

};

//Devuelve los parámetros de una ruta transformados para utilizarlos en la barra de direcciones
GuiaRepsol.BuscadorCross.BuscadorRutas.ParamAddressBar = function(estaRuta) {
    if (estaRuta == null)
        estaRuta = arrRutas[0];

    //Array con la ruta de la página
    var urlRuta = new Array();

    //Coordenadas de Centro, Origen y Destino
    var coordGeoCentro;
    var coordGeo;
    /*if (MERCATOR)*/
    coordGeoCentro = new positionMercator(objMapa.getCoordinateX(), objMapa.getCoordinateY()).toLatLong();
    /*else
    coordGeoCentro = new positionUTM(objMapa.getCoordinateX(), objMapa.getCoordinateY()).toLatLong();*/

    urlRuta.push("X=" + coordGeoCentro.longitude);
    urlRuta.push("Y=" + coordGeoCentro.latitude);
    urlRuta.push("z=" + objMapa.getZoomLevel());
    if (estaRuta.Incidencias != IncidenciasDef && !isNaN(estaRuta.Incidencias))
        urlRuta.push("Incidencias=" + estaRuta.Incidencias);
    if (estaRuta.Incidencias != IncidenciasDef && !isNaN(estaRuta.Velocidades))
        urlRuta.push("Velocidades=" + estaRuta.Velocidades);
    if (estaRuta.Tipo != TipoDef && !isNaN(estaRuta.Tipo))
        urlRuta.push("Tipo=" + estaRuta.Tipo);
    if (estaRuta.Dia != DiaDef && !isNaN(estaRuta.Dia))
        urlRuta.push("Dia=" + estaRuta.Dia);
    if (estaRuta.Criterio != CriterioDef && !isNaN(estaRuta.Criterio))
        urlRuta.push("Criterio=" + estaRuta.Criterio);
    if (estaRuta.Peajes != PeajesDef && !isNaN(estaRuta.Peajes))
        urlRuta.push("Peajes=" + estaRuta.Peajes);
    if (estaRuta.Radio != RadioDef && !isNaN(estaRuta.Radio))
        urlRuta.push("Radio=" + estaRuta.Radio);
    if (estaRuta.ConP != ConPDef && !isNaN(estaRuta.ConP))
        urlRuta.push("ConP=" + estaRuta.ConP);
    if (estaRuta.ConV != ConVDef && !isNaN(estaRuta.ConV))
        urlRuta.push("ConV=" + estaRuta.ConV);

    for (var i = 0; i < estaRuta.Puntos.length; i++) {
        /*if (MERCATOR)*/
        coordGeo = new positionMercator(parseInt(estaRuta.Puntos[i].X), parseInt(estaRuta.Puntos[i].Y)).toLatLong();
        /*else
        coordGeo = new positionUTM(parseFloat(estaRuta.Puntos[i].X), parseFloat(estaRuta.Puntos[i].Y)).toLatLong();*/

        if (!String.IsNullOrEmpty(estaRuta.Puntos[i].Txt))
            urlRuta.push(i + "|Txt=" + estaRuta.Puntos[i].Txt);
        urlRuta.push(i + "|X=" + coordGeo.longitude);
        urlRuta.push(i + "|Y=" + coordGeo.latitude);
        /*if (!String.IsNullOrEmpty(estaRuta.Puntos[i].Idta))
        urlRuta.push(i + "|Idta=" + estaRuta.Puntos[i].Idta);*/
        if (!String.IsNullOrEmpty(estaRuta.Puntos[i].Loc))
            urlRuta.push(i + "|Loc=" + estaRuta.Puntos[i].Loc);
        if (!String.IsNullOrEmpty(estaRuta.Puntos[i].Dir))
            urlRuta.push(i + "|Dir=" + estaRuta.Puntos[i].Dir);
        if (!String.IsNullOrEmpty(estaRuta.Puntos[i].Num))
            urlRuta.push(i + "|Num=" + estaRuta.Puntos[i].Num);
    }


    //Añado parámetros para el tipo de vista
    if (objMapa.getViewType() != ViewDef)
        urlRuta.push("View=" + objMapa.getViewType());
    if (objMapa.getViewStreet() != ViewStDef)
        urlRuta.push("ViewSt=" + objMapa.getViewStreet());

    return urlRuta.join('&');

};


/* 
 * CopyRight: Guia Campsa
 *   Version: 0.2Beta
 *	 Created: 7 Mar 2008
 *    Modify: 31 Mar 2008
 */

var Class = {
    create: function() {
        return function() {
            this.initialize.apply(this, arguments);
        };
    }
};


/*
 * Clase que con los valores del desplegable
 */
var GCBuscadorSelectCandidatas = Class.create();
GCBuscadorSelectCandidatas.prototype = {
	initialize: function(name, size, multiple, className, resultado) {
		this.Id;
		this.Nombre;
	}
};


/*
 * Clase Buscador, Generar Select
 */
var GCBuscadorSelect = Class.create();
GCBuscadorSelect.prototype = {
    initialize: function(layer, name, size, multiple, className, resultado) {

        //Inicializa la clase, recoge los parametros y establece valores por defecto si es necesario
        this.layer = "";
        this.name = new Date().getTime();
        this.size = 1;
        this.multiple = false;
        this.className = "";
        this.resultado = "";

        //Esta clase contendrá el conjunto de objetos de tipo GCBuscadorSelectCandidatas
        this.opciones = new Array();

        //Valores por defecto si es necesario
        try {
            if (name != "") this.name = name;
            if (size > 0) this.size = size;
            if (multiple || !multiple) this.multiple = multiple;
            if (className != "") this.className = className;
            if (resultado.Count >= 0) this.resultado = resultado;
            if (layer != "") this.layer = layer;
        }
        catch (err) {
            //manejar el error
        }
    },

    /* PUBLICAS	*/

    //solo las que deban ser visibles de resultados
    mostrarVisibles: function() {

        this._mostrarVisibles();
        this._generaDesplegable();
    },

    //Mostrar todos los registros
    mostrarTodos: function() {

        this._mostrarTodos();
        this._generaDesplegable();
    },

    //obtener el objeto Registro seleccionado
    obtenerCandidata: function() {

        var objSelect = document.getElementById(this.name);
        var indice;

        if (objSelect) {
            if (objSelect.type == "text") {
                indice = 0;
            }
            else {
                indice = objSelect.options[objSelect.selectedIndex].value;
            }

            if (parseInt(indice) < parseInt(this.resultado.Count)) {
                return this.resultado.Candidata[indice];
            }
        }
        else {
            return "";
        }
    },

    /* PRIVADAS	*/

    //muestra el primer bloque de nivel de coincidencia, o todas si solo hay uno
    _mostrarVisibles: function() {

        this.opciones = new Array();
        var opcion = null;

        for (var i = 0; i < this.resultado.Count; i++) {
            if (this.resultado.Coincidencia[0] == this.resultado.Candidata[i].Coincidencia) {
                var opcion = new GCBuscadorSelectCandidatas();
                opcion.Id = i;
                opcion.Nombre = this.resultado.Candidata[i].Nombre;

                this.opciones.push(opcion);
            }
        }
    },

    //Muestra todas las candidatas
    _mostrarTodos: function() {

        this.opciones = new Array();
        var opcion = null;
        for (var i = 0; i < this.resultado.Count; i++) {
            var opcion = new GCBuscadorSelectCandidatas();
            opcion.Id = i;
            opcion.Nombre = this.resultado.Candidata[i].Nombre;

            this.opciones.push(opcion);
        }
    },

    //genera el Desplegable o input si es necesario
    _generaDesplegable: function() {
        if (this.resultado.Count > 0) {

            var select = document.createElement('select');
            select.name = this.name;
            select.id = this.name;
            select.size = this.size;
            select.multiple = this.multiple;
            select.className = this.className;

            for (var i = 0; i < this.opciones.length; i++) {

                opt = document.createElement('option');
                opt.value = this.opciones[i].Id;
                opt.innerHTML = this.opciones[i].Nombre;

                if (i == 0) {
                    opt.selected = true;
                }

                select.appendChild(opt);
            }

            if (this.layer != "") {
                document.getElementById(this.layer).innerHTML = "";
                document.getElementById(this.layer).appendChild(select);
            }
            else {
                document.body.appendChild(select);
            }


            //necesario para corregir un Bug de IE6+
            if (this.size > 1) {
                var id = setTimeout(
					function() {
					    select.size = select.size - 1;
					    select.size = select.size + 1;

					    clearTimeout(id);
					}, 5);
            }
        }
        else if (this.resultado.Count == '0') {

            var input = document.createElement('input');
            input.name = this.name;
            input.id = this.name;
            input.type = "text";
            input.disabled = "true";
            input.value = "No hay resultados";
            input.className = this.className;

            if (this.layer != "") {
                document.getElementById(this.layer).innerHTML = "";
                document.getElementById(this.layer).appendChild(input);
            }
            else {
                document.body.appendChild(input);
            }
        }
    }
};

/**
* @version = 0.1.20080823
* @date = 23/08/2008
*/

function $(parametros) {
    return document.getElementById(parametros);
}


function HttpRequest(url, funcionRetorno, parametrosFuncionRetorno, tipoResultado, metodo, asincrono, objeto, parametrosPost, deserializar) {
    if (parametrosPost == "undefined" || !parametrosPost) {
        parametrosPost = null;
    }

    var PeticionHttp = null;
    var Salida = null;

    if (window.XMLHttpRequest) {
        PeticionHttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        PeticionHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
        return;
    }

    if (PeticionHttp) {
        PeticionHttp.onreadystatechange = function() {
            if (PeticionHttp.readyState == 4) {
                if (PeticionHttp.status == 200) {
                    if (funcionRetorno != "") {
                        var Respuesta = null;
                        switch (tipoResultado) {
                            case "XML":
                                Respuesta = PeticionHttp.responseXML;
                                break;
                            default:
                                Respuesta = PeticionHttp.responseText;
                                break;
                        }
                        eval(funcionRetorno + "(Respuesta,parametrosFuncionRetorno,objeto);");
                        return;
                    }
                    else {
                        switch (tipoResultado) {
                            case "XML":
                                Salida = PeticionHttp.responseXML;
                                break;
                            default:
                                Salida = PeticionHttp.responseText;
                                break;
                        }
                    }
                }
            }
        };

        if (metodo == "POST") {
            PeticionHttp.open("POST", url, asincrono);
            PeticionHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
            PeticionHttp.send(parametrosPost);
        }
        else {
            PeticionHttp.open("GET", url, asincrono);
            PeticionHttp.send(null);
        }

        if (!asincrono) {
            switch (tipoResultado) {
                case "XML":
                    Salida = PeticionHttp.responseXML;
                    break;
                default:
                    Salida = PeticionHttp.responseText;
                    break;
            }
            if (PeticionHttp.status != 200) {
                return Salida;
            }
        }
        try {
            return Salida;
        }
        finally {
            Salida = null;
        }
    }
}

var grAjax = new Object();
grAjax.asincrono = false;
grAjax.funcionRetorno = "";
grAjax.cache = false;

grAjax.getUrl = function(url) {
    var Sep = (url.indexOf("?") > -1 ? "&" : "?");
    var Salida = HttpRequest(url + (this.cache ? "" : Sep + "rndAjax=" + Math.random()), this.funcionRetorno, null, "TXT", "GET", this.asincrono, this, null, true);
    try {
        return Salida;
    }
    finally {
        Salida = null;
    }

};





var grEncodingTools = {

    //booleano para el navegador actual
    browser: {
        IE: !!(window.attachEvent && !window.opera),
        Opera: !!window.opera,
        WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
        Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
        MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
    },

    //Manera eficiente de insertar HTML en una capa para IE
    addHTML: function(id, html) {
        if (id && html) {
            if (this.browser.IE) {
                document.getElementById(id).insertAdjacentHTML("afterBegin", html);
            }
            else {
                document.getElementById(id).innerHTML += html;
            }
        }
    },

    // private method for UTF-8 encoding
    utf8Encode: function(string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    utf8Decode: function(utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while (i < utftext.length) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

};

var DivCarga = DivCarga ? DivCarga : {

    //Id del div de carga
    idDivCarga: "idCapaCargando",

    //Muestra la imagen de carga solo si existe. Sumamos uno al contador, para indicarlo cuanso se oculte la imagen    
    Mostrar: function() {
        var divCargando = document.getElementById(this.idDivCarga);
        if (divCargando != null) {
            /*divCargando.style.top = this.GetScrollTop() + (this.GetClientHeight() / 3);
            if (parseInt(divCargando.style.top) < 200)
                divCargando.style.top = "200px";
            divCargando.style.left = this.GetScrollLeft() + (this.GetClientWidth() / 2);*/
            divCargando.style.display = "block";
        }
    },

    //Oculta el div de carga si existe. Pero solo cuando el contador de módulos está a 0
    Ocultar: function() {
        var divCargando = document.getElementById(this.idDivCarga);
        if (divCargando != null) {
            divCargando.style.display = "none";
        }
    },

    //Obtiene la anchura del cliente
    GetClientWidth: function() {
        return this.f_filterResults(
		    window.innerWidth ? window.innerWidth : 0,
		    document.documentElement ? document.documentElement.clientWidth : 0,
		    document.body ? document.body.clientWidth : 0
	    );
    },

    //Obtiene la altura del cliente
    GetClientHeight: function() {
        return this.f_filterResults(
		    window.innerHeight ? window.innerHeight : 0,
		    document.documentElement ? document.documentElement.clientHeight : 0,
		    document.body ? document.body.clientHeight : 0
	    );
    },

    //Obtiene la medida desde el lado izquierdo hasta la posición del scroll horizontal
    GetScrollLeft: function() {
        return this.f_filterResults(
		    window.pageXOffset ? window.pageXOffset : 0,
		    document.documentElement ? document.documentElement.scrollLeft : 0,
		    document.body ? document.body.scrollLeft : 0
	    );
    },

    //Obtiene la medida desde arriba hasta la posición del scroll vertical
    GetScrollTop: function() {
        return this.f_filterResults(
		    window.pageYOffset ? window.pageYOffset : 0,
		    document.documentElement ? document.documentElement.scrollTop : 0,
		    document.body ? document.body.scrollTop : 0
	    );
    },

    //Obtiene la medida especificada para todos los navegadores
    f_filterResults: function(n_win, n_docel, n_body) {
        var n_result = n_win ? n_win : 0;
        if (n_docel && (!n_result || (n_result > n_docel))) {
            n_result = n_docel;
        }
        return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
    }
};

String.prototype.toSentenceCase = function() {
    var str = "";
    var SentenceBrake = true;
    for (var i = 0; i < this.length; i++) {
        str += SentenceBrake ? this.charAt(i).toUpperCase() : this.charAt(i).toLowerCase();
        SentenceBrake = (SentenceBrake && this.charCodeAt(i) <= 32) || "\r\n.,?:;!".indexOf(this.charAt(i)) != -1;
    }
    return str;
};

function ArrayContains(array, elemento) {
    for (var i = 0; i < array.length; i++) {
        if (array[i] == elemento) {
            return true;
        }
    }
    return false;
};

String.IsNullOrEmpty = function(value) {
    if (value) {
        if (typeof (value) == 'string') {
            if (value.length > 0)
                return false;
        }
    }
    return true;
};

//Comprueba si un objeto tiene la propiedad display a block (true) o none (false)
if (!checkDisplay) var checkDisplay = function(myObj) {
    /*if (!isNullOrUndefined(myObj)) {
        if (myObj.style.display == 'block')
            return true;
    }
    return false;*/
    return (isNullOrUndefined(myObj) || myObj.style.display == 'block');
};

//Comprueba si un objeto existe
if (!isNullOrUndefined) var isNullOrUndefined = function(myObj) {
    return (typeof (myObj) == 'undefined' || myObj == null);
};

//Deshabilita un objeto button
if (!disableButton) var disableButton = function(myObj) {
    if (!isNullOrUndefined(myObj)) {
        myObj.style.opacity = "0.4";
        //Por problemas con ClearType, en IE se obvia la opacidad
        /*myObj.style.filter = "alpha(opacity=40)";*/
        myObj.disabled = true;
        myObj.style.cursor = "default";
    }
};

//Habilita un objeto button
if (!enableButton) var enableButton = function(myObj) {
    if (!isNullOrUndefined(myObj)) {
        myObj.style.opacity = "1";
        //Por problemas con ClearType, en IE se obvia la opacidad
        /*myObj.style.filter = "alpha(opacity=100)";*/
        myObj.disabled = false;
        myObj.style.cursor = "pointer";
    }
}; 

//Clona un objeto
function clone(obj) {
    if (obj == null || typeof (obj) != 'object')
        return obj;

    var temp = new obj.constructor(); // changed (twice)
    for (var key in obj)
        temp[key] = clone(obj[key]);

    return temp;
};

//Convierte una cadena en un valor Boolean.
//El valor por defecto es false
function stringToBool(str) {
    if (!String.IsNullOrEmpty(str)) {
        if (str.toLowerCase() == "true")
            return true;
        else
            return false;
    }
    else
        return false;
};

function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
};

//Creo el objeto JSON si no existe
if (!JSON) var JSON = {};
//Convierte un objeto JSON en una cadena
JSON.stringify = function(obj) {

    var t = typeof (obj);
    if (t != "object" || obj === null) {

        // simple data type
        if (t == "string") obj = '"' + obj + '"';
        return String(obj);

    }
    else {

        // recurse array or object
        var n, v, json = [], arr = (obj && obj.constructor == Array);

        for (n in obj) {
            v = obj[n]; t = typeof (v);

            if (t == "string") {
                v = '"' + v + '"';
                json.push((arr ? "" : '"' + n + '":') + String(v));
            }
            else if (t == "object" && v !== null) {
                v = JSON.stringify(v);
                json.push((arr ? "" : '"' + n + '":') + String(v));
            }

        }
        return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
    }
};


//Se redefinen los alerts
/*if (document.getElementById) {
    window.alert = function(txt) {
        OpenCustomAlert(txt);
    }
}

function OpenCustomAlert(txt) {    
    
    //Establezco el ancho y alto de la máscara
    $("modalMask").style.width = document.body.scrollWidth;
    $("modalMask").style.height = document.body.scrollHeight;

    //Establezco el texto del alert
    $("txtModalAlert").innerHTML = txt;
    
    //Muestro la máscara y el alert
    showElement("modalMask");
    showElement("modalAlert");
    
    //Centro el alert en la ventana
    $("modalContainer").style.top = "-" + ($("modalAlert").offsetHeight / 2) + "px";
    $("modalContainer").style.left = "-" + ($("modalAlert").offsetWidth / 2) + "px";

    //Enfoco el botón del alert
    $("btnModalAlert").focus();
};

function CloseCustomAlert() {
    hideElement("modalMask");
    hideElement("modalAlert");
};

window.onresize = function() {
    //Establezco el ancho y alto de la máscara del alert
    if (typeof ($("modalMask")) != "undefined") {
        $("modalMask").style.width = document.body.scrollWidth;
        $("modalMask").style.height = document.body.scrollHeight;
    }
};*/
// NameSpaces para los modulos
if (!Modulos) var Modulos = {};
 
if (!Modulos.Callejero) Modulos.Callejero = {};
if (!Modulos.Callejero.Buscador) Modulos.Callejero.Buscador = {};
if (!Modulos.Callejero.Buscador) Modulos.Callejero.MostrarResultado = {};


if (!Modulos.Hoteles) Modulos.Hoteles = {};
if (!Modulos.Hoteles.MostrarResultado) Modulos.Hoteles.MostrarResultado = {};
if (!Modulos.Hoteles.FichaHotel) Modulos.Hoteles.FichaHotel = {};
if (!Modulos.Hoteles.MigasPan) Modulos.Hoteles.MigasPan = {};
if (!Modulos.Hoteles.MasVotados) Modulos.Hoteles.MasVotados = {};

if (!Modulos.Restaurantes) Modulos.Restaurantes = {};
if (!Modulos.Restaurantes.MostrarResultado) Modulos.Restaurantes.MostrarResultado = {};
if (!Modulos.Restaurantes.FichaRestaurante) Modulos.Restaurantes.FichaRestaurante = {};
if (!Modulos.Restaurantes.MigasPan) Modulos.Restaurantes.MigasPan = {};
if (!Modulos.Restaurantes.MasVotados) Modulos.Restaurantes.MasVotados = {};


if (!Modulos.Municipio) Modulos.Municipio = {};
if (!Modulos.Municipio.Buscador) Modulos.Municipio.Buscador = {};
if (!Modulos.Municipio.Buscador.Combos) Modulos.Municipio.Buscador.Combos = {};
if (!Modulos.Municipio.MostrarResultado) Modulos.Municipio.MostrarResultado = {};
if (!Modulos.Municipio.Arte) Modulos.Municipio.Arte = {};
if (!Modulos.Municipio.Etnografia) Modulos.Municipio.Etnografia = {};
if (!Modulos.Municipio.Etnografia.PersonajesIlustres) Modulos.Municipio.Etnografia.PersonajesIlustres = {};
if (!Modulos.Municipio.Etnografia.Gastronomia) Modulos.Municipio.Etnografia.Gastronomia = {};
if (!Modulos.Municipio.Etnografia.Turismo) Modulos.Municipio.Etnografia.Turismo = {};
if (!Modulos.Municipio.Etnografia.Artesania) Modulos.Municipio.Etnografia.Artesania = {};
if (!Modulos.Municipio.Etnografia.FiestasTradiciones) Modulos.Municipio.Etnografia.FiestasTradiciones = {};
if (!Modulos.Municipio.Fiestas) Modulos.Municipio.Fiestas = {};
if (!Modulos.Municipio.Menu) Modulos.Municipio.Menu = {};
if (!Modulos.Municipio.Mapa) Modulos.Municipio.Mapa = {};
if (!Modulos.Municipio.DatosResumen) Modulos.Municipio.DatosResumen = {};
if (!Modulos.Municipio.Geografia) Modulos.Municipio.Geografia = {};
if (!Modulos.Municipio.Geografia.Climatologia) Modulos.Municipio.Geografia.Climatologia = {};
if (!Modulos.Municipio.Geografia.GeografiaFisica) Modulos.Municipio.Geografia.GeografiaFisica = {};
if (!Modulos.Municipio.Geografia.GeografiaGeneral) Modulos.Municipio.Geografia.GeografiaGeneral = {};
if (!Modulos.Municipio.Geografia.SectoresEconomicos) Modulos.Municipio.Geografia.SectoresEconomicos = {};
if (!Modulos.Municipio.Geografia.Geologia) Modulos.Municipio.Geografia.Geologia = {};
if (!Modulos.Municipio.Geografia.RecursosHidricos) Modulos.Municipio.Geografia.RecursosHidricos = {};
if (!Modulos.Municipio.Geografia.PaisajeHabitats) Modulos.Municipio.Geografia.PaisajeHabitats = {};
if (!Modulos.Municipio.Geografia.FloraFauna) Modulos.Municipio.Geografia.FloraFauna = {};
if (!Modulos.Municipio.Geografia.Poblacion) Modulos.Municipio.Geografia.Poblacion = {};
if (!Modulos.Municipio.Geografia.NucleosPoblacion) Modulos.Municipio.Geografia.NucleosPoblacion = {};
if (!Modulos.Municipio.Historia) Modulos.Municipio.Historia = {};
if (!Modulos.Municipio.Historia.ArqueologiaAntiguedad) Modulos.Municipio.Historia.ArqueologiaAntiguedad = {};
if (!Modulos.Municipio.Historia.EdadContemporanea) Modulos.Municipio.Historia.EdadContemporanea = {};
if (!Modulos.Municipio.Historia.EdadMedia) Modulos.Municipio.Historia.EdadMedia = {};
if (!Modulos.Municipio.Historia.EdadModerna) Modulos.Municipio.Historia.EdadModerna = {};
if (!Modulos.Municipio.Historia.HistoriaGeneral) Modulos.Municipio.Historia.HistoriaGeneral = {};
if (!Modulos.Municipio.Historia.PreHistoria) Modulos.Municipio.Historia.PreHistoria = {};
if (!Modulos.Municipio.Inventario) Modulos.Municipio.Inventario = {};
if (!Modulos.Municipio.Inventario.InventarioArtistico) Modulos.Municipio.Inventario.InventarioArtistico = {};
if (!Modulos.Municipio.Inventario.InventarioMonumental) Modulos.Municipio.Inventario.InventarioMonumental = {};
if (!Modulos.Municipio.Monumentos) Modulos.Municipio.Monumentos = {};
if (!Modulos.Municipio.Imagenes) Modulos.Municipio.Imagenes = {};
if (!Modulos.Municipio.Epigrafes) Modulos.Municipio.Epigrafes = {};
if (!Modulos.Municipio.Hotel) Modulos.Municipio.Hotel = {};
if (!Modulos.Municipio.GuiaCampsa) Modulos.Municipio.GuiaCampsa = {};
if (!Modulos.Municipio.EspaciosNaturales) Modulos.Municipio.EspaciosNaturales = {};
if (!Modulos.Municipio.MigasPan) Modulos.Municipio.MigasPan = {};

if (!Modulos.Participacion) Modulos.Participacion = {};
if (!Modulos.Participacion.Comentarios) Modulos.Participacion.Comentarios = {};
if (!Modulos.Participacion.Imagenes) Modulos.Participacion.Imagenes = {};
if (!Modulos.Participacion.Correo) Modulos.Participacion.Correo = {};
if (!Modulos.Participacion.Votos) Modulos.Participacion.Votos = {};
if (!Modulos.Participacion.MigasPan) Modulos.Participacion.MigasPan = {};

if (!Modulos.Reportajes) Modulos.Reportajes = {};
if (!Modulos.Reportajes.Relacionados) Modulos.Reportajes.Relacionados = {};
if (!Modulos.Reportajes.MigasPan) Modulos.Reportajes.MigasPan = {};

if (!Modulos.Tiempo) Modulos.Tiempo = {};

if (!Modulos.Trafico) Modulos.Trafico = {};

if (!Modulos.Favoritos) Modulos.Favoritos = {};
if (!Modulos.Favoritos.Hoteles) Modulos.Favoritos.Hoteles = {};
if (!Modulos.Favoritos.Restaurantes) Modulos.Favoritos.Restaurantes = {};
if (!Modulos.Favoritos.Mapa) Modulos.Favoritos.Mapa = {};

if (!Modulos.Vinos) Modulos.Vinos = {};
if (!Modulos.Vinos.FichaVino) Modulos.Vinos.FichaVino = {};

if (!Modulos.Playas) Modulos.Playas = {};
if (!Modulos.Playas.MostrarResultado) Modulos.Playas.MostrarResultado = {};

// Configuracion de los Modulos existentes
var _grModules = [];

_grModules['Callejero.Buscador'] = "/modulos/callejeros/buscador/default.aspx";
_grModules['Callejero.MostrarResultado'] = "/modulos/callejeros/MostrarResultado/default.aspx";

_grModules['Hoteles.MostrarResultado'] = "/modulos/Hoteles/MostrarResultado/default.aspx";
_grModules['Hoteles.FichaHotel'] = "/modulos/Hoteles/Ficha/default.aspx";
_grModules['Hoteles.MigasPan'] = "/modulos/Hoteles/MigasPan/default.aspx";
_grModules['Hoteles.MasVotados'] = "/modulos/Hoteles/MasVotados/default.aspx";

_grModules['Restaurantes.MostrarResultado'] = "/modulos/Restaurantes/Listado/default.aspx";
_grModules['Restaurantes.FichaRestaurante'] = "/modulos/Restaurantes/Ficha/default.aspx";
_grModules['Restaurantes.MigasPan'] = "/modulos/Restaurantes/MigasPan/default.aspx";
_grModules['Restaurantes.MasVotados'] = "/modulos/Restaurantes/MasVotados/default.aspx";

_grModules['Municipio.MostrarResultado'] = "/modulos/municipio/MostrarResultado/default.aspx";
_grModules['Municipio.Buscador.Combos'] = "/modulos/municipio/Buscador/Combos/default.aspx";
_grModules['Municipio.Geografia.Climatologia'] = "/modulos/municipio/Geografia/Climatologia/default.aspx";
_grModules['Municipio.Geografia.GeografiaFisica'] = "/modulos/municipio/Geografia/GeografiaFisica/default.aspx";
_grModules['Municipio.Geografia.GeografiaGeneral'] = "/modulos/municipio/Geografia/GeografiaGeneral/default.aspx";
_grModules['Municipio.Geografia.SectoresEconomicos'] = "/modulos/municipio/Geografia/SectoresEconomicos/default.aspx";
_grModules['Municipio.Geografia.Geologia'] = "/modulos/municipio/Geografia/Geologia/default.aspx";
_grModules['Municipio.Geografia.RecursosHidricos'] = "/modulos/municipio/Geografia/RecursosHidricos/default.aspx";
_grModules['Municipio.Geografia.PaisajeHabitats'] = "/modulos/municipio/Geografia/PaisajeHabitats/default.aspx";
_grModules['Municipio.Geografia.FloraFauna'] = "/modulos/municipio/Geografia/FloraFauna/default.aspx";
_grModules['Municipio.Geografia.Poblacion'] = "/modulos/municipio/Geografia/Poblacion/default.aspx";
_grModules['Municipio.Geografia.NucleosPoblacion'] = "/modulos/municipio/Geografia/NucleosPoblacion/default.aspx";
_grModules['Municipio.Inventario.InventarioArtistico'] = "/modulos/municipio/Inventario/InventarioArtistico/default.aspx";
_grModules['Municipio.Inventario.InventarioMonumental'] = "/modulos/municipio/Inventario/InventarioMonumental/default.aspx";
_grModules['Municipio.Historia.EdadContemporanea'] = "/modulos/municipio/Historia/EdadContemporanea/default.aspx";
_grModules['Municipio.Historia.ArqueologiaAntiguedad'] = "/modulos/municipio/Historia/ArqueologiaAntiguedad/default.aspx";
_grModules['Municipio.Historia.EdadMedia'] = "/modulos/municipio/Historia/EdadMedia/default.aspx";
_grModules['Municipio.Historia.EdadModerna'] = "/modulos/municipio/Historia/EdadModerna/default.aspx";
_grModules['Municipio.Historia.HistoriaGeneral'] = "/modulos/municipio/Historia/HistoriaGeneral/default.aspx";
_grModules['Municipio.Historia.PreHistoria'] = "/modulos/municipio/Historia/PreHistoria/default.aspx";
_grModules['Municipio.Arte'] = "/modulos/municipio/Arte/default.aspx";
_grModules['Municipio.Etnografia'] = "/modulos/municipio/Etnografia/default.aspx";
_grModules['Municipio.Etnografia.PersonajesIlustres'] = "/modulos/municipio/Etnografia/PersonajesIlustres/default.aspx";
_grModules['Municipio.Etnografia.Gastronomia'] = "/modulos/municipio/Etnografia/Gastronomia/default.aspx";
_grModules['Municipio.Etnografia.Turismo'] = "/modulos/municipio/Etnografia/Turismo/default.aspx";
_grModules['Municipio.Etnografia.Artesania'] = "/modulos/municipio/Etnografia/Artesania/default.aspx";
_grModules['Municipio.Etnografia.FiestasTradiciones'] = "/modulos/municipio/Etnografia/FiestasTradiciones/default.aspx";
_grModules['Municipio.Fiestas'] = "/modulos/municipio/Fiestas/default.aspx";
_grModules['Municipio.Monumentos'] = "/modulos/municipio/Monumentos/default.aspx";
_grModules['Municipio.Imagenes'] = "/modulos/municipio/Imagenes/default.aspx";
_grModules['Municipio.Hotel'] = "/modulos/municipio/Hotel/default.aspx";
_grModules['Municipio.GuiaCampsa'] = "/modulos/municipio/GuiaCampsa/default.aspx";
_grModules['Municipio.Epigrafes'] = "/modulos/municipio/Epigrafes/default.aspx";
_grModules['Municipio.Menu'] = "/modulos/municipio/Menu/default.aspx";
_grModules['Municipio.Mapa'] = "/modulos/municipio/Mapa/default.aspx";
_grModules['Municipio.DatosResumen'] = "/modulos/municipio/DatosResumen/default.aspx";
_grModules['Municipio.EspaciosNaturales'] = "/modulos/municipio/EspaciosNaturales/default.aspx";
_grModules['Municipio.MigasPan'] = "/modulos/municipio/MigasPan/default.aspx";

_grModules['Participacion.Comentarios'] = "/modulos/Participacion/Comentarios/default.aspx";
_grModules['Participacion.Imagenes'] = "/modulos/Participacion/Imagenes/default.aspx";
_grModules['Participacion.Correo'] = "/modulos/Participacion/Correo/default.aspx";
_grModules['Participacion.Votos'] = "/modulos/Participacion/Votos/default.aspx";
_grModules['Participacion.MigasPan'] = "/modulos/Participacion/MigasPan/default.aspx";

_grModules['Reportajes.Relacionados'] = "/modulos/Reportajes/Relacionados/default.aspx";
_grModules['Reportajes.MostrarResultado'] = "/modulos/Reportajes/Listado/default.aspx";
_grModules['Reportajes.MigasPan'] = "/modulos/Reportajes/MigasPan/default.aspx";

_grModules['Tiempo'] = "/modulos/Tiempo/default.aspx";

_grModules['Trafico'] = "/modulos/Trafico/default.aspx";

_grModules['Favoritos'] = "/modulos/Favoritos/Listado/default.aspx";
_grModules['Favoritos.Hoteles'] = "/modulos/Favoritos/Hoteles/default.aspx";
_grModules['Favoritos.Restaurantes'] = "/modulos/Favoritos/Restaurantes/default.aspx";
_grModules['Favoritos.Mapa'] = "/modulos/Favoritos/Mapa/default.aspx";

_grModules['Vinos.FichaVino'] = "/modulos/Vinos/Ficha/default.aspx";

_grModules['Playas.MostrarResultado'] = "/modulos/Playas/MostrarResultado/default.aspx";

// Clase Modules 
function grModules() {
    this._aModule = [];
}
var modulos = new grModules();


//Método para crear un nuevo Módulo
//  modulo: Nombre del Módulo a cargar
//  id: Nombre de la capa donde se cargará el Módulo
//  Sin retorno
grModules.prototype.createModule = function(modulo, id) {
    var auxModule = new grModule(id);
    if (modulo != "" && modulo != null) {
        auxModule.url = _grModules[modulo];        
    }
    this._aModule[id] = auxModule;
    return auxModule;
};

// Método para obtener un Módulo
//  id: Nombre del Módulo
//  Retorna un objeto de tipo Módulo
grModules.prototype.getModule = function(id) {    
    return this._aModule[id] != undefined ? this._aModule[id] : null;
};

//Clase Módulo
function grModule(id) {

    this.id = id;
    this.top = 0;
    this.left = 0;
    this.width = 0;
    this.height = 0;
    this.language = 1;
    this.url = "";
    this._aDelegate = [];
    this._container = "";
    this.args = new Array();

}

// Método para añadir una llamada CallBack
//  id: Nombre de la llamada CallBack
//  code: Código Javascript que queremos que se ejecute en la llamada
//  Sin retorno
grModule.prototype.addCallBack = function(id, code) {

    if (id != "" && code != "") {
        this._aDelegate[id] = code;
    }
};

// Método para obtener el código asociado al CallBack
//  id: Nombre de la llamada CallBack
//  Retorna el código Javascript asignado
grModule.prototype.getCallBack = function(id) {

    if (id != "") {
        return this._aDelegate[id];
    }
    else {
        return null;
    }
};


// Carga el Módulo 
//  container: Nombre del DIV donde se cargará el Módulo 
//  Sin Retorno
grModule.prototype.load = function(container) {

    if (typeof container != 'undefined') {
        this._container = container;
    }

    //Mostramos la imagen de carga
    if (typeof (DivCarga) != "undefined")
        DivCarga.Mostrar();

    if (!document.getElementById(container)) {
        var tag = document.createElement('div');
        tag.id = this.id;
        tag.style.cssText = "top:" + this.top + "px;left:" + this.left + "px;width:" + this.width + "px;height:" + this.height + "px;position:absolute;margin:0px auto 0 auto; padding 0px; ";
        var imagen = document.createElement('img');
        imagen.src = "/comunes/img/ajax-loader.gif";
        tag.appendChild(imagen);
        $(this._container).appendChild(tag);
    }
    
    //Llama al módulo
    this.url = this.url + "?id=" + this.id + "&top=" + this.top + "&left=" + this.left + "&width=" + this.width + "&height=" + this.height + "&language=" + this.language + "&args=" + this.args;
    var script = document.createElement('script');
    script.setAttribute('src', this.url + Math.random());
    script.setAttribute('type', 'text/javascript');
    document.documentElement.firstChild.appendChild(script);
};

// Crea el Div con el nombre del ID
//  url: Ruta de la página que hará la llamada Ajax
//  Sin Retorno
grModule.prototype.startModule = function(url) {
   
    try {
        if (!$(this.id)) {
            var tag = document.createElement("DIV");
            tag.id = this.id;
            tag.style.cssText = "top:" + this.top + "px;left:" + this.left + "px;width:" + this.width + "px;height:" + this.height + "px;position:absolute;margin:0px auto 0 auto; padding:0px; ";

            if (typeof this._container == 'undefined') {
                document.body.appendChild(tag);
            }
            else {
                $(this._container).appendChild(tag);
            }
        }


        if (typeof this.url != 'undefined') {
            if (url.indexOf('?') != -1) {
                $(this.id).innerHTML = grAjax.getUrl(url + "&id=" + this.id);
            }
            else {
                $(this.id).innerHTML = grAjax.getUrl(url + "?id=" + this.id);
            }
        }

    }
    finally {
        //Ocultamos la imagen de carga
        if (typeof (DivCarga) != "undefined")
            DivCarga.Ocultar();
    }
};
if (!GuiaRepsol) var GuiaRepsol = {};
if (!GuiaRepsol.Contadores) GuiaRepsol.Contadores = {};


 function nielsen(cid, contentgroup, url, node) {
    this.CI = cid;
    this.CG = contentgroup;
    this.SI = url;
    this.DN = "//" + node + ".imrworldwide.com/";
    this.RP = obtenerURL("");
}

nielsen.prototype.send = function(s) {
if (document.getElementById('contNielsen') != null)
    document.getElementById('contNielsen').innerHTML = '<img src="' + this.DN + "cgi-bin/m?ci=" + this.CI + "&cg=" + this.CG + "&si=" + this.SI + "." + s + "&rp=" + this.RP + "&rnd=" + (new Date()).getTime() + '" width="1" height="1"/>';
};
 
var nielsenTrack = new nielsen("es-repsol", "0", "guiarepsol", "secure-uk");

function _nnEventTrack(_nnClickURL) {
    var _nnCI = "es-repsol";
    var _nnCG = "0";
    var _nnCC = "uk"; 
    var _nnLP = location.protocol.indexOf('https') > -1 ? 'https:' : 'http:';
    var _nnRP = escape(window.location);
    var _nnND = _nnLP + '//secure-' + _nnCC + '.imrworldwide.com/';
    var _nnPixel = new Image(1, 1);
    var _nnParams = "rnd=" + (new Date()).getTime() + "&ci=" + _nnCI + "&cg=" + _nnCG;
    _nnParams += "&si=" + escape(_nnClickURL) + "&rp=" + _nnRP;
    _nnPixel.src = _nnND + "cgi-bin/m?" + _nnParams;
}

function obtenerURL(accion) {
    var url = document.location.protocol;
    var posicion = document.location.pathname.indexOf(".aspx");
    var pagina = document.location.pathname.substring(0, posicion);
    url = url + pagina + "/" + accion;
    return url;
}

function gcCounter() {
    
    //PROPIEDADES
    //Contadores validos
    this._aValidTA = new Array();
    this._aValidTA[1] = true;
    this._aValidTA[2] = true;
    this._aValidTA[3] = true;

    this._aValidV2 = new Array();
    this._aValidV2[10] = true;
    this._aValidV2[20] = true;
    this._aValidV2[14] = true;
    this._aValidV2[15] = true;
    this._aValidV2[17] = true;
    this._aValidV2[1] = true;
    this._aValidV2[2] = true;
    this._aValidV2[3] = true;
    this._aValidV2[4] = true;
    this._aValidV2[5] = true;
    this._aValidV2[6] = true;
    this._aValidV2[26] = true;
    this._aValidV2[9] = true;
    this._aValidV2[28] = true;
    this._aValidV2[11] = true;
    this._aValidV2[12] = true;
    this._aValidV2[55] = true;
    this._aValidV2[29] = true;
    this._aValidV2[56] = true;
    this._aValidV2[30] = true;
    this._aValidV2[19] = true;
    this._aValidV2[31] = true;
    this._aValidV2[32] = true;
    this._aValidV2[52] = true;
    this._aValidV2[53] = true;
    this._aValidV2[54] = true;
    this._aValidV2[57] = true;
    this._aValidV2[58] = true;
    this._aValidV2[59] = true;
    this._aValidV2[60] = true;
    this._aValidV2[61] = true;
    this._aValidV2[62] = true;
    this._aValidV2[63] = true;
    this._aValidV2[64] = true;
    this._aValidV2[65] = true;
    this._aValidV2[66] = true;
    this._aValidV2[67] = true;
    this._aValidV2[68] = true;
    this._aValidV2[69] = true;
    this._aValidV2[70] = true;

    //Almacena lo que se desea contar
    this._aCounterV2 = new Array();
    this._aCounterTA = new Array();

    this._pathCounter = "/Comunes/Contadores/GrabaContadores.aspx";

    //METODOS PUBLICOS
    //Añade el contador
    this.addCounterV2 = addCounterV2;
    this.addCounterTA = addCounterTA;
    this.addCounterTerceros = addCounterTerceros;
    
    
    //manda contar
    this.count = count;

    //METODOS PRIVADOS
    this._isValidCounterV2 = _isValidCounterV2;
    this._isValidCounterTA = _isValidCounterTA;
}


//FRAN.
//08/06/2009
//Modificaciones para contadores de Terceros

function addCounterTerceros(idOperacion, idCliente) {

    var url = "http://" + window.location.host + "/Comunes/Contadores/GrabarContadoresTerceros.aspx?idOperacion=" + idOperacion + "&idCliente=" + idCliente + "&math=" + Math.random();
    
    //Realizo la llamada síncrona
    HttpRequest(url, "", null, "TXT", "GET", true, null, null, true);
}


//METODOS PUBLICOS
//-----------------------------------------------------------
//Añadir contador V2
function addCounterV2(IDOperation) {
    if (this._isValidCounterV2(IDOperation)) {
        this._aCounterV2.push(IDOperation);
    }
}

//Añadir contador TA
function addCounterTA(IDOperation) {
    if (this._isValidCounterTA(IDOperation)) {
        this._aCounterTA.push(IDOperation);
    }
}

function count() {
    try {
        var primeraLlamada = true;
        var cultura = GuiaRepsol.Contadores.GetCultura();
        //Variable que indica si se deben realizar llamadas a Nielsen y Nedstat
        var contarNielsen = true;
        
        auxURL = this._pathCounter;
        auxURL += "?gr=";
        
        //Compruebo si se deben realizar llamadas a Nielsen y Nedstat
        for (_ii = 0; _ii < this._aCounterV2.length; _ii++) {
            if (this._aCounterV2[_ii] == '10')
                contarNielsen = false;
        }
        for (_ii = 0; _ii < this._aCounterV2.length; _ii++) {
            if (this._aCounterV2[_ii] != '10') {
                auxURL += this._aCounterV2[_ii];

                //Compruebo si ya se ha realizado alguna llamada a Nielsen y Nedstat
                if (primeraLlamada) {
                    //Compruebo si se deben realizar llamadas a Nielsen y Nedstat
                    if (contarNielsen) {
                        //Compruebo si ha actuado sobre el mapa
                        if ((this._aCounterV2[_ii] == '14') || (this._aCounterV2[_ii] == '15') || (this._aCounterV2[_ii] == '17') || (this._aCounterV2[_ii] == '60') || (this._aCounterV2[_ii] == '9')) {
                            //Se realiza la primera llamada a Nielsen y Nedtsat
                            primeraLlamada = false;
                            //Llamo al contador de Nedstat
                            if(typeof(sitestat) != "undefined")
                                sitestat("http://es.sitestat.com/repsolypf/guiacampsa/s?guiarepsol." + cultura + ".mapasrutas.ruta.mapa");
       
                            //Llamo al contador de Nielsen
                            nielsenTrack.send("mapasrutas.Mapa");

                        }
                        //Compruebo si ha pedido una ruta
                        else if (this._aCounterV2[_ii] == '1') {
                            //Se realiza la primera llamada a Nielsen y Nedtsat
                            primeraLlamada = false;
                            //Llamo al contador de Nedstat
                            if (typeof (sitestat) != "undefined")
                                sitestat("http://es.sitestat.com/repsolypf/guiacampsa/s?guiarepsol." + cultura + ".mapasrutas.ruta.mapa");
                            //Llamo al contador de Nielsen
                            nielsenTrack.send("mapasrutas.Mapa");
                        }
                    }
                }
                if (_ii < (this._aCounterV2.length - 1)) {
                    auxURL += "*";
                }
            }
        }
        auxURL += "&ta=";
        for (_ii = 0; _ii < this._aCounterTA.length; _ii++) {
            auxURL += this._aCounterTA[_ii];

            if (_ii < (this._aCounterTA.length - 1)) {
                auxURL += "*";
            }
        }

        this._aCounterV2.length = 0;
        this._aCounterTA.length = 0;

        auxURL += "&math=" + Math.random();

        //Realizo la llamada síncrona
        HttpRequest(auxURL, "", null, "TXT", "GET", true, null, null, true);



    }
    catch (error) {

    }
}

//METODOS PRIVADOS
//-----------------------------------------------------------
//Comprueba si el contador que se desea guardar existe
function _isValidCounterV2(IDOperation) {
    returnValue = false;

    try {
        if (IDOperation > 0) {
            if (this._aValidV2[IDOperation]) {
                returnValue = true;
            }
        }

        return returnValue;
    }
    catch (error) {
        return returnValue;
    }
}

//Comprueba si el contador que se desea guardar existe
function _isValidCounterTA (IDOperation) {
    returnValue = false;

    try {
        if (IDOperation != "" && parseInt(IDOperation) > 0) {
            if (this._aValidTA[IDOperation]) {
                returnValue = true;
            }
        }

        return returnValue;
    }
    catch (error) {
        return returnValue;
    }
}

//Declaracion del objeto de contadores general
var objCounter = new gcCounter();

//Función para contabilizar los clicks internos (clickin)
GuiaRepsol.Contadores.ns_onclick = function(a, url, name, type, winopt) {
    var ns_l = "http://es.sitestat.com/repsolypf/guiacampsa/s?";
    ns_l += name;
    ns_l += '&ns_type=' + type + '&ns_action=view';
    ns_l += '&ns__t=' + (new Date()).getTime();
    if (!url) {
        url = a.href;
    }
    var ns_0 = document.referrer;
    if (ns_0.lastIndexOf('/') == ns_0.length - 1) {
        ns_0 = ns_0.substring(ns_0.lastIndexOf('/'), 0);
    }
    if (ns_0.length > 0) {
        ns_l += '&amp;ns_referrer=' + escape(ns_0);
    }
    winopt = winopt || "";
    var target = (a && a.target && a.target != "") ? (a.target.substring(0, 1) == "_") ? a.target.substring(1) : a.target : "self";
    var ns_i = new Image();
    if (target && url) {
        if (window[target]) {
            window.ns_softclick_timer = function(target, url) {
                return function() {
                    ns_i.onload = ns_i.onerror = function() {
                        return;
                    };
                    window[((window[target]) ? target : "self")].location.href = url;
                };
            }
            (target, url);
            window.setTimeout('ns_softclick_timer()', 5000);
            ns_i.onload = ns_i.onerror = window.ns_softclick_timer;
        }
        else {
            window.open(url, target, winopt);
        }
    }
    ns_i.src = ns_l;
    return false;
};

//Devuelve el texto del idioma pasado por parámetro. Si no lo encuentra devuelve el de por defecto, es_es
GuiaRepsol.Contadores.GetCultura = function() {
    var culture = "";

    if (typeof (idIdioma) == "undefined") {
        culture = "es_es";
    }
    else {
        switch (idIdioma) {
            case "1":
                culture = "es_es";
                break;
            case "2":
                culture = "es_en";
                break;
            case "7":
                culture = "es_gl";
                break;
            case "8":
                culture = "es_eu";
                break;
            case "9":
                culture = "es_ca";
                break;
            default:
                culture = "es_es";
                break;
        }

    }
    return culture;

};

/*Realiza una llamada a los contadores de clicking
Param "area": el área en el que nos encontramos. Por ejemplo "informe_ruta"
Param "counterName": el nombre del contador. Por ejemplo "estaciones_cercanas.ficha"*/
GuiaRepsol.Contadores.Clicking = function(area, counterName) {
    try {
        var culture = "es_es";
        try {
            culture = GuiaRepsol.Contadores.GetCultura();
        }
        catch (e) {
        }

        counterName = "gr." + culture + "." + area + "." + counterName;

        if (GuiaRepsol.Contadores.ns_onclick) {
            GuiaRepsol.Contadores.ns_onclick('', '', counterName, 'clickin');
        }
    }
    catch (e) {
    }
};/**
* DD_roundies, this adds rounded-corner CSS in standard browsers and VML sublayers in IE that accomplish a similar appearance when comparing said browsers.
* Author: Drew Diller
* Email: drew.diller@gmail.com
* URL: http://www.dillerdesign.com/experiment/DD_roundies/
* Version: 0.0.2a
* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_roundies/#license
*
* Usage:
* DD_roundies.addRule('#doc .container', '10px 5px'); // selector and multiple radii
* DD_roundies.addRule('.box', 5, true); // selector, radius, and optional addition of border-radius code for standard browsers.
* 
* Just want the PNG fixing effect for IE6, and don't want to also use the DD_belatedPNG library?  Don't give any additional arguments after the CSS selector.
* DD_roundies.addRule('.your .example img');
**/

var DD_roundies = {

    ns: 'DD_roundies',

    IE6: false,
    IE7: false,
    IE8: false,
    IEversion: function() {
        if (document.documentMode != 8 && document.namespaces && !document.namespaces[this.ns]) {
            this.IE6 = true;
            this.IE7 = true;
        }
        else if (document.documentMode == 8) {
            this.IE8 = true;
        }
    },
    querySelector: document.querySelectorAll,
    selectorsToProcess: [],
    imgSize: {},

    createVmlNameSpace: function() { /* enable VML */
        if (this.IE6 || this.IE7) {
            document.namespaces.add(this.ns, 'urn:schemas-microsoft-com:vml');
        }
        if (this.IE8) {
            document.writeln('<?import namespace="' + this.ns + '" implementation="#default#VML" ?>');
        }
    },

    createVmlStyleSheet: function() { /* style VML, enable behaviors */
        /*
        Just in case lots of other developers have added
        lots of other stylesheets using document.createStyleSheet
        and hit the 31-limit mark, let's not use that method!
        further reading: http://msdn.microsoft.com/en-us/library/ms531194(VS.85).aspx
        */
        var style = document.createElement('style');
        document.documentElement.firstChild.insertBefore(style, document.documentElement.firstChild.firstChild);
        if (style.styleSheet) { /* IE */
            try {
                var styleSheet = style.styleSheet;
                styleSheet.addRule(this.ns + '\\:*', '{behavior:url(#default#VML)}');
                this.styleSheet = styleSheet;
            } catch (err) { }
        }
        else {
            this.styleSheet = style;
        }
    },

    /**
    * Method to use from afar - refer to it whenever.
    * Example for IE only: DD_roundies.addRule('div.boxy_box', '10px 5px');
    * Example for IE, Firefox, and WebKit: DD_roundies.addRule('div.boxy_box', '10px 5px', true);
    * @param {String} selector - REQUIRED - a CSS selector, such as '#doc .container'
    * @param {Integer} radius - REQUIRED - the desired radius for the box corners
    * @param {Boolean} standards - OPTIONAL - true if you also wish to output -moz-border-radius/-webkit-border-radius/border-radius declarations
    **/
    addRule: function(selector, rad, standards) {
        if (typeof rad == 'undefined' || rad === null) {
            rad = 0;
        }
        if (rad.constructor.toString().search('Array') == -1) {
            rad = rad.toString().replace(/[^0-9 ]/g, '').split(' ');
        }
        for (var i = 0; i < 4; i++) {
            rad[i] = (!rad[i] && rad[i] !== 0) ? rad[Math.max((i - 2), 0)] : rad[i];
        }
        if (this.styleSheet) {
            if (this.styleSheet.addRule) { /* IE */
                var selectors = selector.split(','); /* multiple selectors supported, no need for multiple calls to this anymore */
                for (var i = 0; i < selectors.length; i++) {
                    this.styleSheet.addRule(selectors[i], 'behavior:expression(DD_roundies.roundify.call(this, [' + rad.join(',') + ']))'); /* seems to execute the function without adding it to the stylesheet - interesting... */
                }
            }
            else if (standards) {
                var moz_implementation = rad.join('px ') + 'px';
                this.styleSheet.appendChild(document.createTextNode(selector + ' {border-radius:' + moz_implementation + '; -moz-border-radius:' + moz_implementation + ';}'));
                this.styleSheet.appendChild(document.createTextNode(selector + ' {-webkit-border-top-left-radius:' + rad[0] + 'px ' + rad[0] + 'px; -webkit-border-top-right-radius:' + rad[1] + 'px ' + rad[1] + 'px; -webkit-border-bottom-right-radius:' + rad[2] + 'px ' + rad[2] + 'px; -webkit-border-bottom-left-radius:' + rad[3] + 'px ' + rad[3] + 'px;}'));
            }
        }
        else if (this.IE8) {
            this.selectorsToProcess.push({ 'selector': selector, 'radii': rad });
        }
    },

    readPropertyChanges: function(el) {
        switch (event.propertyName) {
            case 'style.border':
            case 'style.borderWidth':
            case 'style.padding':
                this.applyVML(el);
                break;
            case 'style.borderColor':
                this.vmlStrokeColor(el);
                break;
            case 'style.backgroundColor':
            case 'style.backgroundPosition':
            case 'style.backgroundRepeat':
                this.applyVML(el);
                break;
            case 'style.display':
                el.vmlBox.style.display = (el.style.display == 'none') ? 'none' : 'block';
                break;
            case 'style.filter':
                this.vmlOpacity(el);
                break;
            case 'style.zIndex':
                el.vmlBox.style.zIndex = el.style.zIndex;
                break;
        }
    },

    applyVML: function(el) {
        el.runtimeStyle.cssText = '';
        this.vmlFill(el);
        this.vmlStrokeColor(el);
        this.vmlStrokeWeight(el);
        this.vmlOffsets(el);
        this.vmlPath(el);
        this.nixBorder(el);
        this.vmlOpacity(el);
    },

    vmlOpacity: function(el) {
        if (el.currentStyle.filter.search('lpha') != -1) {
            var trans = el.currentStyle.filter;
            trans = parseInt(trans.substring(trans.lastIndexOf('=') + 1, trans.lastIndexOf(')')), 10) / 100;
            for (var v in el.vml) {
                el.vml[v].filler.opacity = trans;
            }
        }
    },

    vmlFill: function(el) {
        if (!el.currentStyle) {
            return;
        } else {
            var elStyle = el.currentStyle;
        }
        el.runtimeStyle.backgroundColor = '';
        el.runtimeStyle.backgroundImage = '';
        var noColor = (elStyle.backgroundColor == 'transparent');
        var noImg = true;
        if (elStyle.backgroundImage != 'none' || el.isImg) {
            if (!el.isImg) {
                el.vmlBg = elStyle.backgroundImage;
                el.vmlBg = el.vmlBg.substr(5, el.vmlBg.lastIndexOf('")') - 5);
            }
            else {
                el.vmlBg = el.src;
            }
            var lib = this;
            if (!lib.imgSize[el.vmlBg]) { /* determine size of loaded image */
                var img = document.createElement('img');
                img.attachEvent('onload', function() {
                    this.width = this.offsetWidth; /* weird cache-busting requirement! */
                    this.height = this.offsetHeight;
                    lib.vmlOffsets(el);
                });
                img.className = lib.ns + '_sizeFinder';
                img.runtimeStyle.cssText = 'behavior:none; position:absolute; top:-10000px; left:-10000px; border:none;'; /* make sure to set behavior to none to prevent accidental matching of the helper elements! */
                img.src = el.vmlBg;
                img.removeAttribute('width');
                img.removeAttribute('height');
                document.body.insertBefore(img, document.body.firstChild);
                lib.imgSize[el.vmlBg] = img;
            }
            el.vml.image.filler.src = el.vmlBg;
            noImg = false;
        }
        el.vml.image.filled = !noImg;
        el.vml.image.fillcolor = 'none';
        el.vml.color.filled = !noColor;
        el.vml.color.fillcolor = elStyle.backgroundColor;
        el.runtimeStyle.backgroundImage = 'none';
        el.runtimeStyle.backgroundColor = 'transparent';
    },

    vmlStrokeColor: function(el) {
        el.vml.stroke.fillcolor = el.currentStyle.borderColor;
    },

    vmlStrokeWeight: function(el) {
        var borders = ['Top', 'Right', 'Bottom', 'Left'];
        el.bW = {};
        for (var b = 0; b < 4; b++) {
            el.bW[borders[b]] = parseInt(el.currentStyle['border' + borders[b] + 'Width'], 10) || 0;
        }
    },

    vmlOffsets: function(el) {
        var dims = ['Left', 'Top', 'Width', 'Height'];
        for (var d = 0; d < 4; d++) {
            el.dim[dims[d]] = el['offset' + dims[d]];
        }
        var assign = function(obj, topLeft) {
            obj.style.left = (topLeft ? 0 : el.dim.Left) + 'px';
            obj.style.top = (topLeft ? 0 : el.dim.Top) + 'px';
            obj.style.width = el.dim.Width + 'px';
            obj.style.height = el.dim.Height + 'px';
        };
        for (var v in el.vml) {
            var mult = (v == 'image') ? 1 : 2;
            el.vml[v].coordsize = (el.dim.Width * mult) + ', ' + (el.dim.Height * mult);
            assign(el.vml[v], true);
        }
        assign(el.vmlBox, false);

        if (DD_roundies.IE8) {
            el.vml.stroke.style.margin = '-1px';
            if (typeof el.bW == 'undefined') {
                this.vmlStrokeWeight(el);
            }
            el.vml.color.style.margin = (el.bW.Top - 1) + 'px ' + (el.bW.Left - 1) + 'px';
        }
    },

    vmlPath: function(el) {
        var coords = function(direction, w, h, r, aL, aT, mult) {
            var cmd = direction ? ['m', 'qy', 'l', 'qx', 'l', 'qy', 'l', 'qx', 'l'] : ['qx', 'l', 'qy', 'l', 'qx', 'l', 'qy', 'l', 'm']; /* whoa */
            aL *= mult;
            aT *= mult;
            w *= mult;
            h *= mult;
            var R = r.slice(); /* do not affect original array */
            for (var i = 0; i < 4; i++) {
                R[i] *= mult;
                R[i] = Math.min(w / 2, h / 2, R[i]); /* make sure you do not get funky shapes - pick the smallest: half of the width, half of the height, or current value */
            }
            var coords = [
				cmd[0] + Math.floor(0 + aL) + ',' + Math.floor(R[0] + aT),
				cmd[1] + Math.floor(R[0] + aL) + ',' + Math.floor(0 + aT),
				cmd[2] + Math.ceil(w - R[1] + aL) + ',' + Math.floor(0 + aT),
				cmd[3] + Math.ceil(w + aL) + ',' + Math.floor(R[1] + aT),
				cmd[4] + Math.ceil(w + aL) + ',' + Math.ceil(h - R[2] + aT),
				cmd[5] + Math.ceil(w - R[2] + aL) + ',' + Math.ceil(h + aT),
				cmd[6] + Math.floor(R[3] + aL) + ',' + Math.ceil(h + aT),
				cmd[7] + Math.floor(0 + aL) + ',' + Math.ceil(h - R[3] + aT),
				cmd[8] + Math.floor(0 + aL) + ',' + Math.floor(R[0] + aT)
			];
            if (!direction) {
                coords.reverse();
            }
            var path = coords.join('');
            return path;
        };

        if (typeof el.bW == 'undefined') {
            this.vmlStrokeWeight(el);
        }
        var bW = el.bW;
        var rad = el.DD_radii.slice();

        /* determine outer curves */
        var outer = coords(true, el.dim.Width, el.dim.Height, rad, 0, 0, 2);

        /* determine inner curves */
        rad[0] -= Math.max(bW.Left, bW.Top);
        rad[1] -= Math.max(bW.Top, bW.Right);
        rad[2] -= Math.max(bW.Right, bW.Bottom);
        rad[3] -= Math.max(bW.Bottom, bW.Left);
        for (var i = 0; i < 4; i++) {
            rad[i] = Math.max(rad[i], 0);
        }
        var inner = coords(false, el.dim.Width - bW.Left - bW.Right, el.dim.Height - bW.Top - bW.Bottom, rad, bW.Left, bW.Top, 2);
        var image = coords(true, el.dim.Width - bW.Left - bW.Right + 1, el.dim.Height - bW.Top - bW.Bottom + 1, rad, bW.Left, bW.Top, 1);

        /* apply huge path string */
        el.vml.color.path = inner;
        el.vml.image.path = image;
        el.vml.stroke.path = outer + inner;

        this.clipImage(el);
    },

    nixBorder: function(el) {
        var s = el.currentStyle;
        var sides = ['Top', 'Left', 'Right', 'Bottom'];
        for (var i = 0; i < 4; i++) {
            el.runtimeStyle['padding' + sides[i]] = (parseInt(s['padding' + sides[i]], 10) || 0) + (parseInt(s['border' + sides[i] + 'Width'], 10) || 0) + 'px';
        }
        el.runtimeStyle.border = 'none';
    },

    clipImage: function(el) {
        var lib = DD_roundies;
        if (!el.vmlBg || !lib.imgSize[el.vmlBg]) {
            return;
        }
        var thisStyle = el.currentStyle;
        var bg = { 'X': 0, 'Y': 0 };
        var figurePercentage = function(axis, position) {
            var fraction = true;
            switch (position) {
                case 'left':
                case 'top':
                    bg[axis] = 0;
                    break;
                case 'center':
                    bg[axis] = 0.5;
                    break;
                case 'right':
                case 'bottom':
                    bg[axis] = 1;
                    break;
                default:
                    if (position.search('%') != -1) {
                        bg[axis] = parseInt(position, 10) * 0.01;
                    }
                    else {
                        fraction = false;
                    }
            }
            var horz = (axis == 'X');
            bg[axis] = Math.ceil(fraction ? ((el.dim[horz ? 'Width' : 'Height'] - (el.bW[horz ? 'Left' : 'Top'] + el.bW[horz ? 'Right' : 'Bottom'])) * bg[axis]) - (lib.imgSize[el.vmlBg][horz ? 'width' : 'height'] * bg[axis]) : parseInt(position, 10));
            bg[axis] += 1;
        };
        for (var b in bg) {
            figurePercentage(b, thisStyle['backgroundPosition' + b]);
        }
        el.vml.image.filler.position = (bg.X / (el.dim.Width - el.bW.Left - el.bW.Right + 1)) + ',' + (bg.Y / (el.dim.Height - el.bW.Top - el.bW.Bottom + 1));
        var bgR = thisStyle.backgroundRepeat;
        var c = { 'T': 1, 'R': el.dim.Width + 1, 'B': el.dim.Height + 1, 'L': 1 }; /* these are defaults for repeat of any kind */
        var altC = { 'X': { 'b1': 'L', 'b2': 'R', 'd': 'Width' }, 'Y': { 'b1': 'T', 'b2': 'B', 'd': 'Height'} };
        if (bgR != 'repeat') {
            c = { 'T': (bg.Y), 'R': (bg.X + lib.imgSize[el.vmlBg].width), 'B': (bg.Y + lib.imgSize[el.vmlBg].height), 'L': (bg.X) }; /* these are defaults for no-repeat - clips down to the image location */
            if (bgR.search('repeat-') != -1) { /* now let's revert to dC for repeat-x or repeat-y */
                var v = bgR.split('repeat-')[1].toUpperCase();
                c[altC[v].b1] = 1;
                c[altC[v].b2] = el.dim[altC[v].d] + 1;
            }
            if (c.B > el.dim.Height) {
                c.B = el.dim.Height + 1;
            }
        }
        el.vml.image.style.clip = 'rect(' + c.T + 'px ' + c.R + 'px ' + c.B + 'px ' + c.L + 'px)';
    },

    pseudoClass: function(el) {
        var self = this;
        setTimeout(function() { /* would not work as intended without setTimeout */
            self.applyVML(el);
        }, 1);
    },

    reposition: function(el) {
        this.vmlOffsets(el);
        this.vmlPath(el);
    },

    roundify: function(rad) {
        this.style.behavior = 'none';
        if (!this.currentStyle) {
            return;
        }
        else {
            var thisStyle = this.currentStyle;
        }
        var allowed = { BODY: false, TABLE: false, TR: false, TD: false, SELECT: false, OPTION: false, TEXTAREA: false };
        if (allowed[this.nodeName] === false) { /* elements not supported yet */
            return;
        }
        var self = this; /* who knows when you might need a setTimeout */
        var lib = DD_roundies;
        this.DD_radii = rad;
        this.dim = {};

        /* attach handlers */
        var handlers = { resize: 'reposition', move: 'reposition' };
        if (this.nodeName == 'A') {
            var moreForAs = { mouseleave: 'pseudoClass', mouseenter: 'pseudoClass', focus: 'pseudoClass', blur: 'pseudoClass' };
            for (var a in moreForAs) {
                handlers[a] = moreForAs[a];
            }
        }
        for (var h in handlers) {
            this.attachEvent('on' + h, function() {
                lib[handlers[h]](self);
            });
        }
        this.attachEvent('onpropertychange', function() {
            lib.readPropertyChanges(self);
        });

        /* ensure that this elent and its parent is given hasLayout (needed for accurate positioning) */
        var giveLayout = function(el) {
            el.style.zoom = 1;
            if (el.currentStyle.position == 'static') {
                el.style.position = 'relative';
            }
        };
        giveLayout(this.offsetParent);
        giveLayout(this);

        /* create vml elements */
        this.vmlBox = document.createElement('ignore'); /* IE8 really wants to be encased in a wrapper element for the VML to work, and I don't want to disturb getElementsByTagName('div') - open to suggestion on how to do this differently */
        this.vmlBox.runtimeStyle.cssText = 'behavior:none; position:absolute; margin:0; padding:0; border:0; background:none;'; /* super important - if something accidentally matches this (you yourseld did this once, Drew), you'll get infinitely-created elements and a frozen browser! */
        this.vmlBox.style.zIndex = thisStyle.zIndex;
        this.vml = { 'color': true, 'image': true, 'stroke': true };
        for (var v in this.vml) {
            this.vml[v] = document.createElement(lib.ns + ':shape');
            this.vml[v].filler = document.createElement(lib.ns + ':fill');
            this.vml[v].appendChild(this.vml[v].filler);
            this.vml[v].stroked = false;
            this.vml[v].style.position = 'absolute';
            this.vml[v].style.zIndex = thisStyle.zIndex;
            this.vml[v].coordorigin = '1,1';
            this.vmlBox.appendChild(this.vml[v]);
        }
        this.vml.image.fillcolor = 'none';
        this.vml.image.filler.type = 'tile';
        this.parentNode.insertBefore(this.vmlBox, this);

        this.isImg = false;
        if (this.nodeName == 'IMG') {
            this.isImg = true;
            this.style.visibility = 'hidden';
        }

        setTimeout(function() {
            lib.applyVML(self);
        }, 1);
    }

};

try {
    document.execCommand("BackgroundImageCache", false, true);
} catch (err) { }
DD_roundies.IEversion();
DD_roundies.createVmlNameSpace();
DD_roundies.createVmlStyleSheet();

if (DD_roundies.IE8 && document.attachEvent && DD_roundies.querySelector) {
    document.attachEvent('onreadystatechange', function() {
        if (document.readyState == 'complete') {
            var selectors = DD_roundies.selectorsToProcess;
            var length = selectors.length;
            var delayedCall = function(node, radii, index) {
                setTimeout(function() {
                    DD_roundies.roundify.call(node, radii);
                }, index * 100);
            };
            for (var i = 0; i < length; i++) {
                var results = document.querySelectorAll(selectors[i].selector);
                var rLength = results.length;
                for (var r = 0; r < rLength; r++) {
                    if (results[r].nodeName != 'INPUT') { /* IE8 doesn't like to do this to inputs yet */
                        delayedCall(results[r], selectors[i].radii, r);
                    }
                }
            }
        }
    });
};

var arrBusqCross = new Array();
arrBusqCross["1orden"] = "Carretera 1 orden";
arrBusqCross["2orden"] = "Carretera 2 orden";
arrBusqCross["abrir"] = "abrir";
arrBusqCross["abrir_cerrar"] = "Abrir / Cerrar";
arrBusqCross["alertdirecciondestino"] = "Debes seleccionar una direcci\u00F3n destino";
arrBusqCross["alertdireccionorigen"] = "Debes seleccionar una direcci\u00F3n origen";
arrBusqCross["alerterrorgenerico"] = "Existen dos localidades consecutivas iguales";
arrBusqCross["alertlocalidaddestino"] = "Debes seleccionar una localidad destino";
arrBusqCross["alertlocalidadorigen"] = "Debes seleccionar una localidad origen";
arrBusqCross["andorra"] = "Andorra";
arrBusqCross["autopista"] = "Autopista";
arrBusqCross["autovias"] = "Carretera internacional o autov\u00EDas";
arrBusqCross["aventurero"] = "Aventurero";
arrBusqCross["btnCallejero"] = "Callejero";
arrBusqCross["btnEstaciones"] = "Estaciones de servicio";
arrBusqCross["btnHoteles"] = "Hoteles";
arrBusqCross["btnMunicipios"] = "Municipios";
arrBusqCross["btnReportajes"] = "Reportajes";
arrBusqCross["btnRestaurantes"] = "Restaurantes";
arrBusqCross["btnRuta"] = "Calcula tu ruta";
arrBusqCross["bus_anteriores"] = "B\u00FAsquedas anteriores";
arrBusqCross["buscador"] = "Repsol te gu\u00EDa";
arrBusqCross["buscadores"] = "Buscadores";
arrBusqCross["buscar"] = "BUSCAR";
arrBusqCross["BuscarCalle"] = "Ir al callejero";
arrBusqCross["BuscarCarretera"] = "Ir al buscador de carreteras";
arrBusqCross["buscarestaciones"] = "Buscador de estaciones de servicio";
arrBusqCross["calcularuta"] = "Calcula tu ruta";
arrBusqCross["calle"] = "Calle";
arrBusqCross["callejero"] = "Callejero";
arrBusqCross["callenumero"] = "Calle y n\u00FAmero";
arrBusqCross["campovacio"] = "El campo %s0 no puede estar vac\u00EDo...";
arrBusqCross["cancelar"] = "Cancelar";
arrBusqCross["Carretera"] = "Carretera";
arrBusqCross["Carreteras"] = "Carreteras";
arrBusqCross["categoria"] = "Categor\u00EDa";
arrBusqCross["cerrar"] = "cerrar";
arrBusqCross["coche"] = "Coche";
arrBusqCross["codigopostal"] = "C\u00F3digo postal";
arrBusqCross["comollegar"] = "C\u00F3mo llegar";
arrBusqCross["comunidadautonoma"] = "Comunidad Aut\u00F3noma";
arrBusqCross["confvelocidades"] = "Configurar velocidades";
arrBusqCross["consumo"] = "Consumo";
arrBusqCross["cosmopolita"] = "Cosmopolita";
arrBusqCross["denominacion"] = "Denominaci\u00F3n de Origen";
arrBusqCross["desconfiguracion"] = "Otras caracter\u00EDsticas de tu ruta";
arrBusqCross["destino"] = "Destino";
arrBusqCross["direccion"] = "Direccion";
arrBusqCross["domingo"] = "Domingo";
arrBusqCross["espa\u00F1a"] = "Espa\u00F1a";
arrBusqCross["estrella"] = "Estrella";
arrBusqCross["estrellas"] = "Estrellas";
arrBusqCross["evitarincidencias"] = "Evitar incidencias";
arrBusqCross["evitarpeajes"] = "Evitar Peajes";
arrBusqCross["Faltacarretera"] = "Debe introducir una carretera";
arrBusqCross["faltadireccion"] = "Debe introducir una direcci\u00F3n de";
arrBusqCross["faltalocalidad"] = "Debe introducir una localidad de";
arrBusqCross["FaltanParametros"] = "El nombre del Hotel o la Localidad son obligatorios para realizar la busqueda.";
arrBusqCross["FaltanParametrosRes"] = "El nombre del Restaurante o la localidad son obligatorios para realizar la b\u00FAsqueda";
arrBusqCross["familia"] = "Familia";
arrBusqCross["gastronomia"] = "Gastronom\u00EDa";
arrBusqCross["hoteles"] = "Buscador de hoteles";
arrBusqCross["iautopistapref"] = "Por autopista preferente";
arrBusqCross["industrial1"] = "Industrial ligero";
arrBusqCross["industrial2"] = "Industrial pesado";
arrBusqCross["instr_hotel"] = "Introduce el nombre del hotel y/o direcci\u00F3n alrededor de la cual deseas buscarlo.";
arrBusqCross["instr_muni"] = "Introduce el nombre del municipio que deseas encontrar.";
arrBusqCross["instr_rest"] = "Introduce el nombre del restaurante y/o direcci\u00F3n alrededor de la cual deseas buscarlo.";
arrBusqCross["itinerario"] = "Itinerario";
arrBusqCross["joven"] = "Joven";
arrBusqCross["jueves"] = "Jueves";
arrBusqCross["local"] = "Carretera local";
arrBusqCross["localidad"] = "Localidad";
arrBusqCross["localidadespaso"] = "Localidades de paso";
arrBusqCross["lugar"] = "Lugar";
arrBusqCross["lunes"] = "Lunes";
arrBusqCross["martes"] = "Martes";
arrBusqCross["mascorta"] = "M\u00E1s corta";
arrBusqCross["masrapida"] = "M\u00E1s r\u00E1pida";
arrBusqCross["maximizar"] = "Maximizar";
arrBusqCross["mercanciaspeligrosas"] = "Mercancias peligrosas";
arrBusqCross["miercoles"] = "Mi\u00E9rcoles";
arrBusqCross["minimizar"] = "Minimizar";
arrBusqCross["mostrarmas"] = "Mostrar m\u00E1s resultados coincidentes";
arrBusqCross["municipio"] = "Municipio";
arrBusqCross["municipios"] = "Buscador de municipios";
arrBusqCross["nav_rep"] = "Repsol te gu\u00EDa";
arrBusqCross["nodirecciones"] = "No se han encontrado direcciones";
arrBusqCross["noencontradas"] = "No se encontraron resultados con esos criterios de b\u00FAsqueda";
arrBusqCross["nom_hot"] = "Nombre del Hotel";
arrBusqCross["nom_rest"] = "Nombre del Restaurante";
arrBusqCross["nombre"] = "Nombre";
arrBusqCross["nombrehotel"] = "Nombre del hotel";
arrBusqCross["numero"] = "N\u00FAmero";
arrBusqCross["ocultar_configuracion"] = "Ocultar configuraci\u00F3n y opciones";
arrBusqCross["origen"] = "Origen";
arrBusqCross["origydestdist"] = "Origen y destino deben ser distintos";
arrBusqCross["otras_opciones"] = "Otras opciones de b\u00FAsqueda";
arrBusqCross["otros"] = "Otros";
arrBusqCross["pais"] = "Pa\u00EDs";
arrBusqCross["personalizar"] = "Configuraci\u00F3n del c\u00E1lculo de ruta";
arrBusqCross["PK"] = "PK";
arrBusqCross["portugal"] = "Portugal";
arrBusqCross["precio"] = "Precio habitaci\u00F3n";
arrBusqCross["precioHab"] = "Precio habitaci\u00F3n";
arrBusqCross["precioR"] = "Precio";
arrBusqCross["provincia"] = "Provincia";
arrBusqCross["relajado"] = "Relajado";
arrBusqCross["reportajesturisticos"] = "Reportajes Tur\u00EDsticos";
arrBusqCross["rest_recom"] = "Restaurantes recomendados";
arrBusqCross["restaurante"] = "Restaurante";
arrBusqCross["restaurantes"] = "Buscador de restaurantes";
arrBusqCross["restaurantesRec"] = "Restaurantes recomendados";
arrBusqCross["resul_en"] = "Resultados encontrados";
arrBusqCross["resul_noen"] = "No se encontraron coincidencias";
arrBusqCross["sabado"] = "S\u00E1bado";
arrBusqCross["seleccionar"] = "Seleccionar";
arrBusqCross["servicios"] = "Servicios";
arrBusqCross["sol"] = "Sol";
arrBusqCross["sol_rest"] = "Soles del restaurante:";
arrBusqCross["soles"] = "Soles";
arrBusqCross["subTipoCocina"] = "Subtipo de Cocina";
arrBusqCross["tematica"] = "Tem\u00E1tica";
arrBusqCross["tiempo"] = "&nbsp;Tiempo previsto para el";
arrBusqCross["tipoCocina"] = "Tipo de Cocina";
arrBusqCross["tipodevehiculo"] = "Tipo de vehiculo";
arrBusqCross["tiporuta"] = "Tipo de ruta";
arrBusqCross["todas"] = "(todas)";
arrBusqCross["todos"] = "(todos)";
arrBusqCross["turismo"] = "Turismo";
arrBusqCross["ver_configuracion"] = "Ver configuraci\u00F3n y opciones";
arrBusqCross["viernes"] = "Viernes";
