/***************************************************

    OPERACIONES CON DIV'S

***************************************************/
function mostrarDiv(ddiv){
    if ( ddiv.style==null )
        var ddiv = document.getElementById(ddiv);
        
    if ( ddiv!=null){
        ddiv.style.display="block";
        ddiv.style.visibility="visible";
    }
}

function borrarDiv(ddiv){
    if ( ddiv.style==null )
        var ddiv = document.getElementById(ddiv);
    ddiv.parentNode.removeChild(ddiv);
}

function ocultarDiv(ddiv){
    if ( ddiv.style==null )
        var ddiv = document.getElementById(ddiv);    
    
    if ( ddiv!=null){
        ddiv.style.display="none";
        ddiv.style.visibility="hidden";
    }
}

function canviarDiv(divId1, divId2){
    ocultarDiv(divId1);
    mostrarDiv(divId2);
}




/***************************************************

    Funciones de validación

***************************************************/

function quitarEspacios(texto){
    return texto.replace(" ", "");
}

function esAlfanumerico(texto){
    if ( texto.length == 0 ) return true;
    var illegalChars = /[^A-Za-z0-9_àâèéêíîòóôúûÀÂÈÉÊÍÎÒÓÔÚÛ·.ñçÑÇ]/;
    return !(illegalChars.test(texto));
}
    
function esNumerico(texto){
    var ValidChars = "0123456789";        
    var Char;
    if ( texto.length == 0 ) return true;
    for (i = 0; i < texto.length ; i++){ 
        Char = texto.charAt(i); 
        if (ValidChars.indexOf(Char) == -1)
            return false;
    }
    return true;
}

function esCIF(cif){    
    if ( cif.length == 0 ) return true;
    cif = cif.toUpperCase();
    var pares = 0;
    var impares = 0;
    var suma;
    var ultima;
    var unumero;
    var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
    var xxx;
        
    cif = cif.toUpperCase();
        
    var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g);
    if (!regular.exec(cif)) return false;
    ultima = cif.substr(8,1);
    for (var cont = 1 ; cont < 7 ; cont ++){
        xxx = (2 * parseInt(cif.substr(cont++,1))).toString() + "0";
        impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
        pares += parseInt(cif.substr(cont,1));
    }
    xxx = (2 * parseInt(cif.substr(cont,1))).toString() + "0";
    impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
         
    suma = (pares + impares).toString();
    unumero = parseInt(suma.substr(suma.length - 1, 1));
    unumero = (10 - unumero).toString();
    if(unumero == 10) unumero = 0;
    
    if ((ultima == unumero) || (ultima == uletra[unumero]))
        return true;    
    return false;    
}

function esDNI(dni){
    if ( dni.length == 0 ) return true;
    if ( dni.length != 9 ) return false;
        
    if ( dni.charAt(0)=="X" ){
        //Sustituir X inicial por 0
        dni = "0"+dni.substr(1,dni.length);        
    }
    
    numero = dni.substr(0,dni.length-1);
    let = dni.substr(dni.length-1,1);
    
    numero = numero % 23;
    letra='TRWAGMYFPDXBNJZSQVHLCKET';
    letra=letra.substring(numero,numero+1);
    return (letra==let);
}

function esExtension(archivo, extensiones) {   
   extension = (archivo.substring(archivo.lastIndexOf(".")+1)).toLowerCase();      
   for (var i = 0; i < extensiones.length; i++)
     if (extensiones[i] == extension)
        return true;     
   return false;
} 

function trim(texto){
	for(i=0; i<texto.length; )
        if(texto.charAt(i)==" ") texto=texto.substring(i+1, texto.length);
		else break;

	for(i=texto.length-1; i>=0; i=texto.length-1)
        if(texto.charAt(i)==" ") texto=texto.substring(0,i);
		else break;

    return texto;
}

function esVacio(valor){
    if(valor!=null && valor !=""){
        return false;
    }
    else{
        return true;
    }                            
}

function esEmail(texto){
    if ( texto.length == 0 ) return true;
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return filter.test(texto);
}

function someChecked(input){
    var ret = false;
    for( i = 0; i < input.length && !ret; i++ ) ret = input[i].checked;
    return ret;
}

function submitForm(idForm){
    var myForm = document[idForm];
    if ( myForm.length > 1 && myForm.action==null)
        myForm = myForm[myForm.length-1];
    //Validar en caso necesario
    if ( arguments.length>1){        
        eval("var correct = "+arguments[1]+"(myForm)");
        if (!correct)
            return;
    }
    myForm.submit();
}

function resetForm(idForm){
    document[idForm].reset();
}


/***************************************************

    Operaciones varias

***************************************************/

function addLoadEvent(func){    
    $(document).ready(function(){func();});
}

function addUnloadEvent(func) { 
    var oldonunload = window.onunload; 
    if (typeof window.onunload != 'function'){ 
        window.onunload = func; 
    } else {
        window.onunload = function() {
            if (oldonunload){
                oldonunload();
            }
            func();
        }
    }
}

function getLabelByFor(formulario, id){
    var labels=formulario.getElementsByTagName("label");            
    for( var i=0; i<labels.length; i++ ){
        if(labels[i].htmlFor==id)
            return labels[i];        
    }
    return null;
}


function getElementsByTagNames(list,obj) {
    if (!obj) var obj = document;
    var tagNames = list.split(',');
    var resultArray = new Array();
    for (var i=0;i<tagNames.length;i++) {
        var tags = obj.getElementsByTagName(tagNames[i]);
        for (var j=0;j<tags.length;j++) {
            resultArray.push(tags[j]);
        }
    }
    var testNode = resultArray[0];
    if (!testNode) return [];
    if (testNode.sourceIndex) {
        resultArray.sort(function (a,b) {
                return a.sourceIndex - b.sourceIndex;
        });
    }
    else if (testNode.compareDocumentPosition) {
        resultArray.sort(function (a,b) {
                return 3 - (a.compareDocumentPosition(b) & 6);
        });
    }
    return resultArray;
}


function setTextareaMaxLength(){    
    var textareas = document.getElementsByTagName('textarea');
    var counter = document.createElement('div');
    counter.className = 'textarea_counter';
    for (var i=0;i<textareas.length;i++) {
        if (textareas[i].getAttribute('maxlength')) {
            var counterClone = counter.cloneNode(true);
            
            counterClone.innerHTML = '<span>0</span>/'+textareas[i].getAttribute('maxlength') + " " +translate('caracteres_maximos');
            textareas[i].parentNode.insertBefore(counterClone,textareas[i].nextSibling);
            textareas[i].relatedElement = counterClone.getElementsByTagName('span')[0];
            textareas[i].onkeyup = textareas[i].onchange = checkMaxLength;
            textareas[i].onkeyup();
        }
    }
}

addLoadEvent(setTextareaMaxLength);
function checkMaxLength() {
    var maxLength = this.getAttribute('maxlength');
    var currentLength = this.value.length;
    if (currentLength > maxLength)
        this.relatedElement.className = 'rojo';
    else
        this.relatedElement.className = '';    
    this.relatedElement.firstChild.nodeValue = currentLength;
}