/**
 * @name: validaCode
 * @version: 0.1
 * @autor: Claudio Silva
 * @created: 1-07-2008
 * @extends: mootools
 *
 * @tipos:
 *   digit 	 	=> somente numeros
 *   nodigit 	=> letras
 *	 alpha_num	=> numeros e letras
 **/


	validaCode = function(tipo, key_code, key){

		/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		 * VALIDA CAMPO DIGIT - Somente números
		 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
	
			if(tipo == "digit")
			{
				
				/* Desabilita SHIFT+[ALL] e CTRL+[ALL] */
				if(key.control)
				{
					if(key_code == 36 || key_code == 35 || key_code == 9) // teclas Home, End e Tab
					return true;
					
					else
					return false;
				}
				
				if(key.shift)
				{
					if(key_code == 36 || key_code == 35 || key_code == 9) // teclas Home, End e Tab
					return true;
					
					else
					return false;
				}
				
				
				/* Deixa passar somente números */

				if(	(key_code >= 48 && key_code <= 57) || (key_code >= 96 && key_code <= 105) )
				{
					return true;
				}
				
				else if((key_code >= 34 && key_code <= 40) || key_code == 8 || key_code == 9 || key_code == 13 || key_code == 46)
				{
					return "ok";
				}
				
				else
				{
					return false;
				}
				
			}
			
			
			
		/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		 * VALIDA CAMPO NODIGIT - Somente letras
		 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
	
			else if(tipo == "nodigit")
			{
				/* Desabilita SHIFT+[Números] e CTRL+[Números] */
				if(key.control)
				{
					if(key_code >= 65 && key_code <= 90 || key_code == 9 || key_code == 36 || key_code == 35) // teclas A-Z e Tab
					return true;
					
					else
					return false;
				}
				
				if(key.shift)
				{
					if(key_code >= 48 && key_code <= 57) // teclas A-Z e Tab
					return false;
					
					else
					return true;
				}
				

				/* Deixa passar somente letras */
				
				if(	(key_code >= 65 && key_code <= 90) || (key_code >= 188 && key_code <= 222) )
				return true;
				
				else if((key_code >= 34 && key_code <= 40) || key_code == 8 || key_code == 9 || key_code == 13 || key_code == 46 || key_code == 32)
				return "ok";
				
				else
				return false;
				
			}
			
			
			
		/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		 * VALIDA CAMPO alpha_num - Somente letras e numeros
		 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
	
			else if(tipo == "alpha_num")
			{
				/* Desabilita SHIFT+[Números] e CTRL+[Números] */
				
				if(key.control)
				{
					if(key_code >= 65 && key_code <= 90 || key_code == 9 || key_code == 36 || key_code == 35) // teclas A-Z e Tab
					return true;
					
					else
					return false;
				}
				
				if(key.shift)
				{
					if(key_code >= 65 && key_code <= 90|| key_code == 9 || key_code == 36 || key_code == 35) // teclas A-Z e Tab
					return true;
					
					else
					return false;
				}
				

				/* Deixa passar somente letras */
				
				if(	(key_code >= 65 && key_code <= 90) || (key_code >= 48 && key_code <= 57) || (key_code >= 96 && key_code <= 105) )
				return true;
				
				else if((key_code >= 34 && key_code <= 40) || key_code == 8 || key_code == 9 || key_code == 13 || key_code == 46)
				return "ok";
				
				else
				return false;
			}
	
	}		
	
	
	


/**
 * @name: validaCampos
 * @version: 0.1
 * @autor: Claudio Silva
 * @created: 1-07-2008
 * @extends: mootools
 *
 * @tipos:
 *   vazio 	 	=> valida campos vazios
 *   email	 	=> valida email
 **/

	validaCampos = function(valor, titulo, tipo){

		/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		 * VALIDA CAMPO - Vazio
		 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
		 
			 if(tipo == null)
			 {
				 if(valor == "")
				 {
					erro 	 = "O campo " + titulo + " precisa ser preencido.";
					//alert(erro);
				 }
			 }
			 
			 
		/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		 * VALIDA CAMPO - E-mail
		 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			 
			 if(tipo == "email")
			 {
				 if(valor == "")
				 {
					erro 	 = "O campo " + titulo + " precisa ser preencido.";
				 }
				 else
				 {
					teste_arroba = valor.indexOf("@");
					teste_ponto  = valor.indexOf(".");

					if(teste_arroba == -1 || teste_ponto == -1)
					{
						erro = "O campo " + titulo + " possui um e-mail inválido.";
					}
					else
					{
						erro = "";
					}
				 }
				 
				 if(erro != "")
				 {
				 	//alert(erro);
				 }
			 }
			 
	
	}
	
	
	
	
	
	
	

/** 
 * @name: brMarks
 * @version: 0.1
 * @autor: Claudio Silva
 * @created: 1-07-2008
 * @extends: mootools
 *
 * @obs:
 *	 diferença entre "_TIPO" e "_tipo" é que "_tipo" nao é obrigatorio
 *	 se adicionar um novo tipo, alterar também na função brSend
 *
 * @tipos:
 *   _CPF
 *	 _DATA
 *	 _FONE
 *	 _EMAIL
 *	 _VALOR
 *	 _DIGIT		=> somente números
 *	 _NODIGIT	=> sem números
 *	 _PASS 		=> senha
 **/
	
	brMask = function(){
	
		$$('input').each(function(el){
		
			var class_name = el.className;
			
			/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 * MASCARA CPF
			 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			
				if(class_name == "_CPF" || class_name == "_cpf")
				{
					return el.addEvents({
						
						// Event keydown
						
						'keydown': function(key){
						
							key_code = key.code
							valido 	 = validaCode("digit", key_code, key);

							if(valido === false)
							return false;
							
							else if(valido === true)
							{
								valor = el.value;
								tamanho = valor.length;
								
								if(tamanho == 3 || tamanho == 7 )
								{
									el.value = valor + ".";	
								}
								else if(tamanho == 11)
								{
									el.value = valor + "-";	
								}
							}
						},
						
						
						// Event blur
						
						'blur': function(){
							validaCampos(this.value, this.title, null);
						}
						
					}); // end addEvents
				}
			
			
			/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 * MASCARA CNPJ
			 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			
				if(class_name == "_CNPJ" || class_name == "_cnpj")
				{
					return el.addEvents({
						
						// Event keydown
						
						'keydown': function(key){
						
							key_code = key.code
							valido 	 = validaCode("digit", key_code, key);

							if(valido === false)
							return false;
							
							else if(valido === true)
							{
								valor = el.value;
								tamanho = valor.length;

								if(tamanho == 2 || tamanho == 6 )
								{
									el.value = valor + ".";	
								}
								else if(tamanho == 10)
								{
									el.value = valor + "/";	
								}
								else if(tamanho == 15)
								{
									el.value = valor + "-";	
								}
							}
						},
						
						
						// Event blur
						
						'blur': function(){
							validaCampos(this.value, this.title, null);
						}
						
					}); // end addEvents
				}
			
			
			/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 * MASCARA DATA
			 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			 
				if(class_name == "_DATA" || class_name == "_data")
				{
					return el.addEvents({
						
						// Event keydown
						
						'keydown': function(key){
						
							key_code = key.code
							valido 	 = validaCode("digit", key_code, key);
							
							if(valido === false)
							return false;
							
							else if(valido === true)
							{
								valor = el.value;
								tamanho = valor.length;
							
								if(tamanho == 2 || tamanho == 5 )
								{
									el.value = valor + "/";	
								}
							}
						
						},
						
						
						// Event blur
						
						'blur': function(){
							validaCampos(this.value, this.title, null);
						}
						
					}); // end addEvents
				}
			
			
			/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 * MASCARA FONE
			 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			 
				if(class_name == "_FONE" || class_name == "_fone")
				{
					return el.addEvents({
						
						'keydown': function(key){
						
							key_code = key.code
							valido 	 = validaCode("digit", key_code, key);
	
							if(valido === false)
							return false;
							
							else if(valido === true)
							{
								valor = el.value;
								tamanho = valor.length;
								
								if(tamanho == 2)
								{
									el.value = valor + " ";	
								}
								else if(tamanho == 7)
								{
									el.value = valor + "-";	
								}
							}
					
						},
						
						
						'blur': function(){
							validaCampos(this.value, this.title, null);
						}
						
					}); // end addEvents
				}
			
			
			/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 * MASCARA EMAIL
			 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			 
				if(class_name == "_EMAIL" || class_name == "_email")
				{
					return el.addEvents({
						
						'blur': function(){
							validaCampos(this.value, this.title, 'email');
						}
						
					}); // end addEvents
				}
			
			
			/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 * MASCARA VALOR
			 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			 
				if(class_name == "_VALOR" || class_name == "_valor")
				{
					return el.addEvents({
						
						'keydown': function(key){
						
							key_code = key.code
							valido 	 = validaCode("digit", key_code, key);
	
							if(valido === false)
							return false;
							
							else if(valido === true)
							{
								valor = el.value;
								tamanho = valor.length;
								
								// limpa valores
								valor_novo 	 = valor.replace(",", "");
								valor_novo 	 = valor_novo.replace(".", "");
								tamanho_novo = valor_novo.length;
								
								// pega ultimo item
								ultimo_valor = valor_novo.substring(tamanho_novo-1,tamanho_novo);
								
								// retira ultimo item
								resto_valor = valor_novo.substring(0, tamanho_novo-1);

								if(tamanho > 1)
								{
									if(tamanho_novo > 4)
									{
										
										// pega os tres ultimos
										resto_ultimo_valor_novo = resto_valor.substring(tamanho_novo-4, tamanho_novo);
										
										// pega o resto
										resto_valor_novo = resto_valor.substring(0, tamanho_novo-4);
										resto_valor = resto_valor_novo + "." + resto_ultimo_valor_novo;
										
									}									
									
									el.value = resto_valor + "," + ultimo_valor;
								}
								
							}
						}
						
					}); // end addEvents
				}
			
			
			/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 * VALIDACAO GERAL - DIGIT
			 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			 
				if(class_name == "_DIGIT" || class_name == "_digit")
				{
					return el.addEvents({
						
						'keydown': function(key){
						
							key_code = key.code
							valido 	 = validaCode("digit", key_code, key);
	
							if(valido === false)
							return false;
					
						},
						
						
						'blur': function(){
							validaCampos(this.value, this.title, null);
						}
						
					}); // end addEvents
				}
			
			
			/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 * VALIDACAO GERAL - NO-DIGIT
			 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			 
				if(class_name == "_NODIGIT" || class_name == "_nodigit")
				{
					return el.addEvents({
						
						'keydown': function(key){
						
							key_code = key.code;
							valido 	 = validaCode("nodigit", key_code, key);
	
							if(valido === false)
							return false;
					
						},
						
						
						'blur': function(){
							validaCampos(this.value, this.title, null);
						}
						
					}); // end addEvents
				}
			
			
			/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 * VALIDACAO GERAL - PASS
			 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			 
				if(class_name == "_PASS" || class_name == "_pass")
				{
					return el.addEvents({
						
						'keydown': function(key){
						
							key_code = key.code
							valido 	 = validaCode("alpha_num", key_code, key);
	
							if(valido === false)
							return false;
					
						},
						
						
						'blur': function(){
							validaCampos(this.value, this.title, null);
						}
						
					}); // end addEvents
				}
			
			
			/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 * MASCARA NOTNULL
			 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
			 
				if(class_name == "_NOTNULL")
				{
					return el.addEvents({
						
						'blur': function(){
							validaCampos(this.value, this.title, null);
						}
						
					}); // end addEvents
				}
			
		});
		
	}
	
	
	
	
	
	
	

/** 
 * @name: brSend
 * @version: 0.1
 * @autor: Claudio Silva
 * @created: 1-07-2008
 * @extends: mootools
 **/
	
	brSend = function(id_frm){
		
		el 		 = $(id_frm).elements;
		num_el 	 = el.length;
		msg_erro = "";
		
		for(i=0; i<num_el; i++)
		{
			class_name = el[i].className;
			
			
			if( !$defined( $('msg_erros') ) )
			{
				var divErros = document.createElement("div");
				divErros.setAttribute("id", "msg_erros");
				$(id_frm).insertBefore(divErros, $(id_frm).firstChild);
				divErros.innerHTML = "limpo";
			}
			
			
			// Campo necessário que não foi preenchido
			
			if( (
				 class_name == "_CPF" || 
				 class_name == "_CNPJ" || 
			   	 class_name == "_FONE" || 
			   	 class_name == "_DATA" || 
			   	 class_name == "_EMAIL" || 
			   	 class_name == "_DIGIT" || 
			   	 class_name == "_PASS" || 
			   	 class_name == "_VALOR" || 
			   	 class_name == "_NOTNULL" || 
			   	 class_name == "_NODIGIT"
				 ) && el[i].value == "")
			{
				msg_erro += "<li><span>" + el[i].title + "</span> não foi preenchido.</li>";
			}
			
			else if(class_name == "_EMAIL" && el[i].value != "" )
			{
				teste_arroba = el[i].value.indexOf("@");
				teste_ponto  = el[i].value.indexOf(".");

				if(teste_arroba == -1 || teste_ponto == -1)
				{
					msg_erro += "<li><span>" + el[i].title + "</span> possui um e-mail inválido.</li>";
				}
			}

		}
		
		if(msg_erro == "")
		{
			$(id_frm).submit();
		}
		else
		{
			$('msg_erros').style.display = 'block';
			$('msg_erros').innerHTML = msg_erro;
		}
		
	}
	
	

window.addEvent('domReady', brMask());

