//****************************************************
function daClasse(ob,nomeClasse) {
	if (ob && ob.className && nomeClasse) {
		return (' '+ob.className+' ').indexOf(' '+trimm(nomeClasse)+' ')!=-1;
	}
	return false;
}
//****************************************************
function objClone(ob,doc) {
	var tn = ob.tagName;
	if (typeof(tn)!='string') {
		return;
	}
	var r = doc.createElement(ob.tagName);
	//atributos
	for (var i=0;ob.attributes && i<ob.attributes.length;i++) {
		try {
			var n = ob.attributes.item(i).nodeName;
			var v = ob.getAttribute(n); //trimm
			r.setAttribute(n,v);
			/*if (n=='href') {
				//lert('href='+v);
				lert('='+r.attributes.item(i).textContent+'-');
			}
			*/
		} catch (e) {
			//lert(n+' '+i+' '+erro(e));
		}
	}
	//filhos
	if (ob.childNodes.length==0) {
		r.innerHTML = ob.innerHTML;
	} else {
		for (var i=0;i<ob.childNodes.length;i++) {
			try {
				var o = objClone(ob.childNodes.item(i),doc);
				if (o) {
					r.appendChild(o);
				} else if (ob.innerHTML) {
					r.innerHTML = ob.innerHTML;
					break;
				}
			} catch (e) {}
		}
	}
	return r;
}
//***********************************************
function objLimpa(o) {
	while (o.childNodes.length!=0) {
		o.removeChild(o.firstChild);
	}
}
//*******************************//
function format(v,d) {
	var v1='',v2='',i,vr='';

	v = ''+v;
	i = v.indexOf('.');
	if (i<0) {
		v1 = v;
	} else {
		v1 = v.substring(0,i);
		v2 = v.substring(i+1,999);
	}

	v1 = '000000000000000000'.substring(0,18-v1.length)+v1;
	vr = v1.substring(0,3);
	for (i=3;i<18;i+=3) {
		vr += '.'+v1.substring(i,i+3);
	}

	while (vr.length>1 && '0.'.indexOf(vr.substring(0,1))>-1) 
		vr = vr.substring(1,vr.length);

		return vr+((d==0)?'':','+(v2+'0000000').substring(0,d))
}
//****************************************************
function tabela(Doc,dest,classe) {
	var doc = Doc;
	var t = doc.createElement('table');
	this.tab = t;
	if (classe) {
		t.className = classe;
	} else {
		t.border = '1';
	}
	dest.appendChild(t);
	//lert('add on dest='+dest);
	var ur;
	var v = new Array();
	this.addRow = addRow;
	this.addCol = addCol;
	//****************************************************
	function addCol(tx) {
		var c = doc.createElement('td');
		if (tx.tagName) {
			c.appendChild(tx);
		} else {
			c.innerHTML = tx;
		}
		if (!ur) {
			ur = addRow();
		}
		ur.appendChild(c);
		return c;
	}
	//****************************************************
	function addRow(p1,p2,p3,p4,p5,p6,p7,p8) {
		ur = doc.createElement('tr');
		if (typeof(p1)!='undefined') addCol(p1);
		if (typeof(p2)!='undefined') addCol(p2);
		if (typeof(p3)!='undefined') addCol(p3);
		if (typeof(p4)!='undefined') addCol(p4);
		if (typeof(p5)!='undefined') addCol(p5);
		if (typeof(p6)!='undefined') addCol(p6);
		if (typeof(p7)!='undefined') addCol(p7);
		if (typeof(p8)!='undefined') addCol(p8);
		t.appendChild(ur);
		return ur;
	}
}

//****************************************************
function estat(Nome) {
	var nome = Nome;
	var v = new Array();
	this.inc = inc;
	this.inc1 = inc1;
	this.toHtml = toHtml;
	this.getMatriz = getMatriz;
	//****************************************************
	function getMatriz() {
		var v1 = new Array(),i=0;
		for(var prop in v) {
			v1[i++] = new Array(prop,v[prop]);
		}
		return v1;
	}
	//****************************************************
	function toHtml() {
		var v1 = getMatriz();
		v1.sort(function(a,b){return fSort(b[1],a[1])});
		var r = '<table border=1>';
		for(var i=0;i<v1.length;i++) {
			r += '<tr><td>'+v1[i][0]+'<td>'+format(v1[i][1],0);
		}
		return r+'</table>';
	}
	//****************************************************
	function inc1(ch) {
		inc(ch,1);
	}
	//****************************************************
	function inc(ch,vl) {
		if (!v[ch]) {
			v[ch]=vl;
		} else {
			v[ch]+=vl;
		}
	}
}
//***********************************************
function htmlTxt(obj) {
	var nl='\n',r = '';
	var t = obj.tagName?obj.tagName.toLowerCase():'?';
	if (obj.childNodes.length==0) { //''+obj=='[object Text]')
		//nodeValue:
		if (browse.ie) {
			r = trimm(obj.innerText?obj.innerText:obj.nodeValue);
		} else {
			r = trimm(obj.textContent);
		}
	} else {
		if (obj.childNodes && obj.childNodes.length>0) {
			for (var i=0;i<obj.childNodes.length;i++) {
				r += htmlTxt(obj.childNodes.item(i));
			}
		}
	}
	if (t=='br' || t=='hr' || (obj.tagName && !vazio(r) && '~p~tr~li~ul~'.indexOf(t)!=-1) ) {
		r += '\n';
	}
	/*if (debA%500==0) {
		//objNav(obj);
		lert('t='+t+' r='+r+' o='+obj.childNodes.length+'='+typeof(obj)+'='+obj);
	}
	debA++;
	*/
	//lert(typeof(obj)+' '+obj);
	return r;
}

//***********************************************
//retorna uma table no formato MATRIZ
// nroCol = filtra so linhas com >= nro col
function getTabela(obj,nroCol) {
	if (typeof(obj)=='string') {
		var aa = document.createElement('div');
		aa.innerHTML = obj;
		obj = aa;
	}
	var r = new Array();
	var v = obj.getElementsByTagName('tr');
	for (var l=0;l<v.length;l++) {
		var v1 = v[l].getElementsByTagName('td');
		if (!nroCol || v1.length>=nroCol) {
			var l1 = r.length;
			r[l1] = new Array();
			for (var c=0;c<v1.length;c++) {
				r[l1][c] = htmlTxt(v1[c]);
			}
		}
	}
	return r;
}

//**************************//
// menu POPUP
//**************************//
var menuPopUpAberto = false;
//**************************//
function menuPopUp(nome,tit,vOp,ops,est) {
	var oM = null;
	if (typeof(tit)=='object') {
		this.obj = tit;
		this.obj.setAttribute('disp',1);
		oM = tit;
		tit='';
	}
	this.aberto = false;
	if (''+ops=='undefined') {
		ops = '';
	}
	this.evento = true;
	this.posEsq = 0;
	this.incX = 0;
	this.incY = 0;
	this.ops = ops;
	this.nome = nome;
	this.tit = tit;
	this.fecha = menuPopUp_fecha;
	this.abre = menuPopUp_abre;
	this.click = menuPopUp_click;
	this.click1 = menuPopUp_click1;
	this.vat = new Array;
	if (typeof(est)=='undefined') {
		est = 'menPop';
	}
	if (""+vOp=="undefined") {
		return;
	}
	//cria divisão conforme array
	document.write(
	'<DIV ID="'+this.nome+'" class='+est
	+' STYLE="POSITION: absolute; VISIBILITY: hidden; TOP: 0px; LEFT: 0px;">'
	+'<table class='+est+'>');
	var i = 'onclick='+this.nome+'.fecha(event);>';
	if (ops.indexOf('/nnova')==-1) {
		document.write('<tr><td class='+est+'Tit '+i+this.tit
		+'<td class='+est+'Fecha '+i
		+'x');
	} else {
		document.write('<tr><td class='+est+'Tit '+i+this.tit);
	}
	for (var i=0;i<vOp.length;i++) {
		var op = vOp[i];
		var ps,url;
		if ((ps=op.indexOf("~~"))!=-1) {
			this.vat[i] = op.substring(ps+2);
			url = substrAt(op,'~~');
			op = op.substring(0,ps);
		} else {
			this.vat[i] = op;
		}
		if (op=='-') {
			document.write('<tr><td class='+est+'Sp>');
		} else {
			var oc = ' onClick=javascript:'+this.nome+'.click('+i;
			document.write('<tr><td class='+est+oc+',false,event)>'
				+'&nbsp;<a href="'
					+(!vazio(url) && url.indexOf('{cod}')==-1
						?url
						:'javascript:'+this.nome+'.click('+i+',false,event);'
					)+'" class='+est+'>'+op+'</a>'
				+(ops.indexOf('/nnova')==-1?
				'<td class='+est+'N '+oc+',true,event)>'
				+'<a class='+est+'N>+</a>'
				:'')
			);
		}
	}
	document.write('</table></DIV>');
	//**************************//
	function menuPopUp_click(pos,nova,event) {
		if (event.ctrlKey) return;
		this.fecha();
		//lert('pos='+pos+' param='+this.param+" nova="+nova);
		var a = this.vat[pos],i;
		//lert('1='+a);
		if ((i=a.indexOf("{cod}"))!=-1) {
			a = a.substring(a,i)+this.param+a.substring(i+5);
		} else if (a.substring(0,11)=='javascript:') {
			//lert("eval="+a);
			eval(a);
			return;
		} else {
			a += this.param;
		}
		this.click1(a,nova);
	}
	//**************************//
	function menuPopUp_click1(a,nova) {
		//lert(a);
		if (nova) {
			window.open(a,"_blank");
		} else {
			window.location = a;
		}
	}
	//**************************//
	function menuPopUp_fecha(ev) {
		//objNav(ev);
		//lert(0);
		//ebJ(trace());
		if (typeof(ev)!='undefined' && ev.ctrlKey) {
			return;
		}
		menuPopUpAberto = false;
		this.aberto = false;
		browse.esconde(oM,false);
	}
	//**************************//
	function menuPopUp_abre(ob,pr,ev) {
		if (this.aberto) {
			this.fecha();
			return;
		}
		if (typeof(pr)=='object') {
			ev = pr;
			pr = '';
		}
		if (vazio(oM)) {
			oM = browse.getId(this.nome);
		}
		menuPopUpAberto = true;
		this.aberto = true;
		this.param = pr;
		//var o = browse.getId(this.nome);
		//objNav(o);
		var tx = browse.getTX(ob);
		var x,y;
		x = browse.getAbsX(ob)+((tx==-1)?30:tx);
		if (this.posEsq!=0) {
			x -= browse.getTX(oM)+tx-30;
		}
		y = browse.getAbsY(ob)+browse.getTY(ob);
		
		//abaixo - campo de listar possíveis conteúdos
		if (this.abaixo) {
			x = browse.getAbsX(ob);
			//browse.setTX(oM,browse.getTX(ob));
			//y = browse.getAbsY(ob);
			this.incX = 0;
			this.incY = 0;
			//lert('x='+x+' y='+y);
		}
		
		//tem evento
		if (!vazio(ev) && this.evento) {
			var xx = browse.eventoX(ev);
			if (xx!=-1) x = xx;
			xx = browse.eventoY(ev);
			if (xx!=-1) y = xx;
		}
		
		if (this.centrado) {
			//lert(browse.getTX(ob));
			x -= browse.getTX(oM)/2+browse.getTX(ob)/2;
		}
		if (this.acima) {
			y -= browse.getTY(oM);
		}
		if (this.esquerda) {
			browse.mostra(oM,false);
			//lert('esq='+browse.getTX(oM)+' '+browse.getTX(ob));
			//objNav(oM);
			x -= browse.getTX(oM)+(this.esquerda==2?browse.getTX(ob):0);
			//return;
		}
		if (this.posE) {
			x -= this.posE + browse.getTX(oM);
		}
		if (this.posS) {
			y -= this.posS + browse.getTY(oM);
		}
		//lert(oM);
		//lert('x='+x+' y='+y);
		browse.setX(oM,x+this.incX);
		browse.setY(oM,y+this.incY);
		browse.mostra(oM,false);
	}
}



	//*******************************//
	function resize(sObj,minX,minY) {
		//lert('resize='+sObj);
		if (nulo(sObj)) {
			var ob = window.document.body;
			//objNav(ob);
		} else {
			var ob = browse.getId(sObj);
		}
		var tX=ob.offsetWidth;
		var tY=ob.offsetHeight; 
		if (vazio(minX)) {
			tX += 80;
			tY += 50+(browse.ie?0:0)
		}
		
		//limita ao tam janela raiz...
		var jr = janRaiz();
		//objNav(jr);
		var mX = browse.tamWinX(jr);
		tX = tX>mX?mX:tX;
		var mY = browse.tamWinY(jr);
		//lert(mY);
		tY = tY>mY?mY:tY;
		
		//tam minimo linux: 423 x 208 e win 419x264
		if (vazio(minX)) minX = 420;
		if (vazio(minY)) minY = 210;
		//lert('x='+tX+' '+minX+' y='+tY+' '+minY+' '+jr.location);
		if (tX<minX) tX = minX;
		if (tY<minY) tY = minY;
		
		try {
			//lert('semOK x='+tX+' y='+tY);
			top.resizeTo(tX,tY);
		} catch (e) {
			alert('ERRO: resize win='+e);
		}
	}


	//*******************************
	function ascan(arr,vlr) {
		for (prop in arr) {
			if (arr[prop]==vlr) {
				return prop;
			}
		}
		return -1;
	}
	

	//*********************************
	function janRaiz() {
		if (vazio(top.opener)) {
			return top;
		}
		return top.opener.janRaiz();
	}
	//*********************************
	function janLocObj(nome) {
		var x;
		try {
			x = eval(nome);
		} catch (e) {
		}
		if (typeof(x)!='undefined') {
			return x;
		}
		if (vazio(top.opener)) {
			return null;
		}
		return top.opener.janLocObj(nome);
	}


//*******************************//
//controle de eventos
var acoesEvento = new Array(); 
regAcaoEvento('load','aAtalhos()');
var parente,objPai;
var obj_obj;
//imagePopUp.load();


//*******************************//
// janelas dependentes
//*******************************//
var wDep = new Array,wTip = new Array,wUrl = new Array,imprPdfTM;

//*******************************//
//*******************************//
//*******************************//
// CONTROLE DE JANELAS POPUP..
// TIPOS DE JANELA: 
// 0 - FECHA SÓ SE FECHAR A PRINCIPAL
// 1 - FECHA SE O FOCO VOLTAR A PRINCIPAL
// 2 - OBRIGA O FOCO NA SECUNDARIA (DIÁLOGO);
// 3 - TOTALMENTE INDEPENDENTE
//*******************************//
//*******************************//
//*******************************//
	function objParente() {
		return obj_obj;
	}
 
	//*******************************//
	function regAcaoEvento(acao,funct) {
		if (!acoesEvento[acao] || vazio(acoesEvento[acao])) {
			acoesEvento[acao] = new Array();
		}
		acoesEvento[acao][acoesEvento[acao].length] = funct;
	}
	//*******************************//
	function evento(s,ev) {
		//opção em js
		//if (window.addEventListener) window.addEventListener("load",func,false);
		//else if (window.attachEvent) window.attachEvent("onload",func);   
		//for (var f = 0; (formnode = document.getElementsByTagName('form').item(f)); f++) {
		//executa acoes registradas
		//lert(s+' '+ev);
		if (acoesEvento[s] && !vazio(acoesEvento[s])) {
			for (prop in acoesEvento[s]) {
				//lert(acoesEvento[s][prop]);
				var x = acoesEvento[s][prop];
				if (x.indexOf('(')==-1) {
					x += '()';
				}
				eval(x);
			}
		}
  
		if (s=='resize') {
		}
		if (s=='load') {
			//lert('l='+opener);
			if (objLen(opener)!=0) {
				parente = opener;
				objPai = opener.objParente();
			}
			//objLen(opener);
			if (!vazio(objPai) && !vazio(objPai.onLoad)) {
				eval(objPai.onLoad);
			}
		}
		if (s=='close') {
			if (!vazio(objPai) && objPai.pulaClose) {
				objPai.pulaClose = false;
				return;
			}
			//fecha todas as janelas dependentes
			for (i=0;i<wDep.length;i++) {
				if (wDep[i]!=0) {
					wDep[i].close();
					wDep[i] = 0;
				}
			}
			//informa a superior
			if (parente && !vazio(objPai)) {
				//lert('informa sup');
				parente.dRegistraWin(objPai.janPos);
			}
		}
		if (s=='focus') {
			//fecha janelas tipo 1 
			for (var i=0;i<wDep.length;i++) {
				if (wDep[i]!=0 && wTip[i]==1) {
					wDep[i].close();
					wDep[i] = 0;
				} else if (wDep[i]!=0 && wTip[i]==2) {
					try {
						wDep[i].focus();
					} catch(e) {
						//lert('Erro: '+e);
					}
				}
			}
		}
		if (s=='focusOut') {
			if (!vazio(objPai) && objPai.tipo==2) {
				//window.focus();
				//lert("tipo janela=1");
				//fecha somente se o foco volta para a mãe...
				//parente.dRegistraWin(janPos);
				//window.close();
			}
		}
	}
	//*******************************//
	function dRegistraWin(i) {
		if (typeof(i)=='string') {
			i = substrAt(i,'//');
			i = '/'+substrAt(i,'/');
			for (var i1=0;i1<wDep.length;i1++) {
				if (wDep[i1]!=0 && wUrl[i1]==i) {
					//lert('achei: '+wUrl[i1]);
					dRegistraWin(i1);
					return;
				}
			}
			alert('não achei: '+i+'\nem\n'+wUrl);
		} else if (wDep[i]!=0) {
			wDep[i].close();
			wDep[i] = 0;
		}
	}
	//*******************************//
	function registraWin(obj) {
		for (i=0;i<wDep.length;i++) {
			if (wDep[i]==0) {
				break;
			}
		}
		obj.janPos = i;
		wDep[i] = obj.obj;
		wTip[i] = obj.tipo;
		wUrl[i] = obj.url;
		obj_obj = obj;
	}
	//*******************************//
	function alertErro(e) {
		alert(erro(e));
	}
	//*******************************//
	function trace(a) {
		return troca(erro(new Error('trace '+a)),'\n\n','<hr>');
	}
	//*******************************//
	function centra(ob,noOb) {
		var xy = centraCoo(ob,noOb);
		//lert(xy);
		if (xy && xy.length>1) {
			if (vazio(ob)) {
				ob = top;
			}
			ob.moveTo(xy[0],xy[1]);
		}
	}
	//*******************************//
	function centraCoo(ob,noOb) {
		//if (!cli.centra) return;
		if (typeof(ob)=='undefined') {
			ob = top;
			noOb = janRaiz();
		} else if (typeof(noOb)=='undefined') {
			noOb = ob;
			ob = top;
		}
		if (browse.ie) {
			try {
				var pX = noOb.screenLeft+noOb.document.body.offsetWidth/2
				-ob.document.body.offsetWidth/2;
				var pY = noOb.screenTop+noOb.document.body.offsetHeight/2
				-ob.document.body.offsetHeight/2;
				return new Array(pX,pY);
			} catch (e) {
				alert('erro='+e);
			}
		} else {
			var pX = noOb.screenX+noOb.outerWidth/2-ob.outerWidth/2;
			var pY = noOb.screenY+noOb.outerHeight/2-ob.outerHeight/2;
			return new Array(pX,pY);
		}
		return new Array();
	}
 
	//*******************************
	function centraDiv(dv,win) {
		if (vazio(win)) {
			win = window;
		}
		var pX,pY;
		if (browse.ie) {
			pX = win.screenLeft+win.document.body.offsetWidth/2
				-browse.getTX(dv)/2;
			pY = win.screenTop+win.document.body.offsetHeight/2
				-browse.getTY(dv)/2;
		} else {
			//pX = win.screenX+win.outerWidth/2-browse.getTX(dv)/2;
			pX = win.outerWidth/2-browse.getTX(dv)/2;
			//pY = win.screenY+win.outerHeight/2-browse.getTY(dv)/2;
			pY = win.outerHeight/2-browse.getTY(dv)/2;
		}
		dv.style.position = 'fixed';
		dv.style.top = pY+'px';
		dv.style.left = pX+'px';
		//browse.setX(dv,pX);
		//browse.setY(dv,pY);
		//dv.offsetTop = pY;
		//dv.offsetLeft = pX;
		//objNav(dv);
		//lert(pX+'-'+pY+' pa='+dv.style.left+','+dv.style.top);
	}


	//*******************************//
	function existeWin(url) {
		for (var i=0;i<wDep.length;i++) {
			if (wDep[i]!=0 && wUrl[i]==url) {
				try {
					wDep[i].document.write('');
					//lert('vai focar..');
					wDep[i].focus();
				} catch(e) {
					//lert('e='+e);
					wDep[i]=0;
					return false;
				}
				return true;
			}
		}
		return false;
	}

	//**************************//
	function absoluteUrl(url,base) {
		if (vazio(base)) {
			base = window.location;
		}
		base=''+base;
		url=''+url;
		if (equals(url,'/')) {
			return url;
		}
		if (equals(url,'http://') || equals(url,'https://')) {
			return '/'+substrAt(substrAt(url,'//'),'/');
		}
		if (equals(base,'http://') || equals(base,'https://')) {
			base = '/'+substrAt(substrAt(base,'//'),'/');
		}
		if (base.indexOf('?')!=-1) {
			base = leftAt(base,'?');
		}
		base = leftRat(base,'/');
		url = trocaTudo(base+'/'+url,'//','/');
		url = troca(url,'/./','/');
		/*while (url.indexOf('..')==-1) {
		}
		*/
		return url;
	}

	//********************************
	//********************************
	function winDep(jan,url) {
		this.debug=false;
		this.jan = jan;
		this.url = url;
		this.tipo = 0;
		this.cascata = false;
		this.nome = '_blank';
		this.obj = null;
		this.pulaClose = false;
		this.janPos = -1;
		this.frame=false;
		this.centrada = true;
		this.scr = 'yes';
		this.stat = 'yes';
		//scroll
  
		this.w = 400;
		this.h = 400;
  
		this.abre = winDep_abre;
		this.centra = winDep_centra;
		this.on = winDep_on;
		this.fCascata = fCascata;
		this.html = html;
		//********************************
		function html(txH) {
			this.obj.innerHTML = txH;
		}
		//********************************
		function winDep_on(s) {
			if (this.frame) {
				//lert('não sei gravar em frame...');
				var d = browse.getId('frm',this.obj.document);
				//objNav(d);
				d.contentWindow.document.write(s);
			} else {
				this.obj.document.write(s);
			}
		}
		//********************************
		function winDep_centra() {
			if (browse.ie) {
				this.pX = this.jan.screenLeft+this.jan.document.body.offsetWidth/2
				-this.w/2;
				this.pY = this.jan.screenTop+this.jan.document.body.offsetHeight/2
				-this.h/2;
			} else {
				this.pX = this.jan.screenX+this.jan.outerWidth/2-this.w/2;
				this.pY = this.jan.screenY+this.jan.outerHeight/2-this.h/2;
			}
		}
		//********************************
		function fCascata() {
			if (browse.ie) {
				this.pX = this.jan.screenLeft+20;
				this.pY = this.jan.screenTop+30;
			} else {
				this.pX = this.jan.screenX+20;
				this.pY = this.jan.screenY+30;
			}
		}
		//********************************
		function winDep_abre() {
			if (existeWin(this.url)) {
				//lert('url existe='+url);
				return false;
			}
			if (this.centrada) {
				this.centra();
			}
			if (this.cascata) {
				this.fCascata();
			}
			//lert('x='+this.pX+' y='+this.pY);
			var d=(this.debug?"yes":"no");
			var t='width='+this.w+',height='+this.h
			+(this.pX?',screenX='+this.pX+',screenY='+this.pY:'')
			+',resizable=yes,scrollbars='+this.scr+','
			+'toolbar='+d+',menubar='+d+',status='+this.stat;
			//+'toolbar='+d+',menubar='+d+',status='+d;
			//ebJ(t);
			if (this.frame) {
				//lert('a');
				this.obj = window.open('about:blank',this.nome,t);
			} else {
				this.obj = window.open(this.url,this.nome,t);
			}
			//lert('ab');
			try {
				this.obj.focus();
				if (this.tipo!=3) {
					registraWin(this);
				}
				if (this.frame) {
					this.obj.document.write(
					'<html><frameset rows=100% border=1 framespacing=1 frameborder=0>'
					+'<frame id=frm src="'+this.url+'"></frameset>'
					+'</html>'
					);
				}
			} catch(e) {
			}
			return true;
		}
	}
//fim CTRLE JAN DEPENDENTES
