/*! 
	\file flutuanteMenu.js
	\brief Integra a biblioteca de funções de apoio à execução da camada cliente,
		   responsável pela interação entre usuário e interface, introduzindo
           dinamismo ao documento e reduzindo a quantidade de requisições ao
           servidor de aplicação na medida em que realiza tarefas de validação de entradas e
           requisições em segundo plano, assim como alterações na estrutura e na forma do documento HTML DOM
           da camada de apresentação.

     Author:  André Carvalho
     Data : 05/04/2006

     Alteração: André Carvalho
     Data : 11/09/2007
     
     Comentários: André Carvalho
     Data: 04/10/2007
*/
/*! Atributo de identificação de navegador. */
isIE=document.all;
/*! Atributo de identificação de navegador. */
isNN=!document.all&&document.getElementById;
/*! Atributo de identificação de navegador. */
isN4=document.layers;
/*! Atributo de controle de arrasto da subjanela. */
isHot=false;
/*! Identificação rápida de navegador, apenas se é IE ou não. */
var isIE_=(navigator.appName=="Microsoft Internet Explorer")?(true):(false);
/*! Pré-carregamento de imagem. */
homeoff = new Image();
homeoff.src = '../../img/homeoff.gif';
homeon = new Image();
homeon.src = '../../img/home.gif';
/*! Atributo de controle de operação de retração e expansão da subjanela. */
var a = 0;
/*! \htmlonly */
/*! String HTML que representa objeto combobox e seus itens, para seleção de Estados. */
var strEstadosExistentes = '<select id="estado" name="estados" style="width:60">'+
'<option></option>'+
'<option value="AC" >AC</option>'+
'<option value="AL" >AL</option>'+
'<option value="AM" >AM</option>'+
'<option value="AP" >AP</option>'+
'<option value="BA" >BA</option>'+
'<option value="CE" >CE</option>'+
'<option value="DF" >DF</option>'+
'<option value="ES" >ES</option>'+
'<option value="GO" >GO</option>'+
'<option value="MA" >MA</option>'+
'<option value="MG" >MG</option>'+
'<option value="MS" >MS</option>'+
'<option value="MT" >MT</option>'+
'<option value="PA" >PA</option>'+
'<option value="PB" >PB</option>'+
'<option value="PE" >PE</option>'+
'<option value="PI" >PI</option>'+
'<option value="PR" >PR</option>'+
'<option value="RJ" >RJ</option>'+
'<option value="RN" >RN</option>'+
'<option value="RO" >RO</option>'+
'<option value="RR" >RR</option>'+
'<option value="RS" >RS</option>'+
'<option value="SC" >SC</option>'+
'<option value="SE" >SE</option>'+
'<option value="SP" >SP</option>'+
'<option value="TO" >TO</option>'+
'</select>';
/*! String HTML que representa parte da interface de pesquisa de Municípios, inserida na janela flutuante.  */
var strPesqMunic = ''+
'<table border="0" width="100%" height="100%" cellspacing="1" cellpadding="1">'+
	'<tr>'+
		'<td width="92%" height="10" align="center">'+
			strEstadosExistentes+
	        '&nbsp;&nbsp;'+
			'<input id="txtPesquisa" name="txtPesquisa" type="text" value="" class="input_">'+
		'</td>'+
		'<td width="8%" align="center">'+
			'<img class="btStyle" id="btFind" src="../../img/btFind1.gif" onclick="pesquisar();" title="Pesquisar com o texto digitado.">'+
		'</td>'+
	'</tr>'+
	'<tr valign="top">'+
		'<td colspan="2" width="100%" height="150" align="center" valign="top">'+
			'<div id="municLocalizados" style="position:relative;'+
			((!isIE_)?('height:100%;'):(''))+
			'"></div>'+
		'</td>'+
	'</tr>'+
	'<tr>'+
		'<td colspan="2" width="100%" height="10" align="right">'+
			'<img class="btStyle" src="../../img/btOk.gif" onclick=locateMunicipio(0); title="Localizar o Município no mapa.">'+
		'</td>'+
	'</tr>'+
'<table>';
////////////////////////////////////////////////////////////////////

/*! Corpo html da janela flutuante. */
var strFrmFlut = 
'<table border="0" width="100%" cellspacing="0" cellpadding="0" valign="bottom>'+
	'<tr>'+
	'<td width="100%" valign="bottom">'+
		'<table border="0" width="100%" cellspacing="0" cellpadding="0" height="25" '+
		'class="divBarra" bgcolor="#d7e5d7">'+
		'<tr>'+
		'<td valign="middle" align="center" width="20%">'+
			   '<img style="cursor:pointer" src="../../img/homeoff.gif" name="home" border="0" '+
			   'onclick=roll("home");'+
			   'alt="" title="Sobe janela.">'+
		'</td>'+
		'<td id="titleBar" style="cursor:move" width="60%" title="Move janela.">'+
			'<ilayer width="100%" onSelectStart="return false">'+
			'<layer width="100%" onMouseover="isHot=true;if (isN4) ddN4(janela)" onMouseout="isHot=false">'+
			'</layer>'+
			'<font face="verdana" size="-1" color="#040200">'+
			'Localizar Municípios'+
			'</font>'+
			'</ilayer>'+
		'</td>'+
		'<td valign="middle" align="center" width="10%">'+
		'<a href="#" style="cursor:pointer" onClick="esconde();return false">'+
		'<img border="0" alt="" title="FECHAR." src="../../img/fechar_.gif"></a>'+
		'</td>'+
		'<td valign="middle" align="center" width="10%">'+
		'<div id="pointCarregando" style="position:relative;"></div>'+
		'</td>'+
		'</tr>'+
		'</table>'+
	'</td></tr>'+
	'<tr height="90%" valign="top">'+
		'<td width="100%" valign="top" colspan="4" align="center">'+
			'<div bgcolor="#F5F5F5" id="tableBody" style="position:relative;display:block;">'+
				'<table valign="top" border="0" width="100%" cellspacing="0" cellpadding="0" height="100%">'+
					'<tr>'+
					'<td valign="top" align="center" width="95%">'+
					'<table border="0" align="center" width="100%" height="270" '+
					'cellspacing="0" cellpadding="0" class="divBody" '+
					((!isIE_)?('bgcolor="#F5F5F5">'):('bgcolor="#F5F5F5">'))+
						'<tr height="100%">'+
							'<td id="insertTd" width="100%" height="100%" align="center">'+
							// conteúdo da subjanela
							strPesqMunic+
							'</td>'+
						'</tr>'+
					'</table>'+
					'</td>'+
					'</tr>'+
				'</table>'+
			'</div>'+
		'</td>'+
	'</tr>'+
	'</table>';
////////////////////////////////////////////////////////////////////
/*! String HTML da barra de menu de ferramentas sobre o mapa. */
var strFrmMemu =
'<table cellSpacing="0" cellPadding="0" width="100%" border="0" align="left">'+
  '<tr>'+
    '<td>'+
      '<table valign="bottom" align="left" border="0" cellspacing="0" cellpadding="0">'+
		'<tr>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu1" src="../../img/btDraw.png" border="0" onclick=parent.submeter_("mapa.php"); title="Redesenhar o mapa." class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu2" src="../../img/btRecompor.png" border="0" title="Recompor visualização inicial do mapa." onClick=parent.submeter_("mapa.php?recompor=OK"); class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu3" src="../../img/btZoom+.png" border="0" title="Habilita ferramenta para aproximação." onClick="parent.setClassName(this); parent.AlterCursorMode(3);" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu4" src="../../img/btZoom-.png" border="0" title="Habilita ferramenta para distanciação." onClick="parent.setClassName(this); parent.AlterCursorMode(4);" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu5" src="../../img/btZoomArea.png" border="0" title="Habilita ferramenta para aproximação por seleção de área." onClick="parent.setClassName(this); parent.AlterCursorMode(0);" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu6" src="../../img/btPan.png" border="0" title="Habilita ferramenta para arrastar mapa." onClick="parent.setClassName(this); parent.AlterCursorMode(8);" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu7" src="../../img/btMedida.png" border="0" title="Habilita ferramenta para obter medida de distância." onclick="parent.setClassName(this); parent.AlterCursorMode(2);" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu8" src="../../img/btFantasma.gif" border="0" /></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu9" src="../../img/btDolar.png" border="0" title="Habilita ferramenta para receber informações sobre contratos por Município." onClick="parent.setClassName(this); parent.AlterCursorMode(7);" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu10" src="../../img/btInfo.png" border="0" title="Habilita ferramenta para receber informações de objetos por apontamento." onClick="parent.setClassName(this); parent.AlterCursorMode(1);" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu11" src="../../img/btTolTip.png" border="0" title="Habilita ferramenta para visualização do rótulo dinâmico." onclick="parent.setClassName(this); parent.AlterCursorMode(5);" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu12" src="../../img/btText.png" border="0" onClick="parent.setClearTextMap();" title="Habilita/Desabilita visualização do rótulo estático." class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu13" src="../../img/btLente.png" border="0" title="Localização rápida de Município." onClick="parent.exibe();" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu14" src="../../img/btFind.png" border="0" title="Acesso aos Assistentes de Consulta." onClick="parent.operacaomenu(\'frmConsultasAcesso.php\');" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu15" src="../../img/btClear.png" border="0" title="Limpa o contexto de seleção de objetos geográficos." onClick="parent.submeter_(\'mapa.php?clearMap=OK\');" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu16" src="../../img/btDownload.png" border="0" title="Permite exportação de planos de informação disponíveis no banco corporativo, e geração de imagens." onclick="parent.operacaomenu(\'frmExportarLayers.php\');" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu17" src="../../img/btFantasma.gif" border="0" /></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu18" src="../../img/btAjuda.png" border="0" title="Acesso à ajuda on-line." onclick="parent.operacaomenu(\'../../help/apresentacao.html\');" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu19" src="../../img/btGoogle.png" border="0" title="Acesso à localidade pelo Google Maps." onclick="parent.operacaomenu(\'frmGoogleMapApi.php\');" class="btMenu"/></td>'+
			'<td><img onmouseover=parent.swapClassNameInMenu(this); onmouseout=parent.swapClassNameInMenu(this); id="menu20" src="../../img/btWMS.png" border="0" title="Habilita ferramenta para obter mapa via WMS." onClick="parent.exibeWMS();" class="btMenu"/></td>'+
        '</tr>'+
      '</table>'+
    '</td>'+
  '</tr>'+
'</table>';
/*! \endhtmlonly */
///////////////////////////////////////////////////////////
/*!
	\brief Função que insere um iframe com municípios localizados
	na subjanela de pesquisa (carrega locateMunic.php).
	\param void.
	\return void.
	\public
*/
function pesquisar() {
	if (OBJ("txtPesquisa").value!="" || OBJ("estado")[OBJ("estado").selectedIndex].value!="") {
		OBJ("btFind").className="btStyle";
		
		OBJ("municLocalizados").innerHTML="<IFRAME style='Z-INDEX:1;' "+
		"src='locateMunic.php?txtPesq="+OBJ("txtPesquisa").value+"&estado="+OBJ("estado")[OBJ("estado").selectedIndex].value+
		"' frameBorder='0' "+
		((!isIE_)?(''):("class='divFrame'"))+
		" width='95%' height='185'></IFRAME>";
	}else {
		alert("Forneça parâmetros para a consulta!");
		if (OBJ("txtPesquisa").value=="")
			OBJ("txtPesquisa").focus();
	}
}
/*!
	\brief Dispara processo de identificação dos Municípios selecionados e faz
	requisição de atualização do mapa para apresentar os Municípios selecionados.
	\param void.
	\return void.
	\public
*/
function locateMunicipio(op) {
	if (frameChildWindow) {
		OBJ("btFind").className="btStyle";
		frameChildWindow.locateMunicipio(op);
	}else {
		OBJ("btFind").className="destak";
		alert("Pesquise um Município Acionando o Botão de Pesquisa!");
	}
}
/*!
	\brief Função que busca um objeto pelo id e retorna uma referência.
	\param String id_, identificador do objeto.
	\return object, referência ao elemento identificado por id_.
	\public
*/
function OBJ(id_) {
	return document.getElementById(id_);
}
/*!
	\brief Identifica o atributo a ser alterado, captura o novo ponto de tela que deve ser
	usado para mover a janela.
	\param Event e, evento percebido sobre a barra da subjanela flutuante.
	\return void.
	\public
*/
function ddInit(e){
	topDog=isIE ? "BODY" : "HTML";
	whichDog=isIE ? document.all.janela : OBJ("janela");
	hotDog=isIE ? event.srcElement : e.target;
	while (hotDog.id!="titleBar"&&hotDog.tagName!=topDog){
		hotDog=isIE ? hotDog.parentElement : hotDog.parentNode;
	}
	if (hotDog.id=="titleBar"){
		offsetx=isIE ? event.clientX : e.clientX;
		offsety=isIE ? event.clientY : e.clientY;
		nowX=parseInt(whichDog.style.left);
		nowY=parseInt(whichDog.style.top);
		ddEnabled=true;
		document.onmousemove=dd;
	}
}
/*!
	\brief Aplica a nova posição ao elemento base da subjanela.
	\param Event e, evento percebido sobre a barra da subjanela flutuante.
	\return void.
	\public
*/
function dd(e){
	if (!ddEnabled) return;
	whichDog.style.left=isIE ? nowX+event.clientX-offsetx : nowX+e.clientX-offsetx;
	whichDog.style.top=isIE ? nowY+event.clientY-offsety : nowY+e.clientY-offsety;
	return false;
}
/*!
	\brief Atualiza eventos percebidos sobre a subjanela.
	\param String whatDog, nome de identificação do objeto que abriga a subjanela.
	\return Boolean, false se falhou.
	\public
*/
function ddN4(whatDog){
	if (!isN4) return;
	N4=eval(whatDog);
	N4.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
	N4.onmousedown=function(e){
		N4.captureEvents(Event.MOUSEMOVE);
		N4x=e.x;
		N4y=e.y;
	}
	N4.onmousemove=function(e){
		if (isHot){
			N4.moveBy(e.x-N4x,e.y-N4y);
		return false;
		}
	}
	N4.onmouseup=function(){
		N4.releaseEvents(Event.MOUSEMOVE);
	}
}
/*!
	\brief Fecha a subjanela.
	\param void.
	\return void.
	\public
*/
function esconde(){
	if (isIE||isNN) whichDog.style.visibility="hidden";
	else if (isN4) document.janela.visibility="hide";
}
/*!
	\brief Exibe a subjanela.
	\param void.
	\return void.
	\public
*/
function exibe(){
	whichDog=isIE ? document.all.janela : OBJ("janela");
	if (isIE||isNN) whichDog.style.visibility="visible";
	else if (isN4) document.janela.visibility="show";
}
/*!
	\brief Exibe barra de menu sobre o mapa.
	\param void.
	\return void.
	\public
*/
function exibeMenu(){
	var menuMapaRef=isIE ? document.all.menuMapa : OBJ("menuMapa");
	if (isIE||isNN) menuMapaRef.style.visibility="visible";
	else if (isN4) document.menuMapa.visibility="show";
}
/*!
	\brief Esconde o corpo da subjanela.
	\param void.
	\return void.
	\private
*/
function hideBody() {
	OBJ("tableBody").style.display="none";
}
/*!
	\brief Exibe o corpo da subjanela.
	\param void.
	\return void.
	\private
*/
function showBody() {
	OBJ("tableBody").style.display="block";
}
/*!
	\brief Troca a imagem de seta que permite encolher/espandir o corpo da subjanela.
	\param String imgName, nome da imagem que foi pré carregada para este fim.
	\return void.
	\private
*/
function roll(imgName){
	if (a==0) {
   		imgState=eval(imgName + 'on.src');
   		hideBody();
   		title_ = "Desce janela.";
   		a = 1;
   		//stopPoint();
   	}else {
		imgState=eval(imgName + 'off.src');
		showBody();
		title_ = "Sobe janela.";
		a = 0;
		//startPoint();
	}
	
	document.images[imgName].src = imgState;
	document.images[imgName].title = title_;
}
/*!
	\brief Função para criar uma div no documento principal.
	\paran int top_, left_, ponto de referência da div(top corner);
	\paran int width_, largura da subjanela;
	obs: se width_ = null janela fica presa no canto esquerdo e quando
	executa evento arrastar altera o tamanho "tipo resize".
	\paran string name_, id da camada div;
	\paran boolean ifImg_, se true insere imagem dentro da div com name = name_;
	\return escreve objeto div na janela, com propriedade display=none.
*/
function createLayerFlutuante(top_, left_, width_, name_) {
	if (width_ == "") width_ = "";
	else width_ = "width:"+width_+"px";
	document.write("<div id='"+name_+"' style='position:absolute;"+
	width_+";left:"+left_+";top:"+top_+";"+
	"z-index:1000;visibility:hidden;'></div>");
}
/*!
	\brief Insere na div de identificador "janela" o conteúdo HTML que representa a interface da
	subjanela de pesquisa de municípios.
	\param void.
	\return void.
	\public
*/
function onLoad_() {
	OBJ("janela").innerHTML = strFrmFlut;
}
/*!
	\brief Insere na div de identificador "menuMap" o conteúdo HTML que representa a barra de ferramentas sobre o mapa.
	\param void.
	\return void.
	\public
*/
function onLoad_menu(){
	frameCanvasReference.document.getElementById("menuMap").innerHTML = strFrmMemu;
}
