/*
# ------------------------------------- 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');">
#
# -----------------------------------------------------------------------------------------------------*/

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; }
		
		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)
	{
		alert(mensagem);
		//showMessage(mensagem);
		fld.focus();
		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 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 != "")
	{
		showMessage(msg);
		text.focus();
		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 =  "";
	}
}
