//importar biblioteca para formatacao de campo
document.write( '<script language="JavaScript" src="/lib_js/formulario_mask.js" type="text/javascript"></script>\n' );
document.write( '<script language="JavaScript" src="/lib_js/valida_cnpj_cpf.js" type="text/javascript"></script>\n' );


/*
funcao para navegacao e formatacao do campo
	- quando o tecla pressionada for "ENTER", funcao irah navegar
	- quando o tecla pressionada for outra, funcao irah formatar caso o tipo do campo seja identificado
	- quando o tecla pressionada for outra, funcao naum irah fazer nada caso o tipo do campo NAUM seja identificado
*/
function navegaCampo( obj, e ){

		if (window.event)
			tecla = window.event.keyCode;
		else
			tecla = e.which;

			
	//verifica se deve navegar ou formatar o campo
	if( tecla == 13 ){ 

		var objTabIndex = obj.tabIndex + 1;
		var formulario = obj.form;
		var formElementos = formulario.elements;
		var enviarSubmit = true;
		
		//buscar o proximo campo pelo TabIndex
		for( i=0; i<formElementos.length; i++ ){
			if( formElementos[i].tabIndex == objTabIndex ){
				formElementos[i].focus();
				enviarSubmit = false;
				break;
			}			
		}
		
		//caso naum encontre o proximo campo, fazer submit
		if( enviarSubmit ){
			enviarForm( obj.form );
		}
		
		return false;

	//formatar o campo
	}else{
		
					
		//verificar se o tipo de formatacao estah definido
		if( obj.name == undefined ){
			//escreve o que foi digitado sem tratamento
			return true;
		}else{
			//verifica tipo de formatacao do campo
			switch( obj.name ){
			
				//campo CNPJ CPF
				case 'cnpj_cpf':
					if( obj.value.length < 14 ){
						return txtBoxFormat( obj.form, obj.name, '999.999.999-99', e );
					}else{
						return txtBoxFormat( obj.form, obj.name, '99.999.999/9999-99', e );
					}
					break;
					
				//campo data
				case 'data':
					return txtBoxFormat( obj.form, obj.name, '99/99/9999', event );
					break;
					
				//campo Moeda
				case 'moeda':
					return formataMoeda( obj );
					break;
					
				//campo Somente Texto
				case 'somente_texto':
					return formataSomenteTexto( obj );
					break;
				
				//erro: tipo de campo indefinido
				default:
					//escreve o que foi digitado sem tratamento
					return true;
			}			
		}		
	}
}

//funcao utilizada para formatacao de campo tipo moeda
function formataMoeda( obj ){
	var tecla = String.fromCharCode( event.keyCode );

	if( tecla.search( /[0-9]/g ) > -1 ){
		//formatar variavel para fica no padrao: '999999999.99'
		var objValor = LTrim( RTrim( obj.value ) );
		objValor = objValor.replace(/\./g,'');
		objValor = objValor.replace(/\,/g,'.');
		
		//verificar se eh preciso adicionar o valor inicial		
		if( objValor.length == 0 ) objValor = '0.00';

		//concatena o valor digitado
		objValor = objValor.replace(/\./g,'');
		objValor = objValor + tecla;
		
		//formata o valor novamente para o padrao
		var objTamanho = objValor.length;
		var objValor1 = objValor.substr( 0, ( objTamanho - 2 ) );
		var objValor2 = objValor.substr( ( objTamanho - 2 ), objTamanho );
		//cria o novo valor
		objValor = objValor1 + '.' + objValor2;
		
		objValor = new Number( objValor );
		
		obj.value = objValor.toLocaleString()
	}
	
	return false;
}

//funcao utilizada para formatacao de campo tipo somente texto
function formataSomenteTexto( obj ){
	var tecla = String.fromCharCode( event.keyCode );
	
	if( tecla.search( /\b[^0-9]/gi ) > -1 ){
		return true;
	}else{
		return false;
	}
}


//funcao para dar submit no formulario
function enviarForm( obj ){
	//var qqValidacao = obj.fireEvent( 'onSubmit' );
	
	//if( qqValidacao )
		obj.submit();
}

//funcao para enviar senha para e-mail
function esqueciForm( obj ){
	
	var cnpj = obj.cnpj_cpf.value;
	if (cnpj == ""){
		alert('Campo de CNPJ/CPF deve ser preenchido.');
		obj.cnpj_cpf.focus();
		return false;
	}
    
    if ( validaCampoCnpjCpf( obj.elements[0] ) ){
		validaMostraErro( obj.elements[0] );
		return false;
	}
	
	var prefa = obj.prefeitura.value;    
	if (prefa == ""){
		alert('Voce deve selecionar uma prefeitura.');
		obj.prefeitura.focus();
		return false;
	}
	
	window.location='solicitacao_aidf/esqueci_senha.cfm?cnpj=' + cnpj + '&prefeitura=' + prefa;
}

//funcao que redireciona para tela de cadastro de graficas
function cadGrafica( obj ){
	
	var cnpj = obj.cnpj_cpf.value;
	if (cnpj.length > 0){
        if ( validaCampoCnpjCpf( obj.elements[0] ) ){
    		validaMostraErro( obj.elements[0] );
    		return false;
    	}
    }
	
	var prefa = obj.prefeitura.value;
	if (prefa == ""){
		alert('Voce deve selecionar uma prefeitura.');
		obj.prefeitura.focus();
		return false;
	}
	
	window.location='solicitacao_aidf/cadastro_grafica.cfm?cnpj=' + cnpj + '&prefeitura=' + prefa;
}

/*
funcao para validar formularios gerais
	- percorre todos dos campos do formulario onde a propriedade obrigatorio = 1
	- os campos sao validados de acordo com o seu tipo
*/
function validaForm( obj ){
	if( obj.vNumVal.value != obj.numval.value ){ 
		alert("Número de validação inválido");
		obj.vNumVal.value = "";
		return false;
	}
	
	var formElementos = obj.elements;
	
	for( p=0; p<formElementos.length; p++ ){		
	
		//verifica obrigatoriedade do campo
		if( formElementos[p].obrigatorio == 1 ){
			var erroValidacao = false;

			//verifica tipo de validacao do campo
			switch( formElementos[p].tipo ){
			
				//campo numerico
				case 'numero':					
					var erroValidacao = validaCampoNumero( formElementos[p] );
					break;
					
				//campo moeda
				case 'moeda':					
					var erroValidacao = validaCampoMoeda( formElementos[p] );
					break;
					
				//campo texto
				case 'texto':
					var erroValidacao = validaCampoTexto( formElementos[p] );
					break;
					
				//campo somente texto
				case 'somente_texto':
					var erroValidacao = validaCampoSomenteTexto( formElementos[p] );
					break;
					
				//campo combo
				case 'combo':
					var erroValidacao = validaCampoCombo( formElementos[p] );
					break;
					
				//campo checkbox
				case 'checkbox':
					var erroValidacao = validaCampoCheckbox( document.getElementsByName( formElementos[p].name ) );
					break;
				
				//campo data
				case 'data':
					var erroValidacao = validaCampoData( formElementos[p] );
					break;
				
				//campo CNPJ CPF
				case 'cnpj_cpf':
					var erroValidacao = validaCampoCnpjCpf( formElementos[p] );
					break;
				
				//campo numero de verificacao
				case 'num_verificacao':
					var erroValidacao = validaCampoNumVerificacao( formElementos[p] );
					break;

				//campo select de prefeituras
				case 'select':
					var erroValidacao = validaCampoSelect( formElementos[p] );
					break;

				//erro: tipo de campo indefinido
				default:
					alert( 'Tipo de campo indefinido: ' + formElementos[p].name );
			}
			
			//mostrar erro para usuario
			if( erroValidacao ){
				validaMostraErro( formElementos[p] );
				return false;
			}
						
		}		
	}
	
	return true;
}

//funcao para mostrar erro na validacao do formulario
function validaMostraErro( obj ){
	//mensagem de erro padrao
	if( obj.erroMsg == undefined ){
		alert( 'Por favor preencha o campo ' + obj.name + ' corretamente.' );
		
	//mensagem de erro customizada
	}else{
		alert( obj.erroMsg );
	}
	
	obj.focus();
}

//funcao para validar campos do tipo Numerico
function validaCampoNumero( obj ){
	var objValor = LTrim( RTrim( obj.value ) );
	
	if( isNaN( objValor ) || ( objValor.length == 0 ) ){
		return true;
	}else{
		return false;
	}
}

//funcao para validar campos do tipo Moeda
function validaCampoMoeda( obj ){
	var objValor = LTrim( RTrim( obj.value ) );
	objValor = objValor.replace(/\./g,'');
	objValor = objValor.replace(/\,/g,'.');
	
	if( isNaN( objValor ) || ( objValor.length == 0 ) ){
		return true;
	}else{
		return false;
	}
}

//funcao para validar campos do tipo Texto
function validaCampoTexto( obj ){
	var objValor = LTrim( RTrim( obj.value ) );
	
	if( objValor.length == 0 ){
		return true;
	}else{
		return false;
	}	
}

//funcao para validar campos do tipo Somente Texto
function validaCampoSomenteTexto( obj ){
	var objValor = LTrim( RTrim( obj.value ) );
	var objValida = objValor.search( /\b[^0-9]/gi );
	
	if( ( objValor.length == 0 ) || ( objValida == -1 ) ){
		return true;
	}else{
		return false;
	}	
}

/*
funcao para validar campos do tipo Combo
	- para essa validacao, entende-se que a opção com valor "" significa naum selecionado
*/
function validaCampoCombo( obj ){
	var selecionado = obj.selectedIndex;
	var objValor = LTrim( RTrim( obj[selecionado].value ) );
	
	if( objValor.length == 0 ){
		return true;
	}else{
		return false;
	}
}

/*
funcao para validar campos do tipo CheckBox
*/
function validaCampoCheckbox( obj ){	
	var selecionado = 0;
	
	//varrer checkbox e verificar se somente 1 estah checado
	for( i=0; i<obj.length; i++ ){
		if( obj[i].checked ) selecionado++;
	}
	
	if( selecionado == 1 ){
		return false;
	}else{
		return true;
	}	
}

//funcao para validar campos do tipo data
function validaCampoData( obj ){
	var objValor = LTrim( RTrim( obj.value ) );
	
	//verificar formatacao da data
	if( objValor.length != 10 ){
		return true;
	}
	
	var dataArray = objValor.split( "/" );
	
	var dataUsrDia = new Number( dataArray[0] );
	var dataUsrMes = new Number( dataArray[1] );
	var dataUsrAno = new Number( dataArray[2] );

	var data = new Date( dataUsrAno, (dataUsrMes - 1), dataUsrDia );	
	
	var dataComp = data.getFullYear() + '' + (data.getMonth()+1) + '' + data.getDate();
	var dataUsr = dataUsrAno + '' + dataUsrMes + '' + dataUsrDia;
	
	return ( dataComp != dataUsr );

}

/*********************************************************************************************
Novo Layout 
*********************************************************************************************/
function buscaCidade(objfiltro){
	document.getElementById('carregar').src = 'carregaMunicipio.cfm?variableE='+ objfiltro;
}
function teclado(objectNumero){
	if(document.form.inputTeclado.value.length < 4){
		document.form.inputTeclado.value  += objectNumero ;
		document.form.inputTeclado.focus();
	}
	
	if(objectNumero === 'L'){
		document.form.inputTeclado.value  = '';
	}
}

function validaFormulario(){
	
	var 	form = document.form;
	var  	valorValida  = form.inputTeclado.value ;
	var  	valorValidaNumero = form.nroValidacao.value;
	
	
	if(form.variableC.value == ''){
		alert('Selecione o Estado e o  Município');
		return false;
	}
	
	if(form.inputTeclado.value == ''){
		alert('Digite os códigos');
		form.inputTeclado.focus();
		return false;
	}
	if(form.cnpj_cpf.value == ''){
		
		alert('Documento em Branco!');	
		form.cnpj_cpf.focus();
		return false;
	}
	if(!validaCampoCnpjCpf(form.cnpj_cpf.value)){
			alert('Preencha o Campo CPF/CNPJ Corretamente.');
			form.cnpj_cpf.readOnly = false;
			form.cnpj_cpf.value = "";
			form.cnpj_cpf.focus();
			return false;
	}
	document.form.action = '/index.cfm';
	document.form.method = 'post';
	document.form.submit();
            
}
//funcao para validar campos do tipo CNPJ CPF
function validaCampoCnpjCpf( obj ){
	alert(obj);
	return false;
	
	var objValor = LTrim( RTrim( obj.value ) );
	objValor = objValor.replace(/\./g,'');
	objValor = objValor.replace(/\//g,'');
	objValor = objValor.replace(/\-/g,'');
	if( objValor.length < 12 ){
		return !valida_cpf( objValor );
	}else{
		return !valida_cnpj( objValor );
	}

}

//funcao para validar campo de Numero de Verificacao
function validaCampoNumVerificacao( obj ){
	var objValor = LTrim( RTrim( obj.value ) );

	if( objValor.length > 0 ){
		return false;
	}else{
		return true;
	}

}

//funcao para validar campo de seleção de Municipios
function validaCampoSelect( obj ){
	var objValor = LTrim( RTrim( obj.value ) );

	if( objValor == '' ){
		return true;
	}else{
		return false;
	}

}

// funcao de Right Trim
function RTrim(s) {
    return s.replace (/\s+$/,'');
}
// funcao de Left Trim
function LTrim(s) {
    return s.replace (/^\s+/,'');
}
// funcao de Middle Trim
function MTrim(s) {
    return s.replace (/\B\s+/g,' ');
}
// funcao de Trim
function Trim(s) {
    return s.replace (/\s+/g,'');
}


function check_CPF(StrCPF){
		x = 0;
		soma = 0;
		dig1 = 0;
		dig2 = 0;
		texto = "";
		StrCPF1="";
		StrCPF = StrCPF.replace(/\./g,'').replace(/\-/g,'');
		len = StrCPF.length;
		x = len -1;
		var cod = "";
		var cod2 = "";
		for (var i=0; i <= len - 3; i++){
			y = StrCPF.substring(i,i+1);
			soma = soma + ( y * x);
			x = x - 1;
			texto = texto + y;
		}
		
		dig1 = 11 - (soma % 11);
		if (dig1 > 9) dig1=0 ;
		StrCPF1 = StrCPF.substring(0,len - 2) + dig1 ;
		x = 11; soma=0;
		for (var i=0; i <= len - 2; i++)
		{
			soma = soma + (StrCPF1.substring(i,i+1) * x);
			x = x - 1;
		}
		dig2= 11 - (soma % 11);
		if (dig2 > 9) dig2=0;
		if ((dig1 + "" + dig2) == StrCPF.substring(len,len-2)){
			//alert ("Número do CPF Válido !");
			return (true);
		}else{	
			//alert ("Número do CPF Inválido !");
			return (false);
		}
	}

function verifica_cnpj(pCgc){
	if(pCgc == "" || pCgc == "00000000000000"){
       return(false);
	}
	//alert("pCgc = " + pCgc);
	//alert("parseInt(pCgc.length) = " + parseInt(pCgc.length));

	/*if(parseInt(pCgc.length) != 14){
		if(parseInt(pCgc.length) != 16){
			if(parseInt(pCgc.length) != 18){ 
				return(false);
			}
		}
	}else{*/

		var pCgc_Limpo = "";
		for(nInd=0;nInd<pCgc.length;nInd++){
			   if(parseInt(pCgc.charAt(nInd)) >= 0 && parseInt(pCgc.charAt(nInd)) <= 9){
				   pCgc_Limpo = pCgc_Limpo + pCgc.charAt(nInd);
			   }
		}
       var pCgc = pCgc_Limpo;
       var nSoma = 0;
       nSoma = (5 * parseInt(pCgc.charAt(0))) + (4 * parseInt(pCgc.charAt(1))) + (3 * parseInt(pCgc.charAt(2))) +  
               (2 * parseInt(pCgc.charAt(3))) + (9 * parseInt(pCgc.charAt(4))) + (8 * parseInt(pCgc.charAt(5))) +  
               (7 * parseInt(pCgc.charAt(6))) + (6 * parseInt(pCgc.charAt(7))) + (5 * parseInt(pCgc.charAt(8))) + 
               (4 * parseInt(pCgc.charAt(9))) + (3 * parseInt(pCgc.charAt(10))) + (2 * parseInt(pCgc.charAt(11)));
       var nResto = nSoma%11;
       var nDigito_Calculado = 11 - nResto;
	   
	   /*alert("nSoma=" + nSoma);
	   alert("nResto=" + nResto);
	   alert("digito calc=" + nDigito_Calculado);*/

       if(nDigito_Calculado > 9){
          nDigito_Calculado = 0;
       }
       if(nDigito_Calculado != parseInt(pCgc.charAt(12))){
          return(false);
       }else{
          nSoma = 0;
          nSoma = (6 * parseInt(pCgc.charAt(0))) + (5 * parseInt(pCgc.charAt(1))) + (4 * parseInt(pCgc.charAt(2))) +  
                  (3 * parseInt(pCgc.charAt(3))) + (2 * parseInt(pCgc.charAt(4))) + (9 * parseInt(pCgc.charAt(5))) +  
                  (8 * parseInt(pCgc.charAt(6))) + (7 * parseInt(pCgc.charAt(7))) + (6 * parseInt(pCgc.charAt(8))) + 
                  (5 * parseInt(pCgc.charAt(9))) + (4 * parseInt(pCgc.charAt(10))) + (3 * parseInt(pCgc.charAt(11))) + 
                  (2 * nDigito_Calculado);
          nResto = nSoma%11;
          nDigito_Calculado = 11 - nResto;

	   /*alert("nSoma_2=" + nSoma);
	   alert("nResto_2=" + nResto);
	   alert("digito calc_2=" + nDigito_Calculado);*/
	
          if(nDigito_Calculado > 9){
             nDigito_Calculado = 0;
          }
          if(nDigito_Calculado != parseInt(pCgc.charAt(13))){
             return(false);
          }
       }
    //}
    return(true);
}




