function buscarHandler(e,pagina){
    var k;
    (e.keyCode) ? k=e.keyCode : k=e.which;
    if ( k==13 )
        buscar(pagina);
}

function infoPrivacidad(){
    mostrarMensaje(translate('privacidad','web.info'),'info');
}

function infoLegal(){
    mostrarMensaje(translate('legal','web.info'),'info');
}

function infoBusqueda(){
    mostrarMensaje(translate('info_busqueda','web.busqueda'),'info');
}
function infoVisitasOnlineCentros(){
    mostrarMensaje(translate('info_visitas_online_centros','web'),'info');
}
function infoVisitasOnlineUsuarios(){
    mostrarMensaje(translate('info_visitas_online_usuarios','web'),'info');
}
function infoInstantanea(){
    mostrarMensaje(translate('info_instantanea','web'),'info');
}
function infoFidipides(){
    mostrarMensaje(translate('informacion_fidipides','web'),'info', {'hideOnContentClick': false}); 
}

function buscar(pagina){
    var texto = document.getElementById("buscador_txt").value;
    if ( esVacio(texto)){
        mostrarMensaje(translate('buscar_vacio'),'warning');
        return false;
    }
    if ( texto.length < 3){
        mostrarMensaje(translate('buscar_tres_caracteres'),'warning');
        return false;
    }    
    window.location = pagina+"/"+Base64.encode(texto);
    return false;
}
    
function validarRegistroUsuario(formulario){
    var campos = new Array();
    validarVacio(formulario,campos,"email");
    validarEmail(formulario,campos,"email");    
    validarVacio(formulario,campos,"rcontrasenya");
    validarMinimo(formulario,campos,"rcontrasenya",6);
    validarIgual(formulario,campos,"rcontrasenya","rcontrasenya2","contrasenyas_diferentes");        
    validarPrivacidad(formulario,campos,"aviso_privacidad");    
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");
}


function validarRegistroCentroGlobal(formulario, admin){ 
         
        var campos = new Array();
        validarVacio(formulario,campos,"nombre_centro");    
        if(!admin){
            validarVacio(formulario,campos,"cif");
            validarDNICIF(formulario,campos,"cif");
            validarVacio(formulario,campos,"persona_ctcto_servicio");
            
            validarVacio(formulario,campos,"email_servicio");
            validarEmail(formulario,campos,"email_servicio");
            validarVacio(formulario,campos,"email_centro");
            validarEmail(formulario,campos,"email_centro");
            validarVacio(formulario,campos,"rusuario");
            
            validarLetrasNumeros(formulario,campos,"rusuario");
            validarMinimo(formulario,campos,"rusuario",6);    
            validarVacio(formulario,campos,"rcontrasenya");
            validarMinimo(formulario,campos,"rcontrasenya",6);
            validarIgual(formulario,campos,"rcontrasenya","rcontrasenya2","contrasenyas_diferentes");
            validarPrivacidad(formulario,campos,"aviso_privacidad");
            
            if (document.getElementById("rusuario").value.length>0 && !validarUsuarioDuplicado(document.getElementById("rusuario").value)){                
                mostrarMensaje(translate('usuario_duplicado','alert'),'warning');
                return;
            }    
        }
        
        validarVacio(formulario,campos,"telefono_1");    
        validarNumerico(formulario,campos,"telefono_1");
        validarNumerico(formulario,campos,"telefono_2");
        validarNumerico(formulario,campos,"fax");    
        validarSelectVacio(formulario,campos,"pais");
        validarSelectVacio(formulario,campos,"provincia");
        validarSelectVacio(formulario,campos,"poblacion");    
        return procesarFormulario(formulario, campos, "lineas", "revisar_errores"); 
                      
}

function validarRegistroCentroAdmin(formulario){
    return validarRegistroCentroGlobal(formulario,true);
}

function validarRegistroCentro(formulario){
    return validarRegistroCentroGlobal(formulario,false);
}

function validarActivarCuentaBase(formulario){
    var campos = new Array();
    validarVacio(formulario,campos,"rusuario");
    validarMinimo(formulario,campos,"rusuario",6);    
    validarVacio(formulario,campos,"rcontrasenya");
    validarMinimo(formulario,campos,"rcontrasenya",6);
    validarIgual(formulario,campos,"rcontrasenya","rcontrasenya2","contrasenyas_diferentes");                
    validarPrivacidad(formulario,campos,"aviso_privacidad"); 
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");
}


function validarDatosCentro(formulario){    
    var campos = new Array();
    validarMaximo(formulario,campos,"metakeys", formulario.metakeys.getAttribute('maxlength'));
    validarMaximo(formulario,campos,"texto", formulario.texto.getAttribute('maxlength'));
    validarMaximo(formulario,campos,"metadesc", formulario.metadesc.getAttribute('maxlength'));
    validarExtension(formulario,campos,"logo",new Array('jpeg','jpg','gif','png','bmp'),'formato_imagen');
    validarVacio(formulario,campos,"telefono_1");
    validarNumerico(formulario,campos,"telefono_1");
    validarNumerico(formulario,campos,"telefono_2");
    validarNumerico(formulario,campos,"fax");
    validarVacio(formulario,campos,"email_centro");
    validarEmail(formulario,campos,"email_centro");
    validarVacio(formulario,campos,"persona_ctcto_servicio");
    validarVacio(formulario,campos,"email_servicio");
    validarPrivacidad(formulario,campos,"aviso_privacidad");
    if ( formulario.contrasenya!=null && !esVacio(formulario.contrasenya.value)){        
        validarMinimo(formulario,campos,"rcontrasenya",6);
        validarIgual(formulario,campos,"rcontrasenya","rcontrasenya2","contrasenyas_diferentes");
    }
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");
}
function validarDatosCentroReservaOnline(formulario){    
    var campos = new Array();
    if( !$("#lunes").is(':checked') && !$("#martes").is(':checked') && !$("#miercoles").is(':checked') && !$("#jueves").is(':checked') && !$("#viernes").is(':checked') && !$("#sabado").is(':checked') && !$("#domingo").is(':checked')){
        mostrarMensaje('dias_abierto','warning');
        return;
    } 
    
    var s_desde = document.getElementById("hora_desde");
    var s_hasta = document.getElementById("hora_hasta");
    
    var h_desde = s_desde.options[s_desde.selectedIndex].value;
    var h_hasta = s_hasta.options[s_hasta.selectedIndex].value;
    
    if ( h_desde >= h_hasta ){
        mostrarMensaje(translate('desde_menor_hasta_centro'),'warning');
        return;
    }
    
    validarVacio(formulario,campos,"email_reserva");
    validarEmail(formulario,campos,"email_reserva");
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");
}
 
function validarDatosDoctor(formulario){
    var campos = new Array();
    validarMaximo(formulario,campos,"metakeys", formulario.metakeys.getAttribute('maxlength'));
    validarMaximo(formulario,campos,"texto", formulario.texto.getAttribute('maxlength'));
    validarMaximo(formulario,campos,"metadesc", formulario.metadesc.getAttribute('maxlength'));
    validarExtension(formulario,campos,"foto",new Array('jpeg','jpg','gif','png','bmp'),'formato_imagen');
    validarPrivacidad(formulario,campos,"aviso_privacidad");
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");
}


function validarRecomendarCentro(formulario){
    var campos = new Array();
    validarVacio(formulario,campos,"nombre_remitente");
    validarVacio(formulario,campos,"email_remitente");
    validarEmail(formulario,campos,"email_remitente");
    validarVacio(formulario,campos,"nombre_destinatario");
    validarVacio(formulario,campos,"email_destinatario");
    validarEmail(formulario,campos,"email_destinatario");
    validarMaximo(formulario,campos,"comentarios", formulario.comentarios.getAttribute('maxlength'));
    validarPrivacidad(formulario,campos,"aviso_privacidad");    
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");    
}


function validarRecordar(formulario){    
    var campos = new Array();
    validarVacio(formulario,campos,"email");    
    validarEmail(formulario,campos,"email");    
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");     
}


function validarBajaUsuario(formulario){
    var campos = new Array();
    validarVacio(formulario,campos,"email");    
    validarEmail(formulario,campos,"email");
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");         
}

function validarConfirmarBaja(formulario){
    var campos = new Array();
    validarMaximo(formulario,campos,"comentarios",formulario.comentarios.getAttribute('maxlength'));
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");
}


function validarContactar(formulario){
    var campos = new Array();
    validarVacio(formulario,campos,"nombre");
    validarVacio(formulario,campos,"email");
    validarEmail(formulario,campos,"email");    
    validarSelectVacio(formulario,campos,"representacion");    
    validarVacio(formulario,campos,"poblacion");
    validarMinimo(formulario,campos,"poblacion",3);
    validarVacio(formulario,campos,"telefono");
    validarNumerico(formulario,campos,"telefono",3);    
    validarVacio(formulario,campos,"comentarios");
    validarMinimo(formulario,campos,"comentarios", 20);
    validarMaximo(formulario,campos,"comentarios", formulario.comentarios.getAttribute('maxlength'));
    validarPrivacidad(formulario,campos,"aviso_privacidad");
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");    
}


function validarReservaValoracion(formulario){
    var campos = new Array();
    validarSelectVacio(formulario,campos,"puntuacion");    
    validarMinimo(formulario,campos,"comentarios",10);
    validarMaximo(formulario,campos,"comentarios", formulario.comentarios.getAttribute('maxlength'));    
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");
}


function validarDatosUsuario(formulario){
    var campos = new Array();
    
    if ( formulario.email!=null ){
        validarEmail(formulario,campos,"email");
    }
    
    validarVacio(formulario,campos,"nombre");
    validarVacio(formulario,campos,"apellido_1");
    validarVacio(formulario,campos,"apellido_2");
    validarVacio(formulario,campos,"telefono_1");    
    validarNumerico(formulario,campos,"telefono_1");
    validarNumerico(formulario,campos,"telefono_2");
    //validarSelectVacio(formulario,campos,"pais");
    validarSelectVacio(formulario,campos,"provincia");
    
    if ( formulario.contrasenya!=null && !esVacio(formulario.contrasenya.value)){
        validarVacio(formulario,campos,"rcontrasenya",6);
        validarMinimo(formulario,campos,"rcontrasenya",6);
        validarIgual(formulario,campos,"rcontrasenya","rcontrasenya2","contrasenyas_diferentes");
    }
    
    if ( formulario.aviso_privacidad!=null )
        validarPrivacidad(formulario,campos,"aviso_privacidad");
        
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");
}


function validarReservaConfirmar(formulario){
    var campos = new Array();
    validarMaximo(formulario,campos,"comentarios", formulario.comentarios.getAttribute('maxlength'));    
    return procesarFormulario(formulario, campos, "lineas", "revisar_errores");
}



/**
 * Parámetro 4 boton a ocultar 
 */
function cargarContenidoAJAX(urlConsulta, idDivDestino, idDivCargando){
    var http = getHTTPObject();
    http.open("POST", urlConsulta, true );
    
    if ( idDivDestino!=null ){
        var divDestino = document.getElementById(idDivDestino);
        ocultarDiv(divDestino);
    }
    if ( idDivCargando!=null ){
        var divCargando = document.getElementById(idDivCargando);
        mostrarDiv(divCargando);
    }
    
    var divBoton = null;
    if ( arguments.length==4 ){
        divBoton = document.getElementById(arguments[3]);
    }
    
    http.onreadystatechange = function() {
        if (http.readyState == 4) {                        
            if ( divDestino!= null && ( divDestino.tagName=="DIV" || divDestino.tagName=="SELECT" )){
                divDestino.innerHTML = http.responseText;                
            }
            var ajaxOnLoadFunction = document.getElementById("ajaxOnLoadFunction");            
            if ( ajaxOnLoadFunction != null )
                eval(ajaxOnLoadFunction.value);                                    
            if ( divCargando != null )                
                ocultarDiv(divCargando);            
            if ( divDestino != null )
                mostrarDiv(divDestino);            
            if ( divBoton!=null)
                ocultarDiv(divBoton);                
        }
    };
    http.send(null);
}

function validarUsuarioDuplicado(usuarioAComprobar){
    var urlConsulta = 'validar_usuario_duplicado/'+ Base64.encode(usuarioAComprobar);
    var http = getHTTPObject();
    http.open("POST", urlConsulta, false );
    http.send(null);
    if (http.responseText == 1)
        return true;
    
    return false;    
}

function validarAccesoCentro(formulario){    
    var usuario = formulario.usuario.value;
    var contrasenya = formulario.contrasenya.value;
    var msgError;
    
    if ( esVacio(usuario))
        msgError = translate('campo_obligatorio','alert',translate('usuario','web'));    
    else if ( esVacio(contrasenya) )
        msgError = translate('campo_obligatorio','alert',translate('contrasenya','web'));        
    
    if ( msgError!=null ){
        if ( $(".acceso_centro_msg").length > 0 )
            $(".acceso_centro_msg").remove();
            
        $(".acceso_centro:first").append("<div class='acceso_centro_msg'>"+msgError+"</div>");        
        
        //Propagamos los datos para recuperarlos al mostrar error
        $(".usuario_centro:first").val($(".usuario_centro:last").val());
        
        //Si hay algún error, mostramos de nuevo la ventana, pero más larga
        $("a#boton_acceder_centro").fancybox({ 'hideOnContentClick': false,
                                        'frameWidth': 440,
                                        'frameHeight': 101,
                                        'callbackOnShow' : function(){                                                                                        
                                            $(".contrasenya_centro").empty();
                                            $(".usuario_centro:last").val($(".usuario_centro:first").val());                                                                                        
                                        },
                                        'callbackOnClose' : function(){
                                            this.frameHeight = 82;                                            
                                            if ( $(".acceso_centro_msg").length > 0 )
                                                $(".acceso_centro_msg").remove();
                                        }
                                        }
        );
        
        $("a#boton_acceder_centro").click();
        return false;
    }else{
        mostrarCargando();        
        return true;
    }
}

function validarAcceso(formulario){    
    
    var usuario = formulario.email.value;
    var contrasenya = formulario.contrasenya.value;
    var accesoUsuario = $(".acceso_usuario:first");    
    var msgError;
    
    if ( esVacio(usuario))
        msgError = translate('campo_obligatorio','alert',translate('email','web'));
    else if ( !esEmail(usuario))        
        msgError = translate('email_invalido','alert',translate('email','web'));        
    else if ( esVacio(contrasenya) )        
        msgError = translate('campo_obligatorio','alert',translate('contrasenya','web'));        
    
    if ( msgError!=null ){        
        if ( $(".acceso_msg").length > 0 )
            $(".acceso_msg").remove();
        accesoUsuario.append("<div class='acceso_msg'>"+msgError+"</div>");        
        
        //Propagamos los datos para recuperarlos al mostrar error
        $(".usuario:first").val($(".usuario:last").val());
        
        //Si hay algún error, mostramos de nuevo la ventana, pero más larga
        $("a#boton_acceder_usuario").fancybox({ 'hideOnContentClick': false,
                                        'frameWidth': 440,
                                        'frameHeight': 101,
                                        'callbackOnShow' : function(){                                                                                        
                                            $(".contrasenya").empty();
                                            $(".usuario:last").val($(".usuario:first").val());                                                                                        
                                        },
                                        'callbackOnClose' : function(){
                                            this.frameHeight = 82;                                            
                                            if ( $(".acceso_msg").length > 0 )
                                                $(".acceso_msg").remove();
                                        }
                                        }
        );
        
        $("a#boton_acceder_usuario").click();
        return false;
    }else{
        mostrarCargando();        
        return true;
    }
}

function mostrarProvincias(selector, urlConsulta){
    var valor = selector.options[selector.selectedIndex].value;
    urlConsulta = urlConsulta+"/"+valor;    
    
    ocultarDiv('campo_poblacion');
    if ( valor == -1 ){
        ocultarDiv('campo_provincia');        
    }else{
        mostrarDiv('campo_provincia');
    }
    
    cargarContenidoAJAX(urlConsulta, 'provincias', 'cargando_provincias');
    
}


function mostrarPoblaciones(selector, urlConsulta){
    if ( document.getElementById("poblaciones") == null ) return;
    
    var valor = +selector.options[selector.selectedIndex].value;
    
    if ( valor == -1 ){
        ocultarDiv('campo_poblacion');
    }else{
        mostrarDiv('campo_poblacion');
    }
    var pais = $("#pais").val();
    urlConsulta = urlConsulta+"/"+selector.options[selector.selectedIndex].value+"/"+pais;
    cargarContenidoAJAX(urlConsulta, 'poblaciones', 'cargando_poblaciones');
    
}

var consultaInicial = false;
var indexUltimoCentroSeleccionado = 0;   
var ultimaUrlConsulta = null;
 
function consultarDisponibilidad(url){
    consultaInicial = true;
    actualizarDisponibilidad(url);
}

function actualizarDisponibilidad(url){
    if( !consultaInicial )
        return;
        
    //Obtener centro
    var centro = document.getElementById("centro");    
    
    if ( centro.type=="hidden" ){
        idCentro = centro.value;
    }else{
        idCentro = centro.options[centro.selectedIndex].value;
        if ( idCentro==0 ){
            mostrarMensaje(translate('centro_obligatorio'),'warning');
            //Volvemos a seleccionar el último marcado
            if ( indexUltimoCentroSeleccionado > 0 ) 
                centro.selectedIndex=indexUltimoCentroSeleccionado;
            return;
        }
        indexUltimoCentroSeleccionado = centro.selectedIndex;
    }
    
    var doctor = document.getElementById("doctor");
    if ( doctor.type=="hidden" )
        idDoctor = doctor.value;
    else
        idDoctor = doctor.options[doctor.selectedIndex].value;
    
    var reserva = document.getElementById("reserva");
    
    if ( reserva!=null && reserva.value!= null ){
        codigoReserva= reserva.value;        
    }else{
        codigoReserva = 0;
    }
    
    var s_desde = document.getElementById("hora_desde");
    var s_hasta = document.getElementById("hora_hasta");
    
    var h_desde = s_desde.options[s_desde.selectedIndex].value;
    var h_hasta = s_hasta.options[s_hasta.selectedIndex].value;
    
    if ( h_desde >= h_hasta ){
        mostrarMensaje(translate('desde_menor_hasta'),'warning');
        return;
    }
    
    var d_desde = document.getElementById("dia_desde").value;
    var d_hasta = document.getElementById("dia_hasta").value;
    var urlConsulta = url+"/"+idCentro+"/"+idDoctor+"/"+codigoReserva+"/"+h_desde+"/"+h_hasta+"/"+d_desde+"/"+d_hasta;
    
    for ( i = 1; i <=7 ; i++ ){        
        if ( document.getElementById("dia_semana_"+i).checked )
            urlConsulta = urlConsulta + "/"+1;
        else
            urlConsulta = urlConsulta + "/"+0;
    }
    
    if ( ultimaUrlConsulta!=null && urlConsulta==ultimaUrlConsulta ){        
        return;
    }else{
        ultimaUrlConsulta = urlConsulta;
    }
    
    cargarContenidoAJAX(urlConsulta, 'disponibilidad_grafico', 'consultando_disponibilidad');    
}
function capturarDisponibilidadReservaUsuario(url){
     //Obtener centro
    var centro = document.getElementById("centro");    
    
    if ( centro.type=="hidden" ){
        idCentro = centro.value;
    }else{
        idCentro = centro.options[centro.selectedIndex].value;
        if ( idCentro==0 ){
            mostrarMensaje(translate('centro_obligatorio'),'warning');
            //Volvemos a seleccionar el último marcado
            if ( indexUltimoCentroSeleccionado > 0 ) 
                centro.selectedIndex=indexUltimoCentroSeleccionado;
            return;
        }
        indexUltimoCentroSeleccionado = centro.selectedIndex;
    }
    
    var doctor = document.getElementById("doctor");
    if ( doctor.type=="hidden" )
        idDoctor = doctor.value;
    else
        idDoctor = doctor.options[doctor.selectedIndex].value;
    
    var reserva = document.getElementById("reserva");
    
    if ( reserva!=null && reserva.value!= null ){
        codigoReserva= reserva.value;        
    }else{
        codigoReserva = 0;
    }
    var s_desde = document.getElementById("hora_desde");
    var s_hasta = document.getElementById("hora_hasta");
    
    var h_desde = s_desde.options[s_desde.selectedIndex].value;
    var h_hasta = s_hasta.options[s_hasta.selectedIndex].value;
    
    if ( h_desde >= h_hasta ){
        mostrarMensaje(translate('desde_menor_hasta'),'warning');
        return;
    }
    var urlConsulta = idCentro+"---"+idDoctor+"---0---"+h_desde+"---"+h_hasta;
    
    for ( i = 1; i <=7 ; i++ ){        
        if ( document.getElementById("dia_semana_"+i).checked )
            urlConsulta = urlConsulta + "---"+1;
        else
            urlConsulta = urlConsulta + "---"+0;
    }
    window.location = url+"/"+Base64.encode(urlConsulta);
    
    
}

function modificarFecha(fechaStr,valor){
    var fechaArr = fechaStr.split("-");
    
    var fechaNueva = new Date(fechaArr[2],fechaArr[1]-1,fechaArr[0],0,0,0);
    fechaNueva.setDate(fechaNueva.getDate()+valor);
    var dia = fechaNueva.getDate();
    if ( dia < 10 )
        dia = "0"+dia;
    
    var mes = fechaNueva.getMonth()+1;
    if ( mes < 10 )
        mes = "0"+mes;
    
    var anyo = fechaNueva.getUTCFullYear();
    return dia+"-"+mes+"-"+anyo;
}


function consultarSiguientes(url){
    //Incrementar input desde y hasta
    var d_desde = document.getElementById("dia_desde");    
    d_desde.value = modificarFecha(d_desde.value,31);
    
    var d_hasta = document.getElementById("dia_hasta");
    d_hasta.value = modificarFecha(d_hasta.value,31);
    
    actualizarDisponibilidad(url);
}


function consultarAnteriores(url){
    //Incrementar input desde y hasta
    var d_desde = document.getElementById("dia_desde");
    d_desde.value = modificarFecha(d_desde.value,-31);
    
    var d_hasta = document.getElementById("dia_hasta");
    d_hasta.value = modificarFecha(d_hasta.value,-31);
    
    actualizarDisponibilidad(url);
}


function actualizarDiasDisponibles(){
    //1-Lunes 7-Domingo
    var dia_semana = parseInt(document.getElementById("dia_inicial").value);    
    
    var dias_semana = new Array(document.getElementById("dia_semana_1").checked,document.getElementById("dia_semana_2").checked,document.getElementById("dia_semana_3").checked,document.getElementById("dia_semana_4").checked,document.getElementById("dia_semana_5").checked,document.getElementById("dia_semana_6").checked, document.getElementById("dia_semana_7").checked);
    
    for( i = 0; i <= 30; i ++ ){
        var dia = document.getElementById("dia_"+i);
        var dia_inactivo = document.getElementById("dia_"+i+"_inactivo");
        
        if ( dias_semana[dia_semana-1] ){
            ocultarDiv(dia_inactivo);
            mostrarDiv(dia);
        }else{
            ocultarDiv(dia);
            mostrarDiv(dia_inactivo);            
        }
        
        if ( dia_semana == 7 )
            dia_semana = 1;
        else
            dia_semana = dia_semana + 1;
    }
}

function actualizarVentanaDisponibilidad(texto){
    actualizarDiasDisponibles();
    
    $("#disponibilidad_explicacion").html(texto);
}


function actualizarPreferenciasDia(url, dia, tag){    
    if ( !consultaInicial )
        return;
    
    actualizarDiasDisponibles();
    
    var id = tag.id;
    if ( tag.checked == false )
        valor = 0;
    else
        valor = 1;            
    cargarContenidoAJAX(url + "/"+dia+"/"+valor, id, id+"_cargando");   
}


function cambiarCentro(url,combo){
    var idCentro = combo.options[combo.selectedIndex].value;
    window.location = url+"/"+idCentro;
}



/***************************************************

    OPERACIONES DE VALIDACIÓN DE FORMULARIO

***************************************************/

function pintarCampo(formulario, campo, modo){    
    var label = getLabelByFor(formulario, campo["id"]);
    if ( modo == "lineas" )
        var divError = document.getElementById("error_"+campo["id"]);
    
    if ( label != null ){        
        
        if ( campo["error"]!=null ){
            if ( label.className == "obligatorio" )
                label.className = "error_obligatorio";
            else if (label.className == "normal")
                label.className  = "error_normal";
            
            if ( modo == "lineas" ){                
                if ( divError != null ){                    
                    divError.innerHTML = "<div>"+campo["error"]+"</div>";
                }else{                    
                    var campoObj = $("#"+campo["id"]).parent();                    
                    campoObj.append("<div class='errores_formulario_linea' id='error_"+campo["id"]+"'><div>"+campo["error"]+"</div></div>");
                }
            }
        }else{
            if ( label.className == "error_normal" )
                label.className  = "normal";
            else if ( label.className == "error_obligatorio" )
                label.className  = "obligatorio";
            
            if ( divError != null )
                borrarDiv(divError);
        }
    }
}


function procesarCampo(formulario, campos, errorMsg, id){    
    for( var i = 0; i < campos.length; i ++ ){        
        if ( campos[i]["id"] == id ){
            if ( campos[i]["error"] != null )
                return; //Si el campo ya está asociado y tiene error, no hacer nada
            campos[i]["error"] = errorMsg;
            return;  //Si está asociado pero no tiene error, asocia el error
        }
    }
    var campo = new Array();
    campo["id"] = id;    
    campo["error"] = errorMsg;
    campos.push(campo);
}


function procesarFormulario(formulario, campos, modo, alertMsg){
    var divErrores = document.getElementById("errores_"+formulario.name);
    var erroresMsg = "";
    var errores = false;
    
    //Procesar cada campo
    for ( var i=0; i<campos.length; i++){        
        var campo = campos[i];        
        pintarCampo(formulario, campo, modo);
        if ( !errores && campo["error"]!=null )
            errores = true;
        if ( modo == "resumen" && campo["error"] != null )
            erroresMsg+= "<div>"+campo["error"]+"</div>";        
    }
    
    if ( modo == "resumen" ){
        if ( erroresMsg.length > 0 ){
            if ( divErrores == null ){
                formulario.innerHTML = "<div class='errores_formulario' id='errores_"+formulario.name+"'>"+erroresMsg+"</div>" + formulario.innerHTML;
            }else{
                divErrores.innerHTML = erroresMsg;
            }
            return false;
        }else{
            if ( divErrores != null )
                borrarDiv(divErrores);
            return false;
        }
    }
    if ( errores && alertMsg!=null )
        mostrarMensaje(translate(alertMsg),'warning');
    
    if ( !errores )
        mostrarCargando();
    
    return !errores;    
}


function validarCampo(formulario, campos, nombre_campo, funcion, mensaje){
    var errorMsg = null;
    eval("var campo = formulario['"+nombre_campo+"'];");
    if ( campo == null ) return;
    eval("var resultado = "+funcion+"(campo.value); ");    
    if ( !resultado )
        errorMsg = translate(mensaje,'alert', getLabelByFor(formulario,formulario[nombre_campo].id).innerHTML);        
    procesarCampo(formulario, campos, errorMsg, formulario[nombre_campo].id);
}


function validarVacio( formulario, campos, nombre_campo ){
    return validarCampo(formulario, campos, nombre_campo, "!esVacio", "campo_obligatorio");    
}


function validarNumerico( formulario, campos, nombre_campo ){
    return validarCampo(formulario, campos, nombre_campo, "esNumerico", "campo_numerico");
}


function validarEmail( formulario, campos, nombre_campo ){
    return validarCampo(formulario, campos, nombre_campo, "esEmail", "email_invalido");
}

function validarLetrasNumeros( formulario, campos, nombre_campo ){    
    var errorMsg = null;
    eval("var campo = formulario['"+nombre_campo+"'];");
    if ( campo == null ) return;
    if ( !esAlfanumerico(campo.value) || campo.value!=quitarEspacios(campo.value))
        errorMsg = translate('campo_invalido','alert', getLabelByFor(formulario,campo.id).innerHTML);    
    procesarCampo(formulario, campos, errorMsg, campo.id);
}

function validarDNICIF( formulario, campos, nombre_campo ){    
    var errorMsg = null;
    eval("var campo = formulario['"+nombre_campo+"'];");
    if ( campo == null ) return;
    if ( !esCIF(campo.value) && !esDNI(campo.value) )
        errorMsg = translate('campo_invalido','alert', getLabelByFor(formulario,campo.id).innerHTML);    
    procesarCampo(formulario, campos, errorMsg, campo.id);
}


function validarSelectVacio( formulario, campos, nombre_campo ){
    var errorMsg = null;
    eval("var campo = formulario['"+nombre_campo+"'];");    
    if ( campo == null ) return;
    
    if ( campo.options[campo.selectedIndex].value == 0 || campo.options[campo.selectedIndex].value == -1 )
        errorMsg = translate('campo_obligatorio','alert', getLabelByFor(formulario,campo.id).innerHTML);            
    procesarCampo(formulario, campos, errorMsg, campo.id);
}


function validarPrivacidad( formulario, campos, nombre_campo ){
    var errorMsg = null;    
    eval("var campo = formulario['"+nombre_campo+"'];");
    if ( campo == null ) return;
    if ( !campo.checked )
        errorMsg = translate('aceptar_politica');            
    procesarCampo(formulario, campos, errorMsg, campo.id);
}


function validarMinimo ( formulario, campos, nombre_campo, minimo ){
    var errorMsg = null;
    eval("var campo = formulario['"+nombre_campo+"'];");        
    if ( campo == null ) return;
    if ( campo.value.length < minimo )
        errorMsg = translate('tamano_minimo_campo','alert', getLabelByFor(formulario,campo.id).innerHTML, minimo);    
    procesarCampo(formulario, campos, errorMsg, campo.id);    
}


function validarMaximo( formulario, campos, nombre_campo, maximo ){            
    var errorMsg = null;
    eval("var campo = formulario['"+nombre_campo+"'];");
    if ( campo == null ) return;
    if ( campo.value.length > maximo )
        errorMsg = translate('campo_caracters_maximos','alert', getLabelByFor(formulario,campo.id).innerHTML, maximo);    
    procesarCampo(formulario, campos, errorMsg, campo.id);    
}


function validarIgual( formulario, campos, nombre_campo2, nombre_campo, errorMsgKey ){
    var errorMsg = null;
    eval("var campo = formulario['"+nombre_campo+"'];");
    eval("var campo2 = formulario['"+nombre_campo2+"'];")    
    if ( campo == null || campo2 == null) return;
    if ( campo.value != campo2.value )
        errorMsg = translate(errorMsgKey);
    procesarCampo(formulario, campos, errorMsg, campo.id);
}


function validarExtension( formulario, campos, nombre_campo, extensiones, errorMsgKey ){
    var errorMsg = null;
    eval("var campo = formulario['"+nombre_campo+"'];");
    if ( campo == null ) return;
    if ( campo.length > 0 && !esExtension(campo, extensiones) )
        errorMsg = translate(errorMsgKey,'alert', getLabelByFor(formulario,campo.id).innerHTML);    
    procesarCampo(formulario, campos, errorMsg, campo.id);
}


function crearMensaje(mensaje, tipo){
    var divMensaje = '<div class="oculto"><a id="msg_caller" href="#msg">&nbsp;</a></div><div id="msg"><div id="msg_ventana" class="msg_'+tipo+'"><div class="msg_txt" id="msg_txt"><div class="msg_ico">&nbsp;</div>'+mensaje+'</div></div></div>';    
    $("div#msg_container").empty().append($(divMensaje).hide());
}

function mostrarMensaje(mensaje, tipo){
    
    crearMensaje(mensaje,tipo);    
    $('div#msg').css('display','block');
    var alturaVentana = $('div#msg_txt').height() + 20;
    $('div#msg').css('display','none');
    
    if ( arguments.length==3 ){
        var opts = arguments[2];
    }else{
        var opts = {'frameWidth': 440};
    }
    
    $(document).ready(function(){        
        $('div#msg').css('display','block');
        if (opts['frameHeight']==null){
            //Hay 3 o más líneas            
            if ( alturaVentana > 60 ){                                
                $('div#msg_txt div.msg_ico').css("height",alturaVentana-10);
                alturaVentana = $('div#msg_txt').height()+20;
                $('div#msg_txt div.msg_ico').css("height",alturaVentana-10);
            }else if ( alturaVentana < 52 ){
                //Si solo hay una línea
                if ( alturaVentana <= 40 ){
                    $('div#msg_txt').css("height",32);
                    $('div#msg_txt').css("line-height","30px");                                    
                    alturaVentana = 52;
                }else{
                    $('div#msg_txt').css("height",32);
                    alturaVentana = 52;
                }
            }            
            opts['frameHeight']=alturaVentana;            
        }
        $('div#msg').css('display','none');
        $("a#msg_caller").fancybox(opts);        
        setTimeout('$("a#msg_caller").click()',50);
    });
}


function mostrarCargando(){        
    mostrarMensaje(translate("cargando_espere","web"), "cargando",{'canClose': false});
}

function cerrarEmergente(elemento){
    $('a#msg_caller').fancybox.close();
}

function mostrarPregunta(mensaje, funcion){
    var respuestas = '<div class="botones_emergentes"><div class="boton_accion boton_naranja_accion" onclick="'+funcion+'">'+translate("aceptar","web")+'</div><div class="boton_accion boton_gris_accion" onclick="cerrarEmergente()">'+translate("cancelar","web")+'</div></div>';
    mostrarMensaje(mensaje+respuestas,'pregunta',{'canClose': false})
}

//SmoothScroll
$(document).ready(function(){
    $('a[href*=#]').click(function() {    
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {        
            var $target = $(this.hash);            
            $target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');            
            if ($target.length) {            
                var targetOffset = $target.offset().top;                
                $('html,body').animate({scrollTop: targetOffset}, 1000);                    
                return false;                
            }            
        }        
    });
    
    $("a.emergente").fancybox({ 'hideOnContentClick': false, 'frameWidth': 440, 'frameHeight': 82 });    
    
    //Precargar imagen
    jQuery("<img>").attr("src", "/web/img/cargando4.gif");
    jQuery("<img>").attr("src", "/web/img/cargando2.gif");
    jQuery("<img>").attr("src", "/web/img/ico_favorito.jpg");
});

function borrarFavorito(page,id){
    ocultarDiv('favorito_borrar_centro_btn_'+id);
    cargarContenidoAJAX(page+'/'+id,'favorito_borrar_centro_'+id,'favorito_borrar_cargando_'+id,'favorito_borrar_centro_btn_'+id);
}
function mostrarDatosReservaOnline(elemento){
    div=document.getElementById("datosReservable");
    if (elemento.checked==true ){
        mostrarDiv(div);
    }else{
        ocultarDiv(div);
    }
}

function mostrarInfoFidipidesAmpliada(){
    ocultarDiv("masInfoFidipides");
    mostrarDiv("infoFidipidesAmpliada");
}
