/**************************************************************************************************************/
// 15/06/2009 - Rafael Trindade - nova funcao isTimeGreater();
// 23/06/2009 - Rafael Trindade - novas funcoes p/ formatacao de dados formataSaidaCpf(), formataSaidaCartao(), formataSaidaValor()
// 29/10/2009 - Rafael Trindade - nova funcao formataStringSimbolos + Enumeration
//                                FS-EvolucaoCF (T14) - refactoring e organizacao GERAL com reducao de 34.68% de codigo inutil/obsoleto

var nav   = navigator.userAgent.toLowerCase();
var op    = nav.indexOf("opera") !=- 1;
var ie    = nav.indexOf("msie") !=- 1;
var ie5   = nav.indexOf("msie 5") !=- 1;
var ie501 = nav.indexOf("msie 5.0") !=- 1;
var ko    = nav.indexOf("konqueror") !=- 1;
var sa    = nav.indexOf("safari") !=- 1;
var ca    = nav.indexOf("camino") !=- 1;
var ge    = nav.indexOf("gecko") !=- 1;
var ff    = nav.indexOf("firefox") != -1;
var ns6   = document.getElementById && !document.all ? 1 : 0;

// autor : Diego Plentz
o = String.prototype;
o.isDate = function() { return (/^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/).test(this); }
o.isEMail = function() { return (/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/).test(this); }
o.$_replace = o.replace;
o.replace = function (a, b) {
    if (a instanceof RegExp) return this.$_replace(a, b);
    else return this.split(a).join(b);
}

// autor : Rafael Trindade
o.trim = function () { return this.replace(/^\s*|\s*$/g, ''); }
o.isEmpty = function() { return (this.replace(/ /g,'').length < 1) ? true : false; }
o.isTime = function () { return (/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/).test(this); }
gE = function (n) { return ns6 ? document.getElementById(n) : document.all[n]; }
gB = function (o) { return ((d = document).getElementsByTagName(o) || (d.all.tags || d.layers || {})[o]); }
aE = function( o, e, h ){ o.addEventListener ? o.addEventListener( "on" + e, h, true)  : o.attachEvent ? o.attachEvent("on" + e, h ) : o["on" + e] = h; }
rE = function( o, e, h ){ o.detachEvent ? o.detachEvent("on" + e, h) : o.removeEventListener ? o.removeEventListener("on" + e, h, false) : o["on" + e] = null; }
Event = function(e) { return window.event ? e.keyCode : e.which ? e.which : e.charCode; }
shObj = function(o,t) { gE(o).style.display = !t?'none':''; }
removeAlfa = function(o) { o.value = o.value.replace(/[^0-9]/g,''); } //onBlur="removeAlfa(this);"

o.isDateGreater = function (dF) {
	if (this.substr(6, 4) < dF.substr(6,4)) return true;
	else if (this.substr(6, 4) == dF.substr(6, 4)) {
		if (this.substr(3, 2) < dF.substr(3, 2)) return true;
		else if (this.substr(3, 2) == dF.substr(3, 2)) {
			if (this.substr(0, 2) < dF.substr(0, 2)) return true;
			else return false;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

o.isTimeGreater = function (tF){
	if (parseInt(this.substr(0,2)) < parseInt(tF.substr(0,2))) return true;
	else if (parseInt(this.substr(0,2), 10) == parseInt(tF.substr(0,2), 10)) {
    	if (parseInt(this.substr(3,2), 10) < parseInt(tF.substr(3,2), 10)) return true;
		else return false;
	} else {
		return false;
	}
}

// tratamento de caracteres ou "remocao de simbolos de uma string"
var jsFORM = {
	RE_TEXTAREA_ALFA  : /[^0-9-A-Za-z, ,]/g,
	RE_TEXTAREA_GERAL : /[!$@#%¨^~\-ª¹²³£¢¬=_§°`´"\[\]?><;:º\/*\'|\&(){}]/g
}

function formataStringSimbolos(s, re) {
	s.value = s.value.replace(re,'');
}

function PermiteNumeroComExcecoes(e) { //onKeypress="return PermiteNumeroComExcecoes(event,'caracteresquequisersemseparador');"
	var k  = String.fromCharCode(Event(e)); 
	var v  = String.fromCharCode(8) + '0123456789';
	var ex = (arguments.length == 2 && typeof(arguments[1]) == "string") ? arguments[1] += v : v;
	if (ex.indexOf(k) < 0) return false;
}

function formataSaidaValor(vl) {
	var s = "";
	vl = new String(vl);
	if (!vl.isEmpty()) {
		vl = vl.toString().replace(/\$|\,/g,'');
		if(isNaN(vl)) vl = "0";
		sign = (vl == (vl = Math.abs(vl)));
		vl = Math.floor(vl*100+0.50000000001);
		cents = vl%100;
		vl = Math.floor(vl/100).toString();
		if(cents<10)
		cents = "0" + cents;
		for (var i = 0; i < Math.floor((vl.length-(1+i))/3); i++) {
			vl = vl.substring(0,vl.length-(4*i+3))+'.'+ vl.substring(vl.length-(4*i+3));
		}
		s = (((sign)?'':'-') + vl + ',' + cents);
	}
	return s;
}

function formataSaidaNumero(num) {
	var s = "";
	num = new String(num);
	if (!num.isEmpty()) {
		num = num.toString().replace(/\$|\,/g,'');
		if(isNaN(num)) num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
		if(cents<10)
		cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
			num = num.substring(0,num.length-(4*i+3))+'.'+num.substring(num.length-(4*i+3));
		}
		s = (((sign)?'':'-') + num);
	}
	return s;
}

function formataSaidaCartao(cartao) {
	var s = "";
	if (!cartao.isEmpty()) {
		cartao = cartao.replace(/[^0-9]/g,'');
		cartao = cartao.trim().substring(0,16);
		for (var i = 0, c = cartao; i < c.length; i++) {
			if (i % 4 == 0 && i > 0) {
				s += ' ' + c.charAt(i);
			} else {
				s += c.charAt(i);
			}
		}
	}
	return s;
}

function formataSaidaCPF(cpf) {
	var s = "";
	if (!cpf.isEmpty()) {
		cpf = cpf.replace(/[^0-9]/g,'');
		cpf = cpf.trim().substring(0, 11);
		s = cpf.substr(0,3) + '.' + cpf.substr(3,3) + '.' + cpf.substr(6,3) + '-' + cpf.substr(9,2);
	}
	return s;
}

function converteAcento(s) {
	var a = ['à','á','ã','â','ä','õ','ò','ó','ô','è','é','ê','ë',
		     'ì','í','ï','ç','Á','À','Ã','Â','Ä','Õ','Ò','Ó',
		     'È','É','Ê','Ë','Ì','Í','Ï','Ç','Ú','ú'];
	var b = ['&agrave;','&aacute;','&atilde;','&acirc;','&auml;',
			 '&otilde;','&ograve;','&oacute;','&ocirc;','&egrave;','&eacute;',
			 '&ecirc;','&euml;','&igrave;','&iacute;','&iuml;',
			 '&ccedil;','&Aacute;','&Agrave;','&Atilde;','&Acirc;',
			 '&Auml;','&Otilde;','&Ograve;','&Ocirc;','&Egrave;',
			 '&Eacute;','&Ecirc;','&Euml;','&Igrave;',
			 '&Iacute;','&Iuml;','&Ccedil;','&Uacute;','&uacute;'];
	for (i=0;i<b.length;i++) {
		if (s.indexOf(b[i]) != -1) s = s.replace(b[i],a[i]);
	}
	return s;
}

function validaCpf(s) {
	var cpf = s.replace(/\D/g, "");
	if (cpf.length != 11) return false;

	var j = 10;
	var soma = 0;
	for (var i = 0; i < 9; i++, j--) {
		soma += parseInt(cpf.substring(i, i + 1), 10) * j;
	}
	var dig1 = 11 - (soma % 11);
	if (dig1 == 10 || dig1 == 11) dig1 = 0;
	if (dig1 != parseInt(cpf.substring(9, 10), 10)) return false;

	j = 11;
	soma = 0;
	for (var i = 0; i < 9; i++, j--) {
		soma += parseInt(cpf.substring(i, i + 1), 10) * j;
	}
	soma += dig1 * 2;
	var dig2 = 11 - (soma % 11);
	if (dig2 == 10 || dig2 == 11) dig2 = 0;
	if (dig2 != parseInt(cpf.substring(10, 11), 10)) return false;

	return true;
}

function validaCnpj(s) {
	var cnpj = s.replace(/\D/g, "");
	if (cnpj.length != 14) return false;

	var j = 5;
	var soma = 0;
	for (var i = 0; i < 12; i++, j--) {
		if (j == 1) j = 9;
		soma += parseInt(cnpj.substring(i, i + 1), 10) * j;
	}
	var dig1 = (soma * 10) % 11;
	if (dig1 == 10) dig1 = 0;
	if (dig1 != parseInt(cnpj.substring(12, 13), 10)) return false;

	j = 6;
	soma = 0;
	for (var i = 0; i < 13; i++, j--) {
		if (j == 1) j = 9;
		soma += parseInt(cnpj.substring(i, i + 1), 10) * j;
	}
	var dig2 = (soma * 10) % 11;
	if (dig2 == 10) dig2 = 0;
	if (dig2 != parseInt(cnpj.substring(13, 14), 10)) return false;

	return true;
}

/*
var xmlhttp;
xmlhttp = new XMLHTTPRequest();
if (!xmlhttp) alert("Seu browser não está atualizado. .....");
*/
function XMLHTTPRequest() {
	var objHTTP;
	if (window.XMLHttpRequest) objHTTP = new XMLHttpRequest(); // Nativo (FF/Safari/Opera7.6+)
	else {
		try {
			objHTTP = new ActiveXObject("Msxml2.XMLHTTP"); } //activeX (IE5.5+/MSXML2+)
		catch(e) {
			try {
				objHTTP = new ActiveXObject("Microsoft.XMLHTTP"); } //activeX (IE5+/MSXML1)
			catch(e) {
				objHTTP = false;
			}
		}
	}
	if (ie501) objHTTP = false; // para IE 5.01 nao funciona mesmo, tem que sniffar
	return objHTTP;
}

// refactoring para o legado
ehVazio = function (f){ return (f.value.trim() == "") ? true : false; }
tiraEspaco = function (f){ return f.value.replace(' ',''); }
consisteCampoNum = function(t){ return ((t>=48 && t<=57 ) || t==8 || t==13) ? true : false ; } //onKeydown (0-9, backspace, setas, delete)
removeSimbols  = function (c) { if (gE(c)) gE(c).value = gE(c).value.replace(/[!,@,$,#,%,¨,|,\,&,*,(,),{,}]/g, ''); } //onBlur="removeSimbols(this.name)"
retirarSimbolos  = function (c) { if (gE(c)) gE(c).value = gE(c).value.replace(/[!,@,$,#,%,¨,^,~,\-,.,ª,¹,²,³,£,¢,¬,+,=,_,§,°,`,´,",\[,\],?,>,<,;,:,º,\/,,',|,\,&,*,(,),{,}]/g, ''); }
function formataValor(field, nr_dec){ // utilizar no ONBLUR
	var aux = field.value;
	var tam = aux.length; // tamanho da string

	if (tam > 0 && aux.indexOf(",") == -1){ //se tamanho for maior que zero e nao possuir virgula
		aux = aux + ",";
		for (i=1;i<=nr_dec;i++) { aux = aux + "0"; }
		field.value = aux;
	} else if (tam > 0 && aux.indexOf(",") == (tam - 2)) { //se tamanho for maior que zero e so houver uma decimal
		for (i=1;i<=nr_dec-1;i++) { aux = aux + "0"; }
		field.value = aux;
	} else if (tam > 0 && aux.indexOf(",") == (tam - 1)) { //se tamanho for maior que zero e so houver uma decimal
		for (i=1;i<=nr_dec;i++) { aux = aux + "0"; }
		field.value = aux;
	}
}

// (ONKEYUP) field - campo a ser formatado,  / maxtam - max de caracteres que o valor pode conter, com a virgula / nr_dec - quantidade de decimais
function preencheValor(field, maxtam, nr_dec, e) {
	var t = (!e) ? (event||window.event).keyCode : Event(e);
	if (t==9) field.select();
	
	// caso ja preencheu o valor maximo de caracteres, e tecla nao for backspace nem delete nem setas nem TAB nao permite mais digitar
	if (field.value.length > maxtam && t != 8 && t != 46 && t != 37 && t != 38 && t != 39 && t != 40 && t != 9) {
		event.returnValue = false;
		return;
	}

	var aux = field.value.replace(",","");
	var tam = aux.length;
	if (t == 8 || t == 46 || (t >= 48 && t <= 57 ) || (t >= 96 && t <= 105 )) {
		if (tam <= 1) field.value = aux;
		if (tam > nr_dec && tam <= maxtam) field.value = aux.substr(0,tam-nr_dec) + ',' + aux.substr(tam-nr_dec);
	}
}

maskCartao = function(f) { // ONBLUR - Mascara com um espaco a cada 4 digitos e tratamento de copiar e colar
	s = '', f.value = f.value.replace(/[^0-9]/g,'');
	f.value = f.value.trim().substring(0,16);
	for(i = 0, h = f.value; i < h.length; i++) {
		if (i%4 == 0 && i > 0) s += ' ' + h.charAt(i);
		else s += h.charAt(i);
	} 
	f.value = s;
	return;
}

// field - campo a ser formatado / nr_int - quantidade de digitos permitidos na parte inteira do valor / nr_dec - quantidade de decimais
function validaNumerico(field,nr_int,nr_dec){
	if (field.value.indexOf(",") != -1) {
		if (field.value.length - (field.value.indexOf(",")+1) != nr_dec) return false;  //verifica numero de decimais
		if (field.value.indexOf(",") > nr_int) return false;  //verifica numero de digitos antes da virgula
	}
	else if (field.value.length != 0 && field.value.length > nr_int) return false;
	return true;
}

function preencheHora(field, tam) { // (ONKEYUP) - field - campo a ser formatado / tam - tamanho maximo para o campo
	var t = event.keyCode;
	if (t==9) field.select();

	// caso ja preencheu o valor maximo de caracteres, e tecla nao for backspace nem delete nem setas nem TAB nao permite mais digitar
	if (field.value.length > tam && (t != 8 && t != 46 && t != 37 && t != 38 && t != 39 && t != 40 && t != 9)){
		event.returnValue = false;
		return false;
	}

	var aux = field.value.replace(":","")
	if (t != 8 && t != 46 && t != 37 && t != 38 && t != 39 && t != 40 && t != 9 ) {
		if (aux.length > 2 && aux.length < 5) {
			aux = aux.substr(0,2) + ':' + aux.substr(2); }
		else if (aux.length >= 5 && aux.length < 9) {
			aux = aux.substr(0,2) + ':' + aux.substr(2,2) + ':' + aux.substr(4);
		}
		field.value = aux;
	}
}

function preencheData(field) { // (ONKEYUP)
	var t = event.keyCode;
	if (t==9) field.select();

	// caso ja preencheu o valor maximo de caracteres e tecla nao for backspace nem delete nem setas nem TAB nao permite mais digitar
	if (field.value.length >= 10 && (t != 8 && t != 46 && t != 37 && t != 38 && t != 39 && t != 40 && t != 9)) {
		event.returnValue = false;
		return false;
	}
	if ((field.value.charAt(2) == "/" && field.value.charAt(3) == "/")) field.value = field.value.substr(0,3);
	else if (field.value.charAt(2) == "/" && field.value.charAt(4) == "/") {
		field.value = field.value.substr(0,4);
	}

	if (t != 8 && t != 46 && t != 37 && t != 38 && t != 39 && t != 40 && t != 9) {
		var aux = field.value.replace("/","");
		aux = aux.replace("/","");
		if (aux.length > 2 && aux.length <= 4) aux = aux.substr(0,2) + "/" + aux.substr(2);
		else if (aux.length > 4){
			aux = aux.substr(0,2) + "/" + aux.substr(2,2) + "/" + aux.substr(4);
		}
		field.value = aux;
	}
}

// Funcao : permite digitar apenas numeros / e formata a data.
function filterNumero(e, vlr, tipo) {
	var code;
	if (!e) var e = window.event;
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;

	if ((code>=48 && code<=57 ) || code==8 || code==9 || code==13){
		e.returnValue = true;
		if(tipo == 'DT') {
			if (code!=8) {
				if((vlr.value.length == '2') || (vlr.value.length == '5')) vlr.value = vlr.value + '/';
			}
		}
	} else {
		if(!ie == true) e.preventDefault();
		else e.returnValue = false;
	}
}

function dataMask(i,e){
	k = (nav=="IE") ? e.keyCode : 0;
	if(k!=8 && k!=46) {
		s = i.value.replace("/","");
		if (s.length > 1 && s.length <= 4) s = s.substring(0,2) + "/" + s.substring(2);
		else if(s.length > 4) s = s.substring(0,2) + "/" + s.substring(2,4) + "/" + s.substring(4);
		if(i.value != s) i.value = s;
	}
}

function formatar(src, mask) {
	var i = src.value.length;
	var saida = mask.substring(0,1);
	var texto = mask.substring(i);
	if (texto.substring(0,1) != saida) src.value += texto.substring(0,1);
}

// nota       : IMPORTANTE - para desabilitar TODOS os botoes de um form, basta definir
//              no escopo do template a seguinte linha var disabledAllButtons = true
var disabledAllButtons;
function disableButtons(func) {
	if(func != false) {
		if(func() == false) return false;
	}
	var inputs = document.getElementsByTagName("input");
	for (var i=0; i<inputs.length; i++) {
    	var input = (b=inputs[i]).type.toLowerCase();
    	if (input == "submit") b.value="Aguarde...";
		if ( (input == "submit" || input == "reset") || input == (vObj.isBoolean(disabledAllButtons)?"button":"submit") && input.indexOf("impr") == -1 ) {
			b.disabled = true;
			if (gE("aguarde-texto") && gE("aguarde-conteudogeral")) GeraPreloading();
		}
	}
}

function addOnSubmit() {
	for (i=0;i<document.forms.length;i++) {
		var of = (d=document.forms[i]).onsubmit;
		if (d.target.toLowerCase() != "_blank") d.onsubmit = new Function(!d.onsubmit?"disableButtons(false)":"if(disableButtons("+ of +") == false){return false}");
	}
}

function validaDt(c) {
	if (!c.value.isEmpty()) {
		if (!c.value.isDate()) {
			alert("Formato data inválida!");
			c.focus();
			return false;
		}
	}
}

vObj = {   // if (vObj.isObject(gE('idCampo')) return true;
	isString    : function (o) { return typeof o == 'string'; },
	isFunction  : function (o) { return typeof o == 'function'; },
	isObject    : function (o) { return (o && typeof o == 'object') ; },
	isUndefined : function (o) { return typeof o == 'undefined'; },
	isBoolean   : function (o) { return typeof o == 'boolean'; }
}

var FormData = { // funcao: conjunto de funcoes desenvolvidas somente para uso na custom tag FORMDATA.CFM

	// c - nome do campo /  o - objeto de configuracao (cfgDatas[dinamico]) / t - determina se eh tipo intervalo a chamada da custom (true/false)
	_cfgData : function(c,o,t) {
		if (t) c.value = (c.name == (e=eval(o)).ds_nome_ini) ? e.dt_ini : e.dt_fim;
		else {
			c.value = "";
			c.focus();
		}
	},
	
	// c - nome do campo / o - objeto de configuracao (cfgDatas[dinamico]) / t - determina se a validacao eh ou nao obrigatoria
	validaDataCalendario : function(c,o,t) {
		if (c.value.trim() != '') {
			// validacao temporaria, deve-se alterar na regular expression 'isDate'
			var tmp_data = c.value.trim().split('/');
			if (!c.value.isDate() || tmp_data[2].length < 4) {
				alert("Data " + (((_o=eval(o).fl_controle))?(c.name==eval(o).ds_nome_ini)?"inicial ":"final ":"") + "inválida!");
	 			this._cfgData(c,o,(_o)?true:false);
	 		}
		} else {
			if (t) {
	 			alert("O preenchimento da data é obrigatório!");
	 			this._cfgData(c,o,eval(o).fl_controle?true:false);
			}
		}
	},

	// c - nome do campo / o - objeto de configuracao (cfgDatas[dinamico])
	validaDataPeriodo : function(c,o) {
		if ( ( !(df=gE(eval(o).ds_nome_fim)).value.isEmpty() && !(di=gE(eval(o).ds_nome_ini)).value.isEmpty() ) ? df.value.isDateGreater(di.value) : false  ) {
  			alert("A data inicial não deve ser superior a data final.");
  			this._cfgData(c,o,true);
		}
	},

	// o - objeto de configuracao (cfgDatas[dinamico]) / c - nome do campo
	selecionaPeriodos : function(o,c) {
		e = gE((_c=eval(c)).ds_nome_ini);
		this._sP = function(o,c) {
			_c = eval(c);
			return (o==1)?_c.dt_hoje:(o==2)?_c.dt_mes:(o==3)?_c.dt_trinta:(o==4)?_c.dt_maximo:_c.dt_ini;
		}
		e.value = this._sP(o.value,_c);
		return this._sP(o,_c)
	}
}

// n - nome do cookie | v = valor do cookie | d = dias para expirar
var Cookies = {
	exists : function(n) { // Verifica se cookie existe
		return ((!(mn=(ck=document.cookie).indexOf(n + "=")) && ck.substring(0,mn.length) || mn == -1) ? false : true);
	},
	create : function(n,v,d) { // Cria cookie
		var xp, dt, ck;
		if (d) {
			dt = new Date();
			dt.setTime(dt.getTime()+(d*24*60*60*1000));
			xp = "; expires="+dt.toGMTString(); }
		else xp = "";
		ck = n + "=" + v + xp + "; path=/";
		document.cookie = ck;
	},
	read : function(n) { // Faz leitura de cookie
		n = n+"="; 
		var ck = document.cookie.split(';');
		for(i = 0; i<ck.length; i++) {
			dc = ck[i];
			while (dc.charAt(0) == ' ') dc = dc.substring(1,dc.length);
			if (dc.indexOf(n) == 0) return dc.substring(n.length,dc.length);
		}
		return '';
	},
	erase : function(n) { // Zera o cookie
		this.create(n,"",0);	
	}
}

/******************* */
// funcao : Gera funcoes para pop ups, Central eh a funcao principal
// usemode: <a href=javascript:PopUp.Central('url.cfm',100,100,'janela')>um link</a> (execucao normal)
//          <a href=javascript:PopUp.Central('url.cfm',100,100)>um link</a> usa a url completa como nome da janela
//          <a href=javascript:PopUp.Central('url.cfm')>um link</a> (abre centralizado com base na resolucao do client)
var PopUp = {
	Central : function (u,l,a,n) {
		if (u.isEmpty()) alert("ERRO PopUp.Central: Voce deve definir um parametro de URL."); 
		var _rLU = Client.aWidth, _rAU = Client.aHeight,
			_arg = (arguments.length == 1) ? true : false,
			_rLC = _arg ? _rLU/2 : l,
			_rAC = _arg ? _rAU/2 : a,
			top  = (_rAU-_rAC/2-_rAC/2)/2,
			left = (_rLU-_rLC/2-_rLC/2)/2,
			_win = "window"+_rLC,
			args = "menubar=no,toolbar=no,location=no,scrollbars=yes,status=yes,resizable=yes,width="+_rLC+",height="+_rAC+",left="+left+",top="+top;
		window.open(u,_win,args);
	}
}

//Objetivo    : funcao para limpar todos status dos objetos <a></a>
if (vObj.isUndefined(BarraStatus)) var BarraStatus = {}
BarraStatus = function () {}
BarraStatus.prototype = {
	fL     : function() { window.status = ''; return true; } ,
	Limpar : function() {
		if (gB('a')){
			var tagA = gB('a');
			for (var i = 0; i < tagA.length; i++) { aE(tagA[i],"mouseover",this.fL); aE(tagA[i],"focus",this.fL); aE(tagA[i],"click",this.fL); }
		}
	}
}

if (typeof Client == 'undefined') var Client = {}
var Client = {
	getWidth  : function() { return ((d = document).documentElement.offsetWidth || d.body.offsetWidth);	},
	getHeight : function() { return (self.innerHeight || (d = document).documentElement.clientHeight || d.body.clientHeight); },
	aWidth    : screen.availWidth,
	aHeight   : screen.availHeight
}

function ValidaCNPJCPF(s, tipo) {
	if (!s.value.isEmpty()) {
		if (validaCpf(s.value)) return true;
		else {
			if (validaCnpj(s.value)) return true;
			else {
				alert(tipo + " inválido!");
				if (gE(s)) gE(s).focus();
				return false;
			}
		}
	}
}

// os caracteres listados na invalidos não sera permitido digitar
function CaracterEsp(e) {
	var invalidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890/\()-!@#$%¨&*_+<>,.;:?|[]{}";
	var t = e.keyCode;
	var key = String.fromCharCode(t);
	if (window.event) keycode = window.event.keyCode;
	else if (e) {
		keycode = e.which;
	}
	if ((t!=13) && (t!=32)) {
		if (t==92) event.returnValue = false;
		else {
			e.returnValue = !(invalidos.indexOf(key) == -1);
		}
	}
}

//Descricao: Valida periodo especificado via parametro e retorna mensagem se periodo nao permitido.
//Autor: Alexandre/Fabio
//i (argumento obrigatorio) = data inicial (dd/mm/yyyy)
//f (argumento obrigatorio) = data final (dd/mm/yyyy)
//m (argumento obrigatorio) = numero de dias
//(4o argumento opcional) = mensagem caso retorne false
function ValidaPeriodo(i,f,m) {
	i_ano=i.substr(6,4);
	i_mes=i.substr(3,2);
	i_dia=i.substr(0,2);
	f_ano=f.substr(6,4);
	f_mes=f.substr(3,2);
	f_dia=f.substr(0,2);

	var periodoInicial = new Date(i_ano, (i_mes-1), i_dia);
	var periodoFinal = new Date(f_ano, (f_mes-1), f_dia);
	
	if(periodoInicial.getTime()>periodoFinal.getTime()) {
		alert('Data final não pode ser menor que data inicial.');
		return false;
	}
	var diff = Math.floor((periodoFinal.getTime() - periodoInicial.getTime()) / 86400000)+1;

	if(diff>m) {
		alert( arguments.length==4 ? arguments[3] : 'O intervalo das datas é '+diff+' dia(s) e não pode ser maior do que '+m+' dia(s).');
		return false;
	}
	return true;
}

// funcao: GeraPontinhos no preloading
function GeraPontinhos() {
	txt = gE("aguarde-texto").innerHTML;
	txt = "<table width='400'><tr><td><img src='/img/gm_loading_azul.gif' /></td><td class='aguarde' width='450'>Por favor aguarde.<br> Estamos processando suas informa&ccedil;&otilde;es.</td></tr></table>";
	gE("aguarde-texto").innerHTML = txt;
}

// funcao : GeraPreloading (depois do retorno de validacao JS)
function GeraPreloading() {
	if (gE("aguarde-conteudogeral")) {
		gE("aguarde-conteudogeral").style.display = "none";
		gE("aguarde-container").style.display     = "";
		GeraPontinhos();
	}
}