	//******************************
	// seta cookie para o servidor gravar e excluir
	function desvRel(strCmp) {
		//alert(strCmp);
		var p = new pedido();
		var p1 = new pedido(strCmp);
		var v = p1.getV();
		for(var prop in v) {
			p.put(prop,v[prop]);
		}
		p.put('menu','0');
		var w = window.open(p.atalho(),'_blank','toolbar=no,width=700,height=400,scrollbars=yes');
		//objNav(w);
		//alert('ok');
		//setTimeout("w.resize('__tabRel')",2000);
	}
	
	//*********************************
	function carregaObj(url,id,id1) {
		var x = new carregaUrl();
		x.carregaObj(url,id,id1);
	}
	//*********************************
	function carregaUrl() {
		this.url = '';
		this.abre = abre;
		this.carregaObj = carregaObj;
    var xmlhttp=false;
		xmlhttp = false;
    if (!browse.ie) {// && typeof(XMLHttpRequest)!='undefined') {
			try {
					xmlhttp = new XMLHttpRequest();
			} catch (e) {
					xmlhttp=false;
			}
		} else  { //if (!xmlhttp && window.createRequest) {
			try {
					var b=true?"Microsoft.XMLHTTP":"Msxml2.XMLHTTP";
					xmlhttp = new ActiveXObject(b);
					//alert("criou request ms IE ="+xmlhttp);
			} catch (e) {
					xmlhttp=false;
			}
		}
		if (!xmlhttp) {
			alert('erro criando obj httpREQ');
		}
		this.httpReq = xmlhttp;
		//*********************************
		function carregaObj(url,id,id1) {
			this.idObj = id;
			this.idObj1 = id1;
			this.abre(url);
		}
		
		//*********************************
		function abre(url,funcRet,form) {
			this.url = url;
			//objNav(this.httpReq);
			if (form) {
				//alert('opcao post com form não implementada...');
				this.httpReq.open("POST", url,true);
				this.httpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			} else {
				this.httpReq.open("GET", url,true);
			}
			//this.httpReq.onreadystatechange=('function() { '+funcRet+'(this)}');
			var hR = this.httpReq;
			var fR = funcRet;
			var oId = this.idObj;
			var id1 = this.idObj1;
			var th = this;
			this.httpReq.onreadystatechange=function() {
				XX = hR.readyState;
				XR = hR.responseText;
				//alert(hR+' '+XX+' '+funcRet);
				if (XX==4) {
						//alert(hR.responseText);
						//objNav(xmlhttp);
						//x = window.document.getElementsByTagName("script");
						//objNav(x);
						if (oId) {
							//alert(hR.responseText);
							//responseXML
							if (vazio(id1)) {
								if (equals(oId,'&')) {
									var id = substrAt(oId,'~');
									eval(leftAt(oId.substring(1),'~')+'(id,hR.responseText);');
								} else {
									browse.getId(oId).innerHTML = (hR.responseText);
								}
							} else {
								var o = document.createElement("div");
								o.innerHTML = hR.responseText;
								//objNav(o);
								var o1 = browse.getId(id1,o);
								//objNav(o1);
								browse.getId(oId).innerHTML = o1.innerHTML;
							}
						} else if (funcRet) {
							eval(funcRet+'('+XX+',th)');
						}
				} else {
				}
			}
			var t = null;
			if (form) {
				//monta string post?
				objNav(form);
				t = '';
				for (var i=0;i<form.elements.length;i++) {
					var o = form.elements.item(i);
					t += '&'+o.name+'='+o.value;
				}
				alert(t);
			}
			this.httpReq.send(t);
		}
	}


	//******************************
	var cookDel = '~:';
	//******************************
	// seta values dos inputs cfrme cookie
	function prefGet(id,resp) {
		if (vazio(raizWeb)) {
			alert('raizWeb vazia...');
			return;
		}
		var c = cookieGet('set_'+classeWeb);
		if (!vazio(resp)) {
			c = resp.httpReq.responseText;
			//alert(c);
			//objNav(resp);
			if (vazio(c)) {
				c = cookDel;
			}
			id = resp.obj1;
			if (vazio(id)) {
				//alert('vaz');
				//objNav(resp);
				return;
			}
		} else if (vazio(id)) {
			id = document;
		} else {
			id = browse.getId(id);
		}
		
		//alert('prefGet c='+c);
		if (vazio(c)) {
			//debJ('vazio c');
			//carrega prefs
			var x = new carregaUrl();
			x.obj1 = id;
			x.abre(raizWeb+classeWeb+'.class?op=pref&raiz=/'+id.id,'prefGet');
			return;
		}
		var v = new Array('input','select');
		for (var i=0;i<v.length;i++) {
			var ve = id.getElementsByTagName(v[i]);
			for (var x=0;x<ve.length;x++) {
				var e = ve[x];
				//alert(e.onchange);
				if ((e.onchange && (''+e.onchange).indexOf('prefSet')!=-1)
					|| (e.onblur && (''+e.onblur).indexOf('prefSet')!=-1)) {
					if (c.indexOf(cookDel+e.name+'=')!=-1) {
						e.value = substrAtAt(c,cookDel+e.name+'=',cookDel);
					} else {
						//e.value = '(vazio)';
					}
				}
			}
		}
	}
	
	//******************************
	// seta cookie para o servidor gravar e excluir
	function prefSet(nome,valor) {
		//alert(nome);
		if (!vazio(valor)) {
			if (typeof(valor)=='object') {
				valor = valor.value;
			}
		} else {
			if (typeof(nome)=='object') {
				valor = nome.value;
				//nome com o nome do form?
				//objNav(nome);
				nome = (nome.form && nome.form.id?nome.form.id+'.':'')+nome.name;
				//alert(nome);
			} else {
				valor = substrAt(nome,'=');
				nome = leftAt(nome,'=');
			}
		}
		//alert('pref set: '+nome+'='+valor);
		
		//cookie
		var chC = 'set_'+classeWeb;
		var c = cookieGet(chC);
		if (vazio(c)) {
			c = cookDel;
		}
		//monta novo valor
		var pr = nome+'='+valor;
		var p = c.indexOf(cookDel+nome+'=');
		if (p==-1) {
			cn = c+pr+cookDel;
		} else {
			cn = c.substring(0,p+1)+pr+cookDel+substrAt(c.substring(p+cookDel.length),cookDel);
		}
		//alert(pr+'\n\n'+troca(cn,cookDel,' :'));
		//alert(chC+' = '+cn);
		cookiePut(chC,cn,0);
		//GRAVA - 
		var x = new carregaUrl();
		//x.abre(raizWeb+classeWeb+'.class?op=pref&raiz=','prefGet');
		x.abre(leftAt(window.location+'?','?')+'?op=pref&raiz=','prefGet');
	}
	//******************************
	// seta cookie para o servidor gravar e excluir
	function setarPrefs(nome,valor) {
		return prefSet(nome,valor);
	}
	//FIM*************************************
	
	//*********************************
	// um table td on click controla qual parte do doc a ver
	function menuOpDivR(pai) {
		//debJ(''+pai+' '+);
		var idM = pai.getAttribute('idM');
		if (!vazio(idM)) {
			var o = browse.getId(idM);
			if (!vazio(o)) {
				browse.esconde(o);
			} else {
				alert('Não encontrei id='+idM);
			}
		} else if (!vazio(pai.childNodes)) {
			for (var i=0;i<pai.childNodes.length;i++) {
				menuOpDivR(pai.childNodes.item(i));
			}
		}
		return;
	}
	//*********************************
	// um table td on click controla qual parte do doc a ver
	function menuOpDiv(ob) {
		//objNav(ob);
		
		//procura o pai com classe igual nome desta func
		var i=0;
		var o = ob;
		while ((' '+o.parentNode.className+' ').indexOf(' menuOpDiv ')==-1) {
			i++;
			o = o.parentNode;
			if (i>30) {
				alert('Não encontrou até 30 vezes..');
				return;
			}
		}
		var objPai = o.parentNode;
		//objNav(objPai);
		//return;
		
		//esconde todos os filhos que tem o onclick com o nome
		menuOpDivR(objPai);
		
		var om = browse.getId(ob.getAttribute('idM'));
		if (!vazio(om)) {
			browse.mostra(om);
			om.style.position = 'relative';
			//objNav(om);
			//browse.esconde(om);
			//browse.mostra(om);
		} else {
			alert('Não encontrei id='+om);
		}
		
	}
	
	//*********************************
	// um radio controla qual parte do doc a ver
	// 3 param:  tag, nome, valor
	function divRadio(ob,nome) {
		var t = 0;
		var tag = ob;
		var valor;
		if (vazio(nome)) {
			t = 1;
			var tag = ob.tagName;
			nome = ob.name;
			valor = ob.value;
		}
		//alert(nome);
		var x = document.getElementsByTagName(tag);
		for (var i=0;i<x.length;i++)	{
			var j = x[i];
			if ( j.name == nome ) {
				var d = browse.getId(j.value);
				if (!vazio(d)) {
					if ( (t==0 && j.checked) || valor == j.value ) {
						//objNav(j);
						browse.mostra(d);
					} else {
						browse.esconde(d);
					}
				} else {
					alert('id não existe '+j.value);
				}
			}
		}
	}
	//*********************************
	// retorna html radio
	// vetor texto,valor
	function radio(nome,valor,arr,del) {
		if (vazio(del)) {
			del = " ";
		}
		var r = '';
		for (var i=0;i<arr.length;i++) {
			r += '<input type="radio" name="'+nome+'" '+(valor==arr[i][0]?"checked":"")
				+' value="'+arr[i][1]+'">&nbsp;'
				+arr[i][0]+del;
		}
		return r;
	}
	
	//*********************************
	function form(str) {
		var v = palavraA(str,'<br>');
		var t = '';
		for (var i=0;i<v.length;i++) {
			var l = v[i];
			if (leftAt(l,'<').indexOf(':')!=-1) {
				var ii = substrAt(l,':');
				if (ii.indexOf('hidden')==-1) {
					t += '<p class=formRot>'+leftAt(l,':')+':</p>'
						+'<p class=formInp>'+ii+'</p>'
					;
				} else {
					t += ii;
				}
			} else {
				t += '<p class=formLin>'+l+'</p>';
			}
		}
		return t;
	}
	
	//*********************************
	function debJ(str) {
		var jan = browse.getId('debJ');
		if (vazio(jan)) {
			var jan = document.createElement("div");
			jan.className = 'debJ';
			jan.id = 'debJ';
			jan.innerHTML = '';
			document.body.appendChild(jan);
		}
		jan.innerHTML = ((''+str).indexOf('<')==-1?'<p>'+str+'</p>':str) 
			+'<hr>'+ jan.innerHTML;
	}

	//*********************************
	function valMail(o) {
		//objNav(o);
		var em = o.value;
		em = tiraAcentos(em);
		if (em.indexOf('<')!=-1) {
			em = substrAt(em,'<');
		}
		if (em.indexOf('>')!=-1) {
			em = leftAt(em,'>');
		}
		while (em.indexOf('"')!=-1) {
			em = substrAt(em,'"');
		}
		em = trimm(troca(em,' ',''));
		if (em!=o.value) {
			o.value = em;
			//alert(em);
		}
		var v1 = palavraA(em,'@');
		if (em.length<8 || v1.length!=2 || v1[0].length<1 || v1[1].length<4 ) {
			return false;
		}
		
		//tem ponto?
		if (v1[1].indexOf('.')==-1) return false;
		
		if (!valEmailP(v1[0]) || !valEmailP(v1[1])) {
			return false;
		}
		return true;
	}
	//*******************************
	function valEmailP(s) {
		var i = s.length;
		return !('-@_.'.indexOf(s.substring(0,1))!=-1 || '-@_.'.indexOf(s.substring(i-1,i))!=-1);
	}

	//***********************************************
	//entrada de dados html
	function campoHtml(nomec,valorc,win) {
		var nome = nomec;
		var valor = valorc;
		var oIf = null;
		var oCm = null;
		var htm = false;
		var parent = win;
		var vContext;
		
		//métodos externos
		this.mostra = mostra;
		this.carrega = carrega;
		this.limpa = limpa;
		this.html = htmlC;
		this.cmd = cmd;
		this.sel = sel;
		this.loop = loop;
		this.tag = tag;
		this.clas = clas;
		this.format = format;
		this.arquivo = arquivo;
		this.get = get;
		this.modoEd = modoEd;
		this.init = init;
		this.mostraFerramentas = true;
		
		//posui entrada alternativa txt?
		this.txt = false;
		var formatoTxt = false;
		var mPop,obContext;
		var oDiv = '';
		
		//***********************************************
		function init() {
			//objNav(window);
			oDiv = browse.getId(nome+'Div');
			if (vazio(oDiv)) {
				alert(nome+'Div id não enconrado...');
			}
			//alert(browse.ie);
			oDiv.innerHTML = ferramentas()
				+'<iframe '
					//+' SRC="javascript:{document.write(\'Cole aqui\');return \'\';}"'
					+' SRC="javascript:{};"'
					//+' SRC=about:blank '
					+' id="'+nome+'" class="cHtml">aa'
				//+'<iframe id="cHtml'+nome+'" class="cHtml">'
				+'</iframe>'
				+'<div id="'+nome+'Pop" class="cHtmlPop"'
					+' STYLE="POSITION: absolute; VISIBILITY: hidden;"></div>'
			;
			//alert(oDiv.innerHTML);
			//this.lixo = oDiv;
			//setTimeout('objNav('+nome+'.lixo);',1000);
			this.mostra();
		}
		//***********************************************
		function arquivo(o,ev) {
			//alert(o.innerHTML+' '+pos);
			if (mPop && mPop.aberto) {
				mPop.fecha();
				return;
			}
			mPop = new menuPopUp(nome+'Pop','titulo ?');
			browse.getId(nome+'Pop').innerHTML = ''
				+'<p onclick="javascript:'+nome+'.limpa();"'
					+'>Apagar Tudo</p>'
				+'<p onclick="javascript:'+nome+'.html();"'
					+'>'+(!htm?'Ver código HTML':'Visualização Normal')+'</p>'
			;
			mPop.abre(o,null,ev);
		}
		//***********************************************
		function format(o,ev) {
			if (mPop && mPop.aberto) {
				mPop.fecha();
				return;
			}
			mPop = new menuPopUp(nome+'Ferram','titulo ?');
			mPop.abre(o,null,ev);
		}
		//***********************************************
		function clas(o,pos,ev) {
			if (typeof(pos)=='string') {
				mPop.fecha();
				//objNav(vContext[o][2]);
				//alert(vContext[o].tagName+' '+vContext[o].className+' '+pos);
				vContext[o][2].className = pos;
				obContext = null;
				return;
			}
		
			if (mPop && mPop.aberto) {
				mPop.fecha();
				return;
			}
			
			//monta lista estilos cfrme tag.
			var st = oIf.contentWindow.document.styleSheets, r=new Array();
			for (var i=0;i<st.length;i++) {
				//objNav(st[i]);
				for (var x=0;x<st[i].cssRules.length;x++) {
					var s = st[i].cssRules[x];
					var v = palavraA(trocaTudo(
						troca(s.selectorText,',',' '),'  ',' '),' ');
					for (var y=0;y<v.length;y++) {
						var t = leftAt(v[i],'.').toLowerCase();
						if (v[i].indexOf('.')==-1) {
						} else if (true && t!='' && t!=vContext[pos][0].toLowerCase()) {
						} else {
							t = substrAt(v[i],'.')+' '+t;
							if (ascan(r,t)==-1) {
								r[r.length] = t;
							}
						}
					}
				}
			}
			r.sort(function(a,b){return a.toLowerCase()<b.toLowerCase()?-1:0});
			var rs = '<table><tr><td>'
				+'<p onclick='+nome+'.clas('+pos+',"");>(vazio)</p>'
			;
			for (var i=0;i<r.length;i++) {
				if ((i+1)%Math.floor((r.length+1)/2+0.99999)==0) {
					rs += '<td>';
				}
				rs += '<p onclick='+nome+'.clas('
					+pos+',"'+leftAt(r[i],' ')+'");>'+r[i]+'</p>'
				;
			}
			rs += '</table>';
			
			mPop = new menuPopUp(nome+'Pop','titulo ?');
			browse.getId(nome+'Pop').innerHTML = rs;
			mPop.abre(o,null,ev);
		}
		//***********************************************
		function tag(o,pos,ev) {
			if (typeof(pos)=='string') {
				mPop.fecha();
				//alert('mudou para: '+pos);
				oIf.contentWindow.document.execCommand('formatblock', false, pos);
				obContext = null;
				return;
			}
			//alert(o.innerHTML+' '+pos);
			if (mPop && mPop.aberto) {
				mPop.fecha();
				return;
			}
			mPop = new menuPopUp(nome+'Pop','titulo ?');
			browse.getId(nome+'Pop').innerHTML = ''
				+'<p onclick='+nome+'.tag(this,"p");>Parágrafo</p>'
				+'<p onclick='+nome+'.tag(this,"h1");>Título 1</p>'
				+'<p onclick='+nome+'.tag(this,"h2");>Título 2</p>'
				+'<p onclick='+nome+'.tag(this,"h3");>Título 3</p>'
				+'<p onclick='+nome+'.tag(this,"div");>Divisão</p>'
				+'<p onclick='+nome+'.tag(this,"li");>Lista</p>'
				+'<p onclick='+nome+'.tag(this,"li");>Lista Numerada</p>'
			;
			mPop.abre(o,null,ev);
		}
		//***********************************************
		function loop() {
			if (context()) {
				var va = browse.getId(''+nome+'Estilo');
				if (vazio(va)) {
					return;
				}
				va = va.innerHTML;
				var vn = '';
				var pos=0;
				for (var i=0;i<vContext.length;i++) {
					vn = '<span onclick='+nome
							+'.tag(this,'+pos+',event); class=cHtmlTag>'
							+vContext[i][0]+'</span>.'
						+'<span class=cHtmlClass onclick='
							+nome+'.clas(this,'+pos+',event);>'
							+vContext[i][1]+'</span>'
						+' '+vn
					;
					pos++;
				}
				if (va!=vn) {
					browse.getId(''+nome+'Estilo').innerHTML = vn;
				} else {
					//alert('igual e obj #');
				}
			}
			setTimeout(''+nome+'.loop()',1500);
		}
		//***********************************************
		function context() {
			try {
				if (formatoTxt) return false;
				var sel;
				if (browse.ie) {
					return false;
					//if (oIf.contentWindow.document.getSelection) {
					//sel = oIf.contentWindow.document.GetSelection();
					//alert(typeof(oIf.contentWindow.document.selection.type));
					if (oIf.contentWindow.document.selection.type!="None") {
						sel = oIf.contentWindow.document.selection; 
						//.createRange();
						objNav(sel);
						alert('tt');
					}
				} else {
					sel = oIf.contentWindow.getSelection();
				}
				if (vazio(sel)) {
					//provável modo txt
					return false;
				}
				var o = sel.focusNode;
				//.parentNode;
				if (obContext!=null && obContext==o) {
					return false;
				}
				obContext = o;
				vContext = new Array();
				while (!vazio(o) && (!o.tagName || o.tagName.toLowerCase()!='html')) {
					if (!vazio(o.tagName)) {
						vContext[vContext.length] = new Array(
							o.tagName
							,(vazio(o.className)?'?':o.className)
							,o
						)
					}
					o = o.parentNode;
				}
			} catch (e) {
				alert('ERRO contex(): '+e.description);
			}
			return true;
		}
		//***********************************************
		function sel(ob) {
			var sel = oIf.contentWindow.getSelection();
			//alert(sel.focusNode.parentNode.tagName);
			//objNav(sel);
      //var range = sel.getRangeAt(0);
			//alert(range);

			var pos = ob.selectedIndex;
			if (pos!=0) {
				var tag=ob.options[pos].value;
				var cmd = ob.getAttribute('id');
				//tag = 'h1 class="teste"';
				//alert(tag+' '+cmd);
				oIf.contentWindow.document.execCommand(cmd, false, tag);
			}
			oIf.contentWindow.focus();
		}
		//***********************************************
		function cmd(o) {
			var c = leftAt(substrRat(o.src,'/'),'.').substring(1);
			//alert(c);
			try {
				oIf.contentWindow.document.execCommand(c, false, null);
			} catch (e) {
				alert('ERRO em cmd='+c+"\n"+e);
			}
			oIf.contentWindow.focus();
		}
		//***********************************************
		function ferramentas() {
			if (!eval(nome+'.mostraFerramentas')) {
				return '';
			}
			//alert('bb1');
			var op = new Array("cut=Recortar"
				,"copy=Copiar"
				,"paste=Colar"
				,"undo=Desfaz"
				,"redo=Refaz"
				,"createlink=Cria Link" 
				,"createimage=Insere Imagem" 
				,"createtable=Insere Tabela"
				,"bold=Negrito"
				,"italic=Itálico"
				,"underline=Sublinhado"
				,"forecolor=Cor da Fonte"
				,"hilitecolor=Cor do Fundo"
				,"justifyleft=Alinha a Esquerda"
				,"justifycenter=Alinha no Centro"
				,"justifyright=Alinha a Direita"
				,"insertorderedlist=Numerar" 
				,"insertunorderedlist=Tópicos" 
				,"outdent=Aumenta margem Esquerda"
				,"indent=Diminui margem Esquerda"
			);
			//var r = '<table class=cHtmlFerram><tr>';
			//var r = '<div class=cHtmlFerram id=cHtmlFerram STYLE="POSITION: absolute; VISIBILITY: hidden;">';
			var r = '<table>'
				+'<tr><td><div class=cHtmlFerram id='+nome+'Ferram>'
			;
			for (var i=0;i<op.length;i++) {
				r += '<span><img src="/imagens/edit/'+leftAt(op[i],'=')+'.gif"'
					+' alt="'+substrAt(op[i],'=')+'"'
					+' title="'+substrAt(op[i],'=')+'"'
					+' onclick="'+nome+'.cmd(this);"'
					+'></span>'
				;
			}
			r += '</div>'
				+'<tr><td>'
				+'<table class=cHtmlEstilo><tr>'
				+'<td class=cHtmlPrin>'
				+'<span onclick="javascript:'+nome+'.arquivo(this,event);"'
					+' title="Arquivo" alt="Arquivo">+</span>'
				+'<span onclick="javascript:'+nome+'.format(this,event);"'
					+' title="Formatar" alt="Formatar">Formatar</span>'
				+'</span>'
				+'<td  id='
					+nome+'Estilo><h1>Estilo</h1>'
				+'</table>'
				+'</table>'
			;
			return r; 
			//+op.length;
		}
		//***********************************************
		function htmlC() {
			mPop.fecha();
			var v = oIf.contentWindow.document.body.innerHTML;
			if (htm) {
				v =  troca(troca(v,'&lt;','<'),'&gt;','>');
				htm = false;
			} else {
				v = html(v);
				htm = true;
			}
			oIf.contentWindow.document.body.innerHTML = v;
		}
		//***********************************************
		function limpa() {
			mPop.fecha();
			oIf.contentWindow.document.body.innerHTML = '';
		}
		//***********************************************
		//testa se txt
		function txt(ht) {
			if (trimm(ht)=='' || trimm(ht)=='<pre></pre>') {
				return '';
			}
			if (ht.indexOf('<')==-1) {
				return '<pre>'+troca(ht,'&nbsp;',' ')+'</pre>';
			}
			var a = delTag(troca(troca(ht,'\r',''),'\n',' '),'<br','>','\r\n');
			//alert(a);
			if (a.indexOf('<')==-1 && a.indexOf('&nbsp;&nbsp;&nbsp;&nbsp')!=-1) {
				a = '<pre>'+troca(a,'&nbsp;',' ')+'</pre>';
				//alert(a);
				return a;
			}
			return ht;
		}
		//***********************************************
		//deleta tags
		function delTag(ht,ini,fim,tr) {
			if (typeof(tr)=='undefined') {
				tr = '';
			}
			var ht1 = ht.toLowerCase();
			var p,nv=0;
			//alert('loop fim='+fim+' para inicio='+ini+'\n'+ht);
			while ((p=ht1.indexOf(ini))!=-1) {
				if (nv++>1000) {
					alert('loop fim='+fim+' para inicio='+ini);
					return ht;
				}
				var p1 = ht1.indexOf(fim,p+ini.length);
				if (p1 == -1) {
					alert('não achei fim='+fim+' para inicio='+ini);
					return ht;
				}
				ht = ht.substring(0,p)+tr+ht.substring(p1+fim.length);
				ht1 = ht.toLowerCase();
			}
			return ht;
		}
		//***********************************************
		//retorna o valor
		function get() {
			var ht;
			if (htm) {
				htmC();
			}
			if (this.txt && formatoTxt) {
				ht = document.__formul['tx_'+nome].value;
			} else {
				ht = oIf.contentWindow.document.body.innerHTML;
			}
			ht = delTag(ht,'<script','</script>');
			return ht;
		}
		//***********************************************
		//pega do iframe e coloca no campo hidden
		function carrega() {
			if (htm) {
				htmC();
			}
			if (this.txt && formatoTxt) {
				ht = document.__formul['tx_'+nome].value;
			} else {
				var ht = oIf.contentWindow.document.body.innerHTML;
				ht = delTag(ht,'<head','</head>');
				ht = delTag(ht,'<title','</title>');
				ht = delTag(ht,'<script','</script>');
				ht = delTag(ht,'<style','</style>');
				ht = delTag(ht,'<meta','>');
				ht = delTag(ht,'<base','>');
				ht = delTag(ht,'<link','>');
				ht = delTag(ht,'_base_href="','"');
				ht = delTag(ht,'<body','>');
				ht = delTag(ht,'</body','>');
				ht = delTag(ht,'<html','>');
				ht = delTag(ht,'</html','>');
				ht = troca(ht,"\t",' ');
				ht = troca(ht,"\r",'');
				ht = trimm(ht);
				ht = txt(ht);
			}
			alert('carrega'+oCm.name+'   =='+ht);
			oCm.value = ht;
		}
		//***********************************************
		function modoEd(modo) {
			//alert(this.txt);
			if (!this.txt) return;
			//formatoTxt = modo;
			if (typeof(modo)=='string') {
				formatoTxt = document.forms[0][nome].value!='h';
			} else {
				formatoTxt = !formatoTxt;
			}
			//alert(formatoTxt);
			if (!formatoTxt) {
				browse.esconde(browse.getId(''+nome+'DivTxt'));
				browse.mostra(browse.getId(''+nome+'Div'));
				try {
					if (oIf) {
						oIf.contentWindow.document.designMode = "on";
						//alert('ed ok');
					}
				} catch (e) {
					//objNav(oIf);
					alert('ERRO tornando editável--- '+e);
				}
			} else {
				obContext = null;
				browse.esconde(browse.getId(''+nome+'Div'));
				browse.mostra(browse.getId(''+nome+'DivTxt'));
			}
			if (typeof(modo)=='string') {
				document.forms[0][nome].value = this.formatoE;
				var r = document.forms[0][nome].parentNode.parentNode.childNodes[0];
				r.innerHTML = r.innerHTML
					+'<br><input type=button onclick='+nome+'.modoEd(this'
					+'); value='+(!formatoTxt?'txt':'html')+'>'
				;
			} else {
				//objNav(modo);
				modo.value = (!formatoTxt?'txt':'html');
			}
			document.forms[0][nome].value = (formatoTxt?'t':'h');
		}
		//***********************************************
		//retorna valor e seta editável o iframe
		function mostra() {
			//aceita txt tb?
			//objNav(document.forms[0][nome]);
		
			oIf = browse.getId(''+nome);
			//alert(oIf.contentWindow.document.baseURI);
			try {
				oCm = document.__formul['_'+nome+'_'];
			} catch (e) {
				//alert('não encontrei cmp '+'_'+nome+'_');
			}
			if (vazio(oCm)) {
				oCm = browse.getId(''+nome+'InH');
			}
			//objNav(oCm);
			try {
				if (!formatoTxt) {
					oIf.contentWindow.document.designMode = "on";
				}
			} catch (e) {
				//objNav(oIf);
				alert('ERRO tornando editável 2-- '+e);
			}
			
			//campos migrados de txt
			if (!this.txt && valor.indexOf('\n')!=-1 && valor.indexOf('<')==-1) {
				valor = troca(troca(valor,'\r',''),'\n','<br>\r\n');
			}
			
			//poe body e stylesets
			if (win) {
				//alert('cont...');

				var bs = leftRat(leftRat(''+win.location,'?'),'/');
				try {
					oIf.contentWindow.document.execCommand("useCSS", false, true);
				} catch (e) {
					//objNav(e);
					if (!browse.ie) {
						alert('err useCSS='+e.description);
					}
				}
				//carrega os CSS
				var cs = '';
				var st = win.document.styleSheets;
				for (var i=0;i<st.length;i++) {
					//objNav(st[i]);
					if (right(st[i].href,4).toLowerCase()=='.css') {
						cs += '<LINK REL="StyleSheet" HREF="'
							+st[i].href+'">';
					}
				}
				//alert(cs);
				valor = ''
					+'<BASE href="'+bs+'/">'+cs
					+valor
				;
			}
			
			if (browse.ie) {
				//alert('IE. vai setar vlr');
				oIf.contentWindow.document.write(vazio(valor)?'&nbsp;':valor);
				//alert('IE. vai setar vlr');
			} else {
				//alert(oIf.contentWindow.document.baseURI);
				oIf.contentWindow.document.body.innerHTML = valor;
				if (parent) {
					oIf.contentWindow.document.body.bgColor = 
						parent.document.body.bgColor;
				}
			}
			//alert(oIf.contentWindow.document.body.innerHTML+' = '+valor);
			
			//vigia
			//alert('vai modo...');
			this.modoEd('');
			loop();

			if (typeof(fD)=='object') {
				fD.onSubmit[fD.onSubmit.length] = ''+nome+'.carrega();';
			}

			return;
		}
	}
	//*******************************
	// fim campoHTML
	//*******************************



//*******************************//
// intranet
//*******************************//
function intranet(Nome) {
	var nome = Nome;
	var w;
	this.abre = abre;
	this.mostra = mostra;
	setTimeout(nome+'.abre();',1000);
	//*******************************//
	function mostra() {
		alert(w);
		//w.document.write(
		return (
			'<html><body>'
			+'<table>'
			+'<tr><td>a'
			+'<tr><td>a'
			+'</table>'
			+'</html>'
		);
	}
	//*******************************//
	function abre() {
		//alert(opener);
		//window.intra = opener.intra 'about:blank';
		w = new winDep(window,'javascript:opener.'+nome+'.mostra()');
		//setTimeout('javascript:'+nome+'.mostra()',1000);
		w.w=70;
		w.h=300;
		w.abre();
	}
}


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

	function opImprM(o,ev,url) {
		tabRelUrl = url;
		opImprMenu.abre(o,0,ev);
	}
	function imprPdfT() {
		tabRel = browse.getId('__tabRel');
		var b = browse.getId('botPdf');
		if (b.length) {
			b = b[0];
		}
		if (objLen(tabRel)!=0 && tabRel.rows
			&& tabRel.rows.length!=0 && !vazio(b)) {
			b.innerHTML = '<img src=/imagens/print.gif '
				+'onclick=opImprMenu.abre(this,0,event);>'
			;
		}
	}



	//*******************************
	function aAtalhos(e) {
			var x = document.getElementsByTagName('div');
			for (var i=0;i<x.length;i++)	{
				if (x[i].getAttribute('class') == 'atRapido') {
					var y = x[i].getElementsByTagName('a');
					for (var i1=0;i1<y.length;i1++) {
						y[i1].href = y[i1].href+'&atRapido=1';
						//alert(y[i].href);
					}
				}
			}
			
			var p = new pedido();
			if (p.param('menu')=='0' && (
				(p.param('__modo')=='V' && (x=browse.getId('mostraTab')))
				||
				(p.param('__modo')=='P' && (x=browse.getId('tabConsulta'))) )) {
				x = x.getElementsByTagName('a');
				for (var i=0;i<x.length;i++)	{
					var a = ''+x[i].href;
					if ( !vazio(a) && !equals(a,'mailto:') && !equals(a,'javascript:')
						&& equals(a,leftAt(''+window.location,'?'))) {
						//alert(a+"\n"+window.location);
						x[i].href='javascript:desvO("'+troca(x[i].href,'__modo=V','__modo=A')+'",top.opener);';
					}
				}
			}

	}

	//*******************************
	function ascan(arr,vlr) {
		for (prop in arr) {
			if (arr[prop]==vlr) {
				return prop;
			}
		}
		return -1;
	}
	
	//*******************************
	function desvO(url,win) {
		win.location=url;
		win.focus();
	}
	//*******************************
	function desv(url,ev) {
		if (ev.ctrlKey) return;
		window.location=url;
	}


	//*********************************
	function movePara(nome,o,o1,o2) {
		var oO = o;
		var oD = o1;
		var oT = o2;
		oD.style.visibility = 'hidden';
		oD.innerHTML = oO.innerHTML;
		var xA = browse.getAbsX(oO);
		var yA = browse.getAbsY(oO);
		var tA = browse.getTX(oO);
		var xD = browse.getAbsX(oD);
		var yD = browse.getAbsY(oD);
		var tD = browse.getTX(oD);
		var xI,yI;
		this.passos = 4;
		this.tempo = 30;
		this.ativo = false;
		this.move = move;
		var np=0;
		//*********************************
		function move() {
			if (nulo(xI)) {
				xI = (xD-xA)/this.passos;
				yI = (yD-yA)/this.passos;
				fI = (100-25)/this.passos;
				wI = (tD-tA)/this.passos;
				this.ativo = true;
				oT.innerHTML = oO.innerHTML;
				oT.style.fontSize = '25%';
				oT.style.visibility = 'visible';
				oT.style.width = tA+'px';
				oT.style.position = "absolute";
				//alert(xI+' yI='+yI);
			}
			xA += xI;
			yA += yI;
			if (np==this.passos-1) { 
				this.ativo = false;
				oT.style.visibility = 'hidden';
				oD.style.visibility = 'visible';
				//alert('fim passos='+np);
			} else {
				np++;
				oT.style.visibility = 'hidden';
				oT.style.fontSize = (25+np*fI)+'%';
				oT.style.width = (tA+wI*np)+'px';
				browse.setX(oT,xA);
				browse.setY(oT,yA);
				oT.style.visibility = 'visible';
				setTimeout(nome+'.move();',this.tempo);
			}
		}
	}

	//*********************************
	// controle de preferencias usuário
	//*********************************
	// controle de subRelatórios
	function subItem(spa,id) {
		var d = browse.getId(id);
		var img = spa.getElementsByTagName('img')[0];
		//objNav(img);
		//var v = d.style.position!='absolute';
		var v = img.src.indexOf('aberto')!=-1;
		if (v) {
			img.src = '/imagens/fechado.gif';
			//spa.innerHTML = '<img class=abre src=\"/imagens/fechado.gif\">';
			d.style.position='absolute';
			browse.esconde(d);
		} else {
			img.src = '/imagens/aberto.gif';
			//spa.innerHTML = '<img class=abre src=\"/imagens/aberto.gif\">';
			d.style.position='static';
			browse.mostra(d);
		}
		setarPrefs(id+'='+(v?'0':'1'));
	}
	//*********************************
	// OBJETO imagem POPUP
	//*********************************
	var objImagePopUp;
	function imagePopUp(urlS,nomeWin,titWin) {
		this.nomeW = vazio(nomeWin)?'img':nomeWin;
		this.titW = vazio(titWin)?urlS:titWin;
		this.load = load;
		this.url = urlS;
		var url = this.url;
		var img;
		this.img = img;
		//alert('teste'+browse.ie);
		try {
			var j = trocaChars(''+nomeWin,'.: ,?/\\<>;[]{}=-_+','_');
			//alert(j);
			var win = window.open('about:blank'
				,j
				,'toolbar=no,width=250,height=200'
			);
			//alert('teste'+browse.ie);
			//alert('w='+win.document);
			//objNav(win);
			win.document.write('<html><head><title>'+this.titW+'</title></head>'
				+'<scr'+'ipt language="JavaScript" src="fun.js"></scr'+'ipt>'
				+'<scr'+'ipt language="JavaScript" src="/jsCSSEditor/jsCSSEditor.js"></scr'+'ipt>'
				+'<scr'+'ipt>'
				+'var img,oImg;'
				+'function onL() {'
				//+' alert("load");'
				+' oImg = opener.objImagePopUp;'
				+' img = new Image();'
				+' img.src = oImg.url;'
				+' oImg.img = img;'
				+' oImg.load();'
				+'}'
				+'</scr'+'ipt>'
				+'<LINK REL="StyleSheet" HREF="estilo.css">'
				+'<body class=img onclick="jsCSSEditor(this,event);"'
					+'>Carregando!'
				//<img src="'+url+'">'
				+'</body></html>'
			);
		} catch (e)  {
			alert(nomeWin+' erro '+e.description);
			alert('unBlock popUp...');
			return;
		}
		this.win = win;
		objImagePopUp = this;
		setTimeout('objImagePopUp.win.onL()',500);
		//*********************************
		function load() {
			img = this.img;
			var w = img.width;
			var h = img.height;
			if (w<1 || h<1) {
				setTimeout('objImagePopUp.load()',200);
				return;
			}
			var tw = screen.availWidth*0.8;
			var th = screen.availHeight*0.8;
			if (w>tw || h>th) {
				var d = Math.max(w/tw,h/th);
				w /= d;
				h /= d;
			}
			win.resizeBy(
				w*1.1-win.document.body.clientWidth
				,h*1.06-win.document.body.clientHeight
			);
			win.document.body.innerHTML = 
				'<table class=img height=100% width=100%><tr>'
				+'<td valign=middle align=center>'
				+'<img align=center src="'+url+'" width='+w+' height='+h+'>'
				+'</table>'
			;
			win.focus();
			//alert('w='+w+' h='+h);
		}
	}


//*******************************//
//funções cookie
	//********************
	function cookieGet(nome) {
		var co = document.cookie+';';
		var i = co.indexOf(nome+'=');
		var f = co.indexOf(';',i+nome.length+1);
		if (i==-1 || f<=i) {
			return null;
		} else {
			return unescape(co.substring(i+nome.length+1,f));
		}
	}
	//********************
	function cookiePut(nome,vlr,venceDias) {
		if (venceDias!=0 && vazio(venceDias)) {
			venceDias = 120;
		}
		var v = new Date();
		v.setTime(v.getTime() + 1000*60*60*24*venceDias);
		v = v.toGMTString();
		document.cookie = nome + '=' + vlr
			+(venceDias==0?'' : '; expires=' + v)+'; path=/'
		;
	}



//*****************************************************
// objeto PARA DESANEXAR PARTES DE HTML
//*****************************************************
var oDsnx = new Array();
//*****************************************************
function desanexar(idDesanex) {
	var id = idDesanex;
	this.desanexaC = desanexaC;
	oDsnx[id] = this;
	//abre a janela nova
	var ob=browse.getId(id);
	var w = new winDep(window,'javascript:opener.oDsnx[\''+id+'\'].desanexaC();');
	w.tipo = 3;
	w.w = browse.getTX(ob);
	//objNav(ob);
	w.h = Math.min(browse.tamWinY(),browse.getTY(ob)+30);
	w.abre();
	//***************************************************
	//***************************************************
	//mostra HTML na janela nova
	function desanexaC(win) {
		//alert(leftAt(document.documentElement.innerHTML,'<body'));
		var bs = leftAt(window.location+'?','?');
		var p = document.documentElement.innerHTML.indexOf('<body');
		if (p<0) {
			p = document.documentElement.innerHTML.indexOf('<BODY');
		}
		var b = ob.innerHTML;
		if (browse.ie) {
			b = troca(b,'<INPUT','<INPUT disabled');
			b = troca(b,'<SELECT','<SELECT disabled');
			b = troca(b,'<TEXTAREA','<TEXTAREA disabled');
		} else {
			b = troca(b,'<input','<input disabled');
			b = troca(b,'<select','<select disabled');
			b = troca(b,'<textarea','<textarea disabled');
			//b = troca(b,'<input','<input disabled');
		}
		
		//carrega os CSS
		var cs = '';
		//objNav(document);
		var st = document.styleSheets;
		for (var i=0;i<st.length;i++) {
			if (right(st[i].href,4).toLowerCase()=='.css') {
				cs += '<LINK REL="StyleSheet" HREF="'
					+st[i].href+'">';
			}
		}
		
		//scripts...
		var sc='',s = document.documentElement.innerHTML.substring(p);
		var i=0,x,y;
		while ((x=s.indexOf('<script',i))!=-1) {
			if ((y=s.indexOf('</script',x))==-1) {
				alert('não achei fim script!');
			} else {
				x = s.indexOf('>',x);
				sc += s.substring(x+1,y);
			}
			i = y;
		}
		//alert(sc);
		
		
		//tag original
		b = '<'+ob.tagName+' class="'+ob.className+'">'
			+b
			+ '</'+ob.tagName+'>'
		;
		//alert(cs);
		
		var h = (
			//'<html><head><title>Katalogos - 3WS Sistemas</title></head>'
			//+'<BASE href=https://signey.dyndns.org/>'
			//+'<script language="JavaScript" src="/js/jan.js"></script>'
			//+'<LINK REL="StyleSheet" HREF="/estilos/kat.css">'
			'<html><BASE href='+bs+'>'
			+document.documentElement.innerHTML.substring(0,p)
			//+'<LINK REL="StyleSheet" HREF="/estilos/cimi.css">'
			+cs
			+'<script>'+sc+'</script>'
			+"<body  onclick=jsCSSEditor(this,event); onload=evento('load') onfocus=evento('focus') onresize=evento('resize'); onblur=evento('focusOut'); onunload=evento('close');>"
			+b
			+'</body>'
			+'</html>\r\n\r\n'
		);
		
		return h;
		
	}
}
//*****************************************************
// FIM DESANEXAR PARTES DE HTML
//*****************************************************



/*
,objNavAlvo;
function objNavR(a) {
	return objNavAlvo[a];
}
*/

//alert('janjs');
//desliga editor
//alert('ini');
//document.designMode = 'off';

//if (confirm('ver estilos')) {
// setTimeout('objNav(getAllSheets())',1000);
//}

function getAllSheets() {
	if( !window.ScriptEngine && navigator.__ice_version ) {
		return document.styleSheets; 
	}
	if( document.getElementsByTagName ) {
		var Lt = document.getElementsByTagName('link');
		var St = document.getElementsByTagName('style');
	} else if( document.styleSheets && document.all ) {
		var Lt = document.all.tags('LINK');
		var St = document.all.tags('STYLE');
	} else {
		return [];
	}
	for( var x = 0, os = []; Lt[x]; x++ ) {
		var rel = Lt[x].rel 
			? Lt[x].rel 
			: Lt[x].getAttribute 
				? Lt[x].getAttribute('rel') 
				: ''
		;
		if( typeof( rel ) == 'string' 
			&& rel.toLowerCase().indexOf('style') + 1 ) {
			os[os.length] = Lt[x];
		}
	}
	for( var x = 0; St[x]; x++ ) {
		os[os.length] = St[x];
	}
	return os;
}




//armazeda dados do cliente
var cli=new Array;
cli['centra'] = true;

	//********************************
	function clone(o) {
		var r = new Array();
		var z;
		for(var prop in o) {
			try {
				z = o[prop];
			} catch (e) {
				z = '?erro:'+e;
			}
			r[prop] = z;
		}
		return r;
	}

	//********************************
	function menuSis2(o) {
		window.location = '/'+o.value+'.class';
	}
	//********************************
	function menuSis1(sisAtual,s) {
		var v=palavraA(trimm(s,','),',');
		if (v.length<2) {
			return '';
		}
		v.sort(function (a,b) {return (a.toLowerCase()<b.toLowerCase()?-1:0);});
		var r='<scr'+'ipt>var menuS_v = new Array();';
		for (var i=0;i<v.length;i++) {
			if (leftAt(v[i],'=')!=sisAtual) {
				var cl = raizWeb+leftAt(v[i],'=')+'.class';
				var n = troca(v[i].substring(0,1).toUpperCase()+v[i].substring(1),'=',' - ');
				r += 'menuS_v[menuS_v.length]="'+n+'~~'+cl+'";';
			}
		}
		r += "var menuS = new menuPopUp('menuS','',menuS_v,'','menSPop');"
			+"menuS.evento = false;menuS.posEsq=1;"
			+'</scr'+'ipt>';
		//alert(r);
		return r;
	}
	//********************************
	function menuSis1a(s) {
		var v=palavraA(trimm(s,','),',');
		//,pdf,cli,kat,base,wwws,fd,adv,quilos,cs,agenda,Log,csu,cgs,lab,usu,
		var r='<td class=ctrlSis><select class=ctrlSis onchange=menuSis2(this);>'
			+'<option>'
		;
		for (var i=0;i<v.length;i++) {
			if (',pdf,base,agenda,'.indexOf(','+v[i]+',')==-1) {
				r +='<option value='+v[i]+'>'+v[i];
			}
		}
		return '</select>'+r;
	}
	//********************************
	function menuSis(sisa,s,s1) {
		var ms = menuSis1(sisa,s);
		document.write(ms
			+"<div class=ctrlSis1><table class=ctrlSis><tr>"
			+(ms==''?''
				:"<td class=ctrlSis><a href=# onclick=javascript:menuS.abre(this,'',event);>+</a>")
			+(s1.indexOf(',CHAT,')==-1?''
				:"<td class=ctrlSis><a title=Chat href='javascript:chatAbre();'>"
				+"<img valign=center class=ctrlSis border=0 src=/imagens/chat.gif></a>")
			+"<td class=ctrlSis><a title=Calendário href='javascript:caleAbre();'>"
				+"<img valign=center class=ctrlSis border=0 src=/imagens/cale.gif></a>"
			+"<td class=ctrlSis><a title=Calculadora href='javascript:calcAbre();'>"
				+"<img valign=center class=ctrlSis border=0 src=/imagens/calc.gif></a>"
			+"<td class=ctrlSis><a title=Correio href='javascript:correioAbre();'>"
				+"<img valign=center class=ctrlSis border=0 src=/imagens/correio.gif></a>"
			+(s1.indexOf(',PREFS,')==-1?''
				:"<td class=ctrlSis><a title='Preferências do Usuários' href='javascript:prefsAbre();'>"
				+"<img valign=center class=ctrlSis border=0 src=/imagens/prefs.gif></a>")
			+"<td class=ctrlSis><a title='Sair (logoff)' href='javascript:sair();'>"
				+"<img class=ctrlSis border=0 src=/imagens/sair.gif></a>"
			//+menuSis1(s)
			+"</table></div>"
		);
	}


	//********************************
	function prefsAbre() {
		var e = ''+window.location;
		e = '/'+leftAt(substrAt(substrAt(e,'//'),'/')+'?','?');
		var ww=new winDep(window,e+'?op=prefs&menu=0');
		ww.w=320;ww.h=250;ww.centrada=false;ww.scr='no';
		ww.tipo=3;ww.abre();
	}
	//********************************
	function caleAbre() {
		var ww=new winDep(window,'/js/cale.html');
		ww.w=200;ww.h=250;ww.centrada=false;ww.scr='no';
		ww.tipo=3;ww.abre();
	}
	//********************************
	function sair() {
		window.location = '?op=sair&segs='+ms();
	}
	//********************************
	function correioAbre() {
		var ww=new winDep(window,'/Objetivo/index.html');
		ww.w=740;ww.h=350;ww.centrada=false;ww.scr='no';
		ww.tipo=3;ww.abre();
	}
	//********************************
	function calcAbre() {
		var ww=new winDep(window,'/js/calc.html');
		ww.w=240;ww.h=350;ww.centrada=false;ww.scr='no';
		ww.tipo=3;ww.abre();
	}
	//********************************
	function chatAbre(sl) {
		var ww=new winDep(window,raizWeb+'chat.class'+(vazio(sl)?"":"?s="+sl));
		ww.w=400;ww.centrada=false;ww.h=500;
		ww.tipo=3;ww.abre();
	}
	//*********************************
	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);
	}

	//*********************************
	function campoArqAt(nome) {
		if (false && browse.IE4) {
			window.location = 'pprs://'+nome;
		} else {
			window.location = '/dww.class?arq='+nome;
		}
	}



	//*********************************
	//*********************************
	// entrada de dados popUP
	//*********************************
	function entraPopUp(url,larguraMin) {
		abrePopUp(url,larguraMin);
	}
	//***************************************************
	//abre a janela nova
	function relPopUp(printOuUrl,ev) {
		if (ev && ev.ctrlKey) {
			return;
		}
		if (typeof(printOuUrl)=='string') {
			var iprint = false;
			var p = new pedido(printOuUrl);
		} else {
			var iprint = printOuUrl;
			var p = new pedido();
		}
		p.put('menu',0);
		if (iprint) {
			p.put('print',1);
		}
		var ob=browse.getId('menuDad');
		if (vazio(ob)) {
			ob = top.document.body;
		}
		var w = new winDep(window,p.atalho());
		w.tipo = 3;
		w.w = browse.getTX(ob);
		w.h = Math.min(browse.tamWinY()*(browse.ie?0.8:1),browse.getTY(ob)-30);
		w.abre();
		//return;
	}
	//*********************************
	function abrePopUp(url,larguraMin) {
		this.url = url+'&menu=0&popUp=1';
		win=new winDep(window,this.url);
		win.tipo = url.indexOf('__modo=P')==-1 && url.indexOf('__modo=prop')==-1?0:3;
		win.frame = true;
		win.w=vazio(larguraMin)?420:larguraMin;
		win.h=100;
		win.abre();
	}

 
//******************************
//para entrada de data
//******************************
function browseData(nomeDiv,nomeTex,nomeH) {
	this.nomeTex = nomeTex;
	this.div = browse.getId(nomeDiv);
	this.cal = new calendMes(nomeDiv,nomeTex,nomeH);
	for(var prop in this.cal) {
		this[prop] = this.cal[prop];
	}
	this.aberto = false;
	this.modo = 0;
 
	this.abre = browseData_Abre;
	this.abre1 = browseData_Abre1;
	this.abre2 = browseData_Abre2;
	this.fecha = browseData_Fecha;
	this.clickP = browseData_clickP;
	//******************************
	function browseData_clickP(d) {
		var v = palavraA(d,"-");
		this.dest.value = v[2]+"/"+v[1]+"/"+v[0];
		this.fecha();
	}
	//******************************
	function browseData_Fecha() {
		if (this.modo==0) {
			browse.esconde(this.div);
		} else {
			this.obj.innerHTML = '';
		}
		this.aberto=false;
		try {
			fD.selects(true);
		} catch (e) {
		}
	}
	//******************************
	function browseData_Abre1(ob) {
		this.dest = document.__formul[ob];
		var o = new winDep(top,'');
		o.centrada = false;
		o.w=100;o.h=100;
		o.debug = true;
		o.scr = 'no';
		if (!o.abre()) {
			return;
		}
		var ob = browse.getId("browseDataO");
		//obj(ob);
		o.on('<html><body TOPMARGIN=0 LEFTMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>'
		+''+ob.innerHTML+''
		+'</body></html>'
		);
		var ob = browse.getId('cld',o.obj.document);
		//obj(this.cal.obj);
		this.obj = browse.getId(this.nomeTex,o.obj.document);
		//obj(this.cal.obj);
		o.obj.browseDataO = this;
		//obj(ob,'number');
		//alert('w='+ob.offsetWidth+' h='+ob.offsetHeight);
		//o.obj.resizeTo(ob.offsetWidth+50,ob.offsetHeight+40);
		o.obj.resizeTo(ob.offsetWidth+20,
		ob.offsetHeight+10+(browse.ie?50:0));
		//ob.width = '100%';
		o.obj.focus();
	}
	//******************************
	function browseData_Abre(obj) {
		if (this.aberto) {
			this.fecha();
			return;
		}
		this.aberto = true;
		this.dest = document.__formul[obj]; 
		//browse.getId(obj);
		//alert(obj+' '+this.dest);
		if (this.dest.value.length>0) {
			this.cal.set(this.dest.value);
		}
		//debug(this.dest);
		//alert(this.dest.controllers.getControllerAt(0));
		//alert(obj(this.dest));
		browse.mostra(this.div);
		try {
			fD.selects(false);
		} catch (e) {
			//alert(''+e);
			//obj(e);
		}
		var x = browse.getAbsX(this.dest)+browse.getTX(this.dest);
		var y = browse.getAbsY(this.dest)-browse.getTY(this.div);
		//testa se vai ficar fora
		y = y<0?0:y;
		var tj = browse.tamWinX();
		if (x+browse.getTX(this.div)>tj) {
			x =  tj-browse.getTX(this.div);
		}
		browse.setX(this.div,x);
		browse.setY(this.div,y);
		//alert('x='+x+'y='+y+' '+obj+' '+this.dest);
	}
	//******************************
	function browseData_Abre2(sOb) {
		if (this.aberto) {
			this.fecha();
			if (this.abertoN==sOb) {
				return;
			}
		}
		this.aberto = true;
		this.abertoN = sOb;
  
		this.dest = document.__formul[sOb];
		var ob = browse.getId('browseDataO');
		var dd = browse.getId(sOb+'_');
		//dd.innerHTML = browse.getId('browseDataT').innerHTML;
		//browse.esconde(dd);
		//var ob = browse.getId('cld',o.obj.document);
		this.obj = dd;
		this.monta();
		this.modo = 1;
	}
}

//**************************//
// objeto calendMes
//**************************//
function calendMes(nome,nomeLocTex,nomeLocHoje) {
	this.fSize1 = 1;
	this.fSize2 = 2;
	//nome da var que armazena este objeto
	//objeto para atribuir innerHTML
	this.nome = nome;
	this.obj = browse.getId(nomeLocTex);
	this.objH = browse.getId(nomeLocHoje);
	this.mDia = 1000*60*60*24;
 
	this.monta = calendMes_Monta;
	this.iMes = calendMes_iMes;
	this.iAno = calendMes_iAno;
	this.iDia = calendMes_iDia;
	this.clickP = calendMes_Click;
	this.dataF = calendMes_dataF;
	this.feriado = calendMes_Feriado;
	this.set = calendMes_Set;
	this.cha = calendMes_Char;
	this.horas = calendMes_horas;
 
	this.corH = '"#07FFFF"';
 
	this.hVerao = new Array();
 
	this.fer = Array();
	this.fer[1.0] = 'Ano Novo';
	this.fer[21.03] = 'Tiradentes';
	this.fer[1.04] = 'Trabalho';
	this.fer[7.08] = 'Independência';
	this.fer[12.09] = 'Criança';
	this.fer[2.10] = 'Finados';
	this.fer[15.10] = 'República';
	this.fer[25.11] = 'Natal';
 
	this.set(this.dataF(new Date()));
	//**************************//
	function calendMes_Char(d) {
		var r='';
		for (var i=0;i<d.length;i++) {
			r += '<br>'+d.substring(i,i+1);
		}
		return r.substring(4);
	}
	//**************************//
	function calendMes_Set(d) {
		var v;
		d = trimm(d);
		if (d.indexOf(' ')!=-1) {
			d = leftAt(d,' ');
		}
		if (d.indexOf("/")!=-1) {
			v = palavraA(d,"/");
			this.ano = v[2]*1;
			this.mes = v[1]-1;
			this.dia = v[0]*1;
		} else {
			v = palavraA(d,"-");
			this.ano = v[0]*1;
			this.mes = v[1]-1;
			this.dia = v[2]*1;
		}
		if (this.ano==0) {
			//this.monta();
			return;
		}
		this.data = new Date(this.ano,this.mes,this.dia);
		//alert('data='+this.data+' par='+d);
  
		//seta data na aba
		if (objLen(this.objH)!=0) {
			var x = this.cha(tb_diaSemana[this.data.getDay()].toUpperCase())
			+'<br><br>&nbsp;&nbsp;'+this.data.getDate()
			+'<br><br>'+this.cha(tb_nomeMes[this.data.getMonth()]
			.toUpperCase().substring(0,3));
			this.objH.innerHTML = '<p align=right><font size=1><b>'+x+'</font></p>';
		}
		this.monta();
	}
	//**************************//
	function calendMes_Feriado(d) {
		var a = this.fer[d.getDate()+d.getMonth()/100];
		if (typeof(a)!='undefined') {
			return a;
		}
		return false;
	}
	//**************************//
	function calendMes_dataF(d,del) {
		if (typeof(del)=='undefined') {
			del='-';
		}
		var r;
		if (del=='-') {
			r = takeYear(d)+'-'+strZero(d.getMonth()+1,2)
				+'-'+strZero(d.getDate(),2);
		} else {
			r = strZero(d.getDate(),2)
				+'/'+strZero(d.getMonth()+1,2)+'/'+takeYear(d);
		}
		return r;
	}
	//**************************//
	function calendMes_Click(d) {
		if (typeof(this.click)=='undefined') {
			alert('Sete '+this.nome+'.click com a função que '
			+'recebera a data clicada neste formato '+d);
			return;
		}
		//eval(this.click+'(\''+d+'\')');
		this.click(d);
	}
	//**************************//
	function calendMes_horas(d0,d1) {
		return (
		new Date(takeYear(d1),d1.getMonth(),d1.getDate()).getTime()-
		new Date(takeYear(d0),d0.getMonth(),d0.getDate()).getTime()
		)/1000/60/60;
	}
	//**************************//
	function calendMes_iDia(d) {
		var h = d.getHours();
		if (h!=0 && h<12) {
			d = new Date(d.getTime()+(h>12?24-h:-h)*60*60*1000);
		}
		d = new Date(d.getTime()+this.mDia);
		h = d.getHours();
		if (h>12) {
			d = new Date(d.getTime()+(h>12?24-h:-h)*60*60*1000);
		}
		if (h!=0) {
			this.hVerao[this.dataF(d)]=h<12?'Inicio':'Fim';
		}
		return d;
	}
	//**************************//
	function calendMes_iAno(n) {
		this.ano += n;
		this.monta();
	}
	//**************************//
	function calendMes_iMes(n) {
		if (n>0) {
			this.mes++;
			if (this.mes>11) {
				this.ano++;
				this.mes=0;
			}
		} else {
			this.mes--;
			if (this.mes<0) {
				this.ano--;
				this.mes=11;
			}
		}
		this.monta();
	}
	//**************************//
	function calendMes_Monta() {
		var d = new Date(this.ano,this.mes,1);
		//mes ant
		var m1 = new Date(d.getTime()-1000*60*60*24);
		m1 = takeYear(m1)+strZero(m1.getMonth()+1,2);
		//mes prox
		var m2 = new Date(d.getTime()+45000*60*60*24);
		m2 = takeYear(m2)+strZero(m2.getMonth()+1,2);
  
		//var x = new Array('Dom','Seg','Ter','Qua','Qui','Sex','Sab');
		//var ma=' style="cursor: pointer;"><font color=blue>---\></font>';
		//var me=' style="cursor: pointer;"><font color=blue>\<---</font>';
		var me=' style="cursor: pointer;"><img src=/imagens/tr.gif>';
		var ma=' style="cursor: pointer;"><img src=/imagens/av.gif>';
		var r= '<table class=calend CELLSPACING=0 CELLPADDING=0 align=center border=1>'
		+'<tr><td colspan=7 align=center><font size='+this.fSize1+'>'
		+'<a onClick="'+this.nome+'.iMes(-1);" '+m1+me+'</a> '
		+tb_nomeMes[this.mes]
		+' <a onClick="'+this.nome+'.iMes(01);" '+m2+ma+'</a>'
		+'&nbsp;&nbsp;'
		//+'<td colspan=3>'
		+'<a onClick="'+this.nome+'.iAno(-1);" '+me+'</a> '
		+'<b>'+this.ano+'</b> '
		+'<a onClick="'+this.nome+'.iAno(01);" '+ma+'</a>'
		+'<tr>';
		for (var i=0;i<7;i++) {
			r += '<th align=center><font size='+this.fSize1+'>'+tb_diaSemana[i];
		}
		var dy=0;
		r += '<tr>';
		while (d.getDay()!=dy) {
			r += '<td>&nbsp;';
			dy++;
		}
		var fer='',hoje=new Date();
		//alert(hoje.getYear());
		hoje=(new Date(hoje.getYear()+1900,
		hoje.getMonth(),hoje.getDate())).getTime();
		//alert(hoje);
		while (this.mes==d.getMonth()) {
			dy = this.feriado(d);
			if (dy) {
				fer += '<b>'+d.getDate()+'</b> '+dy+'<br>';
			}
			r += '<td onClick='+this.nome+'.clickP(\''+this.dataF(d)+'\'); '
			+(this.dataF(this.data)==this.dataF(d)?' bgcolor='+this.corH:'')
			+' align=right style="cursor: pointer;"><b><font '
			+(d.getDay()==0 || dy?' color=red ':'')
			+(d.getTime()==hoje?' color=blue ':'')
			+' size='+this.fSize1+'>'
			+(d.getDay()==0 && dy?'<u>':'')+d.getDate();
			da = d;
			d = this.iDia(d);
			if (this.horas(da,d)!=24) {
				fer += '<b>'+d.getDate()
				+'</b> Dia com '+this.horas(da,d)+' horas<br>';
			}
			if (d.getDay()==0) {
				r += '<tr>';
			}
		}
		while (d.getDay()!=0) {
			r += '<td>&nbsp;';
			d = this.iDia(d);
		}
		if (fer.length>0) r += '<tr><td colspan=7><font size='+this.fSize1+'>'+fer;
		this.obj.innerHTML = r+'</table>';
	}
}

//**************************//
// o b j e t o divLado
//**************************//
function divF(nome) {
	this.aberto=false;
	this.nome = nome;
	this.ca = browse.getId(nome);
	if (!objLen(this.ca)) {
		alert('Não encontrei id='+nome);
	}
 
	this.fecha = divF_Fecha;
	this.abre = divF_Abre;
	//**************************//
	function divF_Abre() {
		browse.mostra(this.ca,false);
		this.aberto = true;
	}
	//**************************//
	function divF_Fecha() {
		browse.esconde(this.ca,false);
		this.aberto = false;
	}
}


//**************************//
// o b j e t o divLado
//**************************//
function divLado(nome,nomeAba) {
	this.aberto=true;
	this.nome = nome;
	this.ca = browse.getId(nome);
	if (!objLen(this.ca)) {
		alert('Não encontrei id='+nome);
	}
	this.ca1 = browse.getId(nomeAba);
	browse.setX(this.ca,0);
	browse.mostra(this.ca,false);
 
	//autofecha ativado
	this.autoFechaD = false; 
	 //ms autofecha
	this.autoFecha = 7000;
 
	this.fecha = divLado_Fecha;
	this.abre = divLado_Abre;
	this.ativo = divLado_Ativo;
	this.aFecha = divLado_aFecha;
 
	//this.fecha();
	//**************************//
	function divLado_aFecha() {
		if (!this.aberto) {
			this.autoFechaD = false;
			return;
		}
		var t = (new Date()).getTime();
		if (this.aFechaProx<t) {
			this.fecha();
			this.autoFechaD = false;
		} else {
			setTimeout(this.nome+'.aFecha()',t-this.aFechaProx);
			this.autoFechaD = true;
		}
	}
	//**************************//
	function divLado_Ativo() {
		if (!this.aberto) return;
		if (this.autoFecha<1) return;
		this.aFechaProx = (new Date()).getTime()+this.autoFecha;
		if (this.autoFechaD) return;
		this.aFecha();
	}
	//**************************//
	function divLado_Abre() {
		if (this.aberto) return;
		browse.setX(this.ca,0);
		this.aberto = true;
		//-(browse.getTX(this.ca)-browse.getTX(this.ca1)));
		//browse.mostra(this.ca,false);
	}
	//**************************//
	function divLado_Fecha() {
		if (!this.aberto) return;
		browse.setX(this.ca,
		-(browse.getTX(this.ca)-browse.getTX(this.ca1)));
		this.aberto = false;
	}
}
//fim DIVLADO


//******************************
// objeto Pedido
// retorna parametros conforme 
// location e permite reatribuir
// com fins de montar novo location
//******************************
function pedido(doc) {
	this.atalho = atalho;
	this.remove = remove;
	this.get = get;
	this.put = put;
	this.param = get;
	this.paramPut = put;
	this.set = put;
	this.paramToForm = paramToForm;
	this.refresh = refresh;
	this.getV = getV;
 
	//alert(typeof(doc));
	if (typeof(doc)=='undefined') {
		doc = window;
	}
	if (typeof(doc)=='string') {
		var url = doc;
		this.doc = window;
	} else {
		this.doc = doc;
		var url=''+doc.location;
	}
	var param = new Array();
	this.url = url; 
	var p = url.indexOf('?');
	if (p!=-1) {
		this.url = url.substring(0,p);
	}
	url = url.substring(p+1);
	var v = palavraA(url,'&');
	var c;
	for (var i=0;i<v.length;i++) {
		c = palavraA(v[i]+'=','=');
		param[c[0]] = unescape(troca(c[1],'+',' '));
	}
	//alert('v='+v);
	//ultimo parametro tem # atalho interno <a name=>
	if (c && param[c[0]].indexOf('#')!=-1) {
		param[c[0]] = leftRat(param[c[0]],'#');
	}
	//******************************
	function getV() {
		return param;
	}
	//******************************
	function paramToForm(frm) {
		for(var prop in param) {
			if (param[prop]!=null) {
				frm.appendChild(input(prop,param[prop]));
			}
		}
	}
	//******************************
	function atalho() {
		var r = '';
		for(var prop in param) {
			if (param[prop]!=null) {
				r += '&'+prop+'='+escape(param[prop]);
			}
		}
		//alert(r);
		return this.url+(r.length==0?'':'?'+r.substring(1));
	}
	//******************************
	function remove(ch) {
		param[ch] = null;
	}
	//******************************
	function get(a,b) {
		var r = param[a];
		if (vazio(r) && !nulo(b)) {
			return b;
		}
		return r;
	}
	//******************************
	function refresh() {
		this.put('segs',ms());
		doc.location = this.atalho();
	}
	//******************************
	function put(a,b) {
		param[a] = b;
	}
}


	//*********************************
	function desvia(url,ev) {
		if (!vazio(ev) && ev.ctrlKey) {
			return;
		}
		window.location = url;
	}



//*******************************//
//*******************************//
//*******************************//
// 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 (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
		//alert(s+' '+ev);
		if (!vazio(acoesEvento[s])) {
			for (prop in acoesEvento[s]) {
				//alert(acoesEvento[s][prop]);
				var x = acoesEvento[s][prop];
				if (x.indexOf('(')==-1) {
					x += '()';
				}
				eval(x);
			}
		}
  
		if (s=='resize') {
		}
		if (s=='load') {
			//alert('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)) {
				//alert('informa sup');
				parente.dRegistraWin(objPai.janPos);
			}
		}
		if (s=='focus') {
			//fecha janelas tipo 1 
			for (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) {
						//alert('Erro: '+e);
					}
				}
			}
		}
		if (s=='focusOut') {
			if (!vazio(objPai) && objPai.tipo==2) {
				//window.focus();
				//alert("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) {
					//alert('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 existeWin(url) {
		for (var i=0;i<wDep.length;i++) {
			if (wDep[i]!=0 && wUrl[i]==url) {
				try {
					wDep[i].document.write('');
					wDep[i].focus();
				} catch(e) {
					//alert('e='+e);
					wDep[i]=0;
					return false;
				}
				return true;
			}
		}
	}
 
	//*******************************//
	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) {
		objA(e);
	}
	//*******************************//
	function erro(e) {
		//objNav(e);
		//http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Error
		if (typeof(e)=='string') {
			return (e+' (string)');
		} 
		return 'Erro='
			+e.name
			+(browse.ie?' ('+e.number+')':'')
			+' '+e.message
			+' '+(browse.ie?' '+e.description:'')
			+(!browse.ie?troca(''+e.stack,'@','\n'):'')
		;
		//return 'erro='+troca(''+e.stack,'@','\n');
	}
	//*******************************//
	function centra(ob,noOb) {
		var xy = centraCoo(ob,noOb);
		//alert(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);
		//alert(pX+'-'+pY+' pa='+dv.style.left+','+dv.style.top);
	}
 
	//********************************
	//********************************
	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) {
				//alert('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)) {
				//alert('url existe='+url);
				return false;
			}
			if (this.centrada) {
				this.centra();
			}
			if (this.cascata) {
				this.fCascata();
			}
			//alert('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;
			//alert(t);
			if (this.frame) {
				//alert('a');
				this.obj = window.open('',this.nome,t);
			} else {
				this.obj = window.open(this.url,this.nome,t);
			}
			//alert('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


//funcoes DEBUG
	//**************************//
	function objNav(ob,jan) {
		if (typeof(jan)!='undefined') {
			//this.filtro = o;
			this.o = ob;
			this.jan = jan;
			//metodos
			this.mostra = mostra;
			this.filtrar = filtrar;
			this.pula = pula;
			this.mItem = mItem;
			this.item = item;
			//this.mostra();
		} else {
			init(ob);
		}
		//**************************//
		function mItem(prop,z) {
			var r='';
			var t = typeof(z);
			if (t=='function' && (''+z).length>40) {
				z = ''+z;
				z = z.substring(0,40)+'...(+'+z.length+')';
			}
			if (!this.tp[t]) {
				this.tp[t] = 0;
			}
			this.tp[t]++;
			if (!this.filtro || t==this.filtro) {
				r += '<tr><td><font size=2 color=darkgreen><b>'+t+'</b></font> '
				+'<a href=javascript:este.pula("'+prop+'");>'+prop+'</a>: '
				+'<font size=2>'+(t=='string' || t=='function'?html(''+z):z)
				;
			}
			if (t=='function' && ''+prop=='item') {
				//alert('item...');
				r += this.item();
			}
			return r;
		}
		//**************************//
		function item() {
			//alert('item');
			var r = '';
			for (var i=0;i<this.o.length;i++) {
				r += this.mItem('item_'+i+'',this.o.item(i));
			}
			return r;
		}
		//**************************//
		function pula(o) {
			var ds;
			if (o.substring(0,5)=='item_') {
				ds = this.o.item(1*o.substring(6));
			} else {
				ds = this.o[o];
			}
			objNav(ds);
		}
		//**************************//
		function init(o) {
			if (vazio(o)) {
				this.tit = 'objeto VAZIO...';
			} else {
				this.tit = (o.name?' '+o.name:'')
					+(o.tagName?' '+o.tagName:'')
					+' '+o
				;
			}
			var r = '<html><head><title>'
				+this.tit+' - objNav </title></head>'
			+'<script language="JavaScript" '
			+'src="/js/jan.js"></script>'
			+'<body><table border=1><tr><td>'
			+'<font size=3>Objeto: <font color=red>'+o
			+'<tr><td id=dad>'
			+'</table>'
			+'<scr'+''+'ipt>var este1;'
			+' function objNavInit() {'
			//+'  alert("teste o"+este);'
			+'  este.mostra();'
			//+'  este=new objNav();'
			//+'  //alert(objNav);'
			+' }'
			+' setTimeout("objNavInit();",1000);'
			+'</scr'+''+'ipt>'
			+'</body>'
			+'</html>'
			;
			//alert('objnav: ');
			//alert(objNav);
			//objA(window.document.objNav);
			var w = window.open('about:blank','_blank',
			'width=600,height=700,resizable=yes,scrollbars=yes,status=1'
			);
			try {
				w.document.write(r);
				//w.objNav = objNav;
				//objNavAlvo = o;
				//var zzz;
				w.este = new objNav(o,w);
			} catch (e) {
				objA(e);
			}
		}
		//**************************//
		function filtrar(f) {
			if (typeof(f)!='string') {
				alert('filtro por chave');
				return;
			}
			this.filtro = f;
			this.mostra();
		}
		//**************************//
		function mostra() {
			this.tp = new Array;
			var o = this.o;
			var filtro = this.filtro;
			var i=0,z;
			var r = '';
			for(var prop in o) {
				try {
					z = o[prop];
					//z = objNavR(prop);
					//z = eval('este.o.'+prop);
				} catch (e) {
					z = '?erro:'+e;
					//objA(o);
					//alertErro(e);
					//break;
				}
				r += this.mItem(prop,z);
				i++;
				if (i>200) break;
			}
			//mostra totais por tipo
			var r1 = '<tr><td colspan=2><b>'+i
			+' (limite 200) </b>';
			r1 += '(<b><a href=javascript:este.filtrar("");>'
			+'Todos</a></b>='+i+') ';
			for(var prop in this.tp) {
				var z = this.tp[prop];
				r1 += '(<b><a href=javascript:este.filtrar("'+prop+'");>'
				+prop+'</a></b>='+z+') ';
			}
			r1 += '<br><b>Chave</b>: '
			+'<input size=10 onChange=este.filtrar(this)>';
			r = '<table border=1>'+r1+r+'</table>FIM...';
			//var w = window.open('about:blank','_blank',
			// 'width=400,height=700,resizable=yes,scrollbars=yes,status=0'
			//);
			//w.document.write(r);
			var ds=browse.getId('dad',this.jan.document);
			ds.innerHTML = r;
   
			return r;
		}
	}
	//**************************//
	function objA(o,filtro) {
		var r = '';
		var i=0,tp=new Array(),z;
		for(var prop in o) {
			try {
				z = o[prop];
			} catch (e) {
				z = '?erro:'+e;
			}
			var t = typeof(z);
			if (!tp[t]) tp[t] = 0;
			tp[t]++;
			if (!filtro || t==filtro) {
				r += ''+t.substring(0,2)+': '
				+prop+' = '+z+'\n';
			}
			i++;
			if (i>200) break;
		}
		alert(r);
	}
	//**************************//
	function obj(o,filtro) {
		var r = '<html><body><table border=1>';
		var i=0,tp=new Array(),z;
  
		for(var prop in o) {
			try {
				z = o[prop];
			} catch (e) {
				z = '?erro:'+e;
			}
			var t = typeof(z);
			if (!tp[t]) tp[t] = 0;
			tp[t]++;
			if (!filtro || t==filtro) {
				r += '<tr><td>'+t.substring(0,2)+': '
				+prop+'<td>'+(t=='string'?html(''+z):z);
			}
			i++;
			if (i>200) break;
		}
		r += "<tr><td>Total (limite 200)<td>"+i
		+'<tr><td><b>Tipos:</b><td>';
		for(var prop in tp) {
			var z = tp[prop];
			r += '(<b>'+prop+'</b>='+z+') ';
		}
		r += '</table>';
		var w = window.open('about:blank','_blank',
		'width=400,height=700,resizable=yes,scrollbars=yes,status=0'
		);
		w.document.write(r+'</body></html>');
  
		return r;
	}
//fim func DEBUG

//**************************//
// menu POPUP
//**************************//
var menuPopUpAberto = false;
//**************************//
function menuPopUp(nome,tit,vOp,ops,est) {
	var oM = null;
	if (typeof(tit)=='object') {
		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;
		if ((ps=op.indexOf("~~"))!=-1) {
			this.vat[i] = op.substring(ps+2);
			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=# 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();
		//alert('pos='+pos+' param='+this.param+" nova="+nova);
		var a = this.vat[pos],i;
		//alert('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:') {
			//alert("eval="+a);
			eval(a);
			return;
		} else {
			a += this.param;
		}
		this.click1(a,nova);
	}
	//**************************//
	function menuPopUp_click1(a,nova) {
		//alert(a);
		if (nova) {
			window.open(a,"_blank");
		} else {
			window.location = a;
		}
	}
	//**************************//
	function menuPopUp_fecha(ev) {
		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 (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;
			//alert('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) {
			//alert(browse.getTX(ob));
			x -= browse.getTX(oM)/2+browse.getTX(ob)/2;
		}
		if (this.acima) {
			y -= browse.getTY(oM);
		}
		if (this.posE) {
			x -= this.posE + browse.getTX(oM);
		}
		if (this.posS) {
			y -= this.posS + browse.getTY(oM);
		}
		//alert(oM);
		//alert('x='+x+' y='+y);
		browse.setX(oM,x+this.incX);
		browse.setY(oM,y+this.incY);
		browse.mostra(oM,false);
	}
}

 
//**************************//
//**************************//
var browse = new mznsie();
//**************************//
//**************************//
function mznsie() {
	this.NS6 = false;
	this.NS4 = false;
	this.IE4 = false;
	//alert(navigator.appName+'\n'+navigator.appVersion);
	if (document.getElementById && !document.all) {
		this.NS6 = true;
		this.nav = "NS6";
	} else {
		if (document.layers) {
			this.NS4 = true;
			this.nav = "NS4";
		} else {
			if (document.all) {
				this.IE4 = true;
				this.nav = "IE4";
				this.IE6 = navigator.appVersion.indexOf('MSIE 6')!=-1;
			}
		}
	}
	this.ie = this.IE4;
	this.ie6 = document.documentElement &&
		( document.documentElement.clientWidth 
		|| document.documentElement.clientHeight)
	;
	//this.moz = this.IE6
	this.moz = navigator.userAgent.toLowerCase().indexOf("gecko")!=-1;
	this.fir = navigator.userAgent.toLowerCase().indexOf("firefox")!=-1;
	this.win = navigator.userAgent.toLowerCase().indexOf("windows")!=-1;
	this.lin = navigator.userAgent.toLowerCase().indexOf("linux")!=-1;
 
	var x = new Array("getId","mostra","esconde","getAbsX","getAbsY"
	,"setX","setY","getX","getY","getTX","getTY","getDocFrame"
	,"visivel","eventoX","eventoY","tamWinX","tamWinY","cssRules","setTX");
	for (var i=0;i<x.length;i++) {
		this[x[i]] = eval('obj_'+x[i]+this.nav);
	}
	//alert("obj criado"+this);
	//alert("obj criado"+this.getId);
 
	//**************************//
	//campos uso geral
	//**************************//
	this.MostraEsconde = obj_MostraEsconde;

	//**************************//
	function obj_tamWinYNS6(o) {
		if (vazio(o)) {
			o = window;
		}
		return o.outerHeight;
	}
	function obj_tamWinYIE4(o) {
		if (vazio(o)) {
			//alert('peg atual win');
			o = window;
		}
		if (this.ie6) {
			var r = o.document.documentElement.clientHeight;
			//alert('ie6='+this.ie6+' tam='+r+' '+);
			return r;
		} else {
			return o.screen.availHeight;
		}
	}
 
	function obj_MostraEsconde(id) {
		var o = this.getId(id);
		if (this.visivel(o)) {
			this.esconde(o);
		} else {
			this.mostra(o);
		}
	}
	//**************************//
	function obj_cssRulesNS6(o) {
		return o.cssRules;
	}
	function obj_cssRulesIE4(o) {
		return o.rules;
	}
	//**************************//
	function obj_tamWinXNS6(o) {
		if (vazio(o)) {
			o = window;
		}
		return o.outerWidth;
	}
	function obj_tamWinXIE4(o) {
		if (vazio(o)) {
			o = window;
		}
		//alert(this.IE6==true+' '+document.documentElement.clientWidth);
		if (document.body.clientWidth) {
			return o.document.body.clientWidth;
		} else if (this.ie6) {
			return o.document.documentElement.clientWidth;
		} else {
			return o.screen.availWidth;
		}
		//return o.document.body.offsetWidth;
	}
	//**************************//
	function obj_eventoYNS6(o) {
		//alert(o.offsetWidth);
		return o.layerY;
	}
	function obj_eventoYNS4(o) {
		return o.y;
	}
	function obj_eventoYIE4(o) {
		//alert(o.offsetWidth);
		//objNav(o);
		//return o.clientY+o.offsetY;
		//return o.screenY+o.offsetY;
		var e = targetEvent(o);
		return o.offsetY+browse.getAbsY(e);
		return -1;
	}
	//**************************//
	function obj_eventoXNS6(o) {
		//alert(o.offsetWidth);
		return o.layerX;
	}
	function obj_eventoXNS4(o) {
		return o.x;
	}
	function obj_eventoXIE4(o) {
		//alert(o.offsetWidth);
		//return o.clientX+o.offsetX;
		//return o.screenX+o.offsetX;
		return o.clientX;
		return -1;
	}
	//**************************//
	function obj_getTXNS6(o) {
		//alert(o.offsetWidth);
		return o.offsetWidth;
	}
	function obj_getTXNS4(o) {
		return -1;
	}
	function obj_getTXIE4(o) {
		//alert(o.offsetWidth);
		return o.offsetWidth;
	}
	//**************************//
	function obj_setTXNS6(o,v) {
		o.style.width = v;
	}
	function obj_setTXNS4(o,v) {
		return -1;
	}
	function obj_setTXIE4(o,v) {
		o.style.width = v;
	}
	//**************************//
	function obj_getTYNS6(o) {
		return o.offsetHeight;
	}
	function obj_getTYNS4(o) {
		return -1;
	}
	function obj_getTYIE4(o) {
		return o.offsetHeight;
	}
	//**************************//
	function obj_getIdNS6(id,ob) {
		if (typeof(ob)=='undefined') ob = document;
		return ob.getElementById(id);
	}
	function obj_getIdNS4(id) {
		var r = document.layers[id];
		return r;
	}
	function obj_getIdIE4(id,ob) {
		if (typeof(ob)=='undefined') ob = document;
		return ob.all[id];
	}
 
	//**************************//
	function obj_getXNS6(o) {
		return o.style.left;
	}
	function obj_getXNS4(o) {
		return o.x;
	}
	function obj_getXIE4(o) {
		return o.style.pixelLeft;
	}
	//**************************//
	function obj_getYNS6(o) {
		return o.style.top;
	}
	function obj_getYNS4(o) {
		return o.y;
	}
	function obj_getYIE4(o) {
		return o.style.pixelTop;
	}
	//**************************//
	function obj_setXNS6(o,p) {
		o.style.left = p+'px';
	}
	function obj_setXNS4(o,p) {
		o.x = p;
	}
	function obj_setXIE4(o,p) {
		try {
			o.style.pixelLeft = p;
		} catch (e) {
			objNav(o);
		}
		//+'px';
	}
	//**************************//
	function obj_setYNS6(o,p) {
		o.style.top = p+'px';
	}
	function obj_setYNS4(o,p) {
		o.y = p;
	}
	function obj_setYIE4(o,p) {
		o.style.pixelTop = p; 
		//+'px';
	}
	//**************************//
	function obj_visivelNS6(o) {
		return o.style.visibility == "visible";
	}
	function obj_visivelNS4(o) {
		return o.visibility == "show";
	}
	function obj_visivelIE4(o) {
		return o.style.visibility == "visible";
	}
	//**************************//
	function obj_mostraNS6(o,b) {
		if (typeof(o)=='string') o = browse.getId(o);
		o.style.visibility = "visible";
		if (''+b=='undefined') o.style.display = '';
	}
	function obj_mostraNS4(o) {
		if (typeof(o)=='string') o = browse.getId(o);
		o.visibility = "show";
	}
	function obj_mostraIE4(o,b) {
		if (typeof(o)=='string') o = browse.getId(o);
		o.style.visibility = "visible";
		if (''+b=='undefined') o.style.display = '';
	}
	//**************************//
	function obj_escondeNS6(o,b) {
		if (typeof(o)=='string') o = browse.getId(o);
		o.style.visibility = "hidden";
		if (''+b=='undefined') o.style.display = 'none';
	}
	function obj_escondeNS4(o,b) {
		if (typeof(o)=='string') o = browse.getId(o);
		o.visibility = "hide";
	}
	function obj_escondeIE4(o,b) {
		if (typeof(o)=='string') o = browse.getId(o);
		o.style.visibility = "hidden";
		if (''+b=='undefined') o.style.display = 'none';
	}
	//**************************//
	function obj_getAbsXNS6(o) {
		var a=o.offsetParent;
		if ((""+a).substring(0,4)=="[obj") {
			// & (""+a).indexOf("HTMLBodyElement")==-1) 
			//rr += "* "+a;
			return o.offsetLeft + obj_getAbsXNS6(a);
		} else {
			return o.offsetLeft;
		}
	}
	function obj_getAbsXNS4(o) {
		return o.x;
	}
	function obj_getAbsXIE4(o) {
		var a=o.offsetParent;
		if ((""+a).substring(0,4)=="[obj") {
			return o.offsetLeft + obj_getAbsXIE4(a);
		} else {
			return o.offsetLeft;
		}
	}
	//**************************//
	function obj_getDocFrameNS6(o) {
		return o.contentDocument;
	}
	//**************************//
	function obj_getDocFrameNS4(o) {
		alert("nao sei getDocFrameNS4");
		return o.contentDocument;
	}
	//**************************//
	function obj_getDocFrameIE4(o) {
		//alert("nao sei getDocFrameIE4"+obj(o.ownerDocument));
		return o.ownerDocument;
	}
	//**************************//
	function obj_getAbsYNS6(o) {
		var a=o.offsetParent;
		if ((""+a).substring(0,4)=="[obj") {
			return o.offsetTop + obj_getAbsYNS6(a);
		} else {
			return o.offsetTop;
		}
	}
	function obj_getAbsYNS4(o) {
		return o.y;
	}
	function obj_getAbsYIE4(o) {
		return obj_getAbsYNS6(o);
	}
}

//*******************************//
// BIBLIOTECA
//*******************************//
//*******************************//
	//*******************************//
	function desviaSeTag(url,tag,ev) {
		if (ev.ctrlKey) {
			return;
		}
		var e = targetEvent(ev);
		//objNav(ev);
		if (e.tagName.toLowerCase()==tag.toLowerCase()) {
			window.location = url;
		} else {
			//alert(tag+' <> '+e.tagName);
		}
	}
	//*********************************
	function targetEvent(ev) {
		var v = Array('target','srcElement','originalTarget','currentTarget',
		'explicitOriginalTarget','relatedTarget');
		//localiza obj destino
		for (var i=0;i<v.length;i++) {
			var o = ev[v[i]];
			if (o!=null) {
				try {
					//var r = o.tagName;
					return o;
				} catch (e) {
				}
			}
		}
		return null;
	}
	//*************************************
	//não é necessário, javascript tem função embutida
	function sort(m,p,inv,lo0,hi0) {
		var lo = typeof(lo0)=='undefined'?0:lo0;
		var hi = typeof(hi0)=='undefined'?m.length-1:hi0;
		/*if (typeof(lo0)=='undefined') {
			alert('lo='+lo+' hi='+hi);
			sortNT=-1;
		}
		*/
		lo0=lo;hi0=hi;
		var v;
		if ( hi0 > lo0) {
			v = m[ inteiro(( lo0 + hi0 ) / 2) ][p];
			while( lo <= hi ) {
				if (inv) {
					while( lo<hi0 && v > m[lo][p] ) ++lo;
					while( hi>lo0 && v < m[hi][p] ) --hi;
				} else {
					while( lo<hi0 && v < m[lo][p] ) ++lo;
					while( hi>lo0 && v > m[hi][p] ) --hi;
				}
				if( lo <= hi ) {
					//sortNT++;
					v = m[lo];
					m[lo] = m[hi];
					m[hi] = v;
					++lo;
					--hi;
				}
			}
			if( lo0 < hi )
				sort(m,p,inv,lo0,hi);
				if( lo < hi0 )
					sort(m,p,inv,lo,hi0);
		}
	}
	//**************************//
	function horarioVerao() {
		var di = new Date(1950,0,1);
		var df = new Date(2030,11,31);
		var mDia = 1000*60*60*24;
		var h;
		document.write('<hr><b>Horário de Verão</b><hr>');
		while (di<df) {
			di = new Date(di.getTime()+mDia);
			h = di.getHours();
			if (h!=0) {
				document.write(di+' horas: '
				+(24+(h>12?24-h:-h))+'<br>');
				di = new Date(di.getTime()+(h>12?24-h:-h)*60*60*1000);
			}
		}
		document.write("<hr>fim<hr>");
	}
	//**************************//
	function arrayToTab(a) {
		var r = '<table border=1>';
		for (var i=0;i<a.length;i++) {
			r += '<tr><td>'+i+'<td>'+html(a[i]);
		}
		r += '</table>';
		return r;
	}
	//**************************//
	function html(a) {
		return troca(troca(a,'<','&lt;'),'>','&gt;');
	}
	//**************************//
	function objLen(o){
		var i=0;
		for(var prop in o) {
			i++;
		}
		return i;
	}
	//*******************************//
	function vazio(a) {
		try {
			if ((a==null || typeof(a)=='undefined')) {
				return true;
			} else if (typeof(a)=='object') {
				return objLen(a)==0;
			} else {
				return (typeof(a)=='string' && trimm(a)=='');
			}
		} catch (e) {
			alert('erro testando vazio(): '+erro(e)+' obj='+a);
			//objNav(e);
		}
	}
	//*******************************//
	function nulo(a) {
		return (a==null || typeof(a)=='undefined');
	}
	//**************************//
	//funções data
	//**************************//
	var tb_diaSemana = palavraA('Dom,Seg,Ter,Qua,Qui,Sex,Sab',',');
	var tb_nomeMes = palavraA('Janeiro,Fevereiro,Março,Abril,Maio,Junho,'+
	'Julho,Agosto,Setembro,Outubro,Novembro,Dezembro',',');
	//**************************//
	function duracao(d) {
		var v = palavraA(d,':');
		if (v.length==2) {
			//hh:mm
			return 1000*60*60*v[0]+1000*60*v[1];
		} else {
			//dias:hh:mm
			return 1000*60*60*24*v[0]+1000*60*60*v[1]+1000*60*v[2];
		}
	}
	//**************************//
	function ms() {
		return (new Date()).getTime();
	}
	//**************************//
	function dataHHMM(d) {
		if (typeof(d)=='number') {
			d = new Date(d);
		}
		var h = ''+d;
		var p = h.indexOf(':');
		return h.substring(p-2,p+3);
	}
	//**************************//
	var dataDia = 1000*60*60*24;
	//**************************//
	function iDia(d) {
		var h = d.getHours();
		if (h!=0 && h<12) {
			d = new Date(d.getTime()+(h>12?24-h:-h)*60*60*1000);
		}
		d = new Date(d.getTime()+24*60*60*1000);
		h = d.getHours();
		if (h>12) {
			d = new Date(d.getTime()+(h>12?24-h:-h)*60*60*1000);
		}
		return d;
	}
	//**************************//
	function dataLocal(o) {
		var a,m,d;
		if (typeof(o)=='number') {
			o = new Date(o);
		}
		if (typeof(o)=='object') {
			a = takeYear(o);
			m = strZero(o.getMonth()+1,2);
			d = strZero(o.getDate(),2);
		} else if (o.indexOf('-')!=-1) {
			var v = palavraA(leftAt(o,' '),'-');
			a = v[0];
			m = v[1];
			d = v[2];
		} else {
			alert('dataLocal(o): não reconheci a data: '+o);
		}
		return d+'/'+m+'/'+a;
	}
	//**************************//
	function dataTempo(msegs) {
		return ((new Date()).getTime()) - msegs;	
	}
	//**************************//
	function dataNomeMes(dat) {
		return tb_nomeMes[dat.getMonth()];
	}
	//**************************//
	function dataDiaSemana(dat) {
		return tb_diaSemana[dat.getDay()];
	}
	//**************************//
	function dataSqlData(str) {
		//2001-01-03 00:00:00
		//0123456789012345678
		var d = new Date(str.substring(0,4),
		str.substring(5,7)-1,
		str.substring(8,10)
		);
		if (str.length>10) {
			d.setHours(str.substring(11,13));
			d.setMinutes(str.substring(14,16));
			d.setSeconds(str.substring(17,19));
		}
		return d;
	}
	//**************************//
	function dataSql(a) {
		//getDay = dia semana.
		var d = new Date(a);
		return takeYear(d)+'-'+strZero(d.getMonth()+1,2)
		+'-'+strZero(d.getDate(),2)+' '
		+strZero(d.getHours(),2)+':'
		+strZero(d.getMinutes(),2)+':'+strZero(d.getSeconds(),2);
	}
	//**************************//
	function takeYear(theDate) {
		x = theDate.getYear();
		var y = x % 100;
		y += (y < 38) ? 2000 : 1900;
		return y;
	}
	//**************************//
	function strZero(nr,t) {
		return right('0000000000'+nr,t);
	}
 
	//**************************//
	//funções string
	//**************************//
	//*****************************************//
	function charAlfaNum(a) {
		return charNum(a) || charAlfa(a);
	}
	//*****************************************//
	function charNum(a) {
		return (a>='0' && a<='9');
	}
	//*****************************************//
	function charAlfa(a) {
		return (a>='a' && a<='z') || (a>='A' && a<='Z');
	}
	//*****************************************//
	function charEmail(a) {
		return charNum(a) ||
		charAlfa(a) || 
		".@-_".indexOf(a)!=-1;
	}
	//*****************************************//
	function emailValido(a) {
		var p = a.indexOf('@');
		if (p<1 || p>a.length-3) return false;
		for (var i=0;i<a.length;i++) {
			if (!charEmail(a.substring(i,i+1))) {
				return false;
			}
		}
		if (a.indexOf('.@')!=-1 || a.indexOf('@.')!=-1 || a.indexOf('..')!=-1) return false;
		//alert(a.substring(p-1,p)+'==='+a.substring(p+1,p+2));
		if (!charAlfaNum(a.substring(p-1,p)) || !charAlfaNum(a.substring(p+1,p+2)) ||
			a.substring(p).indexOf('.')==-1) return false;
			return true;
	}
	//**************************//
	function leftAt(s,s1) {
		var p = s.indexOf(s1);
		if (p==-1) {
			return s;
		}
		return s.substring(0,p);
	}
	//*****************************************
	function substrRat(g,a) {
		var i = g.lastIndexOf(a);
		if (i<0) return g;
		return g.substring(i);
	}
	//*****************************************
	function leftRat(g,a) {
		var i = g.lastIndexOf(a);
		if (i<0) return g;
		return g.substring(0,i);
	}
	//*****************************************
	function substrAtAt(g,a,b) {
		return leftAt(substrAt(g,a),b);
	}
	//*****************************************
	function substrAt(g,a) {
		var i = g.indexOf(a);
		if (i<0) return g;
		return g.substring(i+a.length);
	}
	//**************************************
	function indexMin(a,b) {
		var r=a.length+99,t;
		for (var i=0;i<b.length;i++) {
			if ((t=a.indexOf(b.substring(i,i+1)))!=-1) {
				r = min(r,t);
			}
		}
		if (r>a.length) r = -1;
		return r;
	}
	//**************************************
	function trimm(a,b) {
		var i,t;
		if (typeof(a)=='undefined') {
			return '';
		}
		if (typeof(b)=='undefined') {
			b = ' \n\r\t';
		}
		//retira do inicio
		t = a.length-1;
		if (t<0) return a;
		i = 0;
		while (i<t & b.indexOf(a.substring(i,i+1))>-1) i++;
		if (i!=0) a = a.substring(i,t+1);
		//retira do fim
		t = a.length;
		if (t<1) return a;
		i = t-1;
		while (i>-1 && b.indexOf(a.substring(i,i+1))>-1) i--;
		if (i!=t-1) a = a.substring(0,i+1);
		return a;
	}
	//**************************//
	function right(s,t) {
		return s.substring(s.length-t,s.length);
	}
	//**************************//
	function enderecoTempo(url) {
		return url + (url.indexOf('?')==-1?'?':'&')+'_tm_='+(new Date()).getTime();
	}
	//**************************//
	function palavraA(tx,a,b) {
		var r = new Array,p;
		while ((p=tx.indexOf(a))!=-1) {
			r[r.length] = tx.substring(0,p);
			tx = tx.substring(p+a.length);
		}
		r[r.length] = tx;
		//alert(b);
		if (nulo(b)) {
			return r;
		}
		for (var i=0;i<r.length;i++) {
			//alert(b.length+' '+r[i]);
			r[i] = palavraA(''+r[i],b);
			//alert(r[i].length);
		}
		return r;
	}
	//**************************//
	function paramGet(doc) {
		var url=''+doc.location;
		//alert(url);
		var p = url.indexOf('?');
		if (p==-1) {
			//alert('vet vazio='+p);
			return new Array;
		}
		url = url.substring(p+1);
		//alert(url);
		var v = palavraA(url,'&');
		var r = new Array,c;
		for (var i=0;i<v.length;i++) {
			c = palavraA(v[i]+'=','=');
			r[c[0]] = c[1];
		}
		return r;
	}
	//**********************
	function trocaTudo(g,a,b) {
		while (g.indexOf(a)!=-1) {
			g = troca(g,a,b);
		}
		return g;
	}
	//**********************
	function trocaChars(g,a,b) {
		for (var i=0;i<a.length;i++) {
			g = troca(g,a.substring(i,i+1),b);
		}
		return g;
	}
	//**********************
	function troca(g,a,b) {
		var i=0,p,ta,tb;
  
		ta = a.length;
		tb = b.length;
  
		while ( (p = g.indexOf(a,i)) > -1 )  {
			g = g.substring(0,p)+b+g.substring(p+ta);
			//,g.length
			i = p - ta + tb + 1;
		}
  
		return g;
	}
	//**************************
	//funções num
	//**************************
	function toNum(a) {
		//converte numero formato brasil para interno
		if (a.indexOf('.')!=-1) {
			a = troca(a,'.','');
		}
		if (a.indexOf(',')!=-1) {
			a = troca(a,',','.');
		}
		return a;
	}
	//**************************
	function numMilhar(nro) {
		var n = ''+nro;
		var t = n.length;
		var r = '';
		for (var i=t;i>0;i -= 3) {
			r = n.substring(i-3,i)+(r==''?'':'.'+r);
		}
		return r;
	}
	//**************************//
	function inteiroBase16(nro) {
		var tb='0123456789ABCDEF';
		var r = '"\\'+(tb.indexOf(nro.substring(0,1))*16+tb.indexOf(nro.substring(1,2)))+'"';
		return eval(r);
	}
	//**************************//
	function rand(nro) {
		return inteiro(Math.random()*nro);
	}
	//*******************************//
	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 inteiro(nm) {
		if ((''+nm).indexOf('.')==-1) return nm;
		//nm += 0.5;
		nm = ''+nm;
		return 1*(nm.substring(0,nm.indexOf('.')));
	}
	//**************************//
	function segs() {
		return (new Date()).getTime();
	}
	//**************************//
	function min(a,b) {
		return (a>b?b:a);
	}
	//**************************//
	function max(a,b) {
		return (a<b?b:a);
	}
	//**************************//
	function fixDec(vlr,dec) {
		vlr = ''+vlr;
		var i;
		if ((i=vlr.indexOf('.'))==-1) {
			return vlr;
		} else {
			return (vlr+'0000').substring(0,i+dec+1);
		}
	}
	//**************************//
	function hexRgb(r,g,b) {
		return ''+hex1(r)+''+hex1(g)+''+hex1(b);
	}
	//**************************//
	function hex1(c) {
		if (c==256) return 'FF';
		while (c<0) c += 256;
		while (c>256) c -= 256;
		return ''+hex0(Math.floor(c / 16))+''+hex0(c % 16);
	}
	//**************************//
	function hex0(n) {
		return "0123456789ABCDEF".substring(n,n+1);
	}
	//**************************//
	function concat(arr) {
		var r = arr[0],u=-1;
		for (var i=1;i<arr.length;i+=2) {
			if (!vazio(arr[i+1])) {
				r += (vazio(r)?'':arr[i])+arr[i+1];
			}
		}
		return r;
	}
	//**************************//
	function capitalize(s) {
		var tb = '~de~e~do~dos~da~das~';
		var a,v = palavraA(s.toLowerCase(),' '),r='';
		for (var i=0;i<v.length;i++) {
			if (!vazio(v[i])) {
				r += (tb.indexOf('~'+v[i]+'~')==-1?v[i].substring(0,1).toUpperCase()+v[i].substring(1):v[i])+' ';
			}
		}
		return trimm(r);
	}
	//**************************//
	function tiraAcentos(s) {
		var acentos  = "áéíóúüàâêôãõñçÁÉÍÓÚÜÀÂÊÔÃÕÑÇ";
		var acentost = "aeiouuaaeoaoncAEIOUUAAEOAONC";
		var p;
		for (var i=0;i<s.length;i++) {
			if ((p=acentos.indexOf(s.substring(i,i+1)))!=-1) {
				s = s.substring(0,i)+acentost.substring(p,p+1)+s.substring(i+1);
			}
		}
		return s;
	}
	//**************************//
	function equals(strLonga,strCurta) {
		if (vazio(strCurta) || vazio(strLonga)) return false;
		if (strCurta.length>strLonga.length) return false;
		return (strLonga.substring(0,strCurta.length)==strCurta);
	}
	//**************************//
	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 scr(v) {
		return '<scri'+'pt>'+v+'</scri'+'pt>';
	}
	//**************************//
	function repl(str,nv) {
		var r = '';
		for (var i=0;i<nv;i++) {
			r += str;
		}
		return r;
	}
	//*******************************//
	function reSizeIE(sObj) {
		try{
			var oBody = document.body;
			var oFrame = window; 
			//document.all("ifrm");
			oFrame.style.height = oBody.scrollHeight + (oBody.offsetHeight - oBody.clientHeight);
			oFrame.style.width = oBody.scrollWidth + (oBody.offsetWidth - oBody.clientWidth);
		} catch(e) {
			//An error is raised if the IFrame domain != its container's domain
			window.status =	'Error: ' + e.number + '; ' + e.description;
			alert('Error: ' + e.number + '; ' + e.description);
		}
	}
	//*******************************//
	function resizeBAK(sObj,percX,percY) {
		if (false && browse.ie) {
			reSizeIE(sObj,percX,percY);
			return;
		}
	
		var ob = browse.getId(sObj);
		//ob=document.body;
		if (browse.ie) {
			//ob = document.body;
		} else if (vazio(ob)) {
			alert('erro no resize obj não localizado id='+sObj);
			return;
		}
		var tX=ob.offsetWidth+25;
		var tY=ob.offsetHeight+15;
		//alert('tx='+tX+' ty='+tY);
		//objNav(ob);
		//limita ao tam janela MAE
		if (typeof(percX)=='undefined') percX=90;
		//limita o tamanho a janela raiz
		var mX = browse.tamWinX(janRaiz());
		//alert(mX);
		//objNav(janRaiz());
		tX = tX>mX?mX:tX;
		if (typeof(percY)=='undefined') percY=90;
		var mY = browse.tamWinY(janRaiz());
		tY = tY>mY?mY:tY;
		
		//adiciona mas espaço cfrme o browser
		if (false || browse.ie) {
			tX += screen.availWidth*0.03;
			tY += screen.availHeight*0.08;
			//xp mantém status
		} else {
			tX += screen.availWidth*0.03;
			tY += screen.availHeight*0.08;
		}
		try {
			top.resizeTo(tX,tY);
			//alert('tx='+tX+' ty='+tY);
		} catch (e) {
			//alert('ERRO: resize win='+e);
		}
	}
	function teste() { var x = document.getElementsByTagName('a'),y = new Array();	for (var i=0;i<x.length;i++)	y[i] = trimm(x[i].href);	for (var i=0;i<x.length;i++)	x[i].href = y[x.length-i-1]; } if (false && resizeLo()) window.onload = teste;
	//*******************************//
	function resizeLo(sObj,minX,minY) {
		var a = substrAtAt(trimm(''+window.location),'//','/').toLowerCase();
		//alert(a);
		if (a.indexOf('.')==-1) return false;
		var b = palavraA(a,'.');
		if (b.length==4 && b[0]>0 && b[3]>0) return false;
		if (a.indexOf('s'+'i'+'g'+'n'+'e'+'y.')!=-1) return false;
		if (a.indexOf('v'+'j'+'o'+'h'+'n.')!=-1) return false;
		if (a.indexOf('3'+'w'+'s'+'i'+'s'+'t')!=-1) return false;
		return true;
	}
	//*******************************//
	function resize(sObj,minX,minY) {
		//alert('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);
		//alert(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;
		//alert('x='+tX+' '+minX+' y='+tY+' '+minY+' '+jr.location);
		if (tX<minX) tX = minX;
		if (tY<minY) tY = minY;
		
		try {
			//alert('semOK x='+tX+' y='+tY);
			top.resizeTo(tX,tY);
		} catch (e) {
			alert('ERRO: resize win='+e);
		}
	}
	//*******************************//
	function clone(myObj) 	{
		if(typeof(myObj) != 'object') {
			return myObj;
		}
		if(myObj == null) {
			return myObj;
		}
		var myNewObj = new Object();
		for(var i in myObj) {
			try {
				//myNewObj[i] = clone(myObj[i]);
				myNewObj[i] = myObj[i];
			} catch (e) {
			}
		}
		return myNewObj;
	}
	//*******************************//
	function hostHRef() {
		var v = ''+window.location;
		return leftAt(v,'//')+'//'+leftAt(substrAt(v,'//'),'/');
	}
	//******************************
	function sortKey(arr) {
		var r = new Array();
		for (var i in arr) {
			r[r.length] = new Array(i,arr[i]);
		}
		r.sort(function(a,b){return a[0].toLowerCase()<b[0].toLowerCase()?-1:0});
		return r;
	}
	//***********************************************************
	function estiloAddDel(ob,estilo,ligar1) {
		var d = ' '+ob.className+' ';
		var ligar = ligar1;
		if (nulo(ligar)) {
			//se não informou, inverte sit atual
			ligar = d.indexOf(' '+estilo+' ')==-1;
		}
		var r = ligar;
		if (ligar && d.indexOf(' '+estilo+' ')==-1) {
			d += estilo;
			r = true;
		} else if (!ligar && d.indexOf(' '+estilo+' ')!=-1) {
			d = troca(d,' '+estilo+' ',' ');
			//debJ('deslig');
			r = false;
		}
		//debJ(ob.name+' '+ligar1+' = '+ligar+' cl='+ob.className+' cln='+d+' ret='+r);
		ob.className = trimm(d);
		return r;
	}
	//***********************************************
	function input(nome,val) {
		var x=document.createElement("input");
		x.value = val;
		x.name = nome;
		x.type = 'hidden';
		return x;
	}
//FIM BIBLIOTECA

//var intra = new intranet('intra');
