// JavaScript Document
//Funçao para Cálculo do Digito do CPF/CNPJ
//cahmar ela pelo comando jvascript: ConfereCIC (this);
function DigitoCPFCNPJ(numCIC) {
var numDois = numCIC.substring(numCIC.length-2, numCIC.length);
var novoCIC = numCIC.substring(0, numCIC.length-2);
switch (numCIC.length){
 case 11 :
  numLim = 11;
  break;
 case 14 :
  numLim = 9;
  break;
 default : return false;
}
var numSoma = 0;
var Fator = 1;
for (var i=novoCIC.length-1; i>=0 ; i--) {
 Fator = Fator + 1;
 if (Fator > numLim) {
  Fator = 2;
 }
 numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
}
numSoma = numSoma/11;
var numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
   if (numResto > 1) {
 numResto = 11 - numResto;
   }
   else {
 numResto = 0;
   }
   //-- Primeiro dígito calculado.  Fará parte do novo cálculo.
   
   var numDigito = String(numResto);
   novoCIC = novoCIC.concat(numResto);
   //--
numSoma = 0;
Fator = 1;
for (var i=novoCIC.length-1; i>=0 ; i--) {
 Fator = Fator + 1;
 if (Fator > numLim) {
  Fator = 2;
 }
 numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
}
numSoma = numSoma/11;
numResto = numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
   if (numResto > 1) {
 numResto = 11 - numResto;
   }
   else {
 numResto = 0;
   }
//-- Segundo dígito calculado.
numDigito = numDigito.concat(numResto);
if (numDigito == numDois) {
 return true;
}
else {
 return false;
}
}
//--< Fim da Funçao >--

//-- Retorna uma string apenas com os números da string enviada
function ApenasNum(strParm) {
strParm = String(strParm);
var chrPrt = "0";
var strRet = "";
var j=0;
for (var i=0; i < strParm.length; i++) {
 chrPrt = strParm.substring(i, i+1);
 if ( chrPrt.match(/\d/) ) {
  if (j==0) {
   strRet = chrPrt;
   j=1;
  }
  else {
   strRet = strRet.concat(chrPrt);
  }
 }
}
return strRet;
}
//--< Fim da Funçao >--

//-- Somente aceita os caracteres válidos para CPF e CNPJ.
function PreencheCIC(objCIC) {
var chrP = objCIC.value.substring(objCIC.value.length-1, objCIC.value.length);

if ( !chrP.match(/[0-9]/) && !chrP.match(/[\/.-]/) ) {
 objCIC.value = objCIC.value.substring(0, objCIC.value.length-1);
 return false;
}
return true;
}
//--< Fim da Funçao >--

function FormataCIC (numCIC) {
numCIC = String(numCIC);
switch (numCIC.length){
case 11 :
 return numCIC.substring(0,3) + "." + numCIC.substring(3,6) + "." + numCIC.substring(6,9) + "-" + numCIC.substring(9,11);
case 14 :
 return numCIC.substring(0,2) + "." + numCIC.substring(2,5) + "." + numCIC.substring(5,8) + "/" + numCIC.substring(8,12) + "-" + numCIC.substring(12,14);
default :
 alert("Tamanho incorreto do CPF ou CNPJ!");
 return false;
}
}

//-- Remove os sinais, deixando apenas os números e reconstroi o CPF ou CNPJ, verificando a validade
//-- Recebe como parâmetros o número do CPF ou CNPJ, com ou sem sinais e o atualiza com sinais é validado.
function ConfereCIC(objCIC) {
if (objCIC.value == null) {
 alert("Preenchimento obrigatório do CPF ou CNPJ");
 objCIC.value='';
 objCIC.focus();
 return false;
}
var strCPFPat  = /^\d{3}\.\d{3}\.\d{3}-\d{2}$/;
var strCNPJPat = /^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/;

numCPFCNPJ = ApenasNum(objCIC.value);

if (!DigitoCPFCNPJ(numCPFCNPJ)) {
 alert("Atençao o Dígito verificador do CPF ou CNPJ é inválido!");
 objCIC.value='';
 objCIC.focus();
 return false;
}

objCIC.value = FormataCIC(numCPFCNPJ);

if (objCIC.value.match(strCNPJPat)) {
 return true;
}
else if (objCIC.value.match(strCPFPat)) {
 return true;
}
else {
 alert("Digite um CPF ou CNPJ válido!");
 objCIC.value='';
 objCIC.focus();
 return false;
}
}

//funcao que formata telefone
//chamar ela pelo comando javascript: Fone(this)
function Fone(fone){
var i=0;
var retorno=formatado='';
for(i=0;i<fone.value.length;i++){
	if(!isNaN(fone.value.charAt(i)) && fone.value.charAt(i)!=' '){
		retorno = retorno + fone.value.charAt(i);
	}
	
}
//checa ddd
if(retorno.length==7 || retorno.length==8){
retorno = '16'+retorno;
}
//agora estah limpo..só numero
formatado='(';
formatado = formatado+retorno.substr(0,2);
formatado = formatado+') ';

if(retorno.length>=10){
formatado = formatado + retorno.substr(2,4) + '-' + retorno.substr(6,10);
}else{
formatado = formatado + retorno.substr(2,3) + '-' + retorno.substr(5,9);
}
if(confirm('Confirme se seu número de telefone é '+ formatado + '.\n Caso haja algo errado, favor corrigir.')){
fone.value=formatado;
}else{
fone.value='';
fone.focus();
}
}
//funcao que formata FAX
//chamar ela pelo comando javascript: Fax(this)
function Fax(fone){
var i=0;
var retorno=formatado='';
for(i=0;i<fone.value.length;i++){
	if(!isNaN(fone.value.charAt(i)) && fone.value.charAt(i)!=' '){
		retorno = retorno + fone.value.charAt(i);
	}
	
}
//checa ddd
if(retorno.length==7 || retorno.length==8){
retorno = '16'+retorno;
}
//agora estah limpo..só numero
formatado='(';
formatado = formatado+retorno.substr(0,2);
formatado = formatado+') ';

if(retorno.length>=10){
formatado = formatado + retorno.substr(2,4) + '-' + retorno.substr(6,10);
}else{
formatado = formatado + retorno.substr(2,3) + '-' + retorno.substr(5,9);
}
if(confirm('Confirme se seu número de fax é '+ formatado + '.\n Caso haja algo errado, favor corrigir.')){
fone.value=formatado;
}else{
fone.value='';
fone.focus();
}
}
//funcao que conefere horas, chamar ela por javascript (this,'campo q deve ir se tudo tiver okay');
function horas(horario,campo){
var alerta='Foram encontrados os seguintes erros\n';
var alerter=false;	
	if(horario.value.length>=2){
		//checa se a hora eh de 0 a 23
		if(horario.value.substr(0,2) > 23){
			alerta= alerta + 'A hora deve estar em um intervalo de 00 a 23\n';
			alerter=true;
			horario.value='';
		}
		//insere :
		if(horario.value.length==2){
			horario.value = horario.value + ':';
		}
	}
	if(horario.value.length>=3){
		//checa se o caracter separador é o :, se nao for, faz ser ;)
		if(horario.value.charAt(2)!=':'){
			alerta= alerta + 'A hora deve estar no formato HH:MM\n';
			alerter=true;
			horario.value = horario.value.substr(0,2) + ':';
		}
	}
	if(horario.value.length==5){
	//checa se os minutos estao entre 00 e 59
		if(horario.value.substr(3,5) > 59){
			alerta= alerta + 'Os minutos devem estar no intervalo de 00 a 59\n';
			alerter=true;
			horario.value = horario.value.substr(0,3);
		}
	}
	if(alerter == true){
		alert(alerta);
	}else{
		if(horario.value.length==5){
			campo.focus();
		}
	}
}

//funcao que faz o quote na mesnagem para um tamanho especifico
function conta(mensagem,campo,tamanho){
campo.value= tamanho - mensagem.value.length;
if(mensagem.value.length>=tamanho){
alert('A mensagem pode ter no máximo ' + tamanho + ' caracteres!');
campo.value=0;
mensagem.value=mensagem.value.substr(0,tamanho);
}
var i=0;j=0;
	for(i=0;i<mensagem.value.length;i++){
		j++;
		if(mensagem.value.substring(i,i+1)==' '){
			j=0;
		}
		if(j>=40){
			j=0;
			mensagem.value=mensagem.value.substr(0,i) +' '+ mensagem.value.substr(i,mensagem.value.length);
		}
			
	}

}

//funcao que formata a data conforme esperado
//deve ser chamada na forma javascript: Barras(this, campo que deve ir se tudo tiver okay);
function Barras(obj,obj1){
var tamanho=obj.value.length;
			if(tamanho == 2){
				obj.value=obj.value + '/';
			}
			if(tamanho == 5){
				obj.value=obj.value + '/20';
			}
			if(tamanho==10){
				troca_foco(obj,obj1);
			}
}

//funcao que valida a data e troca o foco para a duracao
function troca_foco(obj,obj1){
var dia=obj.value.substring(0,2);
var mes=obj.value.substring(3,5);
var ano=obj.value.substring(6,10);
var bissexto = (ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0));
var erro=false;
var error='Foram encontrados os seguintes erros:\n\n';
	//tratamento de erros mensais
	if(mes==02 && dia>29){
		error+='O mes '+mes+' nao pode ter '+dia+' dias\n';
		erro=true;	
	}
	if((mes==02 && dia>29) || (mes==02 && dia==29 && !bissexto)){
		error+='O ano de '+ano+' nao é bissexto, portanto nao pode ter mais de 28 dias em fevereiro!\n';
		erro=true;
	}
	if((mes==4 || mes==6 || mes==9 || mes==11) && dia>=31){
		error+='O mes '+mes+' nao pode ter mais de 30 dias\n';
		erro=true;
	}
	if((mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) && dia>31){
		error+='O mes '+mes+' nao pode ter mais de 31 dias\n';
		erro=true;
	}
	if(mes>12){
		error+='O mes nao pode ser maior que 12\n';
		erro=true;
	}
	if(erro){
		alert(error);
		obj.value='';
		obj.focus();
	}else{
	   obj1.focus();
	} 
}

//funcao que calcula os dias do mes corrente
function dias(mes,ano){
var bissexto = (ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0));
 if(mes==02 && bissexto){
 	return(29);
 }else{
 	if(mes==02){
	return(28);
	}
 }
 if(mes==4 || mes==6 || mes==9 || mes==11){
 	return(30);
 }
 if(mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12){
 	return(31);
 }
}

//funcao que checa validade de endereco de email
//deve ser chamada da forma javascript: echeck(this);
function echeck(emailobj) {

		var at="@"
		var dot="."
		var str = emailobj.value;
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("Endereço de Email Inválido")
		   emailobj.focus();
		   emailobj.value=''
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Endereço de Email Inválido")
		   emailobj.focus();
		   emailobj.value=''
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Endereço de Email Inválido")
			emailobj.focus();
		   emailobj.value=''
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Endereço de Email Inválido")
			emailobj.focus();
		   emailobj.value=''
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Endereço de Email Inválido")
			emailobj.focus();
		   emailobj.value=''
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Endereço de Email Inválido")
			emailobj.focus();
		   emailobj.value=''
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Endereço de Email Inválido")
			emailobj.focus();
		   emailobj.value=''
		    return false
		 }

 		 return true					
	}
//funcao que checa se o plano foi preenchido
//deve ser chamada da forma javascript: checarplano(this);
function checaplano(planoobj) {

			if (planoobj == ""  || plano == "0") {
				alert("Selecione um plano.");
				planoobj.focus();
		    	return false

		 }

 		 return true					
	}
	function desabilitar(campo)
{
 	if(a_campos[campo])
	  a_campos[campo]['r'] = false;
	if(t = get_element('t_'+campo))
	 t.className = 'off';
	
	t = get_element(campo);
	t.disabled = true;
	if(t.className)
	 t.className = t.className + ' input_off';
	 if(t.checked)
	  t.checked = false;
}
function habilitar(campo)
{
	if(a_campos[campo])
	  a_campos[campo]['r'] = true;
	if(t = get_element('t_'+campo))
  	  t.className = '';	
	e = get_element(campo);
	e.disabled = false;
    e.className = e.className.replace('_off', '_text') 
	//t.className = 'input_text';
}