//This function make a trim for the str parameter:
function trimString (str)
{
    str = this != window? this : str;
    return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}
function esMesCorrecto(strMes)
{
    var mes=strMes.toUpperCase();
    //mes español:
    if (mes=="ENE" || mes=="FEB" || mes=="MAR" || mes=="ABR" || mes=="JUN" || mes=="JUL" || mes=="AGO" || mes=="SEP" || mes=="OCT" || mes=="NOV" || mes=="DIC")
    {
        return 1;
    }
    //mes inglés:
    else if(mes=="JAN" || mes=="APR" || mes=="AUG" || mes=="DEC")
    {
        return 1;
    }
    return 0;
}
//Esta función devuelve true si un tipo fecha se ha introducido correctamente:
function parseDate( pDateString )
{

    var elems = pDateString.split("/");
    result = (elems.length == 3); //Deben ser 3 componentes
    if (result)
    {
        var dia = parseInt(elems[0], 10); 
        var mes = parseInt(elems[1], 10);
        var anyo = parseInt(elems[2], 10);
        if (isNaN(dia) || isNaN(mes) || isNaN(anyo))    
        {
            return 0;
        }
        if((dia>31 && mes==1) || (dia>31 && mes==3) || (dia>30 && mes==4) || (dia>31 && mes==5) || (dia>30 && mes==6) || (dia>31 && mes==7) || (dia>31 && mes==8) || (dia>30 && mes==9) || (dia>31 && mes==10) || (dia>30 && mes==11) || (dia>31 && mes==12))
        {
            return 0;
        }
        else if (mes==2)
        {
            if ((anyo%4==0 && anyo%100!=0) || anyo%400==0)
            {
                if (dia>29)
                {
                    return 0;
                }
            }
            else if (dia>28)
            {
                return 0;
            }
        }
        return 1;
    }
    return 0; //mal rollo: ocurre que el formato de la fecha es incorrecto
}
function parseURL(aURL)
{
    var aURLString = "" + aURL;
    var aURLRegExp = new RegExp( "^http:\/\/(\w+\.){1,}\w+(:\d+)?(\/.*)?$");      
    if ( aURLRegExp.test( aURLString ) )
    {
        return 1;
    }
    return 0;
}

function parseEmail(aEMAIL)
{
    var re;
    aEMAILString = "" + aEMAIL;
    re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    if (re.test(aEMAILString) == true)
    {
        return 1;
    }
    return 0;
}

//Esta función valida un campo de un formulario según los parámetros que se le pasa: 
function validar_campo(campo, alias, tipo, minsize, maxsize, necesario, language)
{
    var excesoChars=campo.value.length - maxsize
    if(trimString(campo.value)=="")
    {
        if (necesario==1)
        {
            if(language=="ES" || language=="") {
                alert("El campo '" + alias + "' es obligatorio");
            }
            else if(language=="EN") {
                alert("You must fill the '" + alias + "' field");
            }
            campo.focus();
            return false;
        }
        else
        {
            return true;
        }
    }
    //Para campos numéricos: ******************************************
    else if (tipo=="number" || tipo=="integer")
    {
        //convierte cadenas de texto a números en el sistema numérico que le digamos:
        valor = parseInt(campo.value, 10); 
        if (isNaN(valor))    //el método "isNaN" comprueba si el valor No es un número
        {
            if(language=="ES" || language=="") {
                alert ("Valor incorrecto para el campo '" + alias + "'. Se requiere un dato numérico");
            }
            else if(language=="EN") {
                alert ("Incorrect value for '" + alias + "' field. It's required a numeric value");
            }            
            campo.value="";  
            campo.focus();    
            return false;
        }
        else if(valor<minsize || (valor>maxsize && maxsize!=-1))
        {
            if(language=="ES" || language=="") {
                alert ("Valor numérico fuera del rango posible para el campo '" + alias + "'");
            }
            else if(language=="EN") {
                alert ("Numeric value out of range for the '" + alias + "' field");
            }            
            campo.focus();
            return false;
        }            
    }
    //Para campos alfanuméricos: ****************************************
    else if(tipo=="string")
    {
        if (campo.value.length > maxsize && maxsize!=-1)
        {
            if(language=="ES" || language=="") {
                alert ("Se permite un máximo de " + maxsize + " caracteres para el campo '" + alias + "' y se ha excedido en "+excesoChars+" caracter/es");
            }
            else if(language=="EN") {
                alert ("It's allowed a maximum of " + maxsize + " characters for the '" + alias + "' field and you has exceded in "+excesoChars+" character/s");
            }              
            campo.focus()
            return false;
        }
        else if(campo.value.length < minsize)
        {
            if(language=="ES" || language=="") {
                alert ("El campo '" + alias + "' tiene una longitud mínima obligatoria de " + minsize + " caracter/es");
            }
            else if(language=="EN") {
                alert ("The field '" + alias + "' has a minimum obligatory length of " + minsize + " character/s");
            }              
            campo.focus()
            return false;
        }
   }
    //Para campos fecha: **********************************************
    else if(tipo=="date")
    {
        if (parseDate(campo.value)==0)  
        {
            if(language=="ES" || language=="") {
                alert ("Valor incorrecto para el campo '" + alias + "'. Se requiere un dato de tipo fecha");
            }
            else if(language=="EN") {
                alert ("Incorrect value for the '" + alias + "' field. It's required a date data type field");
            }               
            campo.value="";  
            campo.focus();    
            return false;
        }
    }
    //Para campos booleanos: **********************************************
    else if(tipo=="boolean")
    {
        //convierte cadenas de texto a números en el sistema numérico que le digamos:
        valor = parseInt(campo.value, 10); 
        if (isNaN(valor) || (valor!=0 && valor!=1))    //el método "isNaN" comprueba si el valor No es un número
        {
            if(language=="ES" || language=="") {
                alert ("Valor incorrecto para el campo '" + alias + "'. Se requiere un dato de tipo booleano (0 o 1)");
            }
            else if(language=="EN") {
                alert ("Incorrect value for the '" + alias + "' field. It's required a boolean data type field (0 or 1)");
            }                
            campo.value="";  
            campo.focus();    
            return false;
        }
    }
    return true;
}
function hiddenDefaultValue(campo,defaultValue)
{
    if (campo.value==defaultValue)
    {
        campo.value='';
    }
}
function showDefaultValue(campo,defaultValue)
{
    if (campo.value=='')
    {
        campo.value=defaultValue;
    }
}
