/*
	Criado por Felipe Olivaes
	felipe.olivaes/at/terra.com.br
	versao: 0.86
*/
function get(elemento){
	return document.getElementById(elemento);
}

function get_name(elemento){
	return document.getElementsByName(elemento);
}

function ttr_validar_moeda ( Element )
{
	var objCampo = document.getElementById( Element );
	len = 20;
	cur = objCampo;
	n   = '0123456789';
	d   = objCampo.value;
	l   = d.length;
	r   = '';
	
	if ( l > 0 ){
		z = d.substr(0,l);
		s = '';
		a = 0;
		
		for ( i=0; i < l; i++ ){
			c = d.charAt(i);
			if ( n.indexOf(c) > a ){
				a  = -1;
				s += c;
			};
		};
		l = s.length;
		t = len - 1;
		if ( l > t ){
			l = t;
			s = s.substr(0,t);
		}
		if ( l > 2 ){
			r = s.substr(0,l-2)+','+s.substr(l-2,2);
		} else {
			if ( l == 2 ){
				r='0,'+s;
			}else{
				if ( l == 1 ){
					r = '0,0'+s;
				}
			}
		}
		if ( r == '' ){
			r = '0,00';
		} else {
			l=r.length;
			if (l > 6){
				j  = l%3;
				w  = r.substr(0,j);
				wa = r.substr(j,l-j-6);
				wb = r.substr(l-6,6);
				if ( j > 0 ){
					w+='.';
				};
				k = (l-j)/3-2;
				for ( i=0; i < k; i++ ){
					w += wa.substr(i*3,3)+'.';
				};
				r = w + wb;
			}
		}
	}
	if ( cur.value.length == len || cur.value.length > len ){
		cur.value = cur.value.substring(0 ,len);
		return false;
	} else {
			if ( r.length <= len ){
				cur.value = r;
			}else{
				cur.value = z;
			};
	}
}

function mostraElement (element) {
	if (get (element).style.display == '') {
		get (element).style.display = 'none';
	} else {
		get (element).style.display = '';
	}
}
function get_multiple (element) {
	var elem_trab = get(element);
	var retorno = [];
	var temp = elem_trab.length;
	for(i=0; i<temp;i++){
		if (elem_trab.options[i].selected) retorno[retorno.length] = elem_trab.options[i].value;
	}
	return retorno.join(',');
}
/*
 *	Array
 */
function in_array(valor,tal_da_array){
	var retorno = false;
	if(typeof(tal_da_array) == 'object'){
		for(ia in tal_da_array){
			if(tal_da_array[ia] == valor){
				retorno = true;
			}
		}
	} else {
		for(var ia=0;ia<tal_da_array.length;ia++){
			if(tal_da_array[ia] == valor){
				retorno = true;
			}
		}
	}
	return retorno;
}

function in_array_key(valor, tal_da_array){
	var retorno = false;
	if(typeof(tal_da_array) == 'object'){
		for(chave in tal_da_array){
			if(chave == valor){
				retorno = true;
			}
		}
	} else {
		for(var ia=0;ia<tal_da_array.length;ia++){
			if(ia == valor){
				retorno = true;
			}
		}
	}
	return retorno;
}

/*
 *	Tratamento de Input
 */
function somente_numero(numero){
	var validos = "0123456789";
	var numero_ok = '';
	for(i=0;i<numero.length;i++){
		if(validos.indexOf(numero.substr(i,1)) != -1){
			numero_ok += numero.substr(i,1);
		}
	}
	return numero_ok;
}

/*
 * Deixando apenas letras em uma variavel 
 */
function somente_letras(letra){
	var validos  = "_abcdefghijklmnopkrstuvxzywçáéíóú ";
	var letra_ok = '';
	
	for(i=0;i<letra.length;i++){
		if(validos.indexOf(letra.substr(i,1)) != -1){
			letra_ok += letra.substr(i,1);
		}
	}
	return letra_ok;
}

function verifica_radio_valor(elemento){
	var temporario = get(elemento);
	var temporario = get_name(temporario.name);
	for(x=0;x<temporario.length;x++){
		if(temporario[x].checked){
			return temporario[x].value;
		}
	}
	return false;
}

/*
 *	Texto
 */
function LTrim(str){
	var whitespace = new String(" \t\n\r");
	var s = new String(str);

	if (whitespace.indexOf(s.charAt(0)) != -1) {
      var j=0, i = s.length;
      while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
         j++;
      s = s.substring(j, i);
   }
   return s;
}

function RTrim(str){
   var whitespace = new String(" \t\n\r");

   var s = new String(str);

   if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
      var i = s.length - 1;
      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;
      s = s.substring(0, i+1);
   }
   return s;
}

function trim(str){
   return RTrim(LTrim(str));
}


/*
 * Pega posição atual do scroll
 */
function ttrGetTop(){
	var ScrollTop = document.body.scrollTop;
	if (ScrollTop == 0){
	    if (window.pageYOffset)
	        ScrollTop = window.pageYOffset;
	    else
	        ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
	}
	return parseInt(ScrollTop);
}

/*
 * Adiciona loading
 */
function ttrAdicionaLoading(){
	if(!get('ttrLoading')){
		elemLoading 					= document.createElement('DIV');
		elemLoading.id 					= 'ttrLoading';
		elemLoading.style.width 		= '115px';
		elemLoading.style.visibility	= '';
		elemLoading.style.position 		= 'absolute';
		elemLoading.style.zIndex 		= 99;
		bordaTopLeft					= 25;
		elemLoading.style.top 			= (ttrGetTop()+bordaTopLeft)+'px';
		elemLoading.style.right			= bordaTopLeft+'px';
		elemLoading.style.backgroundColor  = '#fff';
		icon_opacity 					= 80;
		elemLoading.style.opacity 		= icon_opacity/100;
		elemLoading.style.MozOpacity 	= icon_opacity/100;
		elemLoading.style.border 		= '2px solid #A38ECF';
		elemLoading.style.filter 		= 'alpha(opacity='+icon_opacity+')';
		elemLoading.innerHTML			= "<center><font family='tahoma' color='#A38ECF' style='font-size: 10px;'>aguarde</font><br /><img src='/img/loading_menor.gif' /></center>";
		document.body.appendChild(elemLoading);
	}
}

function ttrRemoveLoading(){
	if(get('ttrLoading')){
		document.body.removeChild(get('ttrLoading'));	
	}
}

/*
 *	Alert box 
 */
var alert_div_codigo = false;
function alert_div(mensagem, titulo, codigo_eval, widthalert){
	if(typeof(titulo) == 'undefined') 		titulo = '';
	if(typeof(codigo_eval) == 'undefined') 	codigo_eval = false;
	if(typeof(widthalert) == 'undefined') 	widthalert = 300;
	
	alert_div_codigo = codigo_eval;
	
	divFundo 					= document.createElement('DIV');
	divFundo.id 				= "alert_fundo";
	divFundo.style.visibility 	= '';
	divFundo.style.position 	= 'absolute';
	divFundo.style.zIndex 		= 98;
	divFundo.style.top 			= '0';
	divFundo.style.left 		= '0';
	divFundo.style.width 		= '100%';
	divFundo.style.backgroundColor  = '#fff';
	icon_opacity = 35;
	divFundo.style.opacity 	= icon_opacity/100;
	divFundo.style.MozOpacity = icon_opacity/100;
	divFundo.style.filter 	= 'alpha(opacity='+icon_opacity+')';
	divFundo.style.height = "3000px";
	document.body.appendChild(divFundo);
	
		totalTop = ttrGetTop() + 150;
	
	conteudoHTML = 	"<div style='width: "+widthalert+"px; margin: 0 auto; margin-top: "+totalTop+"px;'>"+
	"<div style='border: 1px solid #336; width: "+widthalert+"px; background-color: #336; padding: 5px; color: #fff; text-transform: uppercase;'> &nbsp;&nbsp;"+ unescape(titulo) +" </div>"+
	"<div style='border: 1px solid #336; width: "+widthalert+"px; background-color: #fff; padding: 5px;'> "+ unescape(mensagem) +" <br><br> <center><input type='button' value='fechar' class='mailAdminBut' onClick='close_alert_div();'></center></div>"+
	"</div>";
	
	//alert_frente
	divFrente 					= document.createElement('DIV');
	divFrente.id 				= "alert_frente";
	divFrente.style.position 	= 'absolute';
	divFrente.style.zIndex 		= 99;
	divFrente.style.top 		= '0';
	divFrente.style.left 		= '0';
	divFrente.style.width 		= '100%';
	divFrente.style.height 		= "3000px";
	document.body.appendChild(divFrente);
	get('alert_frente').innerHTML = conteudoHTML;
}

function close_alert_div(){
	document.body.removeChild(get('alert_frente'));
	document.body.removeChild(get('alert_fundo'));	
	if(alert_div_codigo && alert_div_codigo != ''){
		eval(unescape(alert_div_codigo));
	}
}

/*
 * Funcoes auxiliares validacao CNPJ
 */
function cnpj_aux1(c){ 
	if((cx=c.indexOf(","))!=-1){ 
		c = c.substring(0,cx)+"."+c.substring(cx+1); 
	}
	if((parseFloat(c) / c != 1)){ 
		if(parseFloat(c) * c == 0){ 
			return(1); 
   		} else { 
			return(0); 
		} 
 	} else { 
		return(1); 
  	}
} 

function cnpj_aux2(c){ 
	while((cx=c.indexOf("-"))!=-1){ 
		c = c.substring(0,cx)+c.substring(cx+1); 
  	} 
	while((cx=c.indexOf("/"))!=-1){ 
		c = c.substring(0,cx)+c.substring(cx+1); 
	}
	while((cx=c.indexOf(","))!=-1){ 
		c = c.substring(0,cx)+c.substring(cx+1); 
	} 
	while((cx=c.indexOf("."))!=-1){ 
		c = c.substring(0,cx)+c.substring(cx+1); 
	} 
	while((cx=c.indexOf("("))!=-1){ 
		c = c.substring(0,cx)+c.substring(cx+1); 
	} 
	while((cx=c.indexOf(")"))!=-1){ 
		c = c.substring(0,cx)+c.substring(cx+1); 
	} 
	while((cx=c.indexOf(" "))!=-1){ 
		c = c.substring(0,cx)+c.substring(cx+1); 
	} 
	return(c); 
} 

function cnpj_aux3(CNPJ,g){ 
	var VerCNPJ=0; 
	var ind=2; 
	var tam; 
	for(f=g;f>0;f--){ 
		VerCNPJ+=parseInt(CNPJ.charAt(f-1))*ind; 
		if(ind>8){ 
			ind=2; 
		} else { 
			ind++; 
		} 
	} 

	VerCNPJ%=11; 
	if(VerCNPJ==0 || VerCNPJ==1){ 
		VerCNPJ=0; 
	} else { 
		VerCNPJ=11-VerCNPJ; 
	} 
	if(VerCNPJ!=parseInt(CNPJ.charAt(g))){ 
		return(0); 
	} else { 
		return(1); 
	}
} 

/**
 *	Desmarca Elementos
 */

function desmarca_elemento(tal_div){
	if(typeof(tal_div).toLowerCase() == 'string'){
		tal_div = get(tal_div);
	}
	objDentro=tal_div.getElementsByTagName("INPUT");
	if(objDentro.length){
		for(y=0;y<objDentro.length;y++){
			desmarca_input(objDentro[y]);
		}
	}	
}

function marca_all_checkbox (form, e) {
	for (i=0;i<form.elements.length;i++) {
		if (form.elements[i].type == 'checkbox') form.elements[i].checked = document.getElementById(e).checked ? true : false;
	}
}
function number_format (number, decimals, dec_point, thousands_sep) {
	var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
	var d = dec_point == undefined ? "," : dec_point;
	var t = thousands_sep == undefined ? "." : thousands_sep, s = n < 0 ? "-" : "";
	var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
	return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}
function desmarca_input(elemento){
	switch(elemento.type){
		case 'text':
			elemento.value = '';
		break;
		
		case 'radio':
			elemento.checked = false;
		break;
		
		case 'checkbox':
			elemento.checked = false;
		break;
	}
}
function desabilita_input (element){
	element.disabled = true;
	element.enabled = false;
}
function habilita_input (element) {
	element.disabled = false;
	element.enabled = true;
}
/*
 *	Valida cartão de crédito pela bandeira
 */
function checkCC(ccnumber,cctype){
	var re;
	re = / /gi;
	ccnumber = ccnumber.replace(re, '');

if (ccnumber.charAt(0) == '0')
	ccnumber = ccnumber.substr(1,ccnumber.length);
  switch (cctype){
    case 'VISA':
      cclength= [13,16];
      ccprefix= [4];
      ccid = 1;
      break;
    case 'MASTERCARD':
	  cclength=[16];
      ccprefix=[51,52,53,54,55];
      ccid = 2;
      break;
    case 'AMEX':
	  cclength=[15];
      ccprefix=[34,37];
      ccid = 3;
      break;
    case 'DINR':
	  cclength= [14];
      ccprefix= [300,301,302,303,304,305,36,38];
      break;
    case 'HCRD':
	  cclength= [15,16];
      ccprefix= [3,2131,1800];
      break;
  }

  prefixvalid=false;
  lengthvalid=false;


	for (var i=0; i < ccprefix.length; i++){
		if (ccnumber.indexOf(ccprefix[i])==0){
		  prefixvalid=true;
		}
	}

	for (var i=0; i < cclength.length; i++){
		if (ccnumber.length == cclength[i]){
			lengthvalid=true;
		}
	}

	result=0;
	if (! prefixvalid ){
		result=result+1;
	}

	if (! lengthvalid ){
		result=result+2;
	}

	qsum=0;

	for (var x=0; x < ccnumber.length; x++){
		ch=ccnumber.substr(ccnumber.length - x - 1,1);
		if (x % 2 != 0){
			sum = 2*parseInt(ch);
			qsum = qsum +(sum % 10);
			if (sum > 9){
				qsum = qsum + 1;
			}
		} else {
		  qsum = qsum + parseInt(ch);
		}
	}

	if (qsum % 10 != 0){
		result = result + 4;
	}

   	if (cclength.length = 0){
    	result = result + 8;
	}
	
	return result;
}

/*
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *			C L A S S E    D E    V A L I D A   O
 *
 *
 *
 *
 *
 *
 *
 *
 *
 * */
var objBtnSubmit = '';
var classValidacao = function(){
	
	//Nome do formulrio
	this.nome_form	= "";
	
	//Erros encontrados
	this.erro		= [];
	
	//Tipos de dados
	this.datatype	= new Array();
	
	//Elementos utilizados no form
	this.obj_form		 = new Object();
	
	//Se  para enviar os dados por XML_REQUEST
	this.postAjax		 = {};
	//Exibir loading
	this.showLoading	 = {};
	
	
	this.adicionarForm	 = function(idForm, postPorAjax, exibirLoading){
		this.iniciar();
		this.obj_form = get(idForm);
		this.obj_form.onsubmit = function(){
			ttrValidacao.verifica_dados(idForm);
			return false;
		};

		if(typeof(postPorAjax) == 'undefined') postPorAjax = false;
		if(typeof(exibirLoading) == 'undefined') exibirLoading = true;
		this.postAjax[idForm]		= postPorAjax;
		this.showLoading[idForm]	= exibirLoading;
		this.procura_mascara();
	}
	
	this.iniciar 		= function(){
		this.adiciona_datatype (
			'vr_obrigatorio', 
			'Campo deve ser preenchido / marcado',
			null,
			"Campo deve ser preenchido / marcado",
			'this.valida_obrigatorio'
		);
		this.adiciona_datatype (
			'vr_url', 
			'URL -- endereo de página de internet',
			null,
			"URL invlida",
			'this.valida_url'
		);
		this.adiciona_datatype (
			'vr_dominio', 
			'domínio - Verifica se um domínio ',
			null,
			"domínio inválido",
			'this.valida_dominio'
		);
		this.adiciona_datatype (
			'vr_dominio_sem_www', 
			'domínio - Verifica se um domínio sem www',
			null,
			"domínio inválido, deve ser retirado o www.",
			'this.valida_dominio_sem_www'
		);
		this.adiciona_datatype (
			'vr_email', 
			'Verifica se um e-mail válido',
			null,
			"E-mail inválido",
			'this.valida_email'
		);
		this.adiciona_datatype (
			'vr_nova_senha', 
			'Verifica se as novas senhas conferem',
			null,
			"As senhas digitadas não conferem",
			'this.valida_senha'
		);
		this.adiciona_datatype (
			'vr_minimo', 
			'Verifica se o campo tem um número mínimo de caracteres',
			null,
			"O campo deve conter no mínimo",
			'this.valida_minimo'
		);
		this.adiciona_datatype (
			'vr_maximo', 
			'Verifica se o campo tem um número máximo de caracteres',
			null,
			"O campo deve conter no máximo",
			'this.valida_maximo'
		);
		this.adiciona_datatype (
			'vr_cpf', 
			'Verifica se um CPF  válido',
			null,
			"CPF inválido",
			'this.valida_cpf'
		);
		this.adiciona_datatype (
			'vr_cnpj', 
			'Verifica se um CNPJ  válido',
			null,
			"CNPJ inválido",
			'this.valida_cnpj'
		);
		this.adiciona_datatype (
			'vr_visa', 
			'Verifica se um cartão de crédito American Visa é válido',
			null,
			"Cartão Visa Inválido",
			'this.valida_visa'
		);
		this.adiciona_datatype (
			'vr_amex', 
			'Verifica se um cartão de crédito American Express é válido',
			null,
			"Cartão American Express Inválido",
			'this.valida_amex'
		);
		this.adiciona_datatype (
			'vr_master', 
			'Verifica se um cartão de crédito MasterCard é válido',
			null,
			"Cartão MasterCard Inválido",
			'this.valida_master'
		);
	}
	
	this.adiciona_datatype = function(nome, descricao, regex, error, func) {
		this.datatype[nome] = {
			'nome'		: nome,
			'descricao'	: descricao,
			'regex'		: regex,
			'msg_erro'	: error,
			'func'		: func
		};
	};
	
	this.agrega_funcao	= function(elemento){
		
	}
	
	/*
	 *	Verifica dados antes do post (adicionado ao onSubmit do Form)
	 */
	this.verifica_dados = function(idForm){
		this.obj_form = get(idForm);
		this.erro = [];

		for(vd=0;vd<this.obj_form.elements.length;vd++){
			resultado_validacao = true;
			classes = this.obj_form.elements[vd].className.split(' ');
			for(cl=0;cl<classes.length;cl++){
				resultado_validacao &= this.valida_campo(this.obj_form.elements[vd], classes[cl]);
			}
			
			if(!resultado_validacao){
				this.obj_form.elements[vd].style.backgroundColor = '#FFF2F0';
			} else {
				this.obj_form.elements[vd].style.backgroundColor = '';
			}
		}
		
		if(!ttrIgnoreVr && this.erro.length){
			alert("Favor verificar seguintes erros: \n\t- "+this.erro.join("\n\t- "));
			objBtnSubmit.disabled = false;
		} else {
			//if(this.postAjax[this.obj_form.id]){
			if(this.postAjax[this.obj_form.id]){
				this.enviarFormAjax();
			} else {
				this.obj_form.submit();
			}
		}
	}
	
	this.enviarFormAjax = function(){
		queryStringAjax = '';
		for(vd=0;vd<this.obj_form.elements.length;vd++){
			queryStringAjax += this.retornaValor(this.obj_form.elements[vd]);
		}
		if(this.showLoading[this.obj_form.id]){
			ttrAdicionaLoading();
		}		
		if(this.obj_form.method.toLowerCase() == 'post'){
			get_url(this.obj_form.action, 'ttr_retorno_ajax' ,queryStringAjax);
		} else {
			get_url(this.obj_form.action+"?"+queryStringAjax, 'ttr_retorno_ajax');
		}
	}
	
	this.retornaValor	= function(obj){
		retValor = '';
		switch(obj.type){
			case 'checkbox':
				if(obj.checked){
					retValor = obj.value;
				}
			break;
			
			case 'radio':
				re = get_name(obj.name);
				for(x=0;x<re.length;x++){
					if(re[x].checked){
						retValor = re[x].value;
					}
				}
			break;
			
			case 'text':
				retValor = trim(obj.value);
			break;
			
			case 'textarea':
				retValor = trim(obj.value);
			break;
			
			case 'password':
				retValor = trim(obj.value);
			break;
			
			case 'select-one':
				if(obj.selectedIndex > -1){
					retValor = obj.options[obj.selectedIndex].value;
				}
			break;

			case 'select-multiple':
				qrstring = "";
				for(x=0; x<obj.options.length; x++){
					if(obj.options[x].selected){
						qrstring += obj.name+"="+escape(obj.options[x].value)+"&";
					}
				}
				return qrstring;
			break;
			
			case 'hidden':
				retValor = obj.value;
			break;
			
			case 'submit':
				obj.disabled = true;
				objBtnSubmit = obj;
			break;
		}
		
		return obj.name+"="+escape( retValor )+"&";
	}
	
	this.valida_campo	= function(obj, verificacao){
		if(verificacao == '') return true;
		complemento = '';
		if(verificacao.match('=')){
			tmp = verificacao.split("=");
			verificacao = tmp[0];
			complemento = tmp[1];
		}
		erro_campo = false;
		//Vamos verificar se a classe  de validacao
		if(in_array_key(verificacao, this.datatype)){
			eval('r = '+this.datatype[verificacao].func+'(obj, complemento)');
			if(!r){
				msgErro = "Campo "+ obj.title + ": "+ this.datatype[verificacao].msg_erro;
					if(verificacao=='vr_minimo' || verificacao=='vr_maximo'){
						msgErro += " "+complemento+" caracteres";
					}
					
				this.adiciona_erro(msgErro);
				return false;
			}
		} 
		return true;
	}
	

	/*
	 *
	 *	MASCARA
	 *	Meritos para: Otavio Nogueira <ajaxbox.com.br>
	 *
	 */
	this.procura_mascara = function(){
		for(vd=0;vd<this.obj_form.elements.length;vd++){
			classes = this.obj_form.elements[vd].className.split(' ');
			for(cl=0;cl<classes.length;cl++){
				if(classes[cl].match('mascara=')){
					tmp = classes[cl].split("=");
					if(tmp[1] != ''){
						this.obj_form.elements[vd].onkeydown 	= new Function('ttrValidacao.coloca_mascara(this,"'+tmp[1]+'");');
						this.obj_form.elements[vd].onkeypress 	= new Function('ttrValidacao.coloca_mascara(this,"'+tmp[1]+'");');
						this.obj_form.elements[vd].onkeyup 		= new Function('ttrValidacao.coloca_mascara(this,"'+tmp[1]+'");');
						this.obj_form.elements[vd].onblur 		= new Function('ttrValidacao.coloca_mascara(this,"'+tmp[1]+'");');
						this.obj_form.elements[vd].onchange 	= new Function('ttrValidacao.coloca_mascara(this,"'+tmp[1]+'");');
					}
				}
			}
		}
	}
	
	/*
	 *	No onkeyup/onkeypress/onkeydown formata mascara ao campo
	 */
	this.coloca_mascara = function(objCampo, mascara){
		switch(mascara){
			//000.000.000-00
			case 'cpf':
				objCampo.value = somente_numero(objCampo.value);
				pri = objCampo.value.substring(0,3);
				seg = objCampo.value.substring(3,6);
				ter = objCampo.value.substring(6,9);
				qua = objCampo.value.substring(9,11);
							
				objCampo.value = pri+
				((seg!='') ? '.'+seg : '')+
				((ter!='') ? '.'+ter : '')+
				((qua!='') ? '-'+qua : '');
			break;

			//00.000.000/0000-00
			//0123456789
			//00 000 000 0000 00
			//0-2 2-5 5-8 8-12 12-14
			case 'cnpj':
				objCampo.value = somente_numero(objCampo.value);
				pri = objCampo.value.substring(0,2);
				seg = objCampo.value.substring(2,5);
				ter = objCampo.value.substring(5,8);
				qua = objCampo.value.substring(8,12);
				qui = objCampo.value.substring(12,14);
				
				objCampo.value = pri+
				((seg!='') ? '.'+seg : '')+
				((ter!='') ? '.'+ter : '')+
				((qua!='') ? '/'+qua : '')+
				((qui!='') ? '-'+qui : '');
			break;
			
			//(00) 0000-0000
			case 'telefone':
				objCampo.value = somente_numero(objCampo.value);
				
				pri = objCampo.value.substring(0,2);
				seg = objCampo.value.substring(2,6);
				ter = objCampo.value.substring(6,10);
							
				objCampo.value = ((pri!='') ? '('+pri+') ' : '')+
				((seg!='') ? seg : '')+
				((ter!='') ? '-'+ter : '');
			break;
	
			//00000-000
			case 'cep':
				objCampo.value = somente_numero(objCampo.value);
				
				pri = objCampo.value.substring(0,5);
				seg = objCampo.value.substring(5,8);
							
				objCampo.value = pri+
				((seg!='') ? '-'+seg : '');
			break;
	
			//00/00/0000
			case 'data':
				objCampo.value = somente_numero(objCampo.value);
				
				pri = objCampo.value.substring(0,2);
				seg = objCampo.value.substring(2,4);
				ter = objCampo.value.substring(4,8);
				
				objCampo.value = pri+
				((seg!='') ? '/'+seg : '')+
				((ter!='') ? '/'+ter : '')
			break;
			
			//00/0000
			case 'venc_cartao':
				objCampo.value = somente_numero(objCampo.value);
				
				pri = objCampo.value.substring(0,2);
				seg = objCampo.value.substring(2,6);
				
				objCampo.value = pri+
				((seg!='') ? '/'+seg : '')
			break;

			//0000 0000 0000 0000
			case 'cartao':
				objCampo.value = somente_numero(objCampo.value);
				
				pri = objCampo.value.substring(0,4);
				seg = objCampo.value.substring(4,8);
				ter = objCampo.value.substring(8,12);
				qua = objCampo.value.substring(12,16);
				
				objCampo.value = pri+
				((seg!='') ? '-'+seg : '')+
				((ter!='') ? '-'+ter : '')+
				((qua!='') ? '-'+qua : '');
			break;

//			4	Numero Formato 000.000
			case 'banco4':
				objCampo.value = somente_numero(objCampo.value);		
				pri = objCampo.value.substring(0,3);
				seg = objCampo.value.substring(3,6);
				objCampo.value = pri+
				((seg!='') ? '.'+seg : '');				
			break;

/*
			5	Numero Formato 0.000.000.000
			6	Numero Formato 0000 000000000 000000
*/
			case 'banco5':
				objCampo.value = somente_numero(objCampo.value);	
				
				pri = objCampo.value.substring(0,1);
				seg = objCampo.value.substring(1,4);
				ter = objCampo.value.substring(4,7);
				qua = objCampo.value.substring(7,10);
				
				objCampo.value = pri+
				((seg!='') ? '.'+seg : '')+
				((ter!='') ? '.'+ter : '')+
				((qua!='') ? '.'+qua : '');			
			break;
			
			case 'banco6':
				objCampo.value = somente_numero(objCampo.value);	
				
				pri = objCampo.value.substring(0,4);
				seg = objCampo.value.substring(4,13);
				ter = objCampo.value.substring(13,19);
				
				objCampo.value = pri+
				((seg!='') ? ' '+seg : '')+
				((ter!='') ? ' '+ter : '');			
			break;
			
			case 'numero':
				objCampo.value = somente_numero(objCampo.value);		
			break;
			
			case 'letra':
				objCampo.value = somente_letras(objCampo.value);
			break;
			
			case 'wordlist':
				if(objCampo.id != ''){
					ttr_wordlist(objCampo.id, objCampo.value);
				}
			break;
	
			//1.000.000.000.000,00
			case 'moeda':
				len = 20
				cur = objCampo
				n   = '0123456789';
				d   = objCampo.value;
				l   = d.length;
				r   = '';
				
				if ( l > 0 ){
					z = d.substr(0,l);
					s = '';
					a = 0;
					
					for ( i=0; i < l; i++ ){
						c = d.charAt(i);
						if ( n.indexOf(c) > a ){
							a  = -1;
							s += c;
						};
					};
					l = s.length;
					t = len - 1;
					if ( l > t ){
						l = t;
						s = s.substr(0,t);
					}
					if ( l > 2 ){
						r = s.substr(0,l-2)+','+s.substr(l-2,2);
					} else {
						if ( l == 2 ){
							r='0,'+s;
						}else{
							if ( l == 1 ){
								r = '0,0'+s;
							}
						}
					}
					if ( r == '' ){
						r = '0,00';
					} else {
						l=r.length;
						if (l > 6){
							j  = l%3;
							w  = r.substr(0,j);
							wa = r.substr(j,l-j-6);
							wb = r.substr(l-6,6);
							if ( j > 0 ){
								w+='.';
							};
							k = (l-j)/3-2;
							for ( i=0; i < k; i++ ){
								w += wa.substr(i*3,3)+'.';
							};
							r = w + wb;
						}
					}
				}
				if ( cur.value.length == len || cur.value.length > len ){
					cur.value = cur.value.substring(0 ,len);
					return false;
				} else {
						if ( r.length <= len ){
							cur.value = r;
						}else{
							cur.value = z;
						};
				}
			break;
		}
	}

	/*
	 *
	 *
	 *	Validacoes
	 *
	 *
	 */

	/*
	 *	Retorna verdadeiro se o campo estiver preenchido/marcado
	 */
	this.valida_obrigatorio	= function(obj){
		switch(obj.type){
			case 'checkbox':
				return !obj.checked;
			break;
			
			case 'radio':
				tmp_checado = false;
				re = get_name(obj.name);
				for(x=0;x<re.length;x++){
					if(re[x].checked) tmp_checado = true;
				}
				return tmp_checado;
			break;
			
			case 'text':
				obj.value = trim(obj.value);
				return (obj.value != '');
			break;
			
			case 'password':
				return (obj.value != '');
			break;
			
			case 'select-one':
				return (obj.selectedIndex != -1);
			break;

			case 'select-multiple':
				return (obj.selectedIndex == -1);
			break;

			default: 
				//alert(obj.type);
			break;
		}
	}
	
	/*
	 * Valida domínio
	 */
	this.valida_dominio = function(domain){
		if(typeof(domain) != 'string') domain = domain.value;
		if(typeof(domain) != 'string'){
			return false;
		}
		if(domain == ''){
			return true;
		}
	
		for (i = 0; i < domain.length; i++){
			if (domain.charCodeAt(i) > 127){
				return false;
			}
		}
	
		var ipDigit = "(0?0?\\d|[01]?\\d\\d|2[0-4]\\d|25[0-6])";
		var ipRE = new RegExp("^" + ipDigit + "\\." + ipDigit + "\\." + ipDigit + "\\." + ipDigit + "$");
	
		if (ipRE.test(domain)) {
			return true;
		}
	
		var domains = domain.split(".");
		
		if (domains.length < 2) {
			return false;
		}
	
		for (i = 0; i < domains.length - 1; i++) {
			if (!(/^[a-zA-Z0-9\-]+$/).test(domains[i])) {
				return false;
			}
		}
	
		if(domains[domains.length-2].length < 2){
			return false;
		}
	
		if (!(/^[a-zA-Z]{2,}$/).test(domains[domains.length-1])){
			return false;
		}
	
		return true;
	}
	
	this.valida_dominio_sem_www = function(domain){
		if(typeof(domain) != 'string') domain = domain.value;
		if(typeof(domain) != 'string'){
			return false;
		}
		
		if(/^www\./.test(domain)){
			return false;	
		}
		
		return this.valida_dominio(domain);
	}

	/*
	 * Valida URL
	 */
	this.valida_url = function(xxx){
		url = xxx.value = trim(xxx.value);
		if(url == ''){
			return false;
		}

		var domain = url;
	
		var protocolSeparatorPos = url.indexOf("://");
		var domainSeparatorPos = url.indexOf("/", protocolSeparatorPos + 3);
	
		if(protocolSeparatorPos == 0){
			return false;
		}
	
		domain = url.substring(
			(protocolSeparatorPos > 0 ? protocolSeparatorPos + 3 : 0),
			(domainSeparatorPos > 0 ? domainSeparatorPos : url.length)
		);
		
		return this.valida_dominio(domain);
	}

	/*
	 *	Valida E-mail
	 */
	this.valida_email = function(email){
		email = email.value = trim(email.value);
		if(email == null){
			return false;
		}

		if(email == ''){
			return true;
		}

		var atPos = email.indexOf("@");
	
		if(
			atPos < 1 ||
			email.indexOf(".", atPos) == -1
		){
			return false
		}
	
		var login = email.substring(0, atPos);
		var domain = email.substring(atPos + 1, email.length);
	
		// Regexp declarations
		var atom = "\[^\\s\\(\\)><@,;:\\\\\\\"\\.\\[\\]\]+";
		var word = "(" + atom + "|(\"[^\"]*\"))";
		var loginRE = new RegExp("^" + word + "(\\." + word + ")*$");
	
		for (i = 0; i < login.length; i++){
			if (login.charCodeAt(i) > 127){
				return false;
			}
		}
	
		if (!login.match(loginRE)){
			return false;
		}
	
		return this.valida_dominio(domain);
	}

	/*
	 * Valida CPF
	 */
	this.valida_cpf = function(valor){
		valor = valor.value = somente_numero(valor.value);
		if(valor == '') return true; //tem que usar como obrigatorio
		teste = new Array();
		obj = valor;
		var D1,D2,D1calc,D2calc,aux;
		var j = 0;
		var counter = 0;
		for(i=0;i<obj.length;i++){
			if(!isNaN(obj.substring(i,i+1))){
				teste[j] = obj.substring(i,i+1);
				j++;
			}
		}
		aux = teste[0];
		for(i=0;i<teste.length;i++){
			if(teste[i] == aux){
				counter++;
			}
		}
		if(counter == teste.length){
			return false;
		}
		D1 = teste[j-2];
		D2 = teste[j-1];
		D1calc = 0;
		D2calc = 0;
		var loop = j-2;
		for(i=0;i<loop;i++){
			D1calc += Number(teste[i])*(10-i);
			D2calc += Number(teste[i])*(11-i);
		}
		D1calc = (D1calc*10)%11;
		if(D1calc == 10){D1calc=0};
			D2calc = ((D2calc+(2*D1calc))*10)%11;
		if(D2calc == 10){D2calc=0};
		if(D1 == D1calc && D2 == D2calc){
			return true;
		} else {
			return false;
		}
	}
	
	/*
	 * Valida CNPJ
	 */
	this.valida_cnpj	= function(CNPJ){
		CNPJ = CNPJ.value = somente_numero(CNPJ.value);
		if(CNPJ == '') return true; //tem que usar como obrigatorio
		CNPJ = cnpj_aux2(CNPJ); 
		if(cnpj_aux1(CNPJ) != 1) { 
			return false; 
		} else { 
			if(CNPJ == 0) { 
				return false; 
			} else { 
				g=CNPJ.length-2; 
				if(cnpj_aux3(CNPJ,g) == 1){ 
					g=CNPJ.length-1; 
					if(cnpj_aux3(CNPJ,g) == 1){ 
						return true; 
					} else { 
						return false; 
					} 
				} else { 
					return false; 
				} 
			} 
		} 
	}
	
	/*
	 *	Validação de Cartões de crédito pela bandeira
	 */
	this.valida_visa 	= function(nr_cartao){
		nr_cartao = somente_numero(nr_cartao.value);
		validacaoCartao = checkCC(nr_cartao, 'VISA');
		return ((validacaoCartao == 0) ? true : false);
	}
	
	this.valida_amex 	= function(nr_cartao){
		nr_cartao = somente_numero(nr_cartao.value);
		validacaoCartao = checkCC(nr_cartao, 'AMEX');
		return ((validacaoCartao == 0) ? true : false);
	}
	
	this.valida_master 	= function(nr_cartao){
		nr_cartao = somente_numero(nr_cartao.value);
		validacaoCartao = checkCC(nr_cartao, 'MASTERCARD');
		return ((validacaoCartao == 0) ? true : false);
	}
	
	/*
	 * Valida Campo de Senha
	 * -> adicionar somente no campo principal, criar um campo auxiliar para verificar, com o mesmo id+'1' 
	 */
	this.valida_senha	= function(senhaNova){
		outraSenha 	= get(senhaNova.id+'1').value;
		senhaNova 	= senhaNova.value = trim(senhaNova.value);
		
		return (outraSenha == senhaNova);
	}
	
	/*
	 * Verifica se o valor do campo tem nr de caracteres
	 */
	this.valida_minimo	= function(objCampo, valorMinimo){
		valorMinimo = parseInt(valorMinimo);
		return (!(objCampo.value.length < valorMinimo));
	}
	
	/*
	 * Verifica se o valor do campo tem nr de caracteres
	 */
	this.valida_maximo	= function(objCampo, valorMaximo){
		valorMaximo = parseInt(valorMaximo);
		return (!(objCampo.value.length > valorMaximo));
	}
	
	/*
	 * Adiciona erro no preenchimento do form
	 */
	this.adiciona_erro	= function(msgErro){
		this.erro[this.erro.length] = msgErro;
	}
	
}

function ttr_retorno_ajax(retornoString){
	objBtnSubmit.disabled = false;
	ttrRemoveLoading();
	
	var jstr_cmd = new RegExp("##T##");

	if(ttrDebug) {
		alert(retornoString);	
	}

	if(retornoString.match(jstr_cmd)){
		jComandos = retornoString.split("\n");
		for(jc=0;jc<jComandos.length;jc++){
			if(jComandos[jc].match(jstr_cmd)){
				ttr_exec_ajax(jComandos[jc]);
			}
		}
	} 
}

function ttr_exec_ajax(retornoString){
	retornoString = retornoString.split("##T##");
	jComando 	= retornoString[0];
	jArgumento 	= retornoString[1];
	switch(jComando){
		case 'alert':
			alert(unescape(jArgumento));
		break;
		
		case 'msg_box':
			//
		break;
		
		case 'popula_div':
			jArgumento 	= unescape(jArgumento).split("|||");
			get(jArgumento[0]).innerHTML = jArgumento[1];
		break;
	
		case 'eval':
			eval(unescape(jArgumento));
		break;
	}
}


var ttr_wordlist_em_vr = {};
var ttr_wordlist_cache = {};
var ttr_wordlist_aux   = {}; //caso necessite de uma verificação, exemplo ttr_wordlist_aux['senha_email'] = 'email'
function ttr_wordlist(id_campo, valor_atual){
	if(valor_atual.length > 5){
		if(typeof(ttr_wordlist_em_vr[valor_atual]) == 'undefined'){
			ttr_wordlist_em_vr[valor_atual] = 1;
			if(ttr_wordlist_aux[id_campo] != null){
				palavra_aux = get(ttr_wordlist_aux[id_campo]).value;
			} else {
				palavra_aux = '';
			}
			get_url("/conectorPainel.php", "ttr_retorno_ajax", "acao=valida_wordlist&idCampo="+escape(id_campo)+"&palavra="+escape(valor_atual)+"&palavra_aux="+escape(palavra_aux));
		}
		if(ttr_wordlist_cache[valor_atual] != 'undefined'){
			ttr_wordlist_avisa(id_campo, ttr_wordlist_cache[valor_atual]);
		}
	} else {
		if(get('senhaAlerta'+id_campo)){
			elementoParent = get('senhaAlerta'+id_campo).parentNode;
			elementoParent.removeChild(get('senhaAlerta'+id_campo));
		}	
	}
}

function ttr_wordlist_retorno(id_campo, valor_atual, resultado){
	ttr_wordlist_cache[valor_atual] = resultado;
	ttr_wordlist_avisa(id_campo, ttr_wordlist_cache[valor_atual]);
}

function ttr_wordlist_avisa(id_campo, retorno_wl){
	if(retorno_wl == 1){
		if(!get('senhaAlerta'+id_campo)){
			//elemento pai
			elementoParent 	= get(id_campo).parentNode;

			//elemento Filho
			elementoAlert 						= document.createElement('DIV');
			elementoAlert.id 					= 'senhaAlerta'+id_campo;
			elementoAlert.style.font			= '11px tahoma';
			elementoAlert.style.color 			= '#FFF';
			elementoAlert.style.backgroundColor = '#FF5F5F';
			elementoAlert.style.padding			= '3px';
			elementoAlert.style.margin			= '3px 3px';
			elementoAlert.style.width			= '145px';
			elementoAlert.style.border 			= '1px solid #FF0F0F';
			elementoAlert.style.textAlign		= "center";
			elementoAlert.innerHTML				= "<b>Alerta de Segurança:</b> <br> senha muito comum";
			elementoParent.appendChild(elementoAlert);
		}
	} else {
		if(get('senhaAlerta'+id_campo)){
			elementoParent = get('senhaAlerta'+id_campo).parentNode;
			elementoParent.removeChild(get('senhaAlerta'+id_campo));
		}
	}
}

ttrDebug = false;
ttrIgnoreVr = false;

var ttrValidacao = new classValidacao();