// ===================================================================
// Funciones de utilidad general
// ===================================================================

// ===================================================================
// validaEmail. Comprueba el formato correcto de la cadena pasada como
//              parametro. Devuelve true si es una direccion de correo
//              valida.
// ===================================================================
function validaEmail( email) {
    if( email != "") 
    {
        if( email.indexOf('@',0) <= 0  || email.indexOf(';',0) != -1
          || email.indexOf(' ',0) != -1 || email.indexOf('/',0) != -1
          || email.indexOf(';',0) != -1 || email.indexOf('<',0) != -1
          || email.indexOf('>',0) != -1 || email.indexOf('*',0) != -1
          || email.indexOf('|',0) != -1 || email.indexOf('`',0) != -1
          || email.indexOf('&',0) != -1 || email.indexOf('$',0) != -1
          || email.indexOf('!',0) != -1 || email.indexOf('"',0) != -1
          || email.indexOf(':',0) != -1 )
          {
                //alert("Carateres no validos en la direccion de email");
                alert("Formato de email incorrecto");
                return false;
          }   
        posArroba = email. indexOf("@", 1); // debe haber una @
        if( posArroba == -1)
        {
            alert("Debe haber una arroba  en la direccion de email");
            return false;
        } 
        if( email. indexOf("@", posArroba+ 1) != -1)
        {
            alert("No puede haber mas de una arroba en la direccion de email");
            return false;
        } 

        posDosPuntos = email. indexOf("..", 1); // no puede haber 2 puntos seguidos
        if( posDosPuntos != -1)
        {
            alert("No puede haber dos puntos seguidos");
            return false;
        } 

        // y sólo una
        posPunto = email. indexOf(".", posArroba);
        if( posPunto == -1)
        {
            alert("Debe haber al menos un punto en la direccion de email");
            return false;
        } 
        // y al menos un . después de la @

        //cogo la parte 1 hasta la @ y la parte 2 el resto 
        parte1=email.split("@")[0];
        var len1=parte1.length;
        parte2=email.split("@")[1];
        var len2=parte2.length;
        // compruebo que cada parte tiene informacion
        if (len1 <= 0)
        {
            alert("El prefijo de la arroba no puede estar vacio");
            return false;
        } 
        if (len2 <= 0)
        {
            alert("El sufijo de la arroba no puede estar vacio");
            return false;
        } 
        // debe haber al menos 2 caracteres tras el .
        // compruebo que despues del ultimo punto, hay 2 o 3 o 4 caracteres
        var c1=parte2.charAt(len2-3);
        var c2=parte2.charAt(len2-4);
        var c3=parte2.charAt(len2-5);
        if (!(c1 =="." || c2 =="." || c3 =="."))
        {
            alert("Debe haber 2, 3 o 4 caracteres tras el punto");
            return false;
        } 
        //compruebo que cada parte no empieze ni termine en punto
        c1=parte1.charAt(0)
        c2=parte2.charAt(0)
        if (c1 =="." || c2 ==".")
        {
            alert("Formato de email incorrecto");
            return false;
        } 
        c1=parte1.charAt(len1-1)
        c2=parte2.charAt(len2-1)
        if (c1 =="." || c2 ==".")
        {
            alert("Formato de email incorrecto");
            return false;
        } 
    }
    return true;
}

// ===================================================================
// validaCodComercial. Comprueba el formato del codigo comercial
//              pasado como parametro.
// ===================================================================
function validaCodComercial( codComercial) {
    if (codComercial != "")
    {
    	if ( codComercial.length != 7 || !isAlpha(codComercial.charAt(0)) 
    	  || !isDigit(codComercial.charAt(1)) || !isDigit(codComercial.charAt(2))
    	  || !isDigit(codComercial.charAt(3)) || !isDigit(codComercial.charAt(4))
    	  || !isDigit(codComercial.charAt(5)) || !isDigit(codComercial.charAt(6)))
    	{
    		alert("Formato de codigo comercial incorrecto. El codigo comercial debe contener una letra seguida de seis digitos. Ej: M003568");
        return false;
    	}
    }
    return true;
}

// ===================================================================
// validaCodPostal. Comprueba el formato del codigo postal
//              pasado como parametro.
// ===================================================================
function validaCodPostal( codPostal) {
    if (codPostal != "")
    {
    	if ( codPostal.length != 5 || !isDigit(codPostal.charAt(0)) 
    	  || !isDigit(codPostal.charAt(1)) || !isDigit(codPostal.charAt(2))
    	  || !isDigit(codPostal.charAt(3)) || !isDigit(codPostal.charAt(4)))
    	{
    		alert("Formato de codigo postal incorrecto. El codigo postal debe contener un numero de 5 digitos, rellenando con 0 a la izquierda si es necesario. Ej: 02134");
        return false;
    	}
    }
    return true;
}

// ===================================================================
// isAlpha. Devuelve true si el caracter pasado es alfabetico
// ===================================================================
function isAlpha( c ) {
        return (c >= 'a' && c <= 'z\uffff') || (c >= 'A' && c <= 'Z\uffff');
}
// ===================================================================
// isDigit. Devuelve true si el caracter pasado es un numero
// ===================================================================
function isDigit( c ) {
        return (c >= '0' && c <= '9');
}

// ===================================================================
// validaAlfanumerico. Devuelve true si la cadena pasada es alfanumerica
// ===================================================================
function validaAlfanumerico(cadena) {
        var plant = /[^\w^@^\.^-^(^)^/^,^ ]+/gi
        if (plant.test(cadena))
        {
          //alert("Por favor no utilizar los caracteres siguientes : acentos, \xf1 (poner n), ^, \xe7, \xB0, \xAA.")
            return false;  
         }
        else
        {        
            return true;
        }
    }

// ===================================================================
// pasarMayusculas. Transforma la cadena a mayusculas
// ===================================================================
function pasarMayusculas(cadena) {
    var result="";
    var str = cadena.split('');
    
    for(i=0; i<=str.length-1; i++) {
        if (isAlpha(str[i]))
          str[i] = str[i].toUpperCase();
        result+=str[i];
    }
    return(result);
}
