/* ******************************************************************************************* */
// Esta ya no es necesaria, despues de las pruebas se puede borrar 23-6-2003
function validaCURP2(curp){
	var segRaiz = "";
	var digVer  = "";
	var lngSuma      = 0.0;
	var lngDigito    = 0.0;
	var strDigitoVer = "";
	var intFactor    = new Array(17);
	var chrCaracter  = "0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";

	segRaiz = curp.substring(0,17);
	digVer  = curp.substring(17,18);
	
	for(var i=0; i<17; i++)
	{
		for(var j=0;j<37; j++)
		{
			if(segRaiz.substring(i,i+1)==chrCaracter.substring(j,j+1))
			{  				
				intFactor[i]=j;
			}
		}
	}
	
	for(var k = 0; k < 17; k++)
	{
		lngSuma= lngSuma + ((intFactor[k]) * (18 - k));
	}
	
	lngDigito= (10 - (lngSuma % 10));
	
	if(lngDigito==10)
	{
		lngDigito=0;
	}

	var reg = /[A-Z]{4}\d{6}[HM][A-Z]{2}[B-DF-HJ-NP-TV-Z]{3}[A-Z0-9][0-9]/;
	if(curp.search(reg))
	{
		alert("La curp: " + curp + " no es valida, verifiqué ");
		return false;
		
	}
	
	if(!(parseInt(lngDigito)==parseInt(digVer)))
	{
		alert("La curp: " + curp + " no es valida, revisé el Digito Verificador (" +  lngDigito + ")");
		return false;
	}
	return true;
}
/* ******************************************************************************************* */
function validaCURP(curp){

	var reg = "";
	
	if(curp.length == 18)
	{
		var digito = calculaDigito(curp);
		
		reg = /[A-Z]{4}\d{6}[HM][A-Z]{2}[B-DF-HJ-NP-TV-Z]{3}[A-Z0-9][0-9]/;

		if(curp.search(reg))
		{
			alert("La curp: " + curp + " no es valida, verifiqué ");
			return false;
			
		}
		
		if(!(parseInt(digito) == parseInt(curp.substring(17,18))))
		{
			alert("La curp: " + curp + " no es valida, revisé el Digito Verificador (" +  digito + ")");
			return false;
		}
		return true;
	}
	else
	{
		switch (curp.length) 
		{
			case 10 :
				reg = /[A-Z]{4}\d{6}/;
				break;
			case 11 :
				reg = /[A-Z]{4}\d{6}[HM]/;
				break;
			case 12 :
				reg = /[A-Z]{4}\d{6}[HM][A-Z]/;
				break;
			case 13 :
				reg = /[A-Z]{4}\d{6}[HM][A-Z]{2}/;
				break;
			case 14 :
				reg = /[A-Z]{4}\d{6}[HM][A-Z]{2}[B-DF-HJ-NP-TV-Z]/;
				break;
			case 15 :
				reg = /[A-Z]{4}\d{6}[HM][A-Z]{2}[B-DF-HJ-NP-TV-Z]{2}/;
				break;
			case 16 :
				reg = /[A-Z]{4}\d{6}[HM][A-Z]{2}[B-DF-HJ-NP-TV-Z]{3}/;
				break;
			case 17 :
				reg = /[A-Z]{4}\d{6}[HM][A-Z]{2}[B-DF-HJ-NP-TV-Z]{3}[A-Z0-9]/;
				break;
		}
	
		if(curp.search(reg))
		{
			alert("La curp: " + curp + " no es valida, verifiqué ");
			return false;
		}
		return true;
	}
}

/* ******************************************************************************************* */
function calculaDigito(curp){
	var segRaiz      = curp.substring(0,17);
	var chrCaracter  = "0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
	var intFactor    = new Array(17);
	var lngSuma      = 0.0;
	var lngDigito    = 0.0;
	
	for(var i=0; i<17; i++)
	{
		for(var j=0;j<37; j++)
		{
			if(segRaiz.substring(i,i+1)==chrCaracter.substring(j,j+1))
			{  				
				intFactor[i]=j;
			}
		}
	}
	
	for(var k = 0; k < 17; k++)
	{
		lngSuma= lngSuma + ((intFactor[k]) * (18 - k));
	}
	
	lngDigito= (10 - (lngSuma % 10));
	
	if(lngDigito==10)
	{
		lngDigito=0;
	}

	return lngDigito;
}
/* ******************************************************************************************* */

