//verifica si un campo tiene datos o no
//regresa true si no se capturo nada
//regresa false si contiene datos
// c debe contener el valor del campo a validar
//ejemplo de uso if(vacio(document.forma.campo.value)) ....
function vacio(c){
	if( c.length > 0){
		var cad=new String(c);
		for( var i=0;i<cad.length;i++){
			if( cad.charAt(i)!=' '){
				return false;
			}
		}
	}
	return true;
}

//verifica si un campo contiene un nombre valido (caracteres del español, espacio y punto)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esnombre(document.forma.nombre.value,1) 
//ejemplo de uso sin no es campo requerido if(esnombre(document.forma.nombre.value,0) 
function esnombre(c,req){
	if(req==1){
		if(vacio(c)) return false;
	}
	valid = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz .,";
	var temp; 
	for(var i=0;i< c.length;i++){
     		temp=c.substr(i,1);
		if (valid.indexOf(temp) == -1){
			return false;
		}
	}
	return true;
}

//verifica si un campo contiene un telefono valido (0-9 espacio guion y parentesis)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(estelefono(document.forma.tel.value,1) 
//ejemplo de uso sin no es campo requerido if(estelefono(document.forma.tel.value,0) 
function estelefono(c,req){
	if(req==1){
		if(vacio(c)) return false;
	}
	var valid = "1234567890 -()";
	var temp; 
	for(var i=0;i< c.length;i++){
     		temp=c.substr(i,1);
		if (valid.indexOf(temp) == -1){
			return false;
		}
	}
	return true;
}

//verifica si un campo contiene un codigo postal valido (0-9)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(escp(document.forma.cp.value,1) 
//ejemplo de uso sin no es campo requerido if(escp(document.forma.cp.value,0) 
function escp(c,req){
	if(req==1){
		if(vacio(c)) return false;
	}
	var valid = "1234567890";
	var temp; 
	for(var i=0;i< c.length;i++){
     		temp=c.substr(i,1);
		if (valid.indexOf(temp) == -1){
			return false;
		}
	}
	return true;
}

//verifica si un campo contiene un fecha valida (fecha en formato aaaammdd)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esfecha(document.forma.fecha.value,1) 
//ejemplo de uso sin no es campo requerido if(esfecha(document.forma.fecha.value,0) 
function esfecha(c,req){
	if(req==0){
		if(vacio(c)) return true;
	}
	
	if(c.length!=8) return false;
	var aaaa=Math.floor(c.substr(0,4));
	var mm=Math.floor(c.substr(4,2));
	var dd=Math.floor(c.substr(6,2));
	if(aaaa<1900) return false;
	if(mm>12 || mm<1) return false;
	var dmes=new Array(13);
	dmes[1]=31;
	dmes[2]=28;
	dmes[3]=31;
	dmes[4]=30;
	dmes[5]=31;
	dmes[6]=30;
	dmes[7]=31;
	dmes[8]=31;
	dmes[9]=30;
	dmes[10]=31;
	dmes[11]=30;
	dmes[12]=31;
	if(Math.floor(aaaa/4)*4==aaaa) dmes[2]=29;
	if(dd<1 || dd>dmes[mm]) return false;
	return true;
}

//verifica si un campo contiene un email valido
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esemail(document.forma.mail.value,1) 
//ejemplo de uso sin no es campo requerido if(esemail(document.forma.mail.value,0) 
function esemail(c,req){
	if(req==1){
		if(vacio(c)) return false;
	}else{
		if(vacio(c)) return true;
	}
  if (c.indexOf("@")<3){
    alert("El email no es valido");
   }
  
 return true;

}

//verifica si un campo contiene un monto valido (0-9 y punto maximo 10 posiciones enteras y 2 decimales)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esmonto(document.forma.monto.value,1) 
//ejemplo de uso sin no es campo requerido if(esmonto(document.forma.monto.value,0) 
function esmonto(c,req){
	if(req==1){
		if(vacio(c)) return false;
        if(c<=0) return false;
	} else { 
        if(!vacio(c) && c<0) return false;       
    }
	if(isNaN(c)){
       		return false;
	}else{        
		var arreglo=c.split(".");
		var entero=arreglo[0];
		var decimal=arreglo[1];
		if(entero.length>10){
			return false;
		}
		if(isNaN(decimal)){
			decimal=0;
		}
		if(decimal.length>2){
			return false;
		}
	}
	return true;
}
//verifica si un campo contiene un monto valido (0-9 y punto maximo 9 posiciones enteras y 2 decimales)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esmonto(document.forma.monto.value,1) 
//ejemplo de uso sin no es campo requerido if(esmonto(document.forma.monto.value,0) 
function esmonto2(c,req){
	if(req==1){
		if(vacio(c)) return false;
        if(c<=0) return false;
	} else { 
        if(!vacio(c) && c<0) return false;       
    }
	if(isNaN(c)){
       		return false;
	}else{        
		var arreglo=c.split(".");
		var entero=arreglo[0];
		var decimal=arreglo[1];
		if(entero.length>9){
			return false;
		}
		if(isNaN(decimal)){
			decimal=0;
		}
		if(decimal.length>2){
			return false;
		}
	}
	return true;
}

//verifica si un campo contiene una unidad valida (0-9 y punto maximo 10 posiciones enteras y 2 decimales)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esunidad(document.forma.unidad.value,1) 
//ejemplo de uso sin no es campo requerido if(esunidad(document.forma.unidad.value,0) 
function esunidad(c,req){
	if(req==1){
		if(vacio(c)) return false;
	}

	if(isNaN(c)){
       		return false;
	}else{
		var arreglo=c.split(".");
		var entero=arreglo[0];
		var decimal=arreglo[1];
		if(entero.length>10){
			return false;
		}
		if(isNaN(decimal)){
			decimal=0;
		}
		if(decimal.length>2){
			return false;
		}
	}
	return true;
}
//verifica si un campo contiene un no. proyecto valido (0-9 maximo 2147483647)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esproyecto(document.forma.monto.value,1) 
//ejemplo de uso sin no es campo requerido if(esproyecto(document.forma.monto.value,0) 
function esproyecto(c,req){
	if(req==1){
		if(vacio(c)) return false;
	}

	var valid = "0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz .áéíóúäëïöüàèìòùÇç-/";
	var temp; 
	for(var i=0;i< c.length;i++){
     		temp=c.substr(i,1);
		if (valid.indexOf(temp) == -1){
			return false;
		}
	}
	return true;
}

//valida longitud máxima. utilizado para campos textarea donde no se puede restringir con maxlength
//ejemplo de uso valida_lmax(c,lmax) donde c contiene el campo a validar y lmax la longitud máxima permitida
function valida_lmax(c,lmax){
	if(c.length>Math.abs(lmax)){
		return false;
	}
	return true;
}

// En caso de tener espacios en blanco, esta función los reemplaza por +
// y regresa el resultado
function reemplazaBlancos(valor){
var aux="";
for(var i=0; i<valor.length;i++)
	if(valor.charAt(i)==' '){
		aux=valor.slice(0, i);
		aux = aux + "+" + valor.slice(i+1);
		valor=aux;
	}
return valor;
}


//verifica si un campo contiene una tasa valida (0-9 y punto maximo 10 posiciones enteras y 6 decimales)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esmonto(document.forma.tasa.value,1) 
//ejemplo de uso sin no es campo requerido if(esmonto(document.forma.tasa.value,0) 
function estasa(c,req){
	if(req==1){
		if(vacio(c)) return false;
	}

	if(isNaN(c)){
       		return false;
	}else{
		var arreglo=c.split(".");
		var entero=arreglo[0];
		var decimal=arreglo[1];
		if(entero.length>6){
			return false;
		}
		if(isNaN(decimal)){
			decimal=0;
		}
		if(decimal.length>6){
			return false;
		}
	}
	return true;
}

//verifica si un campo contiene un numero valido (caracteres 0-9)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esnumero(document.forma.numero.value,1) 
//ejemplo de uso sin no es campo requerido if(esnombre(document.forma.numero.value,0) 
function esnumero(c,req){
	if(req==1){
		if(vacio(c)) return false;
	}
	valid = "0123456789";
	var temp; 
	for(var i=0;i< c.length;i++){
     		temp=c.substr(i,1);
		if (valid.indexOf(temp) == -1){
			return false;
		}
	}
	return true;
}

//verifica si un campo contiene una clabe valida
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esclabe(document.forma.numero.value,"CH",1) 
//ejemplo de uso sin no es campo requerido if(esnombre(document.forma.numero.value,"CH",0) 
function esclabe(c,tipo,req){
	if(req==1){
		if(vacio(c)) return false;
	}
	if(!esnumero(c)){
		return false;
	}
	if(tipo=="TD" || tipo=="TC"){
		if(c.length!=16){
			return false;
		}
	}
	if(tipo=="CH"){
		if(c.length!=18){
			return false;
		}
		var d= new Array(18);
		for(var i=0;i<18;i++)
			d[i]=new Number(c.substr(i,1));
		var total=new Number(0);
		for(var i=0;i<17;i+=3){
			d[i]=d[i]*3;
			d[i]%=10;
			total+=d[i];
		}
		for(var i=1;i<17;i+=3){
			d[i]=d[i]*7;
			d[i]%=10;
			total+=d[i];
		}
		for(var i=2;i<17;i+=3){
			total+=d[i];
		}
		total%=10;
		total=10-total;
		if(total==10) total=0;
		if(total!=d[17])
			return false;
	}
	return true;
}
//verifica si un campo contiene un rfc valido (A-Z y 0-9)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(esrfc(document.forma.rfc.value,1) 
//ejemplo de uso sin no es campo requerido if(esrfc(document.forma.rfc.value,0) 
function esrfc(c,req){
	
	if(req==1){
		if(vacio(c)) return false;
	}else{
		if(vacio(c)) return true;
	}
	
	if(c.length!=13 && c.length!=12 && c.length!=10){
		return false;
	}
	validlet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	validnum = "0123456789";
	var temp; 
	var maxnum=0;
	var	maxlet=0;
	if( c.length==12)
	{
		maxnum=9;
		maxlet=3;
	}
	else
	{
		maxnum=10;
		maxlet=4;
	}
	
	for(var i=0;i<maxlet;i++)
	{
     	temp=c.substr(i,1);
		if (validlet.indexOf(temp) == -1)
			return false;
	}
	
	for(i=maxlet;i<maxnum;i++)
	{
     	temp=c.substr(i,1);
		if (validnum.indexOf(temp) == -1)
			return false;
	}
	return true;
}

//Verifica que una fecha sea posterior a otra.
//Para llevar a cabo esta operación se necesita que ambas fechas
//sean recibidas.

function esfechmayor(fechmayor, fechmenor)
{
	if(!esfecha(fechmayor,1))
			return false;
	
	if(!esfecha(fechmenor,1))
			return false;
	
	var aamay=Math.floor(fechmayor.substr(0,4));
	var mmmay=Math.floor(fechmayor.substr(5,2));
	var ddmay=Math.floor(fechmayor.substr(8,2));
	
	var aamen=Math.floor(fechmenor.substr(0,4));
	var mmmen=Math.floor(fechmenor.substr(5,2));
	var ddmen=Math.floor(fechmenor.substr(8,2));
	
	if(aamay>aamen)
		return true;
	else
	{
		if(aamay==aamen)
		{
			if(mmmay>mmmen)
				return true;
			else
			{
				if(mmmay == mmmen && ddmay>ddmen)
					return true;
				else
				    return false;
			}
		}
		else
			return false;
	}

	return true;
}
//verifica si un campo contiene un numero de cuenta de banjercito correcto
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(escuentabj(document.forma.cuenta.value,1) 
//ejemplo de uso sin no es campo requerido if(escuentabj(document.forma.cuenta.value,0) 

function escuentabj(c,req){
	if(req==1){
		if(vacio(c)) return false;
	}
	if(!esnumero(c)){
		return false;
	}
	if(c.length>10){
		return false;
	}else{
		var largo=c.length;
		for(var i=largo;i<10;i++)
			c='0'+c;
	}

	var d= new Array(11);
	for(var i=0;i<10;i++)
		d[i]=new Number(c.substr(i,1));
	var total=new Number(0);
	var factor=2;
	for(var i=0;i<9;i++){
		d[i]=d[i]*factor;
		total+=d[i];
		factor--;
		if(factor<2) factor=9;
	}
	total%=11;
	if(total==0 || total==1) total=0;
	else total=11-total;
	if(total!=d[9])
		return false;
	return true;
}
//verifica si un campo es nip 
//regresa true si no se capturo nada
//regresa false si contiene datos
// c debe contener el valor del campo a validar
//ejemplo de uso if(esnip(document.forma.campo.value)) ....
function esnip(c){
	if( c.length <8 || c.length>8){
		return false;
	}
	if(!esnumero(c)){
		return false;
	}
    switch(c){
        case "01234567":
	case "87654321":
	case "12345678":
        case "00000000":
        case "11111111":
        case "22222222":
        case "33333333":
        case "44444444":
        case "55555555":
        case "66666666":
        case "77777777":
        case "88888888":
        case "99999999":
            return false;
            break;
    }
	return true;
}

//verifica si un bin de banjercito 
//regresa true si es
//regresa false si no es
// c debe contener el valor del campo a validar
//ejemplo de uso if(esbinbj(document.forma.campo.value)) ....
//los bines de banjercito son 491343,491346,547080
function esbinbj(c){
	var bin = String(c);
	bin = bin.substring(0,6);
	if(bin!="491343" && bin!="491346" && bin!="547080"){
		return false;
	}
	return true;
}

//verifica si es una tarjeta amex
//regresa true si es
//regresa false si no es
// c debe contener el valor del campo a validar
//ejemplo de uso if(esamex(document.forma.campo.value)) ....
function esamex(c){
	if(!esnumero(c)){
		return false;
	}
	if(c.length!=15){
		return false;
	}
	var amex=String(c);
	if(amex=="370777777777777"){
		return false;
	}
	if(amex.substring(0,2)!='37'){
		return false;
	}
	var d= new Array(15);
	for(var i=0;i<15;i++)
		d[i]=new Number(c.substr(i,1));
	var total=new Number(0);
	var factor=new Number(2);
	var partemp=new Number(0);
	var modulo=new Number(0);
	for(var i=0;i<15;i+=2){
		total+=d[i];
	}
	for(var i=1;i<15;i+=2){
		partemp=d[i]*2;
		if(partemp>9){
			partemp=partemp-9;
		}
		total+=partemp;
	}
	if(total%10!=0){
		return false;
	}

	return true;
}

//verifica si es una tarjeta credito
//regresa true si es
//regresa false si no es
// c debe contener el valor del campo a validar
//ejemplo de uso if(estc(document.forma.campo.value)) ....
function estc(c){
    var lontc=16;
	if(!esnumero(c)){
		return false;
	}
	if(c.length!=lontc){
		return false;
	}
	var d= new Array(lontc);
	for(var i=0;i<lontc;i++)
		d[i]=new Number(c.substr(i,1));
	var total=new Number(0);
	var factor=new Number(2);
	var partemp=new Number(0);
	var modulo=new Number(0);
	for(var i=1;i<lontc-1;i+=2){
		total+=d[i];
	}
	for(var i=0;i<lontc-1;i+=2){
		partemp=d[i]*2;
		if(partemp>9){
			partemp=partemp-9;
		}
		total+=partemp;
	}
    var dv=total%10;
    if(dv>0){
        dv=10-dv;
    }
	if(dv!=d[lontc-1]){
		return false;
	}

	return true;
}

//verifica si un campo contiene una linea de captura de sat valida (A-Z 0-9)
//regresa true si es valido
//regresa false si no es valido
// c debe contener el campo del valor a validar
// req es una bandera para indicar si el campo es requerido.
// si req vale 1 es requerido, cualquier otro valor no es requerido
//ejemplo de uso si es campo requerido if(eslc(document.forma.nombre.value,1) 
//ejemplo de uso sin no es campo requerido if(eslc(document.forma.nombre.value,0) 
function eslc(c,req){
	if(req==1){
		if(vacio(c)) return false;
	}
	if(c.length!=4)	return false;

	valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
	var temp; 
	for(var i=0;i< c.length;i++){
     		temp=c.substr(i,1);
		if (valid.indexOf(temp) == -1){
			return false;
		}
	}
	return true;
}
function datosalf(c,req)
{
  if(!esnombre(c,req))
   {
      alert("campo no valido");
     }
}

function datostel(c,req)
{
  if(!estelefono(c,req))
   {
      alert("campo no valido");
     }
}
function datoscp(c,req)
{
  if(!escp(c,req))
   {
      alert("campo no valido");
     }
}
function datosemail(c,req)
{
  if(!esemail(c,req))
   {
      alert("campo no valido");
     }
}
