/************************************************
* function verificaCartao
* Verifica se o número de um cartão de crédito é válido
* Input: número do cartão e tipo dele (VISA, MASTERCARD, ...)
************************************************/
function verificaCartao(cartao,tipo){
	Msg=""
	chk=checkcc(cartao,tipo);
	if (chk == 0) { Msg = ""; } //Cartao OK.
	if (chk == 1) { Msg = "Tipo do cartao errado"; }
	if (chk == 2) { Msg = "Tamanho do cartao errado"; }
	if (chk == 3) { Msg = "Tamanho e tipo do cartao errados"; }
	if (chk == 4) { Msg = "Checksum do cartao errado"; }
	if (chk == 5) { Msg = "Checksum e tipo do cartao errados"; }
	if (chk == 6) { Msg = "Checksun e tamaho do cartao errados"; }
	if (chk == 7) { Msg = "Checksum, tamanho e tipo do cartao errados"; }
	if (chk == 8) { Msg = "Tipo do cartao desconhecido"; }
	if (Msg==""){
		return true;
	}else {
		//alert(Msg);
		return false;
	}
}
/************************************************
* function warnInvalid_SelectBox
* Gera um alert para o usuário e volta o foco para
* o campo que está com problema
* Esta função é específica para ser usada com campos Select, para outros campos, usar a warnInvalid
* Input: theField - campo do formulário com problema
*        warnText - texto a ser mostrado no alert
************************************************/
// Retorna A MOD B
function mod(a,b){
	temp = Number(b);
	ok=1;
	ant=0;
	if (Number(b)>Number(a)){
		ret=a;
		ok="0";
	}
		while(ok=="1"){
			if (Number(a) >= Number(temp)){
				ant=Number(temp);
				temp=Number(temp)+Number(b);
			}else{
				ret=Number(a)-Number(ant);
				ok = "0";
			     }
		}
	return ret;
}

// Função auxiliar na valdiação do número de cartão de crédito
function checkcc(ccnumber,cctype){
	//cctype:
	//       "V" VISA
	//       "M" Mastercard/Eurocard
	//       "A" American Express
	//       "C" Diners Club / Carte Blanche
	//       "D" Discover
	//       "E" enRoute
	//       "J" JCB
	//returns:  checkcc=0 (Bit0) : Cartao Valido
	//          checkcc=1 (Bit1) : Tipo Errado
	//          checkcc=2 (Bit2) : Tamanho Errado
	//          checkcc=4 (Bit3) : checksum Errado (MOD10-Test)
	//          checkcc=8 (Bit4) : Tipo de Cartao desconhecido
	//
	cctype = new String(cctype);
	ctype = cctype.toUpperCase();
	if (ctype == "MASTERCARD") {
		cclength=new Array("16");
		ccprefix=new Array("51","52","53","54","55");
	}
	if (ctype == "VISA") {
		cclength=new Array("13","16");
		ccprefix=new Array("4");
	}
	if (ctype == "AMERICANEXPRESS") {
		cclength=new Array("15");
		ccprefix=new Array("34","37");
	}
	if (ctype == "DINERSCLUB") {
		cclength=new Array("14");
		ccprefix=new Array("300","301","302","303","304","305","36","38");
	}
	if (ctype == "DISCOVER") {
		cclength=new Array("16");
		ccprefix=new Array("6011");
	}
	if (ctype == "ENROUTE") {
		cclength=new Array("15");
		ccprefix=new Array("2014","2149");
	}
	if (ctype == "JCB") {
		cclength=new Array("15","16");
		ccprefix=new Array("3","2131","1800");
	}
	number=trimtodigits(ccnumber);
	prefixvalid=false;
	lengthvalid=false;
	prefixvalid = true;
	for (i=0;i<cclength.length;i++){
		lengthtemp=cclength[i];
		if (number.length==Number(lengthtemp))
			lengthvalid=true;
	}
	result=0;
	if(!prefixvalid)
		result=Number(result)+Number(1);
	if(!lengthvalid)
		result=Number(result)+Number(2);
	qsum=0;
	for (x=1;x<=number.length;x++){
		ch=number.charAt(number.length-x);
		if (Number(mod(x,2))==Number(0)){
			sum=Number(2)*Number(ch);
			qsum=Number(qsum)+Number((mod(sum,10)));
     		if (sum>9)
				qsum=Number(qsum)+Number(1);
		}else
			qsum=Number(qsum)+Number(ch);
	}
	if (mod(qsum,10)!=0)
		result=Number(result)+Number(4);
	if (cclength=="")
		result=Number(result)+Number(8);
	return result;
}

/*fim*/


function validaform(){
	if(isEmpty(document.formcadastro.nome.value) || !checkField(document.formcadastro.nome.value))
	{
		warnInvalid(document.formcadastro.nome,'O NOME está vazio ou contém caracteres inválidos!');
		return false;
	}
	/*if(isEmpty(document.formcadastro.sobrenome.value) || !checkField(document.formcadastro.sobrenome.value))
	{
		warnInvalid(document.formcadastro.sobrenome,'O SOBRENOME está vazio ou contém caracteres inválidos!');
		return false;
	}*/
	if(isEmpty(document.formcadastro.CnpjCpfA.value) || !isInteger(document.formcadastro.CnpjCpfA.value))
	{
		warnInvalid(document.formcadastro.CnpjCpfA,'O CPF está incompleto!');
		return false;
	}
	if(isEmpty(document.formcadastro.CnpjCpfB.value) || !isInteger(document.formcadastro.CnpjCpfB.value))
	{
		warnInvalid(document.formcadastro.CnpjCpfB,'O CPF está incompleto!');
		return false;
	}
	if(isEmpty(document.formcadastro.CnpjCpfC.value) || !isInteger(document.formcadastro.CnpjCpfC.value))
	{
		warnInvalid(document.formcadastro.CnpjCpfC,'O CPF está incompleto!');
		return false;
	}
	if(isEmpty(document.formcadastro.CnpjCpfD.value) || !isInteger(document.formcadastro.CnpjCpfD.value))
	{
		warnInvalid(document.formcadastro.CnpjCpfD,'O CPF está incompleto!');
		return false;
	}
		var v_cpf = new String(document.formcadastro.CnpjCpfA.value + "." + document.formcadastro.CnpjCpfB.value + "." + document.formcadastro.CnpjCpfC.value + "-" + document.formcadastro.CnpjCpfD.value);
		bValida = false
		if (isDigit(v_cpf.charAt(0)) && isDigit(v_cpf.charAt(1)) && isDigit(v_cpf.charAt(2)) && isDigit(v_cpf.charAt(4)) && isDigit(v_cpf.charAt(5)) && isDigit(v_cpf.charAt(6)) && isDigit(v_cpf.charAt(8)) && isDigit(v_cpf.charAt(9)) && isDigit(v_cpf.charAt(10)) && isDigit(v_cpf.charAt(12)) && isDigit(v_cpf.charAt(13)))
			bValida = true;
		if (v_cpf.charAt(3) == "." && v_cpf.charAt(7) == "." && v_cpf.charAt(11) == "-")
			bValida = true;
		if (!verificaCPF(trimtodigits(v_cpf)))
		{
			warnInvalid(document.formcadastro.CnpjCpfA,'O CPF está inválido!');
			return false;
		}
	if(isEmpty(document.formcadastro.email.value) || !verificaEmail(document.formcadastro.email.value))
	{
		warnInvalid(document.formcadastro.email,'O E-MAIL está vazio ou contém caracteres inválidos!');
		return false;
	}
	if(isEmpty(document.formcadastro.endereco.value) || !checkField(document.formcadastro.endereco.value))
	{
		warnInvalid(document.formcadastro.endereco,'O ENDEREÇO está vazio ou contém caracteres inválidos!');
		return false;
	}
	if(isEmpty(document.formcadastro.numero.value))
	{
		warnInvalid(document.formcadastro.numero,'O NÚMERO está vazio!');
		return false;
	}
	if(isEmpty(document.formcadastro.bairro.value) || !checkField(document.formcadastro.bairro.value))
	{
		warnInvalid(document.formcadastro.bairro,'O BAIRRO está vazio ou contém caracteres inválidos!');
		return false;
	}
	if(isEmpty(document.formcadastro.cep.value))
	{
		warnInvalid(document.formcadastro.cep,'O CEP está vazio!');
		return false;
	}
	/*if(isEmpty(document.formcadastro.cepB.value) || !isInteger(document.formcadastro.cepB.value))
	{
		warnInvalid(document.formcadastro.cepB,'O CEP está vazio ou é inválido!');
		return false;
	}*/
	if(isEmpty(document.formcadastro.cidade.value) || !checkField(document.formcadastro.cidade.value))
	{
		warnInvalid(document.formcadastro.cidade,'A CIDADE está vazia ou contém caracteres inválidos!');
		return false;
	}
	var uf = new String(document.formcadastro.uf.value);
	if ((document.formcadastro.Pais.value == "Brasil") && (uf.length != 2))
	{
		warnInvalid(document.formcadastro.uf,'O ESTADO deve ter apenas 2 dígitos para estados brasileiros!');
		return false;
	}
	if(isEmpty(document.formcadastro.uf.value) || !checkField(document.formcadastro.uf.value))
	{
		warnInvalid(document.formcadastro.uf,'O ESTADO está vazio ou contém caracteres inválidos!');
		return false;
	}
	/*if(document.formcadastro.uf.options[document.formcadastro.uf.selectedIndex].value == "")
	{
		warnInvalid_SelectBox(document.formcadastro.uf,'Selecione a UF (Estado)!');
		return false;
	}*/
	if(isEmpty(document.formcadastro.ddd.value) || !isInteger(document.formcadastro.ddd.value))
	{
		warnInvalid(document.formcadastro.ddd,'O DDD está vazio ou é inválido!');
		return false;
	}	
	if(isEmpty(document.formcadastro.telefone.value))
	{
		warnInvalid(document.formcadastro.telefone,'O TELEFONE está vazio ou é inválido!');
		return false;
	}
	if(isEmpty(document.formcadastro.rg.value) || !checkField(document.formcadastro.rg.value))
	{
		warnInvalid(document.formcadastro.rg,'O R.G. está vazia ou contém caracteres inválidos!');
		return false;
	}
	document.formcadastro.submit();
	return true;
}


function validaforma(){
	if(isEmpty(document.formcadastro.nome.value) || !checkField(document.formcadastro.nome.value))
	{
		warnInvalid(document.formcadastro.nome,'O NOME está vazio ou contém caracteres inválidos!');
		return false;
	}
	if(isEmpty(document.formcadastro.CnpjCpfA.value) || !isInteger(document.formcadastro.CnpjCpfA.value))
	{
		warnInvalid(document.formcadastro.CnpjCpfA,'O CNPJ está incompleto!');
		return false;
	}	
	if(isEmpty(document.formcadastro.CnpjCpfB.value) || !isInteger(document.formcadastro.CnpjCpfB.value))
	{
		warnInvalid(document.formcadastro.CnpjCpfB,'O CNPJ está incompleto!');
		return false;
	}	
	if(isEmpty(document.formcadastro.CnpjCpfC.value) || !isInteger(document.formcadastro.CnpjCpfC.value))
	{
		warnInvalid(document.formcadastro.CnpjCpfC,'O CNPJ está incompleto!');
		return false;
	}	
	if(isEmpty(document.formcadastro.CnpjCpfD.value) || !isInteger(document.formcadastro.CnpjCpfD.value))
	{
		warnInvalid(document.formcadastro.CnpjCpfD,'O CNPJ está incompleto!');
		return false;
	}	
	if(isEmpty(document.formcadastro.CnpjCpfE.value) || !isInteger(document.formcadastro.CnpjCpfE.value))
	{
		warnInvalid(document.formcadastro.CnpjCpfE,'O CNPJ está incompleto!');
		return false;
	}	
	var v_cpf = new String(document.formcadastro.CnpjCpfA.value + "." + document.formcadastro.CnpjCpfB.value + "." + document.formcadastro.CnpjCpfC.value + "/" + document.formcadastro.CnpjCpfD.value + "-" + document.formcadastro.CnpjCpfE.value);
		bValida = false;
		if (isDigit(v_cpf.charAt(0)) && isDigit(v_cpf.charAt(1)) && isDigit(v_cpf.charAt(3)) && isDigit(v_cpf.charAt(4)) && isDigit(v_cpf.charAt(5)) && isDigit(v_cpf.charAt(7)) && isDigit(v_cpf.charAt(8)) && isDigit(v_cpf.charAt(9)) && isDigit(v_cpf.charAt(11)) && isDigit(v_cpf.charAt(12)) && isDigit(v_cpf.charAt(13)) && isDigit(v_cpf.charAt(14)) && isDigit(v_cpf.charAt(16)) && isDigit(v_cpf.charAt(17)))
			bValida = true;
		if (v_cpf.charAt(2) == "." && v_cpf.charAt(6) == "." && v_cpf.charAt(10) == "/" && v_cpf.charAt(15) == "-")
			bValida = true;
		if (!verificaCGC(trimtodigits(v_cpf)))
		{
			warnInvalid(document.formcadastro.CnpjCpfA,'O CNPJ é inválido!');
			return false;
		}
	if(isEmpty(document.formcadastro.email.value) || !verificaEmail(document.formcadastro.email.value))
	{
		warnInvalid(document.formcadastro.email,'O E-MAIL está vazio ou contém caracteres inválidos!');
		return false;
	}
	if(isEmpty(document.formcadastro.endereco.value) || !checkField(document.formcadastro.endereco.value))
	{
		warnInvalid(document.formcadastro.endereco,'O ENDEREÇO está vazio ou contém caracteres inválidos!');
		return false;
	}
	if(isEmpty(document.formcadastro.numero.value))
	{
		warnInvalid(document.formcadastro.numero,'O NÚMERO está vazio!');
		return false;
	}
	if(isEmpty(document.formcadastro.bairro.value) || !checkField(document.formcadastro.bairro.value))
	{
		warnInvalid(document.formcadastro.bairro,'O BAIRRO está vazio ou contém caracteres inválidos!');
		return false;
	}
	if(isEmpty(document.formcadastro.cep.value))
	{
		warnInvalid(document.formcadastro.cep,'O CEP está vazio!');
		return false;
	}
	/*if(isEmpty(document.formcadastro.cepB.value) || !isInteger(document.formcadastro.cepB.value))
	{
		warnInvalid(document.formcadastro.cepB,'O CEP está vazio ou é inválido!');
		return false;
	}*/
	if(isEmpty(document.formcadastro.cidade.value) || !checkField(document.formcadastro.cidade.value))
	{
		warnInvalid(document.formcadastro.cidade,'A CIDADE está vazia ou contém caracteres inválidos!');
		return false;
	}
	if(isEmpty(document.formcadastro.uf.value) || !checkField(document.formcadastro.uf.value))
	{
		warnInvalid(document.formcadastro.uf,'O ESTADO está vazio ou contém caracteres inválidos!');
		return false;
	}
	/*if(document.formcadastro.uf.options[document.formcadastro.uf.selectedIndex].value == "")
	{
		warnInvalid_SelectBox(document.formcadastro.uf,'Selecione a UF (Estado)!');
		return false;
	}*/
	if(isEmpty(document.formcadastro.ddd.value) || !isInteger(document.formcadastro.ddd.value))
	{
		warnInvalid(document.formcadastro.ddd,'O DDD está vazio ou é inválido!');
		return false;
	}	
	if(isEmpty(document.formcadastro.telefone.value))
	{
		warnInvalid(document.formcadastro.telefone,'O TELEFONE está vazio ou é inválido!');
		return false;
	}
	/*if(isEmpty(document.formcadastro.rg.value) || !checkField(document.formcadastro.rg.value))
	{
		warnInvalid(document.formcadastro.rg,'O R.G. está vazia ou contém caracteres inválidos!');
		return false;
	}*/
	document.formcadastro.submit();
	return true;
}

