// quierogestionarme.js: Funcions generals
var documentBody =
(document.documentElement ? document.documentElement : (document.body ? document.body : null) );
var colorFonsObligatoris = '#ffff99';
var urlTornar = '';
var divMissatges;
var substituirDiv = '0';
var idDiv = '';
var idElement = '';
var urlActual = '';
var contingut;
var xmlReqServlet;
var pMissatge;
var pMissatgeHelp;
var leftMissatgeCarregant = 300;
var tancarMissatgeAlCarregar = true;
var pareElementOpcioMenu;
var elementSeccioMenu;
var elementOpcioMenu;
var textErrorAlta;
var baseDocs = '';
var nomPlantillaActual = '';
var ultimaOpcioResaltada = '';
function resaltarOpcio(idLink, titol) {
    link = document.getElementById(idLink);
    if (!link) {
        return;
    }
    if (ultimaOpcioResaltada != '') {
        ultima = document.getElementById(ultimaOpcioResaltada);
        if (ultima && ultima.style) {
            ultima.style.fontWeight = 'normal';
        }
    }
    link.style.fontWeight = 'bold';
    ultimaOpcioResaltada = idLink;
}

function getElementByIdXML(doc, identificador) {
    var elementConvertit;
    var elementBuscat;
    if (doc.getElementById) {
        elem = doc.getElementById(identificador);
        if (elem) {
            return elem;
        }
    }
    //    alert('getElementByIdXML: ' + identificador + '; getElementById NO EXISTEIX');
    elementBuscat = buscarElementById(doc.documentElement, identificador, 1);
    if (!elementBuscat) {
        //        alert('NO TROBAT getElementByIdXML: ' + identificador);
        return null;
    }
    elementConvertit = document.createElement(elementBuscat.nodeName);
    elementConvertit.setAttribute('id', identificador);
    try {

        pos =  elementBuscat.xml.indexOf('>');
        if (pos >= 0) {
            var tx = elementBuscat.xml.substring(pos + 1);
            pos = elementBuscat.xml.lastIndexOf('<');
            if (pos >= 0) {
                tx = tx.substring(0, pos);
                //      alert('tx: ' + tx);
                elementConvertit.innerHTML = tx;
            }
        }
    } catch (e) {    }
    return elementConvertit;
}

function buscarElementById(elem, identificador, nivell) {
    //    if (elem.nodeName && (elem.nodeName == 'DIV' || elem.nodeName == 'div')) {
    //        alert('buscarElementById, elem: ' + elem.nodeName + '\n' + elem.innerHTML);
    //    }
    if (elem && elem.attributes) {
        v = elem.getAttribute('id');
        if (v && v == identificador) {
            return elem;
        }
    }
    if (!elem) {
        return null;
    }
    for (var i = 0; i < elem.childNodes.length; i++) {
        if (elem.childNodes[i].nodeName.indexOf('#') >= 0) {
            continue;
        }
        e = buscarElementById(elem.childNodes[i], identificador, nivell + 1);
        v = null;
        if (e) {
            v = e.getAttribute('id');
        }
        if (v && v.value) {
            v = v.value;
        }
        if (v && v == identificador) {
            return e;
        }
    }
    return null;
}

var divsRequadres = new Array(
    'divNoticias',
    'divChiste',
    'divFrase',
    'divOpiniones',
    'divSantoral',
    'divConsultadas',
    '',
    '',
    '',
    ''
    //    'divImagen',
    //    'divEventos',
    //    'divEmpresaSemana',
    //    'divSugerencias'
    );

var pagsRequadres = new Array(
    'requadrenoticia.html',
    'requadrechiste.html',
    'requadrefrase.html',
    'requadreopinion.html',
    'requadresantoral.html',
    'requadreconsultadas.html',
    '',
    '',
    '',
    ''
    //    'requadreimagendia.html',
    //    'requadreeventos.html',
    //    'requadreempresasemana.html',
    //    'requadresugerencias.html'
    );


var titolsRequadres = new Array(
    'Noticias',
    'Chiste del D&iacute;a',
    'Frase del D&iacute;a',
    'Hablan los usuarios',
    'Santoral del D&iacute;a',
    'Las m&aacute;s consultadas',
    '',
    '',
    '',
    ''
    //    'Imagen del D&iacute;a',
    //    'Eventos Destacados',
    //    'Empresa de la Semana',
    //    'Sugerencias'
    );
var timerRequadres;
var indexDivRequadres = 0;
var carregarRequadres = true;
function doCarregarRequadres() {
    if (indexDivRequadres >= 0 && indexDivRequadres < divsRequadres.length) {
        if (pagsRequadres[indexDivRequadres] != '') {
            carregarPaginaSubstituint(pagsRequadres[indexDivRequadres], divsRequadres[indexDivRequadres], divsRequadres[indexDivRequadres]);
        }
        indexDivRequadres++;
    } else {
        carregarRequadres = false;
        tancarMissatgeAlCarregar = true;
        indexDivRequadres = 0;
    }
}

function inicialitzarPagina() {

    try {
        var mc = document.getElementById('missatge');
        if (mc) {
            try {
                leftMissatgeCarregant = (parseInt(screen.width) - parseInt(mc.clientWidth)) / 2;
                mc.style.left = leftMissatgeCarregant + 'px';
            } catch (err) {
            }
        }
        carregarRequadres = false;
        var divRequadres = document.getElementById('requadres');
        if (divRequadres) {
            carregarRequadres = true;
        }
        divMissatges = document.getElementById('textMissatge');
        if (divMissatges && divMissatges.innerHTML && divMissatges.innerHTML.length > 0) {
            tancarMissatgeAlCarregar = false;
            mc.style.visibility = 'hidden';
            missatge('Aviso', divMissatges.innerHTML.replace(/!!b!!/gi, '<br clear="all" />'));
        } else {
            divMissatges = document.getElementById('textError');
            if (divMissatges && divMissatges.innerHTML && divMissatges.innerHTML.length > 0) {
                tancarMissatgeAlCarregar = false;
                mc.style.visibility = 'hidden';
                missatge('Advertencia', divMissatges.innerHTML.replace(/!!b!!/gi, '<br clear="all" />'));
            }

        }
        inputUltimaURL = document.getElementById('ultimaURL');
        indexDivRequadres = 0;
        if (carregarRequadres) {
            doCarregarRequadres();
        } else {

    }

    } catch (e) {
    //        alert(e);
    }

}

function mostrarSubmenu(elLink, idMenu, mostrar) {
    var elMenu = document.getElementById(idMenu);
    if (elMenu) {
        var x = posicioX(elLink);
        var y = posicioY(elLink);
        elMenu.style.left = x + 'px';
        elMenu.style.top = (y + parseInt(elLink.clientHeight) - 1) + 'px';
        elMenu.style.visibility = (mostrar ? 'visible' : 'hidden') ;

    }
}

function login() {
    // Comprovar que user i acceso tenen algun valor
    var textErrorLogin = '';
    if (document.sign_in.user.value == '') {
        textErrorLogin = textErrorLogin + '- El nombre de usuario debe tener al menos una letra <br />';
    }
    if (document.sign_in.acceso.value == '') {
        textErrorLogin = textErrorLogin + '- El password debe tener al menos una letra <br />';
    }

    if (textErrorLogin != '') {
        missatge('Advertencia', 'Por favor, corrija los siguientes errores y vuelva a enviar el formulario: <br />' + textErrorLogin + '<br />');
        return false;
    }
    // enviar el formulari
    missatgeCarregant('Esperando respuesta del servidor ...');
    return true;
}

function needsLogin() {
    missatge('Aviso', 'Para realizar esta acci&oacute;n, debe identificarse primero como usuario.');
}

function missatge(titol, text) {
    divMarc = document.getElementById('marc');
    pMissatge = document.getElementById('missatge');
    if (pMissatge && pMissatge.style && pMissatge.style.visibility == 'visible') {
        return;
    }
    if (divMarc) {
        if (document.all) {
            divMarc.style.filter = 'alpha(opacity=20)';
        } else {
            divMarc.style.opacity = "0.20";
        }
    }
    if (pMissatge) {
        centrarDiv('missatge');
        posarTextDiv('text_missatge', text);
        posarTextDiv('titolmissatge', titol);
        visibilitat('missatge', 'visible');
        visibilitat('titolmissatge', 'visible');
        visibilitat('text_missatge', 'visible');
        visibilitat('peumissatge', 'visible');
    }
}

function missatgeCarregant(text) {
    //    centrarDiv('missatge_carregant');
    //    posarTextDiv('missatge_carregant', text);
    //    visibilitat('missatge_carregant', 'visible');
    centrarDiv('missatge');
    posarTextDiv('titolmissatge', 'Espera, por favor...');
    posarTextDiv('text_missatge', '<div style="height: 40px; width: 40px; float: left;"><img src="img/spinner_16.gif" style="margin: 8px;" /></div><div style="margin: 10px;">' + text + '</div>');
    visibilitat('missatge', 'visible');
    visibilitat('titolmissatge', 'visible');
    visibilitat('text_missatge', 'visible');
    visibilitat('peumissatge', 'visible');
}
function tancarMissatgeCarregant() {
    tancarMissatgeAlCarregar = true;
    divMarc = document.getElementById('marc');
    if (document.all) {
        divMarc.style.filter = 'alpha(opacity=100)';
    } else {
        divMarc.style.opacity = '1';
    }
    visibilitat('missatge_carregant', 'hidden');
    visibilitat('missatge', 'hidden');
    visibilitat('text_missatge', 'hidden');
    visibilitat('titolmissatge', 'hidden');
    visibilitat('peumissatge', 'hidden');
}
function posarTextDiv(elId, text) {
    elDiv = document.getElementById(elId);
    if (elDiv) {
        elDiv.innerHTML = text;
    }

}
function opacitat(elId, v) {
    elDiv = document.getElementById(elId);
    if (elDiv) {
        if (elDiv.style.opacity) elDiv.style.opacity = v;
        if (elDiv.style.filter) elDiv.style.filter = 'alpha(opacity=' + parseInt(v * 100) + ')';
    }
}
function visibilitat(elId, v) {
    elDiv = document.getElementById(elId);
    if (elDiv) {
        elDiv.style.visibility = v;
    }
}
function mostrarDiv(elId) {
    elDiv = document.getElementById(elId);
    if (elDiv) {
        if( elDiv.style && elDiv.style.display && elDiv.style.display == "block"){
            elDiv.style.display = "none";
        } else {
            elDiv.style.display = "block";
        }
    }
}
function confirmarConsulta(formulari) {
    return confirmarEnviarFormulari(formulari, '');
}
function confirmarAltaEmpresa(formAlta) {
    var enviarForm = confirmarEnviarFormulari(formAlta, '');
    if (enviarForm) {
        formAlta.action = 'AltaEmpresa';
        formAlta.submit();
//        enviarFormulari('AltaEmpresa', crearQueryFormulari(formAlta));
    }
    return enviarForm;
}
function confirmarAltaUsuari(formulari) {
    var enviarForm = confirmarEnviarFormulari(formulari, '');
    if (formulari.esAlta && formulari.esAlta.value && formulari.esAlta.value == '0') {
        if (formulari.nivel && formulari.nivel.value &&
            formulari.nivelOriginal && formulari.nivelOriginal.value) {
            if (formulari.nivel.value == 'P' && formulari.nivelOriginal.value != 'P') {
                enviarForm = false;
                formulari.nivel.style.backgroundColor = colorFonsObligatoris;
                textErrorAlta = textErrorAlta + 'Para cambiar a nivel profesional debe realizar el pago de la cuota<br />';
            } else if (formulari.nivel.value == 'L' && formulari.nivelOriginal.value == 'P') {
                enviarForm = false;
                formulari.nivel.style.backgroundColor = colorFonsObligatoris;
                textErrorAlta = textErrorAlta + 'No se puede cambiar de nivel profesional a nivel libre<br />';
            }
        }
    }
    return enviarForm;
}
function confirmarEnviarFormulari(formulari, url) {
    textErrorAlta = '';
    var errorForm = validarCamps(formulari);
    // Validar que els dos passwords son iguals
    if (formulari.password && formulari.pwd2 &&
        formulari.password.value != formulari.pwd2.value) {
        errorForm = true;
        formulari.password.style.backgroundColor = colorFonsObligatoris;
        formulari.pwd2.style.backgroundColor = colorFonsObligatoris;
        textErrorAlta = textErrorAlta + 'Las contrase&ntilde;as introducidas son diferentes<br />';
    }
    if (errorForm) {
        missatge('Advertencia', 'Por favor, corrija los siguientes errores y vuelva a enviar el formulario:<br />' + textErrorAlta + '<br />');
        return false;
    }
    return true;
}

function validarAltaFormulari(formulari) {
    textErrorAlta = '';
    var errorForm = validarCamps(formulari);
    if (errorForm) {
        textErrorAlta = textErrorAlta + 'Todos los campos obligatorios deben tener alg&uacute;n valor';
    }
    if (errorForm) {
        missatge('Advertencia', 'Por favor, corrija los siguientes errores y vuelva a enviar el formulario:<br />' + textErrorAlta + '<br />');
        return false;
    }
    //    alert("Enviant Formulari AltaFoto, id = " + document.altafoto.id.value);
    if (!errorForm) {
        missatgeCarregant('Enviando datos al servidor. Espere, por favor ...');
    }
    return true;
}
function validarCamps(formulari) {
    // Validar camps obligatoris (comprovar que els camps amb atribut 'required' == 'true' tenen valor)
    var errorForm = false;
    // Validar camps obligatoris (comprovar que els camps amb atribut 'required' == 'true' tenen valor)
    camps = formulari.elements;
    if (camps) {
        for (i = 0; i < camps.length; i++) {
            var nomCampForm = camps[i].name;
            if (nomCampForm == 'descripcion') {
                nomCampForm = 'titulo';
            }
            var oblig = camps[i].getAttribute('required');
            if (oblig && (oblig == 'true' || oblig == '1')) {
                val = camps[i].value;
                if (!val || (val && val == '')) {
                    errorForm = true;
                    textErrorAlta = textErrorAlta + 'El campo <b>' + nomCampForm + '</b> es obligatorio<br>';
                    camps[i].style.backgroundColor = colorFonsObligatoris;
                }
            }
            var minlengthnoobligatori = camps[i].getAttribute('minlengthnoobligatori');
            if (minlengthnoobligatori && minlengthnoobligatori != '') {
                minimCaracters = parseInt(minlengthnoobligatori);
                var val = camps[i].value;
                //                alert('minlength: ' + minlength + '; minimCaracters: ' + minimCaracters + '; val: ' + val);
                if (val.length > 0 && val.length < minimCaracters) {
                    errorForm = true;
                    textErrorAlta = textErrorAlta + 'El campo <b>' + nomCampForm + '</b> ha de tener al menos ' + minlengthnoobligatori + ' caracteres<br>';
                    camps[i].style.backgroundColor = colorFonsObligatoris;
                }
            }
            var minlength = camps[i].getAttribute('minlength');
            if (minlength && minlength != '') {
                minimCaracters = parseInt(minlength);
                val = camps[i].value;
                //                alert('minlength: ' + minlength + '; minimCaracters: ' + minimCaracters + '; val: ' + val);
                if (!val || val.length < minimCaracters) {
                    errorForm = true;
                    textErrorAlta = textErrorAlta + 'El campo <b>' + nomCampForm + '</b> ha de tener al menos ' + minlength + ' caracteres<br>';
                    camps[i].style.backgroundColor = colorFonsObligatoris;
                }
            }
            var comprovarPassword = camps[i].getAttribute('comprovarpassword');
            if (comprovarPassword && comprovarPassword.length > 0) {
                var letras = "abcdefghijklmnñopqrstuvwxyz";
                var numeros = "0123456789";
                var password = camps[i].value;
                for(j=0; j<password.length; j++){
                    if (letras.indexOf(password.charAt(j),0)==-1 && numeros.indexOf(password.charAt(j),0)==-1){
                        errorForm = true;
                        camps[i].style.backgroundColor = colorFonsObligatoris;
                        textErrorAlta = textErrorAlta + 'El campo <b>' + camps[i].getAttribute('name') + '</b> debe contener solamente letras o numeros<br>';
                        j = password.length;
                    }
                }
            }
            var esIgual = camps[i].getAttribute('igual');
            if (esIgual && esIgual != '') {
                val = camps[i].value;
                var comparar = formulari[esIgual].value;
                if (!val ||val != comparar) {
                    errorForm = true;
                    if (esIgual == 'password') {
                        textErrorAlta = textErrorAlta + 'Los dos passwords deben ser iguales<br />';
                    } else {
                        textErrorAlta = textErrorAlta + 'El campo <b>' + nomCampForm + '</b> ha de ser igual al campo <b>' + esIgual + '</b> <br />';
                    }
                    camps[i].style.backgroundColor = colorFonsObligatoris;
                }
            }
            var esIgualNoObligatori = camps[i].getAttribute('igualnoobligatori');
            if (esIgualNoObligatori && esIgualNoObligatori != '') {
                val = camps[i].value;
                comparar = formulari[esIgualNoObligatori].value;
                if (val != comparar && (val.length > 0 || comparar.length > 0)) {
                    errorForm = true;
                    if (esIgualNoObligatori == 'password') {
                        textErrorAlta = textErrorAlta + 'Los dos passwords deben ser iguales<br />';
                    } else {
                        textErrorAlta = textErrorAlta + 'El campo <b>' + nomCampForm + '</b> ha de ser igual al campo <b>' + esIgual + '</b> <br />';
                    }
                    camps[i].style.backgroundColor = colorFonsObligatoris;
                }
            }
            var ant = camps[i].getAttribute('anterior');
            if (ant && ant != '') {
                var campComparar = formulari[ant];
                if (compararDataAnterior(camps[i], campComparar)) {
                    errorForm = true;
                    textErrorAlta = textErrorAlta + 'El campo <b>' + nomCampForm +
                    '</b> ha de ser anterior al campo <b>' +
                    campComparar.name + '<br>';
                    camps[i].style.backgroundColor = colorFonsObligatoris;
                    campComparar.style.backgroundColor = colorFonsObligatoris;
                }
            }
            var poste = camps[i].getAttribute('posterior');
            if (poste && poste != '') {
                campComparar = formulari[poste];
                if (compararDataAnterior(campComparar, camps[i])) {
                    errorForm = true;
                    textErrorAlta = textErrorAlta + 'El campo <b>' + nomCampForm +
                    '</b> ha de ser posterior al campo <b>' +
                    campComparar.name + '<br>';
                    camps[i].style.backgroundColor = colorFonsObligatoris;
                    campComparar.style.backgroundColor = colorFonsObligatoris;
                }
            }
            poste = camps[i].getAttribute('posteriorigual');
            if (poste && poste != '') {
                campComparar = formulari[poste];
                //                alert("campComparar:"+campComparar);
                //                alert("el camp:"+camps[i]);
                if (compararDataAnteriorIgual(campComparar, camps[i])) {
                    errorForm = true;
                    textErrorAlta = textErrorAlta + 'El campo <b>' + nomCampForm +
                    '</b> ha de ser posterior o igual al campo <b>' +
                    campComparar.name + '<br>';
                    camps[i].style.backgroundColor = colorFonsObligatoris;
                    campComparar.style.backgroundColor = colorFonsObligatoris;
                }
            }
            var esFecha = camps[i].getAttribute('fecha');
            if (esFecha && (esFecha == 'true' || esFecha == '1')) {
                val = camps[i].value;
                if (val != '') {
                    if (comprovarData(val)) {
                        errorForm = true;
                        camps[i].style.backgroundColor = colorFonsObligatoris;
                    }
                }
            }
            if (camps[i].getAttribute('validacion')) {
                tip = camps[i].getAttribute('validacion');
                if (!tip || tip == '') {
                    tip = '';
                }
                if (tip == 'float') {
                    res = validarFloat(camps[i]);
                    if (!res) {
                        errorForm = true;
                        camps[i].style.backgroundColor = colorFonsObligatoris;
                        textErrorAlta = textErrorAlta + 'El campo <b>' + nomCampForm + '</b> debe ser num&eacute;rico<br>';
                    }
                }else if (tip == 'int') {
                    res = validarInt(camps[i]);
                    if (!res) {
                        errorForm = true;
                        camps[i].style.backgroundColor = colorFonsObligatoris;
                        textErrorAlta = textErrorAlta + 'El campo <b>' + camps[i].getAttribute('name') + '</b> debe ser num&eacute;rico y sin decimales<br>';
                    }
                }else if (tip.indexOf('max=') >= 0 || tip.indexOf('min=') >= 0) {
                    try {
                        var parts = tip.split(',');
                        var max = -1;
                        var min = -1;
                        for (j = 0; j < parts.length; j++) {
                            var x = parts[j].split('=');
                            if (x.lentgh == 2) {
                                if (x[0] == 'max') {
                                    max = parseFloat(x[1]);
                                } else if (x[0] == 'min') {
                                    min = parseFloat(x[1]);
                                }
                            }
                        }
                        if (max >= 0) {
                            valCamp = parseInt(camps[i].getAttribute('value'));
                            if (valCamp > max) {
                                errorForm = true;
                                camps[i].style.backgroundColor = colorFonsObligatoris;
                                textErrorAlta = textErrorAlta + 'El campo <b>' + camps[i].getAttribute('name') + '</b> debe ser menor o igual que ' + max + '<br>';
                            }
                        }
                        if (min >= 0) {
                            valCamp = parseInt(camps[i].getAttribute('value'));
                            if (valCamp < min) {
                                errorForm = true;
                                camps[i].style.backgroundColor = colorFonsObligatoris;
                                textErrorAlta = textErrorAlta + 'El campo <b>' + camps[i].getAttribute('name') + '</b> debe ser mayor o igual que ' + min + '<br>';
                            }
                        }
                    } catch (e) {
                    }
                    res = validarInt(camps[i]);
                    if (!res) {
                        errorForm = true;
                        camps[i].style.backgroundColor = colorFonsObligatoris;
                        textErrorAlta = textErrorAlta + 'El campo <b>' + camps[i].getAttribute('name') + '</b> debe ser num&eacute;rico y sin decimales<br>';
                    }
                }
            }
        }
    }
    return errorForm;
}

function compararDataAnterior(camp, campComparar) {
    return compararDataIgualOAnterior(camp, campComparar, 0);
}

function compararDataAnteriorIgual(camp, campComparar) {
    return compararDataIgualOAnterior(camp, campComparar, 1);
}

function compararDataIgualOAnterior(camp, campComparar, igual) {
    try {
        if (camp.value && camp.value != '') {
            if (campComparar && campComparar.value && campComparar.value != '') {
                dataCamp = camp.value.split('-');
                dataCampComparar = campComparar.value.split('-');
                if (dataCamp.length == 3 && dataCampComparar.length == 3) {
                    dataMenor = new Date();
                    dataMenor.setFullYear(parseInt(dataCamp[2]), parseInt(dataCamp[1]) - 1, parseInt(dataCamp[0]));
                    dataMesGran = new Date();
                    dataMesGran.setFullYear(parseInt(dataCampComparar[2]), parseInt(dataCampComparar[1]) - 1, parseInt(dataCampComparar[0]));
                    //                  alert('anterior: ' + dataMenor.getTime() + '; posterior: ' + dataMesGran.getTime());
                    if ( (igual && dataMenor.getTime() > dataMesGran.getTime()) ||
                        (!igual && dataMenor.getTime() >= dataMesGran.getTime())) {
                        return false;
                    }
                }
            }
        }
        return true;
    } catch (e) {
    //        alert('ERROR: ' + e);
    }
    return true;
}


function comprovarData(valor) {
    try {
        if (valor && valor != '') {
            dataCamp = valor.split('-');
            if (dataCamp.length == 3) {
                var any = parseInt(dataCamp[2]);
                var mes = parseInt(dataCamp[1]) - 1;
                var dia = parseInt(dataCamp[0]);
                var dataCorrecta = true;
                if (dia < 1 || dia > 31) {
                    textErrorAlta = textErrorAlta + 'El dia no puede ser mayor de 31 ni menor de 1<br>';
                    dataCorrecta = false;
                }
                if (mes < 0 || mes > 11) {
                    textErrorAlta = textErrorAlta + 'El mes no puede ser mayor de 12 ni menor de 1<br>';
                    dataCorrecta = false;
                }
                if ((mes == 3 || mes == 5 ||
                    mes == 8 || mes == 10) && dia > 30) {
                    textErrorAlta = textErrorAlta + 'El dia no puede ser mayor de 30<br>';
                    dataCorrecta = false;
                }
                if (mes == 1 && dia > 29) {
                    textErrorAlta = textErrorAlta + 'El dia no puede ser mayor de 29<br>';
                    dataCorrecta = false;
                }
                if (mes == 1 && dia > 28 && any % 4 != 0) {
                    textErrorAlta = textErrorAlta + 'El dia no puede ser mayor de 28<br>';
                    dataCorrecta = false;
                }
                if (dataCorrecta) {
                    return false;
                } else {
                    return true;
                }
            } else {
                textErrorAlta = textErrorAlta + 'Las fechas deben escribirse en el formato dd-mm-aaaa<br>';
                return true;
            }
        }
        return true;
    } catch (e) {
        alert('ERROR: ' + e);
        return true;
    }
}

////////////////////////////////////// validar camps numerics //////////////////////////////////////

function comprobarPrecio(campInput) {
    if (campInput.getAttribute('value') == '') {
        return;
    }
    res = validarFloat(campInput);
}

function validarFloat(campInput) {
    var val = campInput.getAttribute('value');
    if (!val || val == '') {
        return true;
    }
    campInput.setAttribute('value', val.replace(/,/g, '.'));
    var valNum = parseFloat(val);
    if (isNaN(valNum)) {
        return false;
    }
    campInput.setAttribute('value', valNum);
    return true;
}

function validarInt(campInput) {
    var val = campInput.getAttribute('value');
    alert(val);
    if (!val || val == '') {
        return true;
    }
    var valNum = parseInt(val);
    if (isNaN(valNum)) {
        return false;
    }
    campInput.setAttribute('value', valNum);
    return true;
}



function esVisible(elId) {
    elDiv = document.getElementById(elId);
    if (elDiv && elDiv.style && elDiv.style.visibility) {
        if (elDiv.style.visibility == 'visible') {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}
function tancarMissatge(idTextMissatge) {
    tancarMissatgeAlCarregar = true;
    visibilitat(idTextMissatge, 'hidden');
    visibilitat('titolmissatge', 'hidden');
    visibilitat('peumissatge', 'hidden');
    visibilitat('missatge', 'hidden');
    divMarc = document.getElementById('marc');
    if (divMarc) {
        if (document.all) {
            divMarc.style.filter = 'alpha(opacity=100)';
        } else {
            divMarc.style.opacity = "1.0";
        }
    }
}
function centrarDiv(idD) {
    elDiv = document.getElementById(idD);
    if (elDiv) {
        elDiv.style.position = 'absolute';
        centrarDivHori(elDiv);
        centrarDivVerti(elDiv);
    }
}
function centrarDivHori(elDiv) {
    var amplePantalla = 0;
    if (window.innerWidth) {
        amplePantalla = window.innerWidth;
    } else {
        amplePantalla = documentBody.offsetWidth;
    }
    amplePantalla = amplePantalla - 16; // per la scroll vertical
    var ample = (amplePantalla - elDiv.clientWidth);
    var margeX = parseInt(ample * 0.5)
    if (margeX < 0) {
        margeX = 0;
    }
    elDiv.style.left = (documentBody.scrollLeft + margeX - posicioXPare(elDiv)) + 'px';
//    alert('amplePantalla: ' + amplePantalla + '; ample: ' + ample + '; margeX: ' + margeX + '; parseInt(margeX): ' + parseInt(margeX) + '; elDiv.clientWidth: ' + elDiv.clientWidth + '; divMarc x: ' + posicioX(divMarc) + '; elDiv x: ' + posicioX(elDiv) + '; elDiv x Pare: ' + posicioXPare(elDiv) + '; elDiv.style.left: ' + elDiv.style.left);
}
function centrarDivVerti(elDiv) {
    var altPantalla = 0;
    if (window.innerHeight) {
        altPantalla = window.innerHeight;
    } else {
        altPantalla = documentBody.offsetHeight;
    }
    //    alert('amplePantalla: ' + amplePantalla + '; ' + 'altPantalla: ' + altPantalla);
    var alt = (altPantalla - elDiv.clientHeight);
    var margeY = parseInt(alt * 0.5);
    if (margeY < 0) {
        margeY = 0;
    }
    elDiv.style.top = (getScrollTop() + margeY - posicioYPare(elDiv)) + 'px';
//        alert('documentBody.scrollTop: ' + documentBody.scrollTop + '; elDiv.clientHeight: ' + elDiv.clientHeight + '; margeY: ' + margeY + '; top: ' + elDiv.style.top + '; left: ' + elDiv.style.left);
}

function posicioXPare(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        obj=obj.offsetParent;
        while (1 && obj.offsetParent) {
            curleft+=obj.offsetLeft;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.x) {
        curleft+=obj.x;
    }
    return curleft;
}
function posicioYPare(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        obj=obj.offsetParent;
        while (1 && obj.offsetParent) {
            curtop += obj.offsetTop;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.y) {
        curtop += obj.y;
    }
    return curtop;
}
function posicioX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (1) {
            curleft+=obj.offsetLeft;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.x) {
        curleft+=obj.x;
    }
    return curleft;
}
function posicioY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (1) {
            curtop += obj.offsetTop;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.y) {
        curtop += obj.y;
    }
    return curtop;
}
function possicionarDivTop(idDivHist) {

    divHist = document.getElementById(idDivHist);
    if (!document.all) {
        var classe = divHist.className;
        if (!classe || classe.length == 0) {
            classe = idDivHist;
        }
        var rule = getStyleClass(classe);
        if (rule && rule.style) {
            rule.style.setProperty('top', getScrollTop() + 'px', null);
        }
    }
    divHist.style.top = getScrollTop() + 'px';
}
function getScrollTop() {
    if (documentBody.scrollTop) {
        return documentBody.scrollTop;
    }
    return 0;
}
function noRes() {

}

function carregar(nomPlantilla) {
    if (nomPlantilla.indexOf('inicio.html') == 0 || nomPlantilla.indexOf('informaciongeneral.html') == 0) {
        carregarRequadres = true;
        indexDivRequadres = 0;
    }
    carregarDirecte(nomPlantilla, true);
}
function carregarDesdeHistoria(plant) {
    carregarDirecte(plant, false);
}

function carregarDirecte(nomPlantilla, afegirAHistoria) {
    //alert(nomPlantilla);
    if (nomPlantilla.indexOf('login=1') >= 0 && !estaLogat()) {
        needsLogin();
        return;
    }
    missatgeCarregant('Esperando datos del servidor ...');
    //    alert('carregar: ' + nomPlantilla);
    //    if (afegirAHistoria && dhtmlHistory) {
    //        dhtmlHistory.add(nomPlantilla,
    //            "carregarDesdeHistoria('" + nomPlantilla + "');");
    //    }
    nomPlantillaActual = nomPlantilla;
    //    if ((nomPlantilla.indexOf('altalugar') == 0 && nomPlantilla.indexOf('&id=') < 0) || nomPlantilla.indexOf('editar') == 0 ) {
    if (!document.sign_in) {
        if (nomPlantilla.indexOf('altalugar') == 0 || nomPlantilla.indexOf('editar') == 0) {
            if (document.formstatusclient && document.formstatusclient.statusclient) {
                stcli = document.formstatusclient.statusclient.value;
                //              st = statuscli.getAttribute('status');
                //              stcli = parseInt(st);
                //              alert('NOU stcli: ' + stcli + '; document.formstatusclient.statusclient: ' + document.formstatusclient.statusclient);
                if (nomPlantilla.indexOf('editar') == 0) {
                    if (stcli < 2) {
                        alert('Para crear eventos, banners, etc., debe realizar primero el pago del servicio');
                        nomPlantillaActual = 'pago.html';
                    }
                } else if (nomPlantilla.indexOf('altalugar') == 0) {
                    numLugares = document.formstatusclient.lugaresclient.value;
                    if (stcli < 2 && numLugares >= 2) {
                        alert('Para dar de alta un nuevo negocio debe realizar primero el pago del servicio');
                        nomPlantillaActual = 'pago.html';
                    }
                }
            }
        }
    }
    idD = 'div_contingut';
    idElem = 'taula_usuaris';
    urlServlet = 'PresentarPagina?plantilla=' + nomPlantillaActual;
    carregarDiv(urlServlet, idD, idElem, '0', 'n');
}

function carregarPaginaSubstituint(pagina, idDivPagina, idSubstituir) {
    nomPlantillaActual = pagina;
    carregarSubstituint(idDivPagina, idSubstituir, 'n');
}
function carregarSubstituint(idDivPagina, idSubstituir, tot) {
    // idDIvPagina: el id a la pàgina que carreguem
    // idSubstituir: l'id a la pàgina actual (document)
    idD = idDivPagina;
    idElem = idSubstituir;
    divSubs = document.getElementById(idSubstituir);
    urlServlet = 'PresentarPagina?plantilla=' + nomPlantillaActual;
    //    alert('carregarSubstituint, urlServlet: ' + urlServlet + '; tot: ' + tot + '; idSubstituir: ' + idSubstituir);
    if (tot == 's') {
        urlServlet = urlServlet + '&vertodo=1';
        divModel = document.getElementById(idSubstituir);
        if (divModel && divModel.attributes) {
            ct = divModel.attributes.getNamedItem('columnastodo');
            if (ct && ct.value != '') {
                urlServlet = urlServlet + '&columnastodo=' + ct.value;
            }
        }
    }
    //    alert('carregarSubstituint, idSubstituir: ' + idSubstituir + '; idDivPagina:' + idDivPagina + ', urlServlet: ' + urlServlet);
    carregarDiv(urlServlet, idD, idElem, '1', tot);
}

function carregarAmbId(nomPlantilla, idDemanat) {
    idD = 'div_contingut';
    idElem = 'taula_usuaris';
    urlServlet = 'PresentarPagina?plantilla=' + nomPlantilla + '&id=' + idDemanat;
    carregarDiv(urlServlet, idD, idElem, '0', 'n');
}

function carregarDiv(urlServlet, idD, idElem, subst, tot) {
    substituirDiv = subst;
    //    alert('carregarDiv [' + urlServlet + '] ' + idD + ' ' + idElem);
    idDiv = idD;
    idElement = idElem;
    if (substituirDiv == '1') {
        urlServlet = urlServlet + '&parcial=s&tot=' + tot + '&divParcial=' + idElement;
    }
    //    alert('carregarDiv [' + urlServlet + '] ' + idD + ' ' + idElem);
    cargarXML(urlServlet + '&ajax=s');
}

function corregirURL(url) {
    var pos = window.location.href.indexOf('/PresentarPagina');
    if (pos < 0) {
        pos = window.location.href.indexOf('/clientes');
    }
    if (pos < 0) {
        pos = window.location.href.indexOf('/#');
    }
    if (pos < 0) {
        pos = window.location.href.lastIndexOf('/');
    }
    if (pos >= 0) {
        baseDocs = window.location.href.substring(0, pos + 1);
    }
    else {
        baseDocs = window.location.href;
    }
    if ((pos = baseDocs.indexOf('#')) >= 0) {
        baseDocs = baseDocs.substring(0, pos);
    }
    return (baseDocs + url);
}

function cargarXML(url) {
    //    carregarBanners();
    //    alert('cargarXML ' + url);
    url = corregirURL(url);
    //    alert('despres de corregirURL: ' + url);
    //    alert('cargarXML, url: ' + url);
    posarUltimsValorsCarregar(url);

    if (!carregarRequadres) {
        missatgeCarregant('Cargando datos ...');
    }
    crearXMLHTTPRequest(url, processarRequestPagina);

}
function posarUltimsValorsCarregar(url) {
    if (idDiv != 'div_vertodo_contenido') {
        inputUltimaURL = document.getElementById('ultimaURL');
        if (inputUltimaURL && inputUltimaURL.value) {
            inputUltimaURL.value = url;
            urlActual = inputUltimaURL.value;
            idcont = document.getElementById('idcontingut');
            idcont.value = idDiv;
            idel = document.getElementById('idelement');
            idel.value = idElement;
            subst = document.getElementById('substituir');
            subst.value = substituirDiv;
        }
    }
//    alert('posarUltimsValorsCarregats [' + inputUltimaURL.value + '] ');
}

function processarRequestPagina() {
    if (!xmlReqServlet || xmlReqServlet.readyState != 4) {
        return;
    }
    if (tancarMissatgeAlCarregar) {
        tancarMissatgeCarregant();
    }
    if (xmlReqServlet.status == 200) {
        //        alert('processarRequestPagina: ' + xmlReqServlet.responseText);
        if (xmlReqServlet.responseXML) {
            omplirDivContingut();
            if (nomPlantillaActual.indexOf('perfil.html') == 0) {
        // carregar les subplantilles
        }
        }
        else {
            respostaNoEsXML(xmlReqServlet);
        }
    } else {
        errorRecibiendoDatos(xmlReqServlet);
    }

}

function crearXMLHTTPRequest(url, funcio) {
    if (xmlReqServlet) {
        xmlReqServlet.abort();
        xmlReqServlet.onreadystatechange = function () {}
        xmlReqServlet = 0;
    }
    if (window.XMLHttpRequest) {
        xmlReqServlet = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xmlReqServlet = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (!xmlReqServlet) {
        return;
    }

    xmlReqServlet.onreadystatechange = funcio;

    xmlReqServlet.open("POST", url, true);

    if (window.XMLHttpRequest) {
        xmlReqServlet.send(null);
    } else if (window.ActiveXObject) {
        xmlReqServlet.send();
    }

}
function respostaNoEsXML(req) {
    tancarMissatgeCarregant();
}

function errorRecibiendoDatos(req) {
    try {
        //        alert('errorRecibiendoDatos: \n' + req.getAllResponseHeaders() + '\nreq.responseText: ' + req.responseText);
        t = req.statusText;
        if (t && t.length > 0 && t != 'unknown') {
            alert('ERROR recibiendo datos:\n' + t);
        }
    } catch (e) {
    }
}

function omplirDivContingut() {
    contingut = getElementByIdXML(xmlReqServlet.responseXML, idElement);
    divCanviar = document.getElementById(idDiv);
    //alert('CONTINGUT REBUT, idDiv (pag): ' + idDiv + '; idElement (XML): ' + idElement + '; divCanviar: ' + divCanviar + '; contingut: ' + contingut);
    //    alert('CONTINGUT REBUT: ' + contingut.nodeName + '; fills: ' + contingut.childNodes.length);
    if (divCanviar && contingut) {
        var ocultarOpcionsBuscar = false;
        var nb = document.getElementById('blocNovaBusqueda');
        if (nb && nb != undefined && nb.style.display == 'block') {
            ocultarOpcionsBuscar = true;
            document.getElementById('blocOpcions').style.display = 'none';
            nb.style.display = 'block';
        }
        if (substituirDiv == '1') {
            //            alert(xmlReqServlet.responseText);
            var idDivCanviar = getAtribut(divCanviar, 'id');
            //            alert('idDivCanviar: ' + idDivCanviar + '; idElement: ' + idElement + '; idDiv: ' + idDiv + '\n' + xmlReqServlet.responseText);
            contingut.setAttribute('id', idDiv);
            //            divCanviarParcial = document.getElementById(idElement);
            divCanviarParcial = document.getElementById(idDiv);
            if (divCanviarParcial.style.filter) {
                divCanviarParcial.style.filter = 'alpha(opacity=100)';
            }
            if (divCanviarParcial.style.opacity) {
                divCanviarParcial.style.opacity = '1';
            }
            pare = (divCanviar.parentElement ? divCanviar.parentElement : divCanviar.parentNode);
            divCanviar.innerHTML = contingut.innerHTML;
            var divAmpli = document.getElementById('divampliacio');
            if (divAmpli) {
                divAmpli.style.width = (parseInt(document.documentElement.clientWidth) - 2) + 'px';
                divAmpli.style.height = (parseInt(document.documentElement.clientHeight) - 2)  + 'px';
            }
            if (idDivCanviar == 'dadesEmpresa' || idDivCanviar == 'divdadesempresa') {
                centrarDiv('divdadesempresa');
                centrarDiv('dadesEmpresa');
                if (!document.all) {
                    centrarDiv('divampliacio');
                    visibilitat('divampliacio', 'visible');
                }
                visibilitat('divdadesempresa', 'visible');
                visibilitat('dadesEmpresa', 'visible');
                opacitat('dadesEmpresa', 1.0);
            } else if (idDivCanviar == 'dadesNoticia') {
                centrarDiv('divampliacio');
                centrarDiv('divinteriorampliacio');
                visibilitat('divampliacio', 'visible');
                visibilitat('divinteriorampliacio', 'visible');
            }

        } else {
            if (divCanviar.childNodes.length > 0) {
                while (divCanviar.childNodes.length > 0) {
                    divCanviar.removeChild(divCanviar.childNodes[0]);
                }
            }
        }
        if (contingut) {
            if (substituirDiv != '1') {
                try {
                    divCanviar.appendChild(contingut);
                } catch (e) {
                    divCanviar.innerHTML = contingut.innerHTML;
                }
                // JJC, revisar
                //                window.scrollTo(0, 0);
                if (esVisible('missatge')) {
                    centrarDiv('missatge');
                }
            }
            var divRequadres = document.getElementById("requadres");
            if (divRequadres && nomPlantillaActual.indexOf('pagina=') < 0) {
                carregarRequadres = true;
            } else {
                carregarRequadres = false;
            }
            //            alert(nomPlantillaActual + '; carregarRequadres: ' + carregarRequadres + '\n' + contingut.innerHTML);
            if (carregarRequadres) {
                doCarregarRequadres();
            }
            if (ocultarOpcionsBuscar) {
                document.getElementById('blocOpcions').style.display = 'none';
                document.getElementById('blocNovaBusqueda').style.display = 'block';
            }

        } else {
            missatge('Advertencia','El documento no tiene contenido identificado');
        }
    }
}

////////////////////////////////////////////////// validar formulari //////////////////////////////////////////////////
function getAtribut(elem, atribut) {
    return elem.getAttribute(atribut);
    /*
    var val = elem.attributes.getNamedItem(atribut);
    if (val && val.value) {
      val = val.value;
    }
//    if (atribut != 'id') {
//      alert('getNamedItem ' + atribut + ' = ' + val);
//    }
    if (!val) {
      val = elem.getAttribute(atribut);
      alert('getAttribute ' + atribut + ' = ' + val);
    }
//    alert('atribute ' + atribut + '; val: ' + val);
    if (!val) {
      val = eval('elem.' + atribut);
      alert('eval ' + atribut + ' = ' + val);
    }
    if (!val) {
        val = '';
    }
//    alert('elem: ' + elem.nodeName + '; atribut: ' + atribut + '; val: [' + val + ']');
     */
    return val;
}

function compararDataAnterior(camp, campComparar) {
    return compararDataIgualOAnterior(camp, campComparar, 0);
}

function compararDataAnteriorIgual(camp, campComparar) {
    return compararDataIgualOAnterior(camp, campComparar, 1);
}

function compararDataIgualOAnterior(camp, campComparar, igual) {
    try {
        if (camp.value && camp.value != '') {
            if (campComparar && campComparar.value && campComparar.value != '') {
                dataCamp = camp.value.split('-');
                dataCampComparar = campComparar.value.split('-');
                if (dataCamp.length == 3 && dataCampComparar.length == 3) {
                    dataMenor = new Date(parseInt(dataCamp[2]), parseInt(dataCamp[1]) - 1, parseInt(dataCamp[0]));
                    dataMesGran = new Date(parseInt(dataCampComparar[2]), parseInt(dataCampComparar[1]) - 1, parseInt(dataCampComparar[0]));
                    //                  alert('anterior: ' + dataMenor.getTime() + '; posterior: ' + dataMesGran.getTime());
                    if ( (igual && dataMenor.getTime() > dataMesGran.getTime()) ||
                        (!igual && dataMenor.getTime() >= dataMesGran.getTime())) {
                        return true;
                    }
                }
            }
        }
        return false;
    } catch (e) {
    //        alert('ERROR: ' + e);
    }
    return false;
}

////////////////////////////////////// validar camps numerics //////////////////////////////////////

function comprobarPrecio(campInput) {
    if (campInput.getAttribute('value') == '') {
        return;
    }
    res = validarFloat(campInput);
}

function validarFloat(campInput) {
    var val = campInput.getAttribute('value');
    if (!val || val == '') {
        return true;
    }
    campInput.setAttribute('value', val.replace(/,/g, '.'));
    var valNum = parseFloat(val);
    if (isNaN(valNum)) {
        return false;
    }
    campInput.setAttribute('value', valNum);
    return true;
}

function validarInt(campInput) {
    var val = campInput.getAttribute('value');
    alert(val);
    if (!val || val == '') {
        return true;
    }
    var valNum = parseInt(val);
    if (isNaN(valNum)) {
        return false;
    }
    campInput.setAttribute('value', valNum);
    return true;
}

var xmlReqServletFormulari;
function enviarFormulari(url, query) {
    missatgeCarregant('Enviando datos al servidor ...');
    url = corregirURL(url);
    if (window.XMLHttpRequest) {
        xmlReqServletFormulari = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xmlReqServletFormulari = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (!xmlReqServletFormulari) {
        //        alert('ERROR enviarFormulari, ' + url + ' - ' + query);
        return;
    }
    //    missatge('Esperando respuesta del servidor ...');
    xmlReqServletFormulari.open("POST", url, true);
    xmlReqServletFormulari.onreadystatechange = procesarRequestFormulari;


    if (query != null) {
        xmlReqServletFormulari.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    }
    if (window.XMLHttpRequest) {
        xmlReqServletFormulari.send(query);
    } else if (window.ActiveXObject) {
        if (query == null) {
            xmlReqServletFormulari.send();
        } else {
            xmlReqServletFormulari.send(query);
        }
    }
}


function crearQueryFormulari(form) {
    var elements = form.elements;
    var params = new Array();

    for (var i = 0; i < elements.length; i++) {
        if ((name = elements[i].name) && (value = elements[i].value)) {
            if (elements[i].type == 'radio' && (!elements[i].checked || elements[i].checked == '')) {
            } else if (elements[i].type == 'checkbox' && (!elements[i].checked || elements[i].checked == '')) {
                params.push(name + "=0");
            } else {
                //                alert(encodeURIComponent(value));
                params.push(name + "=" + encodeURIComponent(value));
            }
        }
    }
    return params.join("&");
}

function procesarRequestFormulari() {
    if (!xmlReqServletFormulari || xmlReqServletFormulari.readyState != 4) {
        return;
    }
    tancarMissatgeCarregant();
    if (xmlReqServletFormulari.status == 200) {
        //        alert('procesarRequestFormulari: ' + xmlReqServletFormulari.responseText);
        if (xmlReqServletFormulari.responseXML) {
            resultat = xmlReqServletFormulari.responseXML.getElementsByTagName('resultat');
            explicacio = xmlReqServletFormulari.responseXML.getElementsByTagName('explicacio');
            t = '';
            if (explicacio.length > 0) {
                //alert('explicacio[0].firstChild.data: ' + explicacio[0].firstChild.data + '; resultat[0].firstChild.data: ' + resultat[0].firstChild.data);
                if (explicacio[0].firstChild && explicacio[0].firstChild.data) {
                    t = explicacio[0].firstChild.data;
                } else if (explicacio[0].textContent) {
                    t = explicacio[0].textContent;
                } else if (explicacio[0].text) {
                    t = explicacio[0].text;
                } else {
                    t = explicacio[0].innerHTML;
                }
            }
            if (resultat.length > 0 && resultat[0].childNodes.length > 0 &&
                resultat[0].firstChild && resultat[0].firstChild.data &&
                resultat[0].firstChild.data == 'OK') {
                //                if (t == '') {
                //                    t = 'Su empresa ha sido dada de alta correctamente. Pr&oacute;ximamente recibir&aacute; un email confirmando el registro. Una vez recibido, ya podr&aacute; acceder a la zona de clientes. Muchas gracias.';
                //                }
                //                if (xmlReqServletFormulari.responseXML.documentElement.nodeName == 'actualitzarusuari') {
                //                    editarPerfil(document.formperfil.id.value);
                //                } else {
                //                    missatge('resultado del formulario', t);
                //                }
                //alert(t);
                if(t.indexOf('novullmissatge') < 0){
                    missatge('quierogestionarme', t);
                }
                if (urlTornar != '') {
                    //carregarAmbTimeout(urlTornar);
                    carregar(urlTornar);
                    urlTornar = '';
                }
                return;
            } else {
                missatge('quierogestionarme', t);
            }
        } else {
            respostaNoEsXML(xmlReqServletFormulari);
        }
    } else {
        //        alert('procesarRequestFormulari: ' + xmlReqServletFormulari.status + '; statusText: ' + xmlReqServletFormulari.statusText);
        errorRecibiendoDatos(xmlReqServletFormulari);
    }

}

function ampliarEmpresa(identifica) {
    var divInteriorAmp = document.getElementById('divdadesempresa');
    if (divInteriorAmp) {
        carregarPaginaSubstituint('infoempresas.html&identifica=' + identifica, 'divdadesempresa', 'dadesEmpresa', 'n');
    }
}

function ampliarNoticia(identifica) {
    carregarPaginaSubstituint('ampliarnoticia.html&identifica=' + identifica, 'dadesNoticia', 'dadesNoticia', 'n');
}
/*
function ampliarNoticia(titulo, texto, fecha, referencia, medio, tipo, clasifica) {
    // divNoticias i divampliacio
    texto = texto.replace(/!!b!!/gi, '<br clear="all" />');
    var divAmp = document.getElementById('divampliacio');
    var divInteriorAmp = document.getElementById('divinteriorampliacio');
    if (divAmp && divInteriorAmp) {
        posarText('titolNoticiaAmpli', titulo);
        posarText('textNoticiaAmpli', texto);
        posarText('dataNoticiaAmpli', fecha);
        posarText('referenciaNoticiaAmpli', referencia);
        posarText('medioNoticiaAmpli', medio);
        posarText('clasificaNoticiaAmpli', clasifica);
        posarText('tipoNoticiaAmpli', tipo);
        divAmp.style.visibility = 'visible';
        divInteriorAmp.style.visibility = 'visible';
        centrarDiv('divampliacio');
        centrarDiv('divinteriorampliacio');
    }
}
    */
function posarText(idDiv, texto) {
    divTextNoti = document.getElementById(idDiv);
    if (divTextNoti) {
        divTextNoti.innerHTML = texto;
    }
}
function linkNoticia(param) {
    if (param == '' || param == 'null') {
        return;
    }
    if (param.indexOf('http') != 0) {
        param = 'http://' + param;
    }
    open(param, 'link_noticia');
}

function desplegar(e) {
    if (!e) e = window.event;
    var targ;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ && targ.parentNode && targ.parentNode.parentNode) {
        targ.parentNode.parentNode.style.backgroundColor = '#dddddd';
        targ.parentNode.parentNode.style.overflow = 'visible';
        targ.parentNode.parentNode.style.height = targ.parentNode.parentNode.clientHeight;
        if (targ.parentNode.parentNode.parentNode) {
            targ.parentNode.parentNode.parentNode.style.backgroundColor = '#dddddd';
            targ.parentNode.parentNode.parentNode.style.overflow = 'visible';
            targ.parentNode.parentNode.parentNode.style.height = targ.parentNode.parentNode.parentNode.clientHeight;
            targ.parentNode.parentNode.parentNode.style.display = 'block';
        }
    }
}

function desconectar() {
    document.sign_in.logout.value='si';
    missatgeCarregant('Esperando respuesta del servidor ...');
    document.sign_in.submit();
    return true;
}

function recordarPasswordUsuari() {
    if (document.recordarpwd && document.recordarpwd.taula && document.recordarpwd.email) {
        if (document.recordarpwd.email.value == '') {
            alert('Debe introducir su email');
            return;
        }
        var pos = document.recordarpwd.email.value.indexOf('@');
        var pos1 = document.recordarpwd.email.value.lastIndexOf('.');
        if (pos < 0 || pos1 < 0 || pos1 < pos) {
            alert('El email no es correcto');
            return ;
        }
        missatgeCarregant('Esperando respuesta del servidor ...');
        document.recordarpwd.submit();
    //        invocarServletAccioResposta('EnviarMailPassword?taula=' + document.recordarpwd.taula.value + '&email=' + document.recordarpwd.email.value)
    }
}

function contractarServei() {
    var ok = confirm('¿Desea contratar el servicio: ' + document.contratarservicio.titulo.value + '?');
    if (ok) {
        enviarFormulari('ContractarServei', crearQueryFormulari(document.contratarservicio));
    }
}

function editarUsuari() {
    if (document.usuariregistrat && document.usuariregistrat.id_usuario && document.usuariregistrat.id_usuario.value != '' && document.usuariregistrat.id_usuario.value != '0') {
        carregar('perfil.html&esAlta=1&id=' + document.usuariregistrat.id_usuario.value);
    }
}

function buscarNoticias() {
    var checks = document.opcionsnoticies.elements;
    var seccions = '';
    if (checks) {
        for (i = 0; i < checks.length; i++) {
            if ("checkbox" != checks[i].type) {
                continue;
            }
            if (!(checks[i].checked)) {
                continue;
            }
            if (checks[i].checked == 'false')  {
                continue;
            }
            if (seccions.length > 0) {
                seccions = seccions + ',';
            }
            seccions = seccions + checks[i].value;
        }
    }
    carregar('noticias.html&seccions=' + seccions + '&claves=' + document.opcionsnoticies.claves.value);

}

function buscarConsultas() {
    var tipusConsulta = '';
    checks = document.getElementsByName('tipoconsulta');
    for (i = 0; i < checks.length; i++) {
        if (checks[i].checked) {
            tipusConsulta = checks[i].value;
            break;
        }
    }
    var servicio = document.novaconsulta.serviciobuscar.value;
    var tiposervicio = document.novaconsulta.tiposerviciobuscar.value;
    //    carregarPaginaSubstituint('consultas.html&tipoconsulta=' + tipusConsulta, 'divConsultas', 'divConsultas');
    carregar('consultas.html&tipoconsulta=' + tipusConsulta + '&serviciobuscar=' + servicio + '&tiposerviciobuscar=' + tiposervicio);
}

function enviarFormulariValidant(formulari, url) {
    var ok = confirmarEnviarFormulari(formulari, url);
    if (ok) {
        enviarFormulari(url, crearQueryFormulari(formulari));
    }
    // Per si el button es submit i es crida aquesta funcio al onsubmit
    return false;
}

function canviSector(elem) {
    canviSeleccio(elem, 'selectsector', 'selectespecialidad', 'Todos', '', 'ServletEspecialitats', 'sector');
}
function canviTipoServicio(elem) {
    canviSeleccio(elem, 'tiposervicio', 'servicio', 'COMUN', 'COMUN', 'ServletServeis', 'clasifica');
}
function canviTipoServicioBuscar(elem) {
    canviSeleccio(elem, 'tiposerviciobuscar', 'serviciobuscar', 'COMUN', 'COMUN', 'ServletServeis', 'clasifica');
}
function canviProvincia(elem) {
    canviSeleccio(elem, 'selectprovincia', 'selectpoblacion', 'Todas', '', 'ServletPoblacions', 'cod_postal');
}
////////////////////////////// selects /////////////////////////////////
var idSelectRecargar;
var xmlReqServletSelect;
var clasificaSeleccionada = '';
var masterSeleccionat = '';

function canviSeleccio(elem, idselect, idSelRecargar, textSelect, valueSelect, urlServlet, nomParam) {
    sel = elem.selectedIndex;
    if (sel < 0) {
        return;
    }
    valor = elem.options[sel].value;
    idSelectRecargar = idSelRecargar;
    if (valor != '') {
        //        alert('canvi: ' + valor + '; nomParam: ' + nomParam + '; urlServlet: ' + urlServlet);
        carregarSelect(valor, elem.options[sel].innerHTML, idselect, idSelRecargar, textSelect, valueSelect, urlServlet, nomParam);
    }
    else {
        netejarSelect(idSelRecargar);
    }
}
function carregarSelect(clasifica, s, idSelect, idSelectDetall, textSelect, valueSelect, urlServlet, nomParam) {
    idSelectRecargar = idSelectDetall;
    clasificaSeleccionada = clasifica;
    masterSeleccionat = s;
    netejarSelect(idSelectDetall);
    selectMaster = document.getElementById(idSelect);
    selectMaster.options[0].innerHTML = textSelect;
    selectMaster.options[0].value = valueSelect;
    //    url = 'ServletPoblacions?provincia=' + encodeURIComponent(provincia);
    url = corregirURL(urlServlet + '?' + nomParam + '=' + clasifica);

    if (window.XMLHttpRequest) {
        xmlReqServletSelect = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xmlReqServletSelect = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (!xmlReqServletSelect) {
        return;
    }
    xmlReqServletSelect.onreadystatechange = procesarRequestSelect;

    xmlReqServletSelect.open("POST", url, true);
    if (window.XMLHttpRequest) {
        xmlReqServletSelect.send(null);
    } else if (window.ActiveXObject) {
        xmlReqServletSelect.send();
    }
}

function netejarSelect(idselect) {
    selectDetall = document.getElementById(idselect);
    while (selectDetall.options.length > 1) {
        selectDetall.removeChild(selectDetall.options[1]);
    }
}

function crearOption(select, valor, texto) {
    opcion = document.createElement("option");
    opcion.value = valor;
    opcion.innerHTML = texto;
    select.appendChild(opcion);
    return opcion;
}
function procesarRequestSelect() {
    if (!xmlReqServletSelect || xmlReqServletSelect.readyState != 4) {
        return;
    }
    if (xmlReqServletSelect.status == 200) {
        //        alert('idElement: ' + idElement + '; idDiv: ' + idDiv + '\n' + xmlReqServletSelect.responseText);
        if (xmlReqServletSelect.responseXML) {
            lesOpcions = xmlReqServletSelect.responseXML.getElementsByTagName('opcio');
            //            alert(resultat[0].nodeName + ' = ' + resultat[0].childNodes[0].nodeValue);
            if (lesOpcions && lesOpcions.length > 0 ) {
                selectMaster = document.getElementById(idSelectRecargar);
                //                selectMaster.options[0].innerHTML = masterSeleccionat;
                //                selectMaster.options[0].value = clasificaSeleccionada;
                for (i = 0; i < lesOpcions.length; i++) {
                    opcion = crearOption(selectMaster, lesOpcions[i].attributes.getNamedItem('value').value, lesOpcions[i].childNodes[0].nodeValue);
                }
            }
            else {
                missatge('Advertencia', 'Error cargando servicios de tipo ' + clasificaSeleccionada);
            }
        }
        else {
            respostaNoEsXML(xmlReqServletSelect);
        }
    } else {
        errorRecibiendoDatos(xmlReqServletSelect);
    }

}

/////////////////////////////// FINAl de selects  ////////////////////

function enviarMail(m) {
    window.open('mailto:' + m);
}
function ordenarConsultas(radio) {
    carregar('consultaempresas.html&orden=' + radio.value);
}

function obtenirParamsConsultaEmpresas() {
    var ordenSeleccionat = 'N';
    for (i = 0; i < document.consultaempresas.elements.length; i++) {
        if ('orden' == document.consultaempresas.elements[i].name &&
            document.consultaempresas.elements[i].checked) {
            ordenSeleccionat = document.consultaempresas.elements[i].value;
            break;
        }
    }

    return 'consultaempresas.html&orden=' + ordenSeleccionat +
    '&nombrecomercial=' + document.consultaempresas.nombrecomercial.value +
    '&claves=' + document.consultaempresas.claves.value +
    '&sector=' + document.consultaempresas.sector.value +
    '&provincia=' + document.consultaempresas.cod_postal.value +
    '&poblacion=' + document.consultaempresas.poblacion.value;
}

function consultarEmpresas() {
    if (document.consultaempresas) {
        var nr = document.getElementById('numeroResultados');
        if (nr) {
            nr.innerHTML = 'Buscando ...';
        }
        mostrarOpcionsBuscarEmpresas(false);
        carregar(obtenirParamsConsultaEmpresas());
    }

}

function imprimirPlantilla(plantilla) {
    open('PresentarPagina?index=plantillaindeximprimir.html&plantilla=' + plantilla, '_sep', '');
}

function imprimirDadesServei(identifica) {
    imprimirPlantilla('servicios.html&identifica=' + identifica);
}

function imprimirDadesEmpresa(identifica) {
    imprimirPlantilla('infoempresas.html&identifica=' + identifica);
}
function enviarMailDadesEmpresa(idEmpresa) {
    carregarPaginaSubstituint('formularisempresa.html&identifica=' + idEmpresa, 'divdadesempresa', 'dadesEnviarMail', 'n');
}
function contactarEmpresa(idEmpresa) {
    //contactar.html&entidad=id&usuario=id
    var idUsr = '';
    if (document.usuariregistrat && document.usuariregistrat.id_usuario) {
        idUsr = document.usuariregistrat.id_usuario.value;
    }
    carregarPaginaSubstituint('formularisempresa.html&identifica=' + idEmpresa + '&usuario=' + idUsr, 'divdadesempresa', 'dadesContactar', 'n');
//    carregarPaginaSubstituint('contactar.html&entidad=' + idEmpresa + '&usuario=' + idUsr, 'divdadesempresa', 'taula_usuaris', 'n');
}
function comentarisEmpresa(idEmpresa) {
    carregarPaginaSubstituint('formularisempresa.html&identifica=' + idEmpresa, 'divdadesempresa', 'dadesComentaris', 'n');
}
function contactarEmpresaInfo(formulari) {
    if (formulari && formulari.texto &&
        formulari.texto.value && formulari.texto.value == '') {
        alert('Debe escribir algo en el texto');
        return false;
    }
    visibilitat('divdadesempresa', 'hidden');
    visibilitat('divampliacio', 'hidden');
    visibilitat('dadesContactar', 'hidden');
    //    var divDades = document.getElementById('divEmpresa');
    // A quina servlet?
    enviarFormulari('ContactarEmpresa', crearQueryFormulari(formulari));
    return false;

}
function enviarMailInfoEmpresa(formulari) {
    if (formulari && formulari.e_mail &&
        formulari.e_mail.value && formulari.e_mail.value == '') {
        alert('Debe escribir el email del destinatario');
        return false;
    }
    visibilitat('divdadesempresa', 'hidden');
    visibilitat('divampliacio', 'hidden');
    visibilitat('dadesEnviarMail', 'hidden');
    //    var divDades = document.getElementById('divEmpresa');
    // A quina servlet?
    enviarFormulari('EnviarMailInfoEmpresa', crearQueryFormulari(formulari));
    return false;
}
function enviarComentaris(idEmpresa) {
    if (document.formcontactar && document.formcontactar.texto &&
        document.formcontactar.texto.value && document.formcontactar.texto.value == '') {
        alert('Debe escribir algo en el comentario');
    }
    visibilitat('divdadesempresa', 'hidden');
    visibilitat('divampliacio', 'hidden');
    visibilitat('dadesComentaris', 'hidden');
}
function mostrarOpcionsBuscarEmpresas(mostrar) {
    try {
        if (mostrar) {
            document.getElementById('blocOpcions').style.display = 'block';
            document.getElementById('blocNovaBusqueda').style.display = 'none';
        } else {
            var nb = document.getElementById('blocNovaBusqueda');
            document.getElementById('blocOpcions').style.display = 'none';
            nb.style.display = 'block';
        }
    } catch (e) {
    }

}

function actualitzarPerfil() {
    enviarForm = confirmarAltaUsuari(document.registrousuario);
    if (enviarForm) {
        enviarFormulari('ActualitzarUsuari', crearQueryFormulari(document.registrousuario));
    }
}

function veurePDF(v) {
    window.open('PresentarPDF?pdf=' + v, '_pdf', '');
}
function veurePagina(pag) {
    window.open(pag, '_pagina', '');
}

