function preloadImages(){var d=document;if(d.images){if(!d.p)d.p=new Array();var i,j=d.p.length,a=preloadImages.arguments;for(i=0;i<a.length;i++)if(a[i].indexOf("#")!=0){d.p[j]=new Image;d.p[j++].src=a[i];}}}
function findObj(n,d){var p,i,x;if(!d)d=document;if((p=n.indexOf("?"))>0&&parent.frames.length){d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}if(!(x=d[n])&&d.all)x=d.all[n];for(i=0;!x&&i<d.forms.length;i++)x=d.forms[i][n];for(i=0;!x&&d.layers&&i<d.layers.length;i++)x=findObj(n,d.layers[i].document);if(!x&&d.getElementById)x=d.getElementById(n);return x;}
function swapImage(){var i,j=0,x,a=swapImage.arguments;document.sr=new Array;for(i=0;i<(a.length-2);i+=3)if((x=findObj(a[i]))!=null){document.sr[j++]=x;if(!x.oSrc)x.oSrc=x.src;x.src=a[i+2];}}
function swapImgRestore(){var i,x,a=document.sr;for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++)x.src=x.oSrc;}
function changeProp(objName,x,theProp,theValue){var obj=findObj(objName);if(obj&&(theProp.indexOf("style.")==-1||obj.style)){if(theValue==true||theValue==false)eval("obj."+theProp+"="+theValue);else eval("obj."+theProp+"='"+theValue+"'");}}

function ocultarSelects(){if(isIE){var selects=new Array();for(var i=0;i<document.forms.length;i++){var f=document.forms[i];for(var j=0;j<f.elements.length;j++){var o=f.elements[j];if(o.type&&o.type.indexOf("select")!=-1){selects[selects.length]=o;}}}for(var i=0;i<selects.length;i++){var o=selects[i];o.style.visibility='hidden';}}}
function mostrarSelects(){
    if(isIE){
        var selects=new Array();
        for(var i=0;i<document.forms.length;i++){
            var f=document.forms[i];
            for(var j=0;j<f.elements.length;j++){
                var o=f.elements[j];
                if(o.type&&o.type.indexOf("select")!=-1){
                    selects[selects.length]=o;
                }
            }
        }
        for(var i=0;i<selects.length;i++){
            var o=selects[i];
            if (o.mostrar){
                if(o.mostrar=="true"){
                    o.style.visibility='visible';
                }
            }else{
                o.style.visibility='visible';
            }
        }
    }
}
   
function uppercase(obj){var v=obj.value;v=v.toUpperCase();obj.value=v;}

function createOption(texto,valor,selected){var opt=document.createElement('OPTION');opt.appendChild(document.createTextNode(texto));opt.value=valor;opt.selected=selected;return opt;}

function validarNIF_CIF(valor){
	var letrascif="ABCDEFGHNPQS";
	var letrasnif="KLXM0123456789";
	if(valor!=null&&valor.length==9&&!isNaN(valor.substring(1,8))){
		valor=valor.toUpperCase();
		if(letrascif.indexOf(valor.substring(0,1))!="-1"){
			return validarCIF(valor);
		}else if(letrasnif.indexOf( valor.substring(0,1))!="-1"){
			return validarNIF(valor);
		}else {
			return false;
		}
	}else{
		return false;
	}
}

function limitarTextArea(textarea, limite) {
    if (textarea!=null) {
        var longitud = textarea.value.length;        
        if(longitud >= 0) { 

            var cuenta=0;
            var actual='';
            var contEnters=0;
            var i;                                                   

            for( i=0; i <=longitud; i++) {
                actual = textarea.value.substring(i, i+1);
                if(actual != '') {
                    if(actual == '\n') {
                        cuenta=cuenta+2;
                        contEnters=contEnters+1;
                    } else
                        cuenta=cuenta +1;                                                                                                                                                                            
                }
            }                                                         
            if(cuenta>limite) {                                                                                                                    
                textarea.value=textarea.value.substring(0, limite -contEnters );
            }
        }

    }

}


var letrasNIF=new Array("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E");
var letrasCIF=new Array("J","A","B","C","D","E","F","G","H","I");
var PESOS=new Array(1,2,4,8,5,10,9,7,3,6);
function validarNIF(valor){var letra=valor.substring((valor.length-1),valor.length);var numero=valor.substring(0,(valor.length-1));while(numero.substring(0,1)=="0")numero=numero.substring(1,numero.length);var resto=parseInt(numero);resto=resto%23;if(letrasNIF[resto]==letra.toUpperCase())return true;else{return false;}}
function validarCIF(valor){var sumap=0;var sumai=0;var p;valor=valor.toUpperCase();sumap=parseInt(valor.substring(2,3))+parseInt(valor.substring(4,5))+parseInt(valor.substring(6,7));for(var i=1;i<=8;i++){p=2*parseInt(valor.substring(i,i+1));if(p>9)sumai+=Math.floor((p/10))+(p%10);else sumai+=p;i++;}var R=sumap+sumai;var dc=R%10;dc=10-dc;if(dc==10)dc=0;if(isNaN(valor.charAt(8))&&letrasCIF[dc]==valor.charAt(8))return true;else if(dc==parseInt(valor.substring(8,9)))return true;else{return false;}}
function validarNSS(valor){if(valor!=null&&valor.length==12&&!isNaN(valor)){var num=valor.substring(0,10);var resto=valor.substring(10,12);if(num%97==resto)return true;else{return false;}}else{return false;}}
function validarCCC(valor){if(valor!=null&&valor.length==20){var entidad=valor.substring(0,4);var oficina=valor.substring(4,8);var dc=valor.substring(8,10);var cuenta=valor.substring(10);if (!(obtenerDigito("00"+entidad+oficina)==parseInt(dc.charAt(0)))||!(obtenerDigito(cuenta)==parseInt(dc.charAt(1)))){return false;}else return true;}else{return false;}}
function obtenerDigito(valor){var resultado=0;for(var h=0;h<=9;h++) resultado+=parseInt(valor.charAt(h))*PESOS[h];resultado=11-(resultado%11);if(resultado==11) resultado=0;else if(resultado==10) resultado=1;return resultado;}

function validarEmail(emailStr){var emailPat=/^(.+)@(.+)$/;var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";var validChars="\[^\\s" + specialChars + "\]";var quotedUser="(\"[^\"]*\")";var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;var atom=validChars + '+';var word="(" + atom + "|" + quotedUser + ")";var userPat=new RegExp("^" + word + "(\\." + word + ")*$");var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");var matchArray=emailStr.match(emailPat);if(matchArray==null)return false;var user=matchArray[1];var domain=matchArray[2];if(user.match(userPat)==null)return false;var IPArray=domain.match(ipDomainPat);if(IPArray!=null){for(var i=1;i<=4;i++)if(IPArray[i]>255)return false;return true;}var domainArray=domain.match(domainPat);if(domainArray==null)return false;var atomPat=new RegExp(atom,"g");var domArr=domain.match(atomPat);var len=domArr.length;if(domArr[domArr.length-1].length<2||domArr[domArr.length-1].length>3)return false;if(len<2)return false;return true;}

function check(c,e) {
  if (isIE) {
    window.event.cancelBubble=true;
  } else {
    e.cancelBubble=true;
  }
  var numChecks=parseInt(findObj("numChecks").value);
  var checkTodos=findObj("checkTodos");
  if (c.checked){
    var numChecked=0;
    for(var i=0;i<numChecks;i++){
      if (findObj("check"+i).checked){
        numChecked++;
      }
    }
    checkTodos.checked=(numChecked==numChecks);
  }else{
    checkTodos.checked=false;
  }
//  return false;
}
function checkAll() {
  var numChecks=parseInt(findObj("numChecks").value);
  var checkTodos=findObj("checkTodos");
  for(var i=0;i<numChecks;i++){
    findObj("check"+i).checked=checkTodos.checked;
  }
//  return false;
}

String.prototype.trim = function() { 
    var aux=this.replace(/^[ \t]+|[ \t]+$/, '');
    if(aux.length>0){
        var index=aux.length-1;
        for (;index>=0;index--){
            if(aux.charAt(index)!=' '){break;}
        }
        aux=aux.substring(0,index+1);
    }else{
        aux='';
    }
    
    return aux;
}

function ventanaEmergente( ruta, nombre, ancho, alto, posY, posX, barraScroll, idCache )
{
  if(nombre==null){nombre = "GOEM";
  }else{
    if(isIE){nombre=nombre.trim();}
  }
  if(posX==null){posX=(screen.availWidth-ancho)/2;}
  if(posY==null){posY=(screen.availHeight-alto)/2;}
  var w=window.open(ruta,nombre,"toolbar=no, location=no, directories=no, status=no, scrollbars="+barraScroll+", resizable=no, copyhistory=no, width="+ancho+", height="+alto+", top="+posY+", left="+posX+", dependent=yes");
  return w;
}


function subirOrdenLista (id) {
    var campo = document.getElementById(id);
    var indice = campo.selectedIndex;
    if (indice>0) {
        var opcion1=document.createElement("option");
        opcion1.value=campo.options[indice].value;
        opcion1.appendChild(document.createTextNode(campo.options[indice].text));
        var opcion2=document.createElement("option");
        opcion2.value=campo.options[indice-1].value;
        opcion2.appendChild(document.createTextNode(campo.options[indice-1].text));
        if (indice<campo.options.length-1) {
            var nodo=campo.options[indice+1];
            campo.remove(indice);
            campo.remove(indice-1);
            campo.insertBefore(opcion2,nodo);
            campo.insertBefore(opcion1,opcion2);
        } else {
            campo.remove(indice);
            campo.remove(indice-1);
            campo.appendChild(opcion1);
            campo.appendChild(opcion2);
        }
        campo.selectedIndex=indice-1;
    }
}

function bajarOrdenLista (id) {
    var campo = document.getElementById (id);
    var indice = campo.selectedIndex;
    if ((indice!=-1) && (indice<campo.options.length-1)) {
        var opcion1=document.createElement("option");
        opcion1.value=campo.options[indice].value;
        opcion1.appendChild(document.createTextNode(campo.options[indice].text));
        if (indice==campo.options.length-2) {
            campo.remove(indice);
            campo.appendChild(opcion1);
        } else {
            var nodo=campo.options[indice+2];
            campo.remove(indice);
            campo.insertBefore(opcion1,nodo);
        }
        campo.selectedIndex=indice+1;
    }
}

function eliminarListaProys (id) {
    var campo = document.getElementById(id);
    var indice = campo.selectedIndex;
    if (indice>=0) {
      campo.remove(indice);
    }
}

function getIFrameDocument(idIframe){
    // if contentDocument exists, W3C compliant (Mozilla)
    if(document.getElementById(idIframe).contentDocument){
        return document.getElementById(idIframe).contentDocument;
    }else{// IE
        return document.frames[idIframe].document;
    }
}

function validarObligatorio(idCampo) {
  var campo = document.getElementById(idCampo);
  if (campo.tagName.toUpperCase() == "INPUT" || campo.tagName.toUpperCase() == "TEXTAREA") {
    if (campo.value.length==0) {
      alert(MSJ_OBLIGATORIO);
      campo.focus();
      return false;
    }
  } else if (campo.tagName.toUpperCase() == "SELECT") {
    if (campo.value == "--") {
      alert(MSJ_OBLIGATORIO);
      campo.focus();
      return false;
    }
  }
  return true;
}

function validarObligatorioPestanas(idCampo, mostrarAlerts ) {
  var campo = document.getElementById(idCampo);
  if (campo.tagName.toUpperCase() == "INPUT" || campo.tagName.toUpperCase() == "TEXTAREA") {
    if (campo.value.length==0) {
        if( mostrarAlerts ){
            alert(MSJ_OBLIGATORIO);
            campo.focus();
        }
      return false;
    }
  } else if (campo.tagName.toUpperCase() == "SELECT") {
    if (campo.value == "--") {
        if( mostrarAlerts ){
            alert(MSJ_OBLIGATORIO);
            campo.focus();
        }
      return false;
    }
  }
  return true;
}
function validarListaMultiple(idCampo){
    var campo = document.getElementById(idCampo);
    if(campo.length>0){return true;}
    else{
        alert(MSJ_OBLIGATORIO);
        campo.focus();
        return false;
    }
}
function validarMultipleObligatorio(idCampo) {
    var campo = document.getElementById(idCampo);
    for(var i=0;i<campo.options.length;i++){
         if (campo.options[i].selected){
            return true;
         }
    }
    alert(MSJ_OBLIGATORIO);
    campo.focus();
    return false;
}
function validarEntero(valor){
    if(isNaN(valor)){return false;}else if(valor.indexOf(".")!=-1||valor.indexOf(",")!=-1){return false;}return true;
}

















/*******************************************************************************
********************************************************************************
*************************                            ***************************
*************************      A    J    A   X       ***************************
*************************                            ***************************
********************************************************************************
*******************************************************************************/
function enviarAjax(direccion,parametros,funcionCarga) {
    if(window.XMLHttpRequest){xhttp = new XMLHttpRequest();}
    else if(window.ActiveXObject){try{xhttp=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xhttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}}}
    else{return false;}
    var sendf="";
    parametros=tratarParametros(parametros);
    if(parametros!=null){sendf=parametros.join('&');}
    xhttp.open("POST",direccion,true);
    if(funcionCarga!=null){xhttp.onreadystatechange=eval(funcionCarga);}
    xhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=ISO-8859-15');
    xhttp.setRequestHeader("Connection","close");
    xhttp.send(sendf);
    return true;
}
function enviarOperacionHTML(direccion,parametros,capa,fCorrecta) {
    if(fCorrecta == null){functionCorrecta = null;}
    else{functionCorrecta=fCorrecta;}
    if(capa!=null){capaDestino=capa;}
    var result=true;
    if(window.XMLHttpRequest){xhttp = new XMLHttpRequest();}
    else if(window.ActiveXObject){try{xhttp=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xhttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}}}
    else{return false;}
    var sendf="";
    parametros=tratarParametros(parametros);
    if(parametros!=null){sendf=parametros.join('&');}
    xhttp.open("POST",direccion,true);
    xhttp.onreadystatechange=cargarHTML;
    xhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=ISO-8859-15');
    xhttp.setRequestHeader("Connection","close");
    xhttp.send(sendf);
    return true;
}
function cargarHTML() {
    if(xhttp.readyState==4){
        if(xhttp.status!=200){
            sesionCaducada();
        } else {
            var respuesta=xhttp.responseText;
            if(capaDestino!=null){
                var c=findObj(capaDestino);
                findObj(capaDestino).innerHTML=respuesta;
                capaDestino=null;
                if(functionCorrecta!=null){eval(functionCorrecta);}
            }
        }
    }
}
function rowEvent(e) {
    var element = (window.event)? e.srcElement: e.target;      
    return element.className == "__fila_td";
}


function incluirLista(id){
    var lista=findObj(id);
    var contadorSeleccionados=0;
    var a=0;
    do{
        var grupo=lista.options[a];
        if(grupo.selected){
            if(a>=0){

                // 1º inserto el seleccionado
                a=incluirOpcionASeleccionado(id,grupo,a);
                
                // 2º inserto los hijos del seleccionado
                for(var i=0;i<lista.options.length;i++){
                    var hijo=lista.options[i];
                    if(hijo.getAttribute("idPadre")==grupo.value){
                        a=incluirOpcionASeleccionado(id,hijo,i);
                        //hijo.selected=true;
                        a=0;
                        i=-1;
                    }
                }
                // 3º inserto los ancestros del seleccionado hasta la raiz
                var ancestro=grupo;
                do{
                    seguir=false;
                    for(var j=0;j<lista.options.length;j++){
                        var actual=lista.options[j];
                        //alert(actual.value + "/" +ancestro.getAttribute("idPadre"));
                        if(actual.value==ancestro.getAttribute("idPadre")){
                            //recorro todos los hijos para saber si el padre esta ya en selecionados o no
                            var contadorPadres1=0;
                            for(var f=0;f<lista.options.length;f++){
                                if (lista.options[f].getAttribute("idPadre")==ancestro.getAttribute("idPadre")){
                                    contadorPadres1++;
                                }
                            }
                            if (contadorPadres1>0 ){
                                a=incluirOpcionASeleccionado(id,actual,a);
                            } else {
                                ancestro=actual;
                                seguir=true;
                                a=0;
                                break;
                            }
                        }
                    }
                }while(seguir);
            }else{
                 alert(USR_NO_SELECCION);
            }
            contadorSeleccionados++;
        }else{
            a++;
        }
    }while(a<lista.options.length);
    if(contadorSeleccionados==0&&contadorSeleccionados!=lista.options.length){
        alert(USR_NO_SELECCION_INSERTAR);    
    }
}
function eliminarLista(id,id2) {   
    var seleccionados = document.getElementById(id);
    var noSeleccionados = document.getElementById(id2);
    var nodo;
    var orden;
    var ordenActual;
    var a=0;
    var contadorEliminados=0;
    var noElementos=false;
    do{
        if(seleccionados.options.length>0){
            if(seleccionados.options[a].selected){
                if(a>=0){
                    for(var i=0;i<seleccionados.options.length;i++){
                        if(seleccionados.options[i].getAttribute("idPadre")==seleccionados.options[a].value){
                        seleccionados.options[i].selected=true;
                        }
                    }
                    var opcion2=document.createElement("option");
                    opcion2.value=seleccionados.options[a].value;
                    var idPadre = seleccionados.options[a].getAttribute("idPadre");
                    opcion2.setAttribute("idPadre",seleccionados.options[a].getAttribute("idPadre"));
                    opcion2.appendChild(document.createTextNode(seleccionados.options[a].text));
                    var ordenBorrado=parseInt(seleccionados.options[a].getAttribute("orden"));
                    if(noSeleccionados.options.length>0){
                        var cambiado=false;
                        for(var c=0;c<noSeleccionados.options.length;c++){
                            ordenActual=parseInt(noSeleccionados.options[c].getAttribute("orden"));
                            
                            if(ordenBorrado<ordenActual){
                                nodo=noSeleccionados.options[c];
                                opcion2.setAttribute("orden",ordenBorrado);
                                //antes de insertar miro si es padre si es distinto de padre
                                //inserto en noSeleccionados y borro campo
                                if (opcion2.getAttribute("idPadre")!= 1){
                                    noSeleccionados.insertBefore(opcion2,nodo);
                                    seleccionados.remove(a);
                                    cambiado=true;
                                    a=0;
                                } else {
                                    //si es padre tengo que mirar si ya existe en el noSeleccionados(principal)
                                    contadorPadre=0;
                                    for(var d=0;d<noSeleccionados.options.length;d++){
                                        if (noSeleccionados.options[d].value==opcion2.value){
                                            contadorPadre++;
                                        } 
                                    }
                                    if (contadorPadre==0){
                                         noSeleccionados.insertBefore(opcion2,nodo);
                                         cambiado=true;
                                         a=0;
                                    }
                                }
                                
                                
                                
                                if (opcion2.getAttribute("idPadre")!= 1){
                                    //hay que mirar tambien si esta el padre en el primer combo 
                                    //recorro todo para ver si el padre existe
                                    var contadorPadre=0;
                                    for(var e=0;e<noSeleccionados.options.length;e++){
                                        if (noSeleccionados.options[e].value==idPadre){
                                            contadorPadre++;
                                        } 
                                    }
                                    //si tiene hijos no lo inserto 
                                    if (contadorPadre>0){
                                       //campo.remove(a);
                                    } else {
                                        for(var n=0;n<seleccionados.options.length;n++){
                                            if (seleccionados.options[n].value == noSeleccionados.options[c].getAttribute("idPadre")){
                                                var opcionPadre=document.createElement("option");
                                                opcionPadre.appendChild(document.createTextNode(seleccionados.options[n].text));
                                                opcionPadre.setAttribute("orden",ordenBorrado-1);
                                                opcionPadre.value=seleccionados.options[n].value;
                                                opcionPadre.setAttribute("idPadre",seleccionados.options[n].getAttribute("idPadre"));
                                                nodo=noSeleccionados.options[c];
                                                noSeleccionados.insertBefore(opcionPadre,nodo);
                                            }
                                        }
                                    }
                                }
                                
                                //hay que mirar tambien si hay hijos en el segundo combo 
                                //recorro todo para ver si hay hijos
                                var contadorHijos = 0;
                                if (seleccionados.options[a]!= null){
                                    if (seleccionados.options[a].getAttribute("idPadre")!= 1) {
                                        idPadre= opcion2.value;
                                    } else {
                                        idPadre= opcion2.getAttribute("idPadre");
                                    }
                                }
                                for(var d=0;d<seleccionados.options.length;d++){
                                    
                                    if (seleccionados.options[d].getAttribute("idPadre")==idPadre){
                                        contadorHijos++;
                                    }
                                    
                                }
                                //sino tiene hijos lo borro
                                if (contadorHijos==0){
                                    //aqui cojemos el idPadre
                                    for(var m=0;m<seleccionados.options.length;m++){
                                        if (seleccionados.options[m].value == noSeleccionados.options[c].getAttribute("idPadre")){
                                            seleccionados.remove(m);
                                        }
                                    }
//                                    var opcionPadre=document.createElement("option");
//                                    opcionPadre.value=noSeleccionados.options[c].value;
//                                    opcionPadre.setAttribute("idPadre",noSeleccionados.options[c].getAttribute("idPadre"));
//                                    nodo=noSeleccionados.options[c];
//                                    opcionPadre.setAttribute("orden",ordenBorrado);
//                                    //noSeleccionados.insertBefore(opcionPadre,nodo);
//                                    campo.remove(a);
                                }

                                break;
                            }
                        }
                        if(!cambiado){
                            opcion2.setAttribute("orden",ordenBorrado);
                            if (opcion2.getAttribute("idPadre")!=1){
                                noSeleccionados.appendChild(opcion2);
                            }
                            seleccionados.remove(a);
                            a=0;
                        }
                    }else{
                        opcion2.setAttribute("orden",ordenBorrado);
                        if (opcion2.getAttribute("idPadre")!=1){
                            noSeleccionados.appendChild(opcion2);
                        }
                        seleccionados.remove(a);
                        a=0;
                    }
                } 
                contadorEliminados++;
            }else{
                a++;
            }
        }else{
            alert(USR_NO_HAY_ELEMENTOS);
            noElementos=true;
        }
    }while(a<seleccionados.options.length);
    if(contadorEliminados==0){
        alert(USR_NO_SELECCION_ELIMINAR);    
    }
}


function incluirOpcionASeleccionado(id,grupo,a){
    var noSeleccionados=findObj(id);
    var seleccionados=findObj(id+"Seleccionados");
    var opcion=document.createElement("option");
    opcion.value=grupo.value;
    opcion.setAttribute("orden",grupo.getAttribute("orden"));
    opcion.setAttribute("idPadre",grupo.getAttribute("idPadre"));
    opcion.appendChild(document.createTextNode(grupo.text));
    var ordenInserccion=parseInt(grupo.getAttribute("orden"));
    if(seleccionados.options.length>0){
        var cambiado=false;
        for(var i=0;i<seleccionados.options.length;i++){
            var indice2=i;
            var ordenActual=parseInt(seleccionados.options[i].getAttribute("orden"));
            if(ordenInserccion<=ordenActual){
                nodo=seleccionados.options[i];
                opcion.setAttribute("orden",ordenInserccion);
                //tengo que recorrer tb para saber si esta insertado ya o no 
                var contadorPadres2=0;
                for(var g=0;g<seleccionados.options.length;g++){
                    if (seleccionados.options[g].getAttribute("value")==opcion.value){
                        contadorPadres2++;
                    }
                }
                if (contadorPadres2==0){
                    seleccionados.insertBefore(opcion,nodo);
                    if (opcion.getAttribute("idPadre")!= 1){
                        noSeleccionados.remove(a);
                    }
                }
                 //recorro todos los hijos para saber si hay que borrar el padre o no
                var contadorHijos=0;
                for(var s=0;s<noSeleccionados.options.length;s++){
                    if (noSeleccionados.options[s].getAttribute("idPadre")!= 1){
                        if (noSeleccionados.options[s].getAttribute("idPadre")==opcion.getAttribute("value")){
                            contadorHijos++;
                        }
                    } else {
                        if (noSeleccionados.options[s].getAttribute("value")==opcion.getAttribute("idPadre")){
                            contadorHijos++;
                        }

                    }
                }
                if (contadorHijos==0){
                    noSeleccionados.remove(a);
                }
                cambiado=true;
                a=0;
                
                break;
            }
        }
        if(!cambiado){
            opcion.setAttribute("orden",ordenInserccion);
            seleccionados.appendChild(opcion);
            noSeleccionados.remove(a);
            //si se ha cambiado miro a ver si existe algun hermano si no borro el padre
            var idPadreActual = opcion.getAttribute("idPadre");
            var contadorHijos2=0;
            for(var t=0;t<noSeleccionados.options.length;t++){
                if (noSeleccionados.options[t].getAttribute("idPadre")==idPadreActual){
                            contadorHijos2++;
                }  
            }
            //si contador es cero borro el padre
            if (contadorHijos2==0){
                 for(var u=0;u<noSeleccionados.options.length;u++){
                     if (noSeleccionados.options[u].value==idPadreActual){
                        noSeleccionados.remove(u);
                     }
                 }
            }
            
            
            a=0;
            
        } 
    }else{
        opcion.setAttribute("orden",ordenInserccion);
        seleccionados.appendChild(opcion);
        noSeleccionados.remove(a);
        a=0;
    }
    return a;
}

//function incluirOpcionASeleccionadoAncestro(id,grupo,a){
//    var d=findObj(id);
//    var p=findObj(id+"Seleccionados");
//    var opcion=document.createElement("option");
//    opcion.value=grupo.value;
//    opcion.setAttribute("orden",grupo.getAttribute("orden"));
//    opcion.setAttribute("idPadre",grupo.getAttribute("idPadre"));
//    opcion.appendChild(document.createTextNode(grupo.text));
//    var ordenInserccion=parseInt(grupo.getAttribute("orden"));
//    if(p.options.length>0){
//        var cambiado=false;
//        for(var i=0;i<p.options.length;i++){
//            var indice2=i;
//            ordenActual=parseInt(p.options[i].getAttribute("orden"));
//            if(ordenInserccion<ordenActual){
//                nodo=p.options[i];
//                opcion.setAttribute("orden",ordenInserccion);
//                p.insertBefore(opcion,nodo);
//                //d.remove(a);
//                cambiado=true;
//                a=0;
//                break;
//            }
//        }
//        if(!cambiado){
//            opcion.setAttribute("orden",ordenInserccion);
//            p.appendChild(opcion);
//            d.remove(a);
//            a=0;
//        }
//    }else{
//        opcion.setAttribute("orden",ordenInserccion);
//        p.appendChild(opcion);
//        d.remove(a);
//        a=0;
//    }
//    return a;
//}

function sustituirespacios(inicio, dato){
    return dato.replace (new RegExp(/ +/g), inicio);
}


function getPosicionScrollTop(){

    var scrolTop = 0;
    if (self.pageYOffset){
        // all except Explorer
        scrolTop = self.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop){
        // Explorer 6 Strict
        scrolTop = document.documentElement.scrollTop;
    }
    else if (document.body){
        // all other Explorers
        scrolTop = document.body.scrollTop;
    }
    //alert("scrollTop "+scrolTop);
    return scrolTop;
}

function getPosicionScrollLeft(){

    var scrolLeft = 0;
    if (self.pageXOffset){
        // all except Explorer
        scrolLeft = self.pageXOffset;
    }
    else if (document.documentElement && document.documentElement.scrollLeft){
        // Explorer 6 Strict
        scrolLeft = document.documentElement.scrollLeft;
    }
    else if (document.body){
        // all other Explorers
        scrolLeft = document.body.scrollLeft;
    }
    //alert("scrolLeft "+scrolLeft);
    return scrolLeft;
}

function ventanaEmergentePdf( ruta )
{
  posX=(screen.availWidth-800)/2;
  posY=(screen.availHeight-600)/2;
  var w=window.open(ruta, "PDF","toolbar=no, location=no, directories=no, status=no, scrollbars=true, resizable=yes, copyhistory=no, width=800, height=600, top="+posY+", left="+posX+", dependent=yes");
  return w;
}


function ventanaEmergenteUploadFich( ruta )
{
  posX=(screen.availWidth-800)/2;
  posY=(screen.availHeight-600)/2;
  var w=window.open(ruta, "Ficheros","toolbar=no, location=no, directories=no, status=no, scrollbars=true, resizable=yes, copyhistory=no, width=400, height=150, top="+posY+", left="+posX+", dependent=yes");
  return w;
}


function tratarParametros(parametros) {
    // Si es un array asociativo, crea un array normal para hacer el join
    // Si es un array normal, hace el join
    if(parametros.length==0){
        var params=new Array();
        var i=0;
        for(var llave in parametros){
            var valor=parametros[llave];
            valor=escape(valor);
            valor=valor.replace(/[+]/g,"%2B");
            valor=valor.replace(/[&]/g,"%26");            
            params[i]=llave+'='+valor;
            i++;
        }
        return params;
    }else{
        for(var i=0;i<parametros.length;i++){
            var parametro=parametros[i];
            var nombre=parametro.substring(0,parametro.indexOf("=")+1);
            var valor=parametro.substring(parametro.indexOf("=")+1,parametro.length);
            valor=escape(valor);
            valor=valor.replace(/[+]/g,"%2B");
            valor=valor.replace(/[&]/g,"%26");
            parametro=nombre+valor;
            parametros[i]=parametro;
        }
    }
    return parametros;
}




function mostrarCapaDenegar() {
    if (findObj('denegarCapa').style.display=='block') {
        ocultarCapaDenegar();
    }else{
     if( validarDenegar()){
            ocultarSelects();
            var scrolTop = getPosicionScrollTop();
            var scrolLeft = getPosicionScrollLeft();
            
            var contenido=findObj('denegarCapa');
            
            contenido.style.top = scrolTop+"px";
            contenido.style.left = scrolLeft+"px";
            
            contenido.style.marginTop = '10%';
            contenido.style.marginLeft = '15%';
            
            contenido.style.display='block';
            contenido.style.visibility='visible';
            var motivo = findObj("motivoDenegacion");
            motivo.text = "";
        }
    }
}

function ocultarCapaDenegar() {
    mostrarSelects();
    var contenido=findObj('denegarCapa');
    contenido.style.display='none';
    contenido.style.visibility='hidden';
    findObj("motivoDenegacion").text = "";
}


function getContent(iframe) {
    var content = '';
    if (iframe.contentDocument) {
      content = iframe.contentDocument; 
    } else if (iframe.contentWindow) {
      content = iframe.contentWindow.document;
    } else if (iframe.document) {
      content = iframe.document;
    }
    return content;
  }
  
  function validarLogin(estilo){
    
    var  nombre = document.getElementById('usuario'+estilo);
    var  password = document.getElementById('clave'+estilo);
        
    if( nombre.value.length < 1){
        alert(MSJ_OBLIGATORIO);
        nombre.focus();
        return false;
    }
    if( password.value.length < 1){
        alert(MSJ_OBLIGATORIO);
        password.focus();
        return false;
    }
    
    return true;  
  
  }
    
  
  
  /* ******************************************************** */
  /*      funciones para glosarios                            */
  /* ******************************************************** */

function moverElementos(id, idDestino){

    var lista=findObj(id);
    var contadorSeleccionados=0;
    var a=0;
    var elementosAInsertar = new Array();
    var elementosPadre= new Array();
    do{
        var grupo=lista.options[a];
        if(grupo.selected ){
            if(a>=0){
		
                var elementoPadre;
                var hayPadre = false;
                
		//busco si existe su padre
                try {

                    var padre = lista.select('[value="'+lista[a].getAttribute("idPadre")+'"]');
                    if(padre.length == 0){
                        hayPadre = false;
                    }else{
                        elementoPadre = padre[0];
                        hayPadre = true;
                    }

                } catch(e) {
                    elementoPadre = existePadre(lista, a);
                    
                    if( elementoPadre ){
                        hayPadre = true;
                    }
                }

		//si no existe hemos seleccionado un padre
		if( !hayPadre ){
                    
			//recuperamos todos sus hijos
                        var hijos = new Array();
                        try{
                            hijos = lista.select('[idPadre="'+lista[a].getAttribute("value")+'"]');
                        }catch(e){
                            hijos = getHijosLista(lista, a);

                        }
			for( b = 0; b< hijos.length; b++){
				var hijo = hijos[b];
				//si alguno esta seleccionado lo deseleccionamos
				hijo.selected = false;
				elementosAInsertar[elementosAInsertar.length] = hijo;
			}
			elementosPadre[elementosPadre.length] = lista[a];
			a = a+hijos.length;
			
		}else{
			//se ha seleccionado un hijo
			elementosAInsertar[elementosAInsertar.length] = lista[a];
			if( elementosPadre.indexOf(elementoPadre) < 0 ){
				elementosPadre[elementosPadre.length] = elementoPadre;
			}
		}	
	
		
            }else{
                 alert(USR_NO_SELECCION);
            }
            contadorSeleccionados++;
        }
        a++;
	
    }while(a<lista.options.length);
    
    if(contadorSeleccionados==0&&contadorSeleccionados!=lista.options.length){
        alert(USR_NO_SELECCION_INSERTAR);    
    }else{
	//incluimos los elementos en el listado	
	
	for(  var c = 0; c < elementosAInsertar.length; c++){
		moverSeleccionado(id,idDestino,elementosAInsertar[c], true);
	}
        
        
	//una vez insertados miramos si queda algun hijo 
	for(var d = 0; d< elementosPadre.length;d++){
        
                var hijos = new Array();
                try{
                    hijos = lista.select('[idPadre="'+elementosPadre[d].getAttribute("value")+'"]');
                }catch(e) {
                    
                    hijos = getHijosLista2(lista, elementosPadre[d].getAttribute("value"));
                }
		
		if( hijos.length == 0){
			//eliminamos al padre del listado
			moverSeleccionado(id,idDestino,elementosPadre[d],true);
		}else{
			moverSeleccionado(id,idDestino,elementosPadre[d],false);
		}
	}
    }
    
}


function moverSeleccionado(id, idDestino, elemento, borrar){

	var lista = findObj(id);
	var destino = findObj(idDestino);
        var existe = false;
        try{
            var elementos = destino.select('[value="'+elemento.getAttribute("value")+'"]');
            if( elementos.length > 0 ){ 
                existe = true;
            }
        }catch(e){
            
            existe = existeElemento(destino, elemento.getAttribute("value"));
            
        }
	if( !existe){
	
	
		var posicionInsertar = -1;
		var ordenElemento = elemento.getAttribute("orden");

		
		for( var e = 0; e< destino.length;e++){
			if( parseInt(destino[e].getAttribute("orden")) > parseInt(ordenElemento) ){
				posicionInsertar = e;	
				break;
			}
		}
		if(posicionInsertar == -1){
			posicionInsertar = destino.length;
		}


            elemento.selected = false;
 		var opcion=document.createElement("option");
		opcion.text = elemento.text;
  		opcion.value=elemento.value;
    		opcion.setAttribute("idPadre",elemento.getAttribute("idPadre"));
    		opcion.setAttribute("orden",elemento.getAttribute("orden"));
		destino.options.add(opcion, posicionInsertar);		
	
	}

	if( borrar ){
		for(j =0; j< lista.length; j++ ){
			if(lista[j].value == elemento.value){
				lista[j] = null;
				break;
			}
		}
	}
}

function existePadre(lista, num){
    
    var idPadre = lista[num].getAttribute("idPadre");
    num = num-1;
    var elementoPadre; 
    //miramos sus anteriores

    while( num >= 0 ){
        if( lista[num].getAttribute("value") == idPadre){
            //es el padre 
            elementoPadre = lista[num];
            break;
        }else{
            if( lista[num].getAttribute("idPadre") != idPadre){
                //no tiene igual padre o sea que es un padre
                break;
            }else{
                num = num-1;
            }
        }
    }    
    return elementoPadre;
}

function existeElemento(destino, idValue){
    var existe = false;
    for(z = 0; z < destino.length; z++){
        if( destino[z].getAttribute("value") == idValue){
            existe = true;
            break;
        }
    }
    return existe;
}

function getHijosLista2(lista, idPadre){
    var hijos = new Array();
    for(s=0; s< lista.length; s++){
        if( lista[s].getAttribute("value") == idPadre){
            
            hijos = getHijosLista(lista, s);
            break;
        }
    }
    return hijos;
}

function getHijosLista(lista, num){
    
    var idPadre = lista[num].getAttribute("value");
    
    var hijos = new Array();
    num = num+1;
    while( num < lista.length ){
        if( lista[num].getAttribute("idPadre") != idPadre){
            //no es hijo, no hay hijos desorganizados, se acaba.
            break;
        }else{
            hijos[hijos.length] = lista[num];
        }
    	num = num+1;
    }
    return hijos;
}



function mostrarBotones(nombreCampo, numComponentes){
    var campo = findObj(nombreCampo);
    var tam = 1;
    if( campo.getAttribute("size") ){
        tam = campo.getAttribute("size");
    }

    if ( tam > 1 && numComponentes > 1) {
        if (findObj('flechasOrden'+nombreCampo)){
            findObj('flechasOrden'+nombreCampo).style.display='block';
            findObj('flechasOrden'+nombreCampo).style.visibility='visible';
        }
    }else{
        if (findObj('flechasOrden'+nombreCampo)){
            findObj('flechasOrden'+nombreCampo).style.display='none';
            findObj('flechasOrden'+nombreCampo).style.visibility='hidden';
        }
    }

    var maxlength = -1;
    if( findObj(nombreCampo+'_maxlength') ){
        maxlength = findObj(nombreCampo+'_maxlength').value;
    }
    if( maxlength == -1 || numComponentes < maxlength ){
        if (findObj('nuevoObjeto'+nombreCampo)){
            findObj('nuevoObjeto'+nombreCampo).style.display='block';
            findObj('nuevoObjeto'+nombreCampo).style.visibility='visible';
        }
    }else{
        if (findObj('nuevoObjeto'+nombreCampo)){
            findObj('nuevoObjeto'+nombreCampo).style.display='none';
            findObj('nuevoObjeto'+nombreCampo).style.visibility='hidden';
        }
    }

    if (numComponentes > 0) { 
        if (findObj('iconoBorrar'+nombreCampo)) {
            findObj('iconoBorrar'+nombreCampo).style.display='block';
            findObj('iconoBorrar'+nombreCampo).style.visibility='visible';
        }
    }else{

        if (findObj('iconoBorrar'+nombreCampo)) {
            findObj('iconoBorrar'+nombreCampo).style.display='none';
            findObj('iconoBorrar'+nombreCampo).style.visibility='hidden';
        }
    }
    
}
//funcion que escribe en el código el texto que se le envia
function writeDocument(s){document.write(s);}

//Array con las posibles cadenas a utilizar por un hacker
var cadenasProhibidas = new Array("Content-Type:",
//evita email injection
"MIME-Version:", "Content-Transfer-Encoding:","Return-path:","Subject:","From:","Envelope-to:","To:","bcc:","cc:",
"UNION",
// evita sql injection
"DELETE","DROP","SELECT","INSERT","UPDATE","CREATE","TRUNCATE","ALTER","INTO","DISTINCT","GROUP BY",
"WHERE","RENAME","DEFINE","UNDEFINE","PROMPT","ACCEPT","VIEW","COUNT","HAVING",
// evita introducir direcciones web
"WWW","W W W","http://");
function validarSqlInjection(valor){
    var campo = document.getElementById(valor);
    var texto = campo.value;
    for (f=0;f<cadenasProhibidas.length;f++){
        var expresion=cadenasProhibidas[f];
        var regexp = new RegExp(expresion,"i");
        if (texto.match(regexp)){
             alert(MSJ_PELIGROSO);
             campo.focus();
             return false;
        }
    }
    return true;
}
