/**
 * validador.js
 * 
 * Contiene funciones de validacion de campos de formulario.
 */
 
/**
 * Valida si el valor recibido es numerico o no. Retorna true o false,
 * segun sea el caso.
 */

//Retorna el valor del campo de formulario con id 'id_campo'
function getValue( id_campo ){
	return document.getElementById( id_campo ).value;
}

//Cambia el valor del campo con el id indicado, por el valor indicado. 
function setValue( id_campo, nuevo_valor ){
	document.getElementById( id_campo ).value = nuevo_valor;
}

//Pone el foco sobre el campo con el id indicado.
function focusOn( id_campo ){
	document.getElementById( id_campo ).focus();
}

//Retorna verdadero si el valor recibido es numero. Falso si no lo es.
function esNumero( valor ){
	numRegExp = /^[0-9]+$/
    return numRegExp.test( valor );
}

//Retorna verdadero si el valor es nulo o vacio.
function estaVacio( valor ){
	return !/\S/.test( valor );
}

//Retorna verdadero si el numero (1er parametro) esta entre el
//rango definido por Nmax y Nmin. Si no lo esta, retorna falso.
function numeroEntreRango( numero, Nmax, Nmin ){
	var num = Number( numero );
    if(isNaN(num)){
            return false;
    }
    if(num != Math.round(num)){
            return false;
    }
    return (num >= Nmin && num <= Nmax);
}

//Retorna verdadero si el valor pasado como parametro corresponde a una
//direccion de correo electronico
function esEmail( valor ){
	emailRegExp = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/
    return emailRegExp.test( valor );
}

//Retorna verdadero si el 'date' recibido es una fecha, en el formato
//indicado. Los formatos son:
//
//FR = (dd/mm/yyyy)
//SHORTFR = (dd/mm/yy)
//US = (yyyy-mm-dd)
//SHORTUS = (yy-mm-dd)
//dd MMM yyyy (en ingles)
//MMM dd, yyyy (en ingles)
function esFecha( date, format ){
	if(!date) return false;
    if(!format) format = 'FR';
    
    switch(format){
            case'FR': RegExpformat = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/([2][0]|[1][9])\d{2})$/; break;
            case'US': RegExpformat = /^([2][0]|[1][9])\d{2}\-([0]\d|[1][0-2])\-([0-2]\d|[3][0-1])$/; break;
            case'SHORTFR': RegExpformat = /^([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/\d{2}$/; break;
            case'SHORTUS': RegExpformat = /^\d{2}\-([0]\d|[1][0-2])\-([0-2]\d|[3][0-1])$/; break;
            case'dd MMM yyyy':RegExpformat = /^([0-2]\d|[3][0-1])\s(Jan(vier)?|Fév(rier)?|Mars|Avr(il)?|Mai|Juin|Juil(let)?|Aout|Sep(tembre)?|Oct(obre)?|Nov(ember)?|Dec(embre)?)\s([2][0]|[1][19])\d{2}$/; break;
            case'MMM dd, yyyy':RegExpformat = /^(J(anuary|u(ne|ly))|February|Ma(rch|y)|A(pril|ugust)|(((Sept|Nov|Dec)em)|Octo)ber)\s([0-2]\d|[3][0-1])\,\s([2][0]|[1][9])\d{2}$/; break;
    }
    
    return RegExpformat.test(date);
}

//Retorna verdadero si el valor recibido es una URL completa válida.
//Debe contener http:// , https:// , ftp:// ó ftps:// 
function esURL( valor ){
        if(!valor) return false;
        valor = valor.toLowerCase();
        urlRegExp = /^(((ht|f)tp(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/
        return urlRegExp.test( valor );
}
