//Variável global para guardar o texto do erro
var texto_erro = '';

/****************************************************/
//Função para permitir somente letras e numeros
function isAlfanumeric(e){
	Alfabeto = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; 

	return travador(e, Alfabeto);
}


//Função para permitir digitação somente de caracteres escolhidos
function travador(e, caracteres){
	
	//Alfabeto = "ABCDEFGHIJKLMNOPQRTUVWXYZabcdefghijklmnopqrtuvwxyz1234567890"; 
	
	if (document.all) // Internet Explorer
		var tecla = e.keyCode;
	else // Nestcape
		var tecla = e.which;
	
	if (caracteres.indexOf(String.fromCharCode(tecla)) != -1) // numeros de 0 a 9
		return true;
	else
		return false;

}
/****************************************************/
//Função para deixar o texto do jeito que estava antes
function changeOK( fieldID ){
    texto = document.getElementById( fieldID + '_text' );
					
    //Volta a cor para o preto
    texto.style.color = '#000000';
    						
    //E põe a fonte de volta para o normal
    texto.style.fontWeight = 'normal';
}

/****************************************************/

//Função para montar o erro e para por em vermelho
function changeError( fieldID,fieldName ){
	//Acrescenta no erro para o campo atual
	texto_erro += '<li>Llene el campo <b>'+ fieldName +'</b></li>';
	//texto passa a ser o span do texto corresponden ao input
	texto = document.getElementById( fieldID + '_text');
	//Faz com que o texto fique com o cor vermelha
    texto.style.color = '#FF0000';
			
	//Deixa o texto em negrito
    texto.style.fontWeight = 'bold';
	
	
}

/****************************************************/

//Função para montar o erro e para por em vermelho
function changeErrorText( fieldID,texto ){
	
	txt_erro = texto;
	//Acrescenta no erro para o campo atual
	if(texto_erro.indexOf(txt_erro) < 0){		
		texto_erro += txt_erro;
	}
						
	//texto passa a ser o span do texto corresponden ao input
    texto = document.getElementById( fieldID + '_text');
						
	//Faz com que o texto fique com o cor vermelha
    texto.style.color = '#FF0000';
			
	//Deixa o texto em negrito
    texto.style.fontWeight = 'bold';
}
/****************************************************/

//Função que executa a validação
function validation(form){
	var texto;
	var cr = 0;
	var checado = false;
	var checado2 = false;
	var checkName; 

	//Pega a quantidade de elementos do formulário(input)	
	qtde = form.length;
	
	//Cria array de checkboxes/radios
	var check = new Array(qtde);	

	//Loop dos elementos do formulário 
	for( i = 0; i < qtde; i++ ){
	
		//Se tiver a propriedade valid entrara na validação
		Attribute = form[i].getAttribute('datasrc');
		if( Attribute != null){						
			switch ( Attribute ){			
				case 'string' :
					if ( form[i].value == '' ){
						changeError( form[i].id, form[i].getAttribute('alt') )
    				}else{
						changeOK( form[i].id )		
    				}
				break;
				case 'email' :
					//Verifica se está preenchido e se tem "@" e "."
    				if ( form[i].value == '' || form[i].value.indexOf('@') == -1 || form[i].value.indexOf('.') == -1 ){
						changeErrorText( form[i].id,'<li>Llene el campo <b>Email</b> con una dirección válida de correo electrónico</li>' )
    				}else{
						changeOK( form[i].id )		
    				}				
				break;	
				case 'numeric' :
					//Verifica se é número
    				if ( form[i].value == '' || isNaN(form[i].value) == true ){
						changeError( form[i].id,form[i].getAttribute('alt') )
    				}else{
						changeOK( form[i].id )			
    				}				
				break;
				case 'check' :
    				//Verifica se já consta no array senão adiciona
    				check_name = form[i].name;
    				check_len = check.length;
    				for(k = 0 ; k < check_len ; k++){
    					if( check[k] == check_name ){
    						checado = true;
    					}
    				}
    				if(!checado){
    					check[cr] = check_name;
    					cr++;					
    				}
					
    				checado = false;
				break;							
				case 'cnpj' :            
					//Verifica se o cnpj foi preenchido e se é válido
					cnpj1 = document.forms["formcnpj"].elements["cnpj1"].value;
					cnpj2 = document.forms["formcnpj"].elements["cnpj2"].value;
					cnpj3 = document.forms["formcnpj"].elements["cnpj3"].value;
					cnpj4 = document.forms["formcnpj"].elements["cnpj4"].value;
					cnpj5 = document.forms["formcnpj"].elements["cnpj5"].value;
					cnpj = cnpj1+cnpj2+cnpj3+cnpj4+cnpj5;
					if(cnpj.length != 14){						
						changeErrorText( form[i].id,'<li>Llene el campo <b>CNPJ</b></li>');
					}else{
						if(VerificaCNPJ(cnpj) == 1){
							changeOK( form[i].id );
						}else{
							changeErrorText( form[i].id,'<li>El <b>CNPJ</b> informado no es válido</li>');
						}
					}
				break;	
				case 'cpf' :
					/*Verifica se o cnpj foi preenchido e se é válido
					cpf1 = document.forms["formCadastro"].elements["cpf1"].value;
					cpf2 = document.forms["formCadastro"].elements["cpf2"].value;
					cpf3 = document.forms["formCadastro"].elements["cpf3"].value;
					cpf4 = document.forms["formCadastro"].elements["cpf4"].value;
					cpf = cpf1+cpf2+cpf3+cpf4;
					if(cpf.length != 11){						
						changeErrorText( form[i].id,'<li>Llene el campo <b>CPF</b></li>');
					}else{
						if(validacpf(cpf) == 1){
							changeOK( form[i].id );
						}else{
							changeErrorText( form[i].id,'<li>EL <b>CPF</b> informado no es válido</li>');
						}
					}*/
				break;	
				case 'telephone' :
					/*Verifica se é um telefone com código de área
					ddd = document.forms["formCadastro"].elements["CodigoDeArea"].value;
					tel = document.forms["formCadastro"].elements["Telefone"].value;
    				if ( ddd == '' || tel == '' ){
						changeErrorText( form[i].id,'<li>Llene el campo <b>Telefone</b></li>' )
    				}else{
						changeOK( form[i].id )			
    				}	*/			
				break;
				case 'postalcode' :
					/*Verifica se o cep está preenchido corretamente
					cep1 = document.forms["formCadastro"].elements["Cep1"].value;
					cep2 = document.forms["formCadastro"].elements["Cep2"].value;
    				if ( cep1.length < 5 || cep2.length < 3 ){
						changeErrorText( form[i].id,'<li>Llene el campo <b>CEP</b></li>' )
    				}else if (isNaN(cep1) == true || isNaN(cep2) == true){
    					changeErrorText( form[i].id,'<li>Llene el campo <b>CEP</b> solamente con números</li>' )
    				}else{
						changeOK( form[i].id )			
    				}	*/			
				break;
				default :
					//Sendo um tipo desconhecido só verifica se algo foi preenchido
    				if ( form[i].value == '' ){
						changeError( form[i].id,form[i].name );
    				}else{
						changeOK( form[i].id );
    				}				
			}

		} 
	}  
  
	
	//Faz a validação especifica dos checkboxes/radios
	for( l = 0; l < cr ; l++ ){
		
		checkName = eval("form." + check[l]);		
		CheckID = check[l];
		
		//Loop do check por nome
		for( m = 0; m < checkName.length; m++ ){
			//Se pelo menos um estiver checado deixa ok
			if(checkName[m].checked){
				checado2 = true;
				changeOK( CheckID );
			}
		}
		//Se nenhum foi checado deixa errado
		if (!checado2){
			CheckID = check[l];
			changeErrorText( CheckID, '<li>Por favor, conteste a <b>'+checkName[l].getAttribute('alt')+'</b></li>' );			
		}
		
		checado2 = false;
	}
  
	Error = document.getElementById("error");
	//Introd = document.getElementById("introd");
  
	//Verifica se aconteceu algum erro
	if( texto_erro != '' ){  	
		Error.innerHTML =  texto_erro + '<tr><td colspan="2"><img src="img/s.gif" width="1" height="10" alt=""></td></tr>'; 		
		texto_erro = '';
		//location = '#ancForm';
		//Introd.innerHTML = 'Por favor, llene los campos en blanco o incorrectos marcados en rojo, despues haga clic en "enter". Los campos marcados con * son obligatorios.';

		//Não deixa o formulário passar
		return false;
	}else{  	  
		Error = document.getElementById("error");
		Error.innerHTML = '';

		//Libera o formulário para ir para o action
		return true;
	}
}