// FUNCIONES de VALIDACION de DATOS:
// 	- esNumero(cadena)
//	- isLeapYear (anyo)
//	- isFieldBlank(field)
//	- error (campo, error)
//	- formatoDireccionOK(dir)
//	- checkCaracter(flag,lstring)
//	- contains(onechar,lstring)
//	- quitarAcentos(txtAcentos)
//	- quitarEspacios(cadena)
//	- esEntero(num)
//	- ponerEntorno(url)
//	- esFechaValida()
//  - compruebaFechas(fechaIni, fechaFin)
//  - numCheckboxSeleccionadas(formulario)

// ---------------------------------------------------------------------------------------------------------------------
//Funcion que comprueba si la cadena es numerica
// ---------------------------------------------------------------------------------------------------------------------
function esNumero(cadena) {
  for (var i=1; i<=cadena.length; i++){
        var aux=cadena.substring(i-1,i);
        if(!((aux>="0") && (aux <="9"))){
           return false;
        }
   }
  return true;
}

// ---------------------------------------------------------------------------------------------------------------------
//Funcion que comprueba si el año es bisiesto
// ---------------------------------------------------------------------------------------------------------------------
function isLeapYear (anyo) {
	if (anyo % 1000 == 0) return true;
	if (anyo % 100 == 0) return false;
	if (anyo % 4 == 0) return true;
	return false;
}

// ---------------------------------------------------------------------------------------------------------------------
//Funcion que valida si un campo esta vacio
// ---------------------------------------------------------------------------------------------------------------------
function isFieldBlank(field) {
	if(field.value.length==0)
		return true;
	else
		return false;
}

// ---------------------------------------------------------------------------------------------------------------------
//Funcion que busca un caracter en una cadena de caracteres
// ---------------------------------------------------------------------------------------------------------------------
function contains(onechar,lstring) {
	var retval=false
	for(var i=1; i<=lstring.length; i++)
		if(lstring.substring(i,i+1)==onechar) {
			retval=i
	break
    	}
  	return retval
}

// ---------------------------------------------------------------------------------------------------------------------
//Funcion que muestra un error por pantalla
// ---------------------------------------------------------------------------------------------------------------------
function error (campo, error) {
  	alert (campo + ": "+ error);
}

// ---------------------------------------------------------------------------------------------------------------------
//Funcion para la validacion de una direccion de correo
// ---------------------------------------------------------------------------------------------------------------------
function formatoDireccionOK(dir) {
	var patronDireccion = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
	if (!patronDireccion.test(dir) || !checkCaracter(6,dir)){
		return false;
	}
	return true;
}

// ---------------------------------------------------------------------------------------------------------------------
//Funcion para la validacion de un caracter
// ---------------------------------------------------------------------------------------------------------------------
function checkCaracter(flag,lstring) {
	var i
	var retval = true;
	if (flag==0) {
		for (i=1; i<=lstring.length; i++){
			var aux=lstring.substring(i-1,i);
			if((aux>="0") && (aux <="9"))
				retval=true;
			else
				return false;
      		}
  	}
  	else if(flag==1){
      		for (i=1; i<=lstring.length; i++){
         		var aux=lstring.substring(i-1,i);
         		if(((aux>="A") && (aux <="Z")) || ((aux>="a") && (aux<="z")))
            			retval=true;
         		else
            			return false;
      		}
  	}
  	else if (flag==2){
     		var cont=0;
     		for (i=1; i<=lstring.length; i++){
         		var aux=lstring.substring(i-1,i);
         		if( ((aux>="A") && (aux <="Z")) || ((aux>="a") && (aux<="z")) ||
            		((aux>="0") && (aux <="9")) || aux=="_" || aux=="-" ||(aux=="@" && cont==0)
             		|| (aux==".")) {
            			if(aux=="@")
              				cont=1;
            				retval= true;
         			}
         			else
            				return false;
     		}
  	}
  	else if (flag==3){
     		var cont=0;
     			for (i=1; i<=lstring.length; i++){
         			var aux=lstring.substring(i-1,i);
         			if( ((aux>="A") && (aux <="Z")) || ((aux>="0") && (aux <="9")) ) {
            				retval= true;
         			}
         			else
            				return false;
      				}
  	}
 	else if (flag==4){
     		var cont=0;
     		for (i=1; i<=lstring.length; i++){
         		var aux=lstring.substring(i-1,i);
         		if( ((aux>="A") && (aux <="Z")) || ((aux>="0") && (aux <="9")) || aux=="-" ) {
         	   		retval= true;
         		}
         		else
            			return false;
     		}
  	}
   	else if (flag==5){
     		var cont=0;
     		for (i=1; i<=lstring.length; i++){
         		var aux=lstring.substring(i-1,i);
         		if( ((aux>="A") && (aux <="Z")) || ((aux>="a") && (aux<="z")) || ((aux>="0") && (aux <="9")) ) {
            			retval= true;
         		}
         		else
            			return false;
     		}
  	}
  	else if (flag==6){
     		for (i=1; i<=lstring.length; i++){
         		var aux=lstring.substring(i-1,i);
		 	var caracteres_no_permitidos="áéíóúàèìòùäëïöüñÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÑ";
		 	for (j=0; j<caracteres_no_permitidos.length; j++){
		 		if (aux != caracteres_no_permitidos[j])
					retval = true;
	        		else
    	        			return false;
	     		}
     		}
  	}
  	else
      		return false;
  	return retval;
}

// ---------------------------------------------------------------------------------------------------------------------
//Funcion que quita los acentos de una cadena de texto
// ---------------------------------------------------------------------------------------------------------------------
function quitarAcentos(txtAcentos) {
	if(txtAcentos.length!=0) {
		malos=new Array("á","é","í","ó","ú","Á","É","Í","Ó","Ú");
		buenos=new Array("a","e","i","o","u","A","E","I","O","U");

		for(var i=0; i < malos.length; i++)
		{
			re=new RegExp(malos[i]);
			txtAcentos=txtAcentos.replace(re,buenos[i]);
		}
	}
	return txtAcentos;
}

// ---------------------------------------------------------------------------------------------------------------------
//Funcion para quitar los espacios de una cadena
// ---------------------------------------------------------------------------------------------------------------------
function quitarEspacios(cadena) {

	while(''+cadena.charAt(0)==' ')
		cadena=cadena.substring(1,cadena.length);


    	while(''+cadena.charAt(cadena.length-1)==' ')
 		cadena=cadena.substring(0,cadena.length-1);

    return cadena;
}


// ---------------------------------------------------------------------------------------------------------------------
//Funcion que comprueba si un numero es entero
// ---------------------------------------------------------------------------------------------------------------------
function esEntero(num) {
	if (num.length == 0) return false;
	for (i=0; i<num.length; i++){
    	var aux=num.substring(i,i+1);
		if( isNaN(parseInt(aux, 10))) {
		   return false;
		   break;
      	}
	}
	return true;
}

// ---------------------------------------------------------------------------------------------------------------------
//Funcion que compueba si una fecha es correcta
// ---------------------------------------------------------------------------------------------------------------------
function esFechaValida(fecha) {
	//Un año es bisiesto si puede dividirse entre cuatro.
 	//Si es divisible entre 100 NO es bisiesto.
 	//Aunque si es divisible entre 400 SI lo es.
    if (fecha.length==0) return true;
	//esta funcion valida una fecha (dd/mm/yyyy)
	var mes31 = /(^(0[1-9]|[1-2][0-9]|30|31)\/(01|03|05|07|08|10|12)\/[0-9]{4}$)|(^$)/;
	var mes30 = /(^(0[1-9]|[1-2][0-9]|30)\/(04|06|09|11)\/[0-9]{4}$)|(^$)/;
	var Febrero = /(^(0[1-9]|[1-2][0-9])\/02\/[0-9]{4}$)|(^$)/;
	var correcto = false;
	if (mes31.test(fecha) || mes30.test(fecha))
		correcto = true;
	else if (Febrero.test(fecha)) { //calculamos si es bisiesto
		var bisiesto = 0;
		if (parseInt(fecha.substring(6,10)) % 4 == 0) {
			bisiesto = 1;
			if (parseInt(fecha.substring(6,10)) % 100 == 0) {
				bisiesto = 0;
				if (parseInt(fecha.substring(6,10)) % 400 == 0)
					bisiesto = 1;
			}
		}
		if (parseInt(fecha.substring(0,2)) > 28 + bisiesto)
			correcto = false;
		else correcto = true;
	} else correcto = false;
	return correcto;
}

// ---------------------------------------------------------------------------------------------------------------------
//Funcion que compueba si 2 Fechas mantienen criterios
// ---------------------------------------------------------------------------------------------------------------------
function compruebaFechas(fechaIni,fechaFin){
    if (fechaIni.length==0) { return esFechaValida(fechaFin); }
    if (fechaFin.length==0) { return esFechaValida(fechaIni); }
    if (esFechaValida(fechaFin) && esFechaValida(fechaIni)) {
         var anyoIni = parseInt(fechaIni.substring(6,10),10);
         var mesIni = parseInt(fechaIni.substring(3,5),10);
         var diaIni = parseInt(fechaIni.substring(0,2),10);

         var anyoFin = parseInt(fechaFin.substring(6,10),10);
         var mesFin = parseInt(fechaFin.substring(3,5),10);
         var diaFin = parseInt(fechaFin.substring(0,2),10);

         if (anyoIni>anyoFin) {
            return false;
         } else {
           if (anyoIni==anyoFin) {
             if (mesIni>mesFin) {
                return false;
             } else {
                if (mesIni==mesFin) {
                   if (diaIni>diaFin) {
                      return false;
                   }
                }
             }
           }
         }
         return true;
      }
      return false;
     }

// ---------------------------------------------------------------------------------------------------------------------
// Función que nos devuelve el número de checks seleccionadas en un formulario. Los checks han de tener de nombre 'check'
// se recibe por parámetro el formulario que contiene a los checks.
// ---------------------------------------------------------------------------------------------------------------------
function numCheckboxSeleccionadas (elform) {
    var c=elform.check;
    if (typeof c == "undefined") return 0;
    var n=0;

    if (typeof c.length == "undefined") {
    // caso especial por si solo hay un checkbox
        if (c.checked) {
            return 1;
        } else {
            return 0;
        }
    } else {
        for (var i=0; i<c.length; i++) {
            if (c[i].checked) {
                n++;
            }
        }
        return n;
    }
}

function es_real(campo)
{
 var r=true;
 var longit = campo.value.length;
 var punto = false;
 if (longit != 0) { //redundante si se ha testeado antes que el campo no sea vacio
	  for (var i=0;i<longit;i++){
	      var letra = campo.value.charAt(i);
	      if (letra > "9" || letra < "0" ) {
		    	 if (punto == false && letra==".") {
			 		 		punto = true;
					 }
		   		 else {
							 r = false;
							 break;
					 }
	  		}
 		}
 }
 return r;
}

function es_numerico(campo)
{
var r=true;
var longit = campo.value.length;
if (longit != 0) //redundante si se ha testeado antes que el campo no sea vacio
	{
	for (var i=0;i<longit;i++)
		{
		var letra = campo.value.charAt(i);
 		if (letra > "9" || letra < "0")
  			{
			r=false;
			break
   			}
		}
	}
else
    {    
    r=false;
    }
return r;
}

function es_numerico_Positivo_o_Negativo(campo)
{
  var r=true;
  var longit = campo.value.length;
  if (longit != 0) //redundante si se ha testeado antes que el campo no sea vacio
  {
    var numeroComprobar = campo;
    // Si el primer caracter es un menos, se quita
    var esNegativo = false;
	if(numeroComprobar.value.substring(0,1) == "-")
	{
	  esNegativo = true;
	  if(longit > 1)
	    numeroComprobar.value = numeroComprobar.value.substring(1, numeroComprobar.value.length);
	  else
	    r = false;
	 }
     if(r)
	  r = es_numerico(numeroComprobar);
	 if((esNegativo) && (campo.value != "-"))
	   campo.value = "-" + campo.value;
  }
  else
  {
    r=false;
  }
return r;
}

function emailCorrecto(campo){
    var resultado = false;
    var str=campo.value
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    if (filter.test(str))
        resultado=true
    return resultado;
}






















