var msg='';
var cor_alerta="#FF333A";
var brancos = " \t\n\r";
var separadores = "-./";
var estados = "AC|AL|AM|AP|BA|CE|DF|ES|GO|MA|MG|MS|MT|PA|PB|PE|PI|PR|RJ|RN|RO|RR|RS|SC|SE|SP|TO";
var strNumerica = "0123456789"; 
var strAlfa = "ABCDEFGHIJKLMNOPQRSTUVWXYZÃÁÉÍÓÜÊÔabcdefghijklmnopqrstuvwxyzáéíóãêôüaeiou-/ ."; 
var strAcentos = "ÃÁÀÂÊÉÍÓÔÖÕÜÚáãâàéêíóôöõúü"; 
var strPermitidos = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzaeiou- ._"; 


var vetor = null;
  
function resetaVetor(){

  vetor=new Array();
}  

function addItemValida(id,texto,tipo){

	  vetor[vetor.length] = new Object(); 
	  vetor[vetor.length-1] = id;

	  vetor[vetor.length] = new Object(); 
	  vetor[vetor.length-1] = texto;

	  vetor[vetor.length] = new Object(); 
	  vetor[vetor.length-1] = tipo;
}  

function addMsgErro(mensagem){

	msg=msg+'-'+mensagem+'\n';
}  


function validacao(){
	var tamanho;
	tamanho=vetor.length;

	texto = '';
	for(i=0;i<tamanho;i=i+3){
		campo = document.getElementById(vetor[i]);
		validaCampo(campo,vetor[i+1],vetor[i+2]);
	}

	if(msg!=''){
		exibeMensagemErro(msg);
//		msg='Ocorreram os seguintes erros:\n'+msg;
//		alert(msg);
		msg='';
		return false;
		}
	else return true;
}

function exibeMensagemErro(pMsg){
	if(pMsg=='')
		return;
		
	msgVw='Ocorreram os seguintes erros:\n'+pMsg;
	alert(msgVw);
} 


function validaCampo(campo,mensagem,tipo){
   switch (tipo) {
    case 'VAZIO':
       valida_vazio(campo,mensagem);
       break
    case 'DATA':
       valida_data(campo,mensagem);
       break
    case 'DATA_PASSADA':
       valida_data_passada(campo,mensagem);
       break
    case 'EMAIL':
       valida_email(campo,mensagem);
       break
	case 'CEP':
       valida_cep(campo,mensagem);
       break
	case 'LIST':
       valida_list(campo,mensagem);
       break
	case 'CPF':
       valida_cpf(campo,mensagem);
       break
	case 'CNPJ':
       valida_cnpj(campo,mensagem);
       break	   
	case 'FILE':
       valida_arquivo(campo,mensagem);
       break
    default:
		alert('parametro incorreto' + '  '  +  tipo);

   } 
}

function valida_vazio(campo,mensagem){
	if(campo.value==''){ 
		msg=msg+'-O campo '+mensagem+' deve ser preenchido!\n';
		campo.style.backgroundColor = cor_alerta;
	}
	else campo.style.backgroundColor = "";	
}

// fNomeArquivo retorna o nome do arquivo a partir do caminho completo enviado
function fNomeArquivo(s){
	var caminho_array;
	var separador;

	if (s.indexOf("/") != -1){ 
		separador = "/";
	}
	else{
 		if (s.indexOf("\\") != -1) 
   			separador = "\\";
 		else  
  			return s;
	}
 	caminho_array = s.split(separador); 
 	return caminho_array[ caminho_array.length -1]; 
	
}

// fNomeArquivo retorna o nome do arquivo a partir do caminho completo enviado
function fExtensaoArquivo(s){
	var caminho_array;
	var ext;
	var ext2;	

 	caminho_array = s.split("."); 
 	ext = caminho_array[ caminho_array.length -1]; 
	ext = ext.toUpperCase(); 
	return ext; 
	
}


// fBranco retorna verdadeiro se string ou se não contém espaços nem acentos
function valida_arquivo(campo,mensagem) {   
   var i;
   var erro=false;
   sp=campo.value;
   var s = fNomeArquivo(sp);  //Pega o nome do arquivo sem o caminho
   
   // Procura brancos no string
   for (i = 0; i < s.length; i++) {   
      // Testa o caractere atual
      var c = s.charAt(i);
      // Procura espaços em branco na string
	  if (brancos.indexOf(c) != -1) erro=true;
	  // Procura acentos no string
	  if (strPermitidos.indexOf(c) == -1) erro=true;
   }

if(erro){
	msg=msg+'-O nome do '+mensagem+' não deve conter espaços em branco nem acentos!\n';
	campo.style.backgroundColor = cor_alerta;	
	}
else campo.style.backgroundColor = "";	
 

}


function valida_list(campo,mensagem){
	if(campo.selectedIndex == 0){ 
		msg=msg+'-Um '+mensagem+' deve ser selecionado!\n';
		campo.style.backgroundColor = cor_alerta;
	}
	else campo.style.backgroundColor = "";	
}

function resetaCorCampo( campo ){
	 campo.style.backgroundColor = "";
}	





function valida_cep(campo,mensagem){
	var cep=campo.value;
	var erro=false;
	var ExpReg = new RegExp("[0-9]{5}-[0-9]{3}");
	array_cep = cep.split("-");
	if ( cep == '' ){ 
		msg=msg+'-O campo '+mensagem+' deve ser preenchido!\n';
		erro=true;
		}
	else if ( ( array_cep[0].length != 5 ) || ( array_cep[1].length != 3 ) ){
		erro = true;
		msg=msg+'-O '+mensagem+' não está preenchido corretamente!\n';
		}
	else if ( cep.search(ExpReg) == -1 ){
		erro = true;
		msg=msg+'-O '+mensagem+' não está preenchido corretamente!\n';
	}
	if ( erro ) campo.style.backgroundColor = cor_alerta;
	else campo.style.backgroundColor = "";
}

function valida_data(campo,mensagem) {
	var date = campo.value;
	var array_data = new Array;
	var ExpReg = new RegExp("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}");
	array_data = date.split("/");
	erro = false;
	erro1 = false;
	if ( date == '' ){ 
		msg=msg+'-O campo '+mensagem+' deve ser preenchido!\n';
		erro1=true;
		}
	else if ( date.search(ExpReg) == -1 )
		erro = true;
	else if ( ( array_data[0].length != 2 ) || ( array_data[1].length != 2 ) || ( array_data[2].length != 4 ) )
		erro = true;
	else if ( ( ( array_data[1] == 4 ) || ( array_data[1] == 6 ) || ( array_data[1] == 9 ) || ( array_data[1] == 11 ) ) && ( array_data[0] > 30 ) )
		erro = true;
	else if ( array_data[1] == 2 ) {
		if ( ( array_data[0] > 28 ) && ( ( array_data[2] % 4 ) != 0 ) )
			erro = true;
		if ( ( array_data[0] > 29 ) && ( ( array_data[2] % 4 ) == 0 ) )
			erro = true;
	}
	if ( erro ) msg=msg+'-A '+mensagem+' não está preenchida corretamente!\n';
	if ( erro || erro1 ) campo.style.backgroundColor = cor_alerta;
	else campo.style.backgroundColor = "";
}


function valida_data_passada(campo,mensagem) {

	//Primeiro Valida o Formato
	valida_data(campo,mensagem);
	if ( erro )
		return;
		
	erro = false;		
	var date = campo.value;
	
	
	//Agora Faz a Validação de Data Passada
	re = /(\d{1,2})\/(\d{1,2})\/(\d{4})/
	var arr = re.exec( date );
	var dt1 = new Date( parseInt(arr[3]), parseInt(arr[2], 10) - 1, parseInt(arr[1], 10) );
	var dtAtu = new Date();
	var dt2 = new Date( dtAtu.getYear(),dtAtu.getMonth(), dtAtu.getDate() );	
	
	if (dt1 < dt2){
		erro = true;	
	
		if ( erro ) msg=msg+'-A '+mensagem+' é uma data que já ocorreu!\n';
		if ( erro || erro1 ) campo.style.backgroundColor = cor_alerta;
		else campo.style.backgroundColor = "";
	}			

}

//function valida_email(campo,mensagem){
//	var email = campo.value;
//	erro = false;
//	if ( email == '' ){ 
//		msg=msg+'-O campo '+mensagem+' deve ser preenchido!\n';
//		erro=true;
//		}
//	else if (!(/^\w+([\._-]?\w+)*@\w+([\.-]?\w{2})*(\.\w{2,4})+$/.test(email))){
 //     msg=msg+'-O '+mensagem+' fornecido não é um e-mail válido!\n';		
//	  erro=true;
//	  }
//	if(erro) campo.style.backgroundColor = cor_alerta;
//	else campo.style.backgroundColor = ""; 
//}

function valida_email(campo,mensagem){
	var email = campo.value;
	erro = false;

	if ( email == '' ){ 
		msg=msg+'-O campo '+mensagem+' deve ser preenchido!\n';
		erro=true;
	}/*else{
		var filter=/^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		if (!filter.test(email)){	
		     msg=msg+'-O '+mensagem+' fornecido não é um e-mail válido!\n';		
			 erro=true;
		}	 
	}
	if(erro) campo.style.backgroundColor = cor_alerta;
	else campo.style.backgroundColor = ""; 
*/	
}


function valida_cpf(campo,mensagem){
     var cpfq = '';
     var cpfq1;	 
	 
	 
   sText = campo.value.split("");	 
   for (i = 0; i < sText.length; i++){  

	  Char = sText[i]; // sText.charAt(i)	
	  if ((Char >= "0") &&   (Char <= "9") ) 	
          cpfq = cpfq + sText[i];
   }	 
	 

	erro = false;
	erro1 = false;	
	cpf1 = cpfq.split("");
	if ( cpfq == '' ){ 
		msg=msg+'-O campo '+mensagem+' deve ser preenchido!\n';
		erro1=true;
	}
	else if ( cpfq.length != 11 ){ 
		erro=true;
	}
	else if ( (cpf1[0]==cpf1[1])&&(cpf1[1]==cpf1[2])&&(cpf1[2]==cpf1[3])
				&&(cpf1[3]==cpf1[4])&&(cpf1[4]==cpf1[5])&&(cpf1[5]==cpf1[6])
				&&(cpf1[6]==cpf1[7])&&(cpf1[7]==cpf1[8])&&(cpf1[8]==cpf1[9])
				&&(cpf1[9]==cpf1[10])&&(cpf1[10]==cpf1[0])){ 
		erro=true;
	}
	else{	
		if (isNaN(cpfq)) {
			erro = true;
 		}
 		var i;
 		var c = cpfq.substr(0,9);
 		var dv = cpfq.substr(9,2);
 		var d1 = 0;
 		for (i = 0; i < 9; i++) {
  			d1 += c.charAt(i)*(10-i);
 		}
 		if (d1 == 0){
  			erro = true;
 		}         
    	d1 = 11 - (d1 % 11);
    	if (d1 > 9) 
			d1 = 0;         
 		if (dv.charAt(0) != d1) {
  			erro = true;        
 		}
 		d1 *= 2;
 		for (i = 0; i < 9; i++) {
  			d1 += c.charAt(i)*(11-i);
 		}
 		d1 = 11 - (d1 % 11);
 		if (d1 > 9) 
			d1 = 0;
 		if (dv.charAt(1) != d1) {
     		erro = true;
    	}
 	}   
	if(erro)
		msg=msg+'-O '+mensagem+' fornecido não é um CPF válido!\n';
	if(erro || erro1)
		campo.style.backgroundColor = cor_alerta;
	else campo.style.backgroundColor = ""; 
		
	
}

function modulo(str) {
   	soma=0;
   	ind=2;
   	for(pos=str.length-1;pos>-1;pos=pos-1) {
   		soma = soma + (parseInt(str.charAt(pos)) * ind);
   		ind++;
   		if(str.length>11) {
   			if(ind>9) ind=2;
   		}
	}
   	resto = soma - (Math.floor(soma / 11) * 11);
   	if(resto < 2) {
    	return 0
   	}
   	else {
   		return 11 - resto
   	}
}





function valida_cnpj(campo,mensagem){
     var valor = '';
	 var aux;
	 var ret;
	 
   if ( campo.value == '' ){ 
	  msg=msg+'-O campo '+mensagem+' deve ser preenchido!\n';
	  campo.style.backgroundColor = cor_alerta;
	  return;
   }	 

	aux = campo.value; 
   if (aux.length !=18){
	  msg=msg+'-O '+mensagem+' fornecido não é um CNPJ válido!\n';
	  campo.style.backgroundColor = cor_alerta;
	  return;		
   }

   sText = campo.value.split("");	 
   for (i = 0; i < sText.length; i++){  

	  Char = sText[i]; // sText.charAt(i)	
	  if ((Char >= "0") &&   (Char <= "9") ) 	
          valor = valor + sText[i];
   }	 
	
	
	primeiro=valor.substr(1,1);
	size=valor.length;
	erro = false;
	falso = true;	
	

	if(!erro){
	
		size--;
		for (i = 2; i < size-1; i++){
			proximo=(valor.substr(i,1));
			if (primeiro!=proximo) {
				falso=false;
			}
		}
	
		if (falso){
			erro = true;
		}else
	      if(modulo(valor.substring(0,valor.length - 2)) + "" + modulo(valor.substring(0,valor.length - 1)) !=valor.substring(valor.length - 2,valor.length)) 
   		    erro = true;
	}
	
	if(erro){
		msg=msg+'-O '+mensagem+' fornecido não é um CNPJ válido!\n';
		campo.style.backgroundColor = cor_alerta;
	}else
	   campo.style.backgroundColor = ""; 
		
}



function isNumericString(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

function isNumber(sText)
{
   var ValidChars = "0123456789";
   var aIsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && aIsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         aIsNumber = false;
         }
      }
   return aIsNumber;
}

	   
function lengthNumeric(campo){
   var ValidChars = "0123456789";
   var Char;   
   var IsNumber=true;   
   
   cont = 0;
   for (i = 0; i < campo.length && IsNumber == true; i++){  
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1)
         IsNumber = false;
      else
  	    cont++;   
   }
   return cont;	
}



function apenasNumeros(campo,e){
	var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	// Se não for número ignora tecla digitada
	if (keyCode<48||keyCode>57){
		if ((keyCode==8)||(keyCode==46)||(keyCode==37)||(keyCode==39)) return true;
		e.returnValue=false; 
		return false;
	}
	else return true;
}

function apenasFloat(campo,e,maxcasas){
	var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	// Se não for número ignora tecla digitada
//	alert( keyCode );

	if (keyCode==44){ // nao aceita "," 
	   e.returnValue=false;
	   return false;
	}else
	 if (keyCode==46){ 
	    // nao aceita mais de um "." 
	    if (campo.value.indexOf(".") != -1){
 	       e.returnValue=false;
	       return false;
		}   

	    // se informou somente "." , poe "0."
	    if (campo.value.length == 0){
		  campo.value = "0" + campo.value;
		}   
	 }else
  	   if (keyCode<48||keyCode>57){
	  	   if ((keyCode==8)||(keyCode==46)||(keyCode==37)||(keyCode==39)) return true;
		     e.returnValue=false; 
	     return false;
	   }else{
	     // testa número de casas
		 pos = campo.value.indexOf(".");
		 if(pos != -1){
 		     frac = campo.value.substr(pos + 1, 10);
			 if( frac.length >= maxcasas){
 	       		e.returnValue=false;
	       		return false;
			}   
			 
//			 alert( 'sss' + campo.value.substr(pos+1,10) );
		 }else   
 		    return true;
	   }
}


function showMenu(campo1){
	campo = document.getElementById(campo1);
	if(campo.style.display=='none') 
		campo.style.display='block';
	else campo.style.display='none';
}

function altera_icone(campo1,arquivo1,arquivo2){
	campo = document.getElementById(campo1);
	arquivo=campo.src;
	arq=arquivo.split('/');
	tamarq=arq.length;
	nomearq=arq[tamarq-1];
path='';

for(i=0;i<tamarq-1;i++){
path=path+arq[i]+'/';
}

	if(nomearq==arquivo1) 
		campo.src=path+arquivo2;
	else campo.src=path+arquivo1;
}

function adicionaSeparador(campo,tipo){	
	valor= campo.value;
	
	switch (tipo) {
    case 'DATA':
       if( (valor.length==2) || (valor.length==5) )  campo.value=campo.value+'/';
       break
	case 'CEP':
       if(valor.length==5) campo.value=campo.value+'-';
       break
    default:
       
   }

	
}

function apagaSeparador(campo,e,tipo){
	var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	valor= campo.value;
	
	switch (tipo) {
    case 'DATA':
       if(keyCode==8){
		  if(valor.length==3) campo.value=valor.substring(0,2);
		  if(valor.length==6) campo.value=valor.substring(0,5);		  
		  }
       break
	case 'CEP':
       if(keyCode==8) 
		  if(valor.length==6) campo.value=valor.substring(0,5);
       break
    default:
       alert('parametro incorreto');
   }

}

function selecionar_todas(form,retorno){
formulario=form;
if(retorno==true){
	for(i=0;i<formulario.length;i++){
		if(formulario.elements[i].type=="checkbox" && formulario.elements[i].name!="todas"){
  			if(formulario.elements[i].checked==false){
   				formulario.elements[i].checked=true;
   			}
		}
	}
} else {
	for(i=0;i<formulario.length;i++){
		if(formulario.elements[i].type=="checkbox" && formulario.elements[i].name!="todas"){
  			if(formulario.elements[i].checked==true){
   				formulario.elements[i].checked=false;
  			}
		}
	}
}
}

