/*Auto-Tab*/
var Navegador = (navigator.appName.indexOf("Netscape")!=-1);

function autoTab(input,len, e) {
	var keyCode = (Navegador) ? e.which : e.keyCode; 
	var filter = (Navegador) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];

	if(input.value.length >= len && !contaElementos(filter,keyCode)) {
			input.value = input.value.slice(0, len);
			input.form[(pegaIndex(input)+1) % input.form.length].focus();
	}

function contaElementos(arr, ele) {
	var found = false, index = 0;
	while(!found && index < arr.length)
		if(arr[index] == ele)
			found = true;
		else
			index++;
		return found;
	}



function pegaIndex(input) {
	var index = -1, i = 0, found = false;
		while (i < input.form.length && index == -1)
			if (input.form[i] == input)index = i;
			else i++;
			return index;
		}
	return true;
}


function consistencia(form){
	//alert(form);
    var erro = 0;
    var tamanho_form = form.length;
	var str_erro = "";
	var data = 1;
	var foco = "-1";
    for (cont=0; cont<tamanho_form; cont++){
		//Verifica se é branco

		switch(form[cont].id){
			//--	Validação: Branco
			//--	Valida se o campo esta em branco
			case "branco": 
				if(form[cont].value == ""){
					str_erro = str_erro + "Campo " + form[cont].lang + " está vazio.\n" ;
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				 }else{
					if( erro != 1 ) { erro = 0; }
				}
				break;
			//--	Validação: email
			//--	Valida o campo email, obrigatório				
			case "email":
				if( ValidaEmail(form[cont].value) == 0 ){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				}else{
					if( erro != 1 ) { erro = 0; }
				}
				break;
			case "email_branco":
				if( ValidaEmail(form[cont].value) == 0 || form[cont].value == ""){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				}else{
					if( erro != 1 ) { erro = 0; }
				}
				break;
			//--	Validação: cpf
			//--	Valida o campo CPF, obrigatório
			case "cpf":
				if( checacpf(form[cont].value ) == 0 ){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				} else {
					if( erro != 1 ) { erro = 0; }
				}
				break;
			//--	Validação: cpf_branco
			//--	Valida o campo CPF, não obrigatório
			case "cpf_branco":
				if( checacpf(form[cont].value) == 0 || form[cont].value == ""){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				} else {
					if( erro != 1 ) { erro = 0; }
				}
				break;
			//--	Validação: cnpj
			//--	Valida o campo CNPJ, obrigatório
			case "cnpj":
				if( VerifyCNPJ(form[cont].value) == 0){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				}else{
					if( erro != 1 ) { erro = 0; }
				}
				break;
			//--	Validação: numero
			//--	Valida o campo Numero, obrigatório
			case "numero":
				if( numero(form[cont].value) == 0){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				}else{
					if( erro != 1 ) { erro = 0; }
				}
				break;
			//--	Validação: numero
			//--	Valida o campo Numero, não obrigatório
			case "numero_branco":
				if( numero(form[cont].value) == 0 || form[cont].value == "" ){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				}else{
					if( erro != 1 ) { erro = 0; }
				}
	 			break;
			//--	Validação: data
			//--	Valida os campos DIA, MES e ANO (Estes campos devem estar na respectiva ordem para o perfeito funcionamento.)
		    case "data":
				var camp_err_data = "";
				//var camp_err_data = form[cont].contador+"ª";
				var tmp_dia = form[cont].value;
				var tmp_mes = tmp_ano = "";
				if(form[cont].contador){
				    camp_err_data = form[cont].contador+"ª ";		
				} 
				tmp_mes = form[cont+1].value;
				tmp_ano = form[cont+2].value;
				if (func_val_date(tmp_dia, tmp_mes, tmp_ano)){
					str_erro = str_erro + "Campo com " + camp_err_data + "data contém valor inválido.\n" ;
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				}
				break;
				
			//--	Validação: data - campo data não obrigatório
			//--	Valida os campos DIA, MES e ANO (Estes campos devem estar na respectiva ordem para o perfeito funcionamento.)
			case "data_branco":
				var camp_err_data = "";
				//var camp_err_data = form[cont].contador+"ª";
				var tmp_dia = form[cont].value;
				var tmp_mes = tmp_ano = "";
				if(form[cont].contador){
				    camp_err_data = form[cont].contador+"ª ";		
				} 
				tmp_mes = form[cont+1].value;
				tmp_ano = form[cont+2].value;
				if( form[cont].value == "" && form[cont+1].value == "" && form[cont+2].value == "") {
					if( erro != 1 ) { erro = 0; }
				} else {
					if (func_val_date(tmp_dia, tmp_mes, tmp_ano)){
						str_erro = str_erro + "Campo com " + camp_err_data + "data contém valor inválido.\n" ;
						if(erro == 0){ foco = cont; form[foco].focus(); }
						erro = 1;
					}
				}
				break;
				
				
			//--	Validação: dia
			//--	Valida o campo Dia, obrigatório
			case "dia":
				if( numero(form[cont].value) == 0 || form[cont].value == "" || form[cont].value > 31){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					//form[cont].focus();
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				}else{
					if( erro != 1 ) { erro = 0; }
				}
				break;
			//--	Validação: dia
			//--	Valida o campo Dia, obrigatório
			case "mes":
				if( numero(form[cont].value) == 0 || form[cont].value == "" || form[cont].value > 12){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					//form[cont].focus();
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				}else{
					if( erro != 1 ) { erro = 0; }
				}
				break;
			//--	Validação: ano
			//--	Valida o campo Ano, obrigatório				
			case "ano":
				if( numero(form[cont].value) == 0 || form[cont].value == "" || form[cont].value.length != 4){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					//form[cont].focus();
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				}else{
					if( erro != 1 ) { erro = 0; }
				}
				break;
			//--	Validação: selecionado
			//--	Valida o campo Selecionado, obrigatório				
			case "selecionado":
				if( form[cont].selectedIndex == 0 ){
					str_erro = str_erro + "Campo " + form[cont].lang + " contém valor inválido.\n" ;
					//form[cont].focus();
					if(erro == 0){ foco = cont; form[foco].focus(); }
					erro = 1;
				}else{
					if( erro != 1 ) { erro = 0; }
				}
				break;
		}
	}

	if(erro){
		/*form[ foco ].focus();*/
		alert( "Ocorreu o seguinte erro:\n\n"+str_erro );
	} 
	
    return erro;
}

function ValidaEmail(email){
	if (email.length != 0 ){
		var expressao = /^[a-z]+[a-z0-9_.-]+[a-z]+@+[a-z]+[a-z0-9_.-]+[a-z0-9]$/;
		var email_val = expressao.test(email);
		var inicio = email.search('@');
		var fim = (email.length - inicio);
		var trecho = email.substr(inicio,fim);
		for ( i = 1; i <= email.length; i++ ) { ch = email.substr( i-1, 2 ); if (ch == "..") { email_val = false; break;} }
		for ( i = 1; i <= trecho.length; i++ ) {ch = trecho.substr( i-1, 1 ); if (ch == ".") { email_val = true; break;} else {email_val = false;} }
		if(!email_val){ return 0; }else{ return 1; }
	}else{
		return 1;
	}
}


function valida_form(OBJ)
{
	with(OBJ)
	{
		var Fields = validar.value.split(",");
		var FieldValue;
		
		for (i=0; i<Fields.length; i++)
		{
			FieldValue = document.getElementById(Fields[i]).value;
			
				if (FieldValue.length == 0)
				{
					alert("Campo obrigatório não preenchido!");
					document.getElementById(Fields[i]).focus();
					return false;
				}
				if (Fields[i] == "frmemail" && (FieldValue.indexOf("@") == -1 || FieldValue.indexOf(".") == -1))
				{
					alert("O e-mail informado não é válido");
					document.getElementById(Fields[i]).focus();
					return false;
				}
				if (Fields[i] == "frmsenha" && FieldValue.length < 4)
				{
					alert("A senha senha deve ter ao menos 4 dígitos");
					document.getElementById(Fields[i]).focus();
					return false;
				}
				if (Fields[i] == "frmsenha" && confirma_senha.value != FieldValue)
				{
					alert("A senha informada não confere com a confirmação");
					document.getElementById(Fields[i]).focus();
					return false;
				}
		}
	}
}
function digitaCep(objeto)
{
	var CEP = "";
	var OLD = objeto.value;
	for (i=0; i<objeto.value.length; i++)
	{
		if (i == 5)
			CEP += "-";
		if (objeto.value.charAt(i) >= '0' && objeto.value.charAt(i) <= '9')
			CEP += objeto.value.charAt(i);
	}
	if (CEP != OLD)
		objeto.value = CEP;
}
function digitaTelefone(objeto)
{
	var TEL = "";
	var OLD = objeto.value;
	for (i=0; i<objeto.value.length; i++)
	{
		if (i == 2 || i == 7)
			TEL += "-";
		if (objeto.value.charAt(i) >= '0' && objeto.value.charAt(i) <= '9')
			TEL += objeto.value.charAt(i);
	}
	if (TEL != OLD)
		objeto.value = TEL;
}
function digitaData(objeto)
{
	var NEW = "";
	var OLD = objeto.value;
	for (i=0; i<objeto.value.length; i++)
	{
		if (i == 2 || i == 5)
			NEW += "/";
		if (objeto.value.charAt(i) >= '0' && objeto.value.charAt(i) <= '9')
			NEW += objeto.value.charAt(i);
	}
	if (NEW != OLD)
		objeto.value = NEW;
}

/*Auto-Tab*/
var Navegador = (navigator.appName.indexOf("Netscape")!=-1);

function autoTab(input,len, e) {
	var keyCode = (Navegador) ? e.which : e.keyCode; 
	var filter = (Navegador) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];

	if(input.value.length >= len && !contaElementos(filter,keyCode)) {
			input.value = input.value.slice(0, len);
			input.form[(pegaIndex(input)+1) % input.form.length].focus();
	}

function contaElementos(arr, ele) {
	var found = false, index = 0;
	while(!found && index < arr.length)
		if(arr[index] == ele)
			found = true;
		else
			index++;
		return found;
	}

function pegaIndex(input) {
	var index = -1, i = 0, found = false;
		while (i < input.form.length && index == -1)
			if (input.form[i] == input)index = i;
			else i++;
			return index;
		}
	return true;
}

function num_only(){
    if ( (event.keyCode >= 48 && event.keyCode <= 57 ) ){
        event.returnValue = true;
    } else {
        event.returnValue = false;
    }
}

function checacpf(cpf) 
{ 
	var numeros, digitos, soma, i, resultado, digitos_iguais; 
	digitos_iguais = 1; 
	if (cpf.length < 11) {
		return false; 
	}
	for (i = 0; i < cpf.length - 1; i++) 
		if (cpf.charAt(i) != cpf.charAt(i + 1)) 
			  { 
			  digitos_iguais = 0; 
			  break; 
			  } 
	if (!digitos_iguais) 
		{ 
		numeros = cpf.substring(0,9); 
		digitos = cpf.substring(9); 
		soma = 0; 
		for (i = 10; i > 1; i--) 
			  soma += numeros.charAt(10 - i) * i; 
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
		if (resultado != digitos.charAt(0)) {
			return false; 
		}
		numeros = cpf.substring(0,10); 
		soma = 0; 
		for (i = 11; i > 1; i--) 
	
	
			  soma += numeros.charAt(11 - i) * i; 
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
		if (resultado != digitos.charAt(1)) {
			return false; 
		}
		return true; 
		} 
	else 
		return false; 
} 

