function abrirVentana(ancho,alto,nombreventana,pagina) {
    leftPantalla=(screen.width/2)-(ancho/2);
    topPantalla=(screen.height/2)-(alto/2);
    var win= eval('window.open(""+pagina+"",""+nombreventana+"","width="+ancho+",height="+alto+",resizable=0,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,left="+leftPantalla+",top="+topPantalla+",noresize")');
}

function abrirVentanaScroll(ancho,alto,nombreventana,pagina) {
    leftPantalla=(screen.width/2)-(ancho/2);
    topPantalla=(screen.height/2)-(alto/2);
    var win= eval('window.open(""+pagina+"",""+nombreventana+"","width="+ancho+",height="+alto+",resizable=1,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,left="+leftPantalla+",top="+topPantalla)');
}

function abrirVentanaPosicion(ancho,alto,leftPantalla,topPantalla,nombreventana,pagina) {
    var win= eval('window.open(""+pagina+"",""+nombreventana+"","width="+ancho+",height="+alto+",resizable=1,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,left="+leftPantalla+",top="+topPantalla+",noresize")');
}

function abrirVentanaScrollPosicion(ancho,alto,leftPantalla,topPantalla,nombreventana,pagina) {
    var win= eval('window.open(""+pagina+"",""+nombreventana+"","width="+ancho+",height="+alto+",resizable=1,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,left="+leftPantalla+",top="+topPantalla)');
}

function abrirVentanaConVariable(nombreVariable,ancho,alto,nombreventana,pagina) {
    leftPantalla=(screen.width/2)-(ancho/2);
    topPantalla=(screen.height/2)-(alto/2);
    eval(nombreVariable + '= window.open(""+pagina+"",""+nombreventana+"","width="+ancho+",height="+alto+",resizable=0,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,left="+leftPantalla+",top="+topPantalla+",noresize")');
}

// Funcion que valida que la cadena es un numero entero positivo
function isPosInt (intVal) {
    var pattern = /[^0-9+]/gi;
    
    if (intVal != "") {
        if (pattern.test(intVal)) {  
            // El numero debe ser un entero positivo
            return false;
        }
    }
    return true;
}

// Funcion que valida el email en el formato "x@x.x"
function isValidEmail(email) {
    var IPaddr = new String();
    
    if (email != "") {
        emailStr = new String(email);
        // parte la direccion por el simobolo @ - si no hay dos partes -> invalido
        emailArr = emailStr.split("@");
        if (emailArr.length != 2) {
            // Direccion Email Invalido. Requiere al menos un simbolo @ .
            return false;
        } else {
            // Se valida el nombre de la cuenta (la parte a la izquierda del simbolo @)
            if (!isValidMailName(emailArr[0]))
                return false;
            if (emailArr[1] == null || emailArr[1] == "") {
                // No puede dejar el host en blanco
                return false;
            }
            else {
                // Si el nombre del host esta entre corchetes "[", se paresan y se llama a la validacion de direccion IP
                if (emailArr[1].charAt(0) == "[") {
                    IPaddr = emailArr[1];
                    IPaddr = IPaddr.substr(1,IPaddr.length-2);
                    // Se valida la direccion IP
                    if (!isValidIP(IPaddr))
                        return false;
                // En caso contrario se valida el nombre del host
                } else {
                    if (emailArr[1].charAt(0) != "[") {
                        if (!isValidHostName(emailArr[1]))
                            return false;
                    }
                } 
            }
        }
    }
    return true;
}

// Funcion que valida un nombre de cuenta de correo (la parte izquierda del simbolo @).
function isValidMailName (mailname) {
    var flag = true;

    var mailnameWordFirstPat    = /^[a-zA-Z0-9]{1}/;    // alfanumericos al principio de una palabra (separados por ".")
    var mailnameWordMidPat      = /\W+-*\W+/;       // cualquier caracter que se una js "word"
    var mailnameWordLastPat     = /[a-zA-Z0-9]{1}$/;    // alfanumericos al final de una palabra
    var mailnameFirstCharPat    = /^[a-zA-Z0-9]{1}/;    // caracter alfa al principio de la cadena

    if (!mailnameFirstCharPat.test(mailname)) {  // comrpueba el primer caracter de la cadena
       //Invalido , el primer caracter debe ser letra
       return false;
    } else {  // parsea la cadena en palabras separadas por punto
        mailnameArr = mailname.split(".");
        for (var i = 0; i < mailnameArr.length; i++) { // comprueba cada palabra
            flag = mailnameWordFirstPat.test(mailnameArr[i]); // comrpueba el primer caracter de la palabra
            if (!flag) {
                // Invalido, el primer caracter de una palabra de ser alfanumerico
                return false;
            } else {
                flag = mailnameWordMidPat.test(mailnameArr[i]); // comprueba la zona central de la palabra
                if (flag) {
                    //Invalido, solo alfanumericos, _, - pueden ser usados en una palabra
                    return false;
                } else {
                    flag = mailnameWordLastPat.test(mailnameArr[i]);  // comrpueba el ultimo caracter de la palabra
                    if (!flag) {
                        // Invalido, solo un caracter alfanumerico puede terminar una palabra
                        return false;
                    }
                }
            }
        }
    }
    return true;
}

// Funcion que valida una direccion IP
function isValidIP (IPname) { 
    var ipDomainPat = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;

    if (IPname != "") {
        if (!ipDomainPat.test(IPname)) {  // comprueba la direccion IP (4 grupos de 1 a 3 numeros separados por punto)
            // Direccion IP invalida, utilice una direccion IP valida.
            return false;
        }
    }   
    return true;
}

// Funcion que valida un nombre de host (parte derecha del simbolo @)
function isValidHostName (hostname) {
    var hostarray = hostname.split(".");
    
    var segmentPat      = /^[a-zA-Z0-9_\\.\\-]+$/;
    var lastSegmentPat  = /^([a-zA-Z]{2,24})$/;
    
    if (hostname == "") return true;
    if ( hostarray.length < 2 ) {
        //El nombre de host requiere al menos dos segmentos.
        return false;
    }
    if (!lastSegmentPat.test( hostarray[hostarray.length - 1] )) {
        // Ultimo segmento mal formado
        return false;
    }
    for ( i = 0 ; i < hostarray.length ; i++ ) {
        if (!segmentPat.test( hostarray[i] )) {
            // Hostname malformado. Segmento erroneo
            return false;
        }
    }
    return true;
}

// Funcion que valida que la cadena es un codigo postal de Espaņa
function isCodPostalEspana (codPostal) {
    if (!isPosInt(codPostal) || codPostal.length < 4 || codPostal.length > 5) {
        return false;
    }
    return true;
}

