/**
 * Conjunto de funções em JavaScripts para serem utilizadas em todo o site.
 *
 * @package Lib
 * @subpackage JavaScript
 * @version 1.0 - 2008-02-20 15:50:00
 * @author Priscila Schumacker <priscila@schumacker.com.br>
 * @link http://www.schumacker.com.br
 */
 
/** 
 * Função para exibir ou limpar um valor no value do input de um formulário.
 * @param object field : Coloca-se o 'this' para poder pegar o campo input.
 * @return void 
 * @access public 
 */ 
	function showNewsValue(field) 
	{
		if(field.value == "") {
			if(field.name == "nome") field.value = "Nome:";
			else field.value = "E-mail:";
		}
		else if(field.value.toLowerCase() == "nome:" || field.value.toLowerCase() == "e-mail:") {
			field.value = "";
		}
	}


/** 
 * Função para executar o cadastramento de newsletter.
 * @return boolean 
 * @access public 
 */ 
	function cadastrarNewsletter()
	{
		if(Validar('frmNewsletter'))
		{
			var frm = document.getElementById('frmNewsletter');
			
			if(frm.nome.value == 'Nome:'){
				alert("Preencha o campo NOME adequadamente!");
				frm.nome.value = '';
				frm.nome.focus();
			}
			else if(frm.email.value == 'E-mail:'){
				alert("Preencha o campo E-MAIL adequadamente!");
				frm.email.value = '';
				frm.email.focus();
			}
			else{
				enviarForm('IDMsgNews', 'frmNewsletter', '_libs/php/frm.Operacao.php', true);
				showNewsValue(frm.nome);
				showNewsValue(frm.email);
			}
		}
		
		return false;
	}
 
 
/** 
 * Função para executar o cadastramento de contato e o envido dos dados por email.
 * @return boolean 
 * @access public 
 */ 
	function cadastrarContato()
	{
		if(Validar('frmContato')){
			enviarForm('IDMsgContato', 'frmContato', '_libs/php/frm.Operacao.php', true);
		}
		return false;
	}


/** 
 * Função para executar o cadastramento de curriculo e o envido dos dados por email.
 * @return boolean 
 * @access public 
 */ 
	function cadastrarCurriculo()
	{
		if(Validar('frmOportunidades'))	{
			enviarForm('IDMsgOportunidades', 'frmOportunidades', '_libs/php/frm.Operacao.php', true);
		}
		return false;
	}

/** 
 * 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;
	}