/**
* Abre uma janela popup fazendo validação de bloqueadores.
*/
function WindowOpen(url, nome)
{
	var param = 'maximized=no,scrollbars=yes,scrolling=yes,resizebled=no,width=790,height=600';
	var win = window.open(url, nome, param);
	
	if ( ! win ) {
		alert('Seu navegador impediu a abertura de uma janela.\nPor favor, desabilite o bloqueador de pop-ups e repita a operação.');
	}
	
	return win;
}

/**
* Aplica efeitos de botão.
*/
function Botao( obj, estado )
{
	switch ( estado ) {
		case 0 : obj.className = 'botao_off'  ; break;
		case 1 : obj.className = 'botao_on'   ; break;
		case 2 : obj.className = 'botao_press'; break;
	}
}

/**************************************************************************************************
* Classe........: classAjax
* Descrição.....: Executa uma requisição HTTP via AJAX.
* Requerimentos.: O Browser deve suportar o componente HTTPRequest.
*                 Uma função que receba o parâmetro contendo o HTML retornado.
*/
function classAjax( url, funcResponse, responseType ) {
		
	// Parâmetros
	this.url  = url;
	this.funcResponse = funcResponse;
	this.responseType = responseType ? responseType : "XML";
	
	// Métodos
	this.execute = execute;
	this.getNode = getNode;
	this.getText = getText;
	
	function execute( parms ) {
		
		var funcResponse;
		var parmsOK = "";
		var ajax = false;
		
		if ( parms != null ) {
			
			var arr = parms.split("&");
			
			for ( var i = 0; i < arr.length; i++ ) {
				var pair = arr[i].split("=");
				parmsOK += pair[0] + "=" + escape(pair[1]) + "&";
			}
			
			parmsOK = parmsOK.substring(0,parmsOK.length -1);
		}
		
		try {
			ajax = new XMLHttpRequest();
		}
		catch ( e1 ) {
			try {
				ajax = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch ( e2 ) {
				try {
					ajax = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch ( e3 ) {
					ajax = false;
				}
			}
		}
		
		if ( ajax ) {
			
			try {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
			} catch ( e ) {}
			
			funcResponse = this.funcResponse;
			
			ajax.open("POST", url, true);
			ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
			ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
			ajax.setRequestHeader("Pragma", "no-cache");
			
			if ( ajax.overrideMimeType ) {
				
				if ( this.responseType == "HTML" )
					ajax.overrideMimeType("text/html");
				
				else if ( this.responseType == "JSON" )
					ajax.overrideMimeType("text/plain");
				
				else if ( this.responseType == "XML" )
					ajax.overrideMimeType("text/xml");
			}
			
			var oThis = this;
			
			ajax.onreadystatechange = function() {
				
		    	if ( ajax.readyState == 4 ) {
					
					if ( ajax.status == 200 ) {
						
						var response = new String();
						
						if ( oThis.responseType == "HTML" ) {
							
							response = ajax.responseText;
						}
						else if ( oThis.responseType == "JSON" ) {
							
							if ( ajax.responseText ) {
								eval("response = " + unescape(ajax.responseText));
							}
						}
						else if ( oThis.responseType == "XML" ) {
							
							if ( !ajax.responseXML.documentElement && ajax.responseStream ) {
								ajax.responseXML.load(ajax.responseStream);
							}
				    		
							response = ajax.responseXML;
						}
						
						if ( response ) {
							eval(funcResponse + "(response, oThis, true)");
						}
					}
					else {
						
						eval(funcResponse + "(null, oThis, false)");
						
					}
		    	}
			}
			
			ajax.send(parmsOK);
		}
	}
	
	function getNode( element, nodeName ) {
		
		var node = element.getElementsByTagName(nodeName)[0];
		
		return node;
	}
	
	function getText( element, nodeName ) {
		
		var text = "";
		var node = element.getElementsByTagName(nodeName)[0];
		
		if ( node ) {
			
			// IE
			if ( node.text )
				text = node.text;
			
			// Opera
			else if ( node.innerText )
				text = node.innerText;
			
			// Netscape, Firefox
			else if ( node.textContent )
				text = node.textContent;
		}
		
		return text;
	}
}

/**
* Exibe um tooltip.
*/
function tooltip(id, visible, top, left)
{
	var obj;

	if (typeof id == 'object') {
		obj = id
	}
	else {
		obj = document.getElementById(id);
		
		if ( top && left ) {
			obj.style.left = left;
			obj.style.top  = top;
		}
	}
	
	obj.style.display = visible ? 'block' : 'none';
}
