/**
 * Conjunto de funções em JavaScripts para serem utilizadas em todo o site.
 *
 * @package Lib
 * @subpackage JavaScript
 * @version 1.0 - 2007-04-28 10:40:00
 * @author Dario do Nascimento <dario@metabrasil.net>
 * @link http://www.metabrasil.net
 */
 
 
 /**
 * Função utilizada no Flash para redirecionar um botão para uma determinada página.
 * @param string strPagina Nome da página a ser aberta.
 * @return void		 
 * @access public
 */
 
function irpara(strPagina) 
{		
	strPagina+= ".php";
	setConteudoDiv("IDRight", strPagina);
}


 
/** 
 * Função para exibir ou limpar um valor no value do input de um formulário.
 * Utilizado no formulário de newsletter.
 *
 * @param object field : Coloca-se o 'this' para poder pegar o campo input.
 * @return void 
 * @access public 
 */ 

function showHideValue(field) 
{
	if(field.value == "") {
		if(field.name == "nome") field.value = "Nome:";
		else field.value = "E-mail:";
	}
	else if(field.value == "Nome:" || field.value == "E-mail:") {
		field.value = "";
	}
}


/** 
 * Função Máscara de Entrada.
 *
 * Evento onkeypress:	onkeypress="return Mask(this,'(99) 9999-9999',event);"
 * 		CEP .................................................... 99999-999
 *		CPF .................................................... 999.999.999-99
 * 		CNPJ ................................................... 99.999.999/9999-99 					
 *		Data ................................................... 99/99/9999
 * 		TEL .................................................... (99) 999-9999
 * 
 * Evento onkeypress:	onkeypress="return Mask(this,'num',event);"
 * 		Somente Números ........................................ num
 * 		Somente Números com Ponto .............................. num_dot	
 * 		Somente Números	com Vírgula ............................ num_comma
 * 
 * Evento onkeyup:		onblur="return Mask(this,'lower',event);"
 *		Texto com a Inicial em Maiúsculo ....................... ucfirst
 *		Texto com todas as Iniciais em Maiúsculo ............... ucwords
 *		Texto em Minúsulo ...................................... lower
 *		Texto em Maiúsculo ..................................... upper
 * 		Texto em Minúsulo e sem acento ......................... lower_sa	
 * 		Texto em Maiúsculo e sem acento ........................ upper_sa
 * 		Texto em Minúsulo e sem acento e sem espaço ............ lower_sa_se
 * 		Texto em Maiúsculo e sem acento e sem espaço ........... upper_sa_se  
 * 
 * @param object strCampo Objeto do campo do formulário. Coloca-se o 'this' como default.
 * @param string strMask Formato da máscara de entrada desejada.
 * @param string event Evento a ser recuperado. Coloca-se 'event' como default.
 * @return boolen
 * @access public
 */ 
 
function Mask(strCampo, strMask, event) 
{		
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	
	// ----------------------------------------------------------------------------------
	// Máscara para números
	// ----------------------------------------------------------------------------------
	if((strMask == "num") || (strMask == "num_dot") || (strMask == "num_comma"))
	{
		// Somente numeros aceitos
		if(strMask == "num" || strMask == "num_dot" || strMask == "num_comma"){	
			if((keyCode > 47 && keyCode < 58) || keyCode == 8 || keyCode == 9) return true;
		}

		// Somente numeros e ponto aceitos
		if(strMask == "num_dot" && keyCode == 46) return true;

		// Somente numeros e virgula aceitos
		if(strMask == "num_comma" && keyCode == 44) return true;
		
		keyCode=0; 
		return false;
	}
	
	// ----------------------------------------------------------------------------------
	// Máscara para string
	// ----------------------------------------------------------------------------------
	else if(strMask == "ucfirst" || strMask == "ucwords" || strMask == "lower" || strMask == "upper" || strMask == 'lower_sa' || strMask == 'upper_sa'  || strMask == 'lower_sa_se' || strMask == 'upper_sa_se')
	{
		var valor = strCampo.value.toLowerCase();
		
		if(strMask == "ucfirst")
		{
			valor=valor.substring(0,1).toUpperCase()+valor.substring(1,valor.length);
		}
	
		if(strMask == "ucwords")
		{
			var tmp="";
			valor=valor.split("");
		   
			for(i=0;i<valor.length;i++)
			{
				if(valor[i-1]){
					if(valor[i-1]==" "){valor[i]=valor[i].replace(valor[i],valor[i].toUpperCase());}
				}
				else{valor[i]=valor[i].replace(valor[i],valor[i].toUpperCase());}
				tmp+=valor[i];
			}
			valor=tmp;
		}

		if(strMask == "lower_sa" || strMask == "upper_sa"  || strMask == "lower_sa_se" || strMask == "upper_sa_se")
		{
			valor=valor.replace(/[áàãâä]/g,'a');
			valor=valor.replace(/[éèêë&]/g,'e');
			valor=valor.replace(/[íìîï]/g,'i');
			valor=valor.replace(/[óòõôö]/g,'o');
			valor=valor.replace(/[úùûü]/g,'u');
			valor=valor.replace(/[ÿ]/g,'y');
			valor=valor.replace(/[ñ]/g,'n');
			valor=valor.replace(/[ç]/g,'c');
		}

		if(strMask == "lower_sa_se" || strMask == "upper_sa_se")
		{
			valor=valor.replace(/[ ]/g,''); 
			valor=valor.replace(/[:$%¨&*()!?]/g,''); 
		}
			
		if(strMask == "upper" || strMask == "upper_sa"  || strMask == "upper_sa_se")
		{
			valor=valor.toUpperCase();
		}		
	
		return(strCampo.value = valor);
	}
	
	// ----------------------------------------------------------------------------------
	// Máscara para numeros padrões
	// ----------------------------------------------------------------------------------
	else
	{
		var count, campoLen, maskLen, bolMask, cod;
		var valor = strCampo.value;
	
		for(var i=0; i<valor.length; i++){
			if('.-,_/:0123456789'.indexOf(valor.charAt(i))==-1)valor=valor.replace(valor.charAt(i),' ')
		}
	
		// Limpa todos os caracteres de formatação que já estiverem no strCampo.
		valor = valor.toString().replace(/[ ]/g,''); 
		valor = valor.toString().replace(/[-:.,¨%()&*+$#@!?]/g,''); 
		valor = valor.toString().replace(/\//g,''); 
		valor = valor.toString().replace(/\\/g,''); 
		
		campoLen = valor.length;
		maskLen = strMask.length;
		
		i = 0;
		count = 0;
		cod = "";
		maskLen = campoLen;
		
		while (i <= maskLen) {
			bolMask = ((strMask.charAt(i) == "-") || (strMask.charAt(i) == ":") || (strMask.charAt(i) == ".") || (strMask.charAt(i) == "/"));
			bolMask = bolMask || ((strMask.charAt(i) == "(") || (strMask.charAt(i) == ")") || (strMask.charAt(i) == " "));
			
			if (bolMask) {
				cod += strMask.charAt(i);
				maskLen++; }
			else {
				cod += valor.charAt(count);
				count++;
			}
			i++;
		}
		strCampo.value = cod;
		
		if (keyCode != 8) {  	// backspace
			if (strMask.charAt(i-1) == "9"){	// apenas números...
				return ((((keyCode > 47) && (keyCode < 58)) || (keyCode == 44)) || keyCode == 8 || keyCode == 46 || keyCode == 9 || keyCode == 37);
			} 
			else { return true; } // qualquer caracter...
		}
		else { return true; }
	}
}

/**
 * Função para validar campos do formulário das páginas.
 * Para campos que NAO deseja validar, adicionar o atributo:  alt="no_required"
 * Ex: <form id="frmCadastro" onsubmit="return validar('frmCadastro');">
 *
 * @param object item	: Coloca-se o ID do formulário.
 * @return void 
 * @access public 
 */ 

function Validar(item) 
{
	var frm = document.getElementById(item);	
	
	for (i=0; i < frm.elements.length; i++)
	{			
		// Validando campos do formulário
		if(frm.elements[i].type == "text" || frm.elements[i].type == "password" || frm.elements[i].type == "textarea" || frm.elements[i].type == "select-one")
		{
			if(frm.elements[i].alt != "no_required"  && frm.elements[i].disabled == false && frm.elements[i].readonly != false)
			{
				// Limpando o atributo CSS de estilo do campo do form
				frm.elements[i].className = "";
	
				// Validando campos de TEXT do formulário
				if (frm.elements[i].value == ""){
						Erro(frm.elements[i],'');
						return false;
				}
				// Validando campos de TEXT do formulário
				if ((frm.elements[i].type == "select-one") && (frm.elements[i].value == 0)){
						Erro(frm.elements[i],'Você não selecionou uma opção\n');
						return false;
				}
	
				// Validar email(verificao de endereco eletrônico)
				if (frm.elements[i].name == "email") {
						if (!(/^\w+([\_.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(frm.elements[i].value))){ 
								Erro(frm.elements[i], frm.elements[i].name.toUpperCase() + ' inválido!\nDigite novamente\n');
								return false;
						} 
				}	
				
				// Validar o numero de telefone
				if (frm.elements[i].name == "telefone"  || frm.elements[i].name == "telefone2" || frm.elements[i].name == "celular") {
					if (frm.elements[i].value.length < 14) {
							Erro(frm.elements[i], frm.elements[i].name.toUpperCase() + ' inválido!\nDigite novamente\n');
							return false;
					}
				}	
				
				// Validar o CEP
				if (frm.elements[i].name == "cep") {
					if (frm.elements[i].value.length < 9) {
							Erro(frm.elements[i], frm.elements[i].name.toUpperCase() + ' inválido!\nDigite novamente\n');
							return false;
					}
				}					
			}
		}
	} // fim do FOR
	return true;
}

function Erro( form, msg )
{
	// Inserindo valor inicial na variável de erro	
	erro  = "Preencha o campo: "+ form.name.toUpperCase() +"\n";
	if(msg != "") { erro = msg; }
	
	// Mudando o atriburto de CSS para dar destaque
	form.className = "error";
	
	// Limpando o valor errado e setando como focus
	if(form.type == "text" || form.type == "password" || form.type == "textarea" ) {
		if(form.type != "textarea"){
			form.value = "";
		}
	}
	// Exibindo o erro
	alert(erro);
	form.focus();
	return false;
}
