/*
# ------------------------------------- Funções de Apoio ----------------------------------------#
*/

var isNN = (navigator.appName.indexOf("Netscape")!=-1); 

// Funcao de apoio a autoTab
function containsElement(arr, ele) { 
var found = false, index = 0; 
while(!found && index < arr.length) 
if(arr[index] == ele) 
found = true; 
else 
index++; 
return found; 
}

// Funcao de apoio a autoTab
function getIndex(input)
{
	var index = -1, i = 0, found = false; 
	while (i < input.form.length && index == -1) 
		if (input.form[i] == input) index = i; 
		else i++; 
	//alert(input.form[i+1].type);
	while (input.form[i+1].type == "hidden")
	{ 
		i++;
		index = i;
	}
	return index; 
}

/*
# --------------------------- Funcões que mostram/escondem uma mensagem na tela -------------------------#
*/

function showMessage(texto)
{
	identifier = setTimeout('hideMessage()',4000); 
	texto = '<iframe  class="bug_ie"></iframe><div class="mensagem" onclick="hideMessage(\''+ identifier +'\');"><table style="height:100%;" valign="middle"><tr><td>'+ texto +'</td></tr></table></div>';

	msg = document.createElement("div");
	msg.setAttribute('id','schuenckMessage');
	msg.innerHTML = texto;
	document.body.appendChild(msg);
}

function hideMessage(id)
{
	msg = document.getElementById("schuenckMessage");
	document.body.removeChild(msg);
	if(id)
		{
			clearTimeout(id);
		}
}


/*
# ---------------------- Função que formata um campo segundo uma mascara de entrada----------------------#
#
#	OBS:	 As máscaras podem ser representadas como os exemplos abaixo:  	
#			 CEP  -> 99999-999 					CPF  -> 999.999.999-99 
#			 CNPJ -> 99.999.999/9999-99 			Data -> 99/99/9999
#			 Tel  -> (99) 999-9999 				C/C  -> 999999-!
#		     <input type="text" name="telefone" maxlength="14" onkeypress="return MascaraDeEntrada(this, '(99) 9999-9999');">
#
# -----------------------------------------------------------------------------------------------------*/
/* 					INÍCIO DE FUNÇÕES DE AUXÍLIO À MASCARA				*/
function isCPFCNPJ(campo,pType){
   if( isEmpty( campo ) ){return false;}

   var campo_filtrado = "", valor_1 = " ", valor_2 = " ", ch = "";
   var valido = false;
        
   for (i = 0; i < campo.length; i++){
      ch = campo.substring(i, i + 1);
      if (ch >= "0" && ch <= "9"){
         campo_filtrado = campo_filtrado.toString() + ch.toString()
         valor_1 = valor_2;
         valor_2 = ch;
      }
      if ((valor_1 != " ") && (!valido)) valido = !(valor_1 == valor_2);
   }
   if (!valido) campo_filtrado = "12345678912";

   if (campo_filtrado.length < 11){
      for (i = 1; i <= (11 - campo_filtrado.length); i++){campo_filtrado = "0" + campo_filtrado;}
   }

   if(pType <= 1){
      if ( ( campo_filtrado.substring(9,11) == checkCPF( campo_filtrado.substring(0,9) ) ) && ( campo_filtrado.substring(11,12)=="") ){return true;}
   }

   if((pType == 2) || (pType == 0)){
      if (campo_filtrado.length >= 14){
         if ( campo_filtrado.substring(12,14) == checkCNPJ( campo_filtrado.substring(0,12) ) ){ return true;}
      }
   }
   
   return false;
}

function checkCNPJ(vCNPJ){
   var mControle = "";
   var aTabCNPJ = new Array(5,4,3,2,9,8,7,6,5,4,3,2);
   for (i = 1 ; i <= 2 ; i++){
      mSoma = 0;
      for (j = 0 ; j < vCNPJ.length ; j++)
         mSoma = mSoma + (vCNPJ.substring(j,j+1) * aTabCNPJ[j]);
      if (i == 2 ) mSoma = mSoma + ( 2 * mDigito );
      mDigito = ( mSoma * 10 ) % 11;
      if (mDigito == 10 ) mDigito = 0;
      mControle1 = mControle ;
      mControle = mDigito;
      aTabCNPJ = new Array(6,5,4,3,2,9,8,7,6,5,4,3);
   }
   return( (mControle1 * 10) + mControle );
}

function checkCPF(vCPF){
   var mControle = ""
   var mContIni = 2, mContFim = 10, mDigito = 0;
   for (j = 1 ; j <= 2 ; j++){
      mSoma = 0;
      for (i = mContIni ; i <= mContFim ; i++)
         mSoma = mSoma + (vCPF.substring((i-j-1),(i-j)) * (mContFim + 1 + j - i));
      if (j == 2 ) mSoma = mSoma + ( 2 * mDigito );
      mDigito = ( mSoma * 10 ) % 11;
      if (mDigito == 10) mDigito = 0;
      mControle1 = mControle;
      mControle = mDigito;
      mContIni = 3;
      mContFim = 11;
   }
   return( (mControle1 * 10) + mControle );
}
/* 					FIM DE FUNÇÕES DE AUXÍLIO À MASCARA				*/

function mascara(campo, mascara) 
{
	// O campo aceita apenas números
	if (mascara == 'numero')
	{
		var carCode = event.keyCode;
		if(carCode != 44)
		{
			if ((carCode < 48) || (carCode > 57))
			{
				event.cancelBubble = true
				event.returnValue = false;
			}
		}
	}

	// O campo aceita apenas letras
	else if (mascara == 'letra')
	{
		var carCode = event.keyCode;
		if (((carCode < 65) || (carCode > 90)) && ((carCode < 97) || (carCode > 122)) && (carCode != 32))
		{
			event.cancelBubble = true
			event.returnValue = false;
		}
	}
	
	else if (mascara == 'moeda')
	{
		var valorAuxiliar = "";
		digitosValidos = "0123456789" ;
		
		valor = campo.value;
			
		//retira digitos não numericos
 		for (i=0;i<valor.length;i++){
 			if(digitosValidos.indexOf(valor.charAt(i))>=0) {
 				valorAuxiliar += valor.charAt(i);
 			}
 		}
		//retira zeros desnecessários ao início do número
		while (valorAuxiliar.length > 3 && valorAuxiliar.charAt(0) == "0")
			valorAuxiliar = valorAuxiliar.substring(1);

		valor = valorAuxiliar;
		digitosNumericos = valor.length;

		//insere pontos decimais
		for(i = 1;i<=(digitosNumericos/3);i++)
			valor = valor.substring(0,digitosNumericos + 1 - 3*i) +
				(i==1?',':'.') +
				valor.substring(digitosNumericos + 1 - 3*i);
					
		campo.value = valor;
	}

	else
	{
		/*if(document.all) { tecla = event.keyCode; }
		else if(document.layers) { tecla = event.which; }*/
		if(document.all) { tecla = event.keyCode; }
		else if(isNN) { tecla = 8 }
				
		valor = campo.value;
		EXP = /[-:.\/\(\) ,]/g;
		valor = valor.toString().replace( EXP, "" );
		campoLen = valor.length;
		
		i = 0;
		nCount = 0;
		sCod = "";
		maskLen = campoLen;
		
		while ( i <= maskLen )
		{
			bolMask =  ((mascara.charAt(i) == "-") ||
						(mascara.charAt(i) == ":") || 
						(mascara.charAt(i) == ".") ||
						(mascara.charAt(i) == "/") ||
						(mascara.charAt(i) == "(") ||
						(mascara.charAt(i) == ")") ||
						(mascara.charAt(i) == ",") ||
						(mascara.charAt(i) == " "));
	
			if (bolMask)
			{
				sCod += mascara.charAt(i);
				maskLen++;
			}
			else
			{
				sCod += valor.charAt(nCount);
				nCount++;
			}
			i++;
		}
			
		campo.value = sCod;
		if (tecla != 8 && sCod.length < mascara.length)
		{ // backspace
			if (mascara.charAt(i-1) == "9")
			{ // apenas números...
				return ((tecla > 47) && (tecla < 58));
			} // números de 0 a 9
			else
			{ // qualquer caracter...
				return true;
			}
		}
		else
		{
			if (sCod.length < mascara.length)
			{
				return true;
			}
			else
			{
				if(campo.form.length > 2)
					campo.form[(getIndex(campo)+1) % campo.form.length].focus();
				return false;
			}
		}
	}
}


/*
# ---------------------- Função que valida um campo segundo o parametro 'minimo' ----------------------#
*/

function validarCampo(fld, minimo, mensagem)
{
	if(fld.value.length < minimo)
	{
		//showMessage(mensagem);
		fld.focus();
		alert(mensagem);
		fld.className = "erro";
		return true;
	}
	else
	{
		if(fld.tagName == "select")
			fld.className = fld.tagName;
		else
			fld.className = fld.type;
		return false;
	}
}

/*
# --------------------------- Função que restaura a formatação de um campo ---------------------------#
*/

function restaurarCampo(fld, minimo)
{
	if(fld.value.length < minimo)
	{
		fld.className = "erro";
	}
	else
	{
		if(fld.tagName.toLowerCase() == "select")
		{
			fld.className = fld.tagName.toLowerCase();
		}
		else
		{
			fld.className = fld.type;
		}
	}
}

/*
# ----Funcao que automatiza a tabulação quando o tamanho maximo e alcançado ou o enter e pressionado----#
*/

function autoTab(input,len, e)
{ 
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,38,38,39,40,46]; 
	
	if (len == 'none')
	{
		bool_one = false;
		bool_two = false;
		bool_thr = (keyCode == 13);
	}
	else
	{
		bool_one = (input.value.length >= len);
		bool_two = (!containsElement(filter,keyCode));
		bool_thr = (keyCode == 13);
	}
	
	if( (bool_one && bool_two ) || (bool_thr) )
	{ 
		if (len != 'none')
			input.value = input.value.slice(0, len); 
		input.form[(getIndex(input)+1) % input.form.length].focus();
		return false; 
	}
	return true; 
}

/*
# ----textarea----#
*/
function escreve(textarea,len) 
{
	faltam = len - textarea.value.length;
	if (faltam <= -1) faltam = 0;
	document.getElementById("contador"+textarea.id).innerHTML = "Faltam " + (faltam) + " caracteres";;
	if(textarea.value.length >= len)
		textarea.value = textarea.value.substring(0, len);
}
function pulaLinha(textarea) 
{
	var carCode = event.keyCode;
	if(carCode == 13) textarea.value = textarea.value + "  ";
}

/*
function inv_count(textarea,len)
{
	if (textarea.value.length >= len)
		return false;
}

function escreve(textarea, len,e)
{
/*	rng = textarea.createTextRange();
	rng.moveToPoint(e.x,e.y);
	textarea.innerText = rng.text;
	//alert(rng.text);
//	rng.moveToPoint(window.event.x, window.event.y);

	textarea.innerText = textarea.value.substring(0,len);
	document.getElementById("contador"+textarea.id).innerHTML = "Faltam " + (len - textarea.value.length) + " caracteres";
}
*/
/*
# ------------------- Função que vai validar a data ----------------------------------------------------#
*/

function validarData(text, msg)
{
	//var reDate = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;
	var reDate = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;
	if (reDate.test(text.value))
	{
		text.className = text.type;
		return false;
	}
	else if (text.value != null && text.value != "")
	{
		text.focus();
		showMessage(msg);
		text.className = "erro";
		return true;
	}
}

/*
# ------------------------------------------- função de busca ------------------------------------------#
*/

function busca(text,combo)
{
	if (text.value.length >= 1)
	{
		for(i=0;i<combo.length;i++)
			if ( (combo[i].innerText.substr(0,text.value.length).toLowerCase() == text.value.toLowerCase()) && ( i != 0 ))
			{
				combo.selectedIndex = i;
				combo.className = 'select';
				return;
			}
		combo.className = 'erro';
	}
}

/*
# ------------------- Funcões que alteram a aparência do botão no evento onmouseover -------------------#
*/
function buttonOver(but)
{
	but.className = "buttonOver";
}
function buttonOut(but)
{
	but.className = but.type;
}

/*
# ------------------- Funcões que alteram a aparência do file no evento onmouseover -------------------#
*/
function fileOver(but)
{
	but.className = "fileOver";
}
function fileOut(but)
{
	but.className = "file";
}

/*
----------------Função para mudar a cor do label do checkBox quando estiver selecionado------------
*/

function checkcolor(check,idLabel)
{
	if(check.checked == true)
	{
		document.getElementById(idLabel).className =  "checked";
	}
	else
	{
		document.getElementById(idLabel).className =  "";
	}
}
/* ------------------------------------*/
  
function validacpf(campo){ 
var i; 
t = campo.value; 
s= t.substr(0,3)+t.substr(4,3)+t.substr(8,3)+t.substr(12,2);
var c = s.substr(0,9); 
var dv = s.substr(9,2); 
var d1 = 0; 
var nulos = new Array(00000000000,12345678909,11111111111,22222222222,33333333333,
44444444444,55555555555,66666666666,77777777777,88888888888,99999999999);

for (i=0; i<11; i++){
	if((s == nulos[i]) && (s != "")){
		campo.value = ""; 
		campo.focus();
		alert("CPF Inválido") 
		return false; 
	}
}  
for (i = 0; i < 9; i++) 
{   
	d1 += c.charAt(i)*(10-i); 
} 
if (d1 == 0){ 
  	//alert("CPF Invalido")
	//campo.focus();
   // return false; 
} 
d1 = 11 - (d1 % 11); 
if (d1 > 9) d1 = 0; 
	if (dv.charAt(0) != d1) 
	{ 
		campo.value = ""; 
		campo.focus(); 
		alert("CPF Inválido")
		return false; 
	} 
	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) 
		{ 
		  campo.value = ""; 
		  campo.focus();
  		  alert("CPF Inválido") 
		  return false; 
		} 
		return true; 
} 
/*--------------------------------------------------------------*/
	//validar email(verifica se o email esta com a sua devida estrutura)
function validaemail(campo){ 
	 parte1 = campo.value.indexOf("@",0);
	 parte2 = campo.value.indexOf(".",0);
	 parte3 = campo.value.length;
	 if(campo.value != ""){
		 if ((parte1 == -1) || (parte2 == -1)|| (parte3 < 5)) {
		   campo.value = ""; 
		   campo.focus();
   		   alert ("E-mail Inválido!");
		   return false;
		 }
	 }
	 return true;
}
/*----------------------------------------------------------*/
//valida telefone
function validatelefone(campo){
   if((campo.value.length > 0) && (campo.value.length < 14)){ 
   		campo.value = ""; campo.focus(); alert ("Telefone Inválido!");	
   }
}
/*----------------------- fim valida telefone -------------------------------*/
/*----------------------------------------------------------*/
//valida Cep
function validacep(campo){
   if((campo.value.length > 0) && (campo.value.length < 10)){ 
   		campo.value = ""; campo.focus(); alert ("Cep Inválido!");	
   }
}
/*----------------------- fim valida telefone -------------------------------*/

