 
 
// funcion que comprueba que el campo ha sido rellenado
function esBlanco(campo) {
    if (campo.length == 0)
        return true;
    else
        return false;
}

// funcion que comprueba si el campo es numerico (positivo o negativo)
function esNumero(campo) {
    return esEntero(campo);
}


// funcion que comprueba si el campo es numerico entero (positivo o negativo)
function esEntero(campo) {
    var inLen = campo.length;
        
    for (var i=0; i < inLen; i++) {
        var ch = campo.substring(i, i + 1);
        if ((ch < "0") || ("9" < ch)) {
            if (i != 0) return false;
    		else 
                if (ch != "-") return false;
        }
    }
    return true;
}

// funcion que comprueba si el campo es numerico natural (entero positivo)
function esNatural(campo) {
	if (esEntero(campo) && campo.charAt(0) != "-") return true;
	else return false;
}
		
// funcion que comprueba si el campo es numerico decimal (positivo o negativo)
// El caracter del decimal es el punto o la coma.
function esDecimal(campo) {
    if (esEntero(campo) || esBlanco(campo))
        return true;
       
    var posPunto = campo.indexOf(".");
    if (posPunto < 0)
        posPunto = campo.indexOf(",");
    if (posPunto < 0)
        return false;
         
    if (!esEntero(campo.substring(0, posPunto)))
        return false;
    
    if (!esEntero(campo.substring(posPunto + 1)))
        return false;
        
    if (campo.charAt(posPunto + 1) == '-') 
        return false;
        
    return true;
    
}

// funcion que comprueba si el campo es numerico decimal (positivo o negativo)
// El caracter del decimal es el punto o la coma.
function esEuro(campo) {
		var posPunto = campo.indexOf(".");
		    if (posPunto < 0)
		        posPunto = campo.indexOf(",");
		    if (posPunto < 0) {
		        if (esEntero(campo)) 
		            return true;
		        else 
		            return false;		        
		    }
    
		    if (!esEntero(campo.substring(0, posPunto)))
		        return false;
		    
		    if (!esEntero(campo.substring(posPunto + 1)))
		        return false;
		        
		    if (campo.charAt(posPunto + 1) == '-') 
		        return false;
	        
		    if ((campo.substring(posPunto + 1)).length > 2 )
		        return false;
		    return true;
}

// funcion que comprueba si el campo es un par de enteros separados
// por una barra / o un único valor.
function esMinMax(campo) {
    if (esEntero(campo) || esBlanco(campo))
        return true;
    
    var posPunto = campo.indexOf("/");
    if (posPunto < 0)
        return false;
        
    var mini = parseInt(campo.substring(0, posPunto));
    var maxi = parseInt(campo.substring(posPunto + 1));
    
    if (!esEntero(mini))
        return false;
    
    if (!esEntero(maxi))
        return false;
        
    if (mini > maxi)
    	return false;
    /*    
    if (campo.charAt(posPunto + 1) == '-') 
        return false;
        
    if (campo.charAt(0) == '-') 
        return false;
	*/
    return true;
    
}

// funcion que comprueba si el campo es numerico decimal (positivo)
// El caracter del decimal es la coma.
// Recibe los valores de precision y escala.
function esDecimal(campo, precision, escala) {
    if (esBlanco(campo))
        return true;
    if (esEntero(campo)) {
    	if (campo.length <= (precision - escala))
	        return true;
	    else
	    	return false;
	}
    
    posPunto = campo.indexOf(",");
    if (posPunto < 0)
        return false;
    
    parteEntera = campo.substring(0, posPunto);
    parteDecimal = campo.substring(posPunto + 1);
    if (!esEntero(parteEntera) || parteEntera.length > (precision - escala) || parteEntera.charAt(0) == '-')
        return false;

    if (!esEntero(parteDecimal) || parteDecimal.length > escala || parteDecimal.charAt(0) == '-')
        return false;
    
    return true;
    
}

// funcion que comprueba que el campo email contiene una @, que hay algo
// delante de la @ y que la direccion tiene un punto despues de la @
function esEmail(campo) {
    var indicearroba = campo.lastIndexOf ("@");
    var indicepunto = campo.lastIndexOf(".");
    if ((indicearroba > 0) && (indicepunto > indicearroba)){
        return true;
    } else{
        return false;
    }
}

// funcion que comprueba que el telefono tiene los digitos correctos
function esTelefono(campo) {
    var inLen = campo.length;

    // comprobar si tiene 9 digitos
    if (!esNumero(campo) || (inLen != 9)) {
        return false;
    }
    return true;
}

//funcion que comprueba que el campo es una fecha valida
// El formato que entiende es el de El Corte Inglés (DDMMYYYY).
function esFecha(campo){
	if (campo.length == 0)
		return true;

	if (campo.length != 8)
		return false;

    var valido = true;

    var dia = campo.substring(0, 2);
    var mes = campo.substring (2, 4);
    var annio = campo.substring (4, 8);
    
    if (!esNumero(dia) || !esNumero(mes) || !esNumero(annio)) {
        return false;
    } else if ((annio < 0) || (mes < 1) || (mes > 12) || (dia < 1)) {
        return false;
    } else if (((mes == 1) || (mes == 3) || (mes == 5) || (mes == 7) || (mes == 8) || (mes == 10) || (mes == 12)) && (dia > 31)) {
        return false;
    } else if (((mes == 4) || (mes == 6) || (mes == 9) || (mes == 11)) && (dia > 30)) {
        return false;
    } else if ((mes == 2) && (esBisiesto(annio)) && (dia > 29)) {
        return false;
    } else if ((mes == 2) && (!esBisiesto(annio)) && (dia > 28)) {
        return false;
    } else {
    	return true;
    }
}

//funcion que comprueba si fecha1 es mayor que fecha 2. Formato MMYYYY
function esFechaCortaMayorQue(fecha1, fecha2) {
    var mes1 = fecha1.substring(0, 2);
    var annio1 = fecha1.substring (2, 6);

    var mes2 = fecha2.substring(0, 2);
    var annio2 = fecha2.substring (2, 6);

	if (annio1 > annio2) return true;
	if (annio1 < annio2) return false;
	
	if (mes1 > mes2) return true;
	if (mes1 < mes2) return false;

	return false;
}

//funcion que comprueba si fecha1 es mayor que fecha 2. Formato DDMMYYYY
function esFechaMayorQue(fecha1, fecha2) {
    var dia1 = fecha1.substring(0, 2);
    var mes1 = fecha1.substring(2, 4);
    var annio1 = fecha1.substring (4, 8);

    var dia2 = fecha2.substring(0, 2);
    var mes2 = fecha2.substring(2, 4);
    var annio2 = fecha2.substring (4, 8);

	if (annio1 > annio2) return true;
	if (annio1 < annio2) return false;
	
	if (mes1 > mes2) return true;
	if (mes1 < mes2) return false;

	if (dia1 > dia2) return true;
	if (dia1 < dia2) return false;

	return false;
}

//funcion que comprueba que el campo es una fecha valida (sólo mes y año)
// El formato que entiende es el de El Corte Inglés (MMYYYY).
function esFechaCorta(campo){
	if (campo.length == 0)
		return true;

	if (campo.length != 6)
		return false;

    var valido = true;

    var mes = campo.substring(0, 2);
    var annio = campo.substring (2, 6);
    
    if (!esNumero(mes) || !esNumero(annio)) {
        return false;
    } else if ((annio < 0) || (mes < 1) || (mes > 12)) {
        return false;
    } else {
    	return true;
    }
}

//	funcion que calcula si un año es bisiesto
function esBisiesto (annio) {
    var bisiesto = false;
    if ((annio % 400) == 0) {
        bisiesto = true;
    } else if ((annio % 100) == 0) {
        bisiesto = false;
    } else if ((annio % 4) == 0) {
        bisiesto = true;
    } else {
        bisiesto =false;
    }
    return bisiesto;
}

//	funcion que comprueba que una cadena sea un cojunto de días de la semana (LMXJVSD)
function esRangoDias(v) {
	var dias = "LMXJVSD";
	var ind = -1;
	
	for (var n = 0; n < v.length; n++) {
		newInd = dias.indexOf(v.charAt(n));
		if (newInd <= ind) return false;
		ind = newInd;
	}
	return true;
}


function contieneRangoDias(campo) {
	if (esBlanco(campo.value)) {
		campo.value="LMXJVSD";
		return true;
	}
	
	campo.value = campo.value.toUpperCase();
	
	return esRangoDias(campo.value);
}

