/**
 * Classe JavaScript de funções utilitárias.
 * 
 * Todos os métodos e parâmetros desta classe devem ser declarados em português 
 * pois o JavaScript possui muitos termos de uso comum em inglês como palavras reservadas.
 * 
 * @package LIB
 * @subpackage JAVASCRIPT
 */
function Util() {
	
	/**
	 * Caixa de confirmação.
	 * 
	 * Exibe um alert com "OK" e "Cancelar".
	 * 
	 * @param string frase Questão que será exibida na caixa de alerta.
	 * @return bool
	 */
	this.certeza = function(frase) {
		if(confirm(frase)) {
			return true;
		} else {
			return false;
		}
	}
	
	/**
	 * Exibe uma caixa de alert e redireciona o usuário em seguida.
	 * 
	 * @param string $frase Frase que será exibida na caixa de alerta.
	 * @param string $redir_url URL para onde o usuário será redirecionado.
	 */
	this.alert_redir = function(frase, redir_url) {
		alert(frase);
		document.window.location.href = redir_url;
	}
	
	/**
	 * Abre uma nova janela de navegador.
	 * 
	 * @param string $url Endereço que deve ser exibido na nova janela.
	 * @param string $winNm Nome da nova janela.
	 * @param int $w Largura em pixels da nova janela.
	 * @param int $h Altura em pixels da nova janela.
	 */
	this.openWin = function(url, winNm, w, h) {
	    var winl = (screen.width - w) / 2;
	    var wint = (screen.height - h) / 2;
	    winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars=yes';
	    window.open(url, winNm, winprops);
	}
	
	/**
	 * Inclui um tooltip móvel em um elemento HTML.
	 * 
	 * Exemplos de uso:
	 * <a href="/algum/lugar" onmouseover="return util.tooltip('texto');" onmouseout="return nd();">link</a>
	 * <img src="imgs/tooltip_icon.jpg" alt="Tooltip" border="0" onmouseover="return util.tooltip('texto');" onmouseout="return nd();" />
	 * 
	 * @param string $txt Texto que vai no tooltip. Suporta tags HTML.
	 */
	this.tooltip = function(txt) {
		var myDelay = 100;
		overlib("<div class=\'tooltipCont\'><div class=\'tooltipTop\'></div>" +
		"<div class=\'tooltipMid\'>" + txt + "</div><div class='tooltipBottom'></div>" +
		"</div>", FULLHTML, DELAY, myDelay);
		myDelay = 0;
	}
	
	/**
	 * Inclui um tooltip fixo em um elemento HTML.
	 * 
	 * Exemplo de uso:
	 * <a href="/algum/lugar" onMouseOver="return util.fixedTooltip('texto');" onMouseOut="return nd();">link</a>
	 * 
	 * @param string $txt Texto que vai no tooltip. Suporta tags HTML.
	 */
	this.fixedTooltip = function(txt) {
		overlib("<div class=\'tooltipCont\'><div class=\'tooltipTop\'></div>" +
		"<div class=\'tooltipMid\'>" + txt + "</div><div class='tooltipBottom'></div>" +
		"</div>", FULLHTML,STICKY);
	}
	
	/**
	 * Testa se o usuário precionou a tecla <ENTER> em um campo de texto.
	 * 
	 * @param object $obj Objeto HTML input text que conterá a data.
	 * @param object $e Evento JavaScript que representa a digitação do valor no campo.
	 * @param string $func Função ou comando JavaScript que será executada caso o usuário precione <ENTER>.
	 * 
	 * @return bool
	 */
	this.pressEnter = function(obj, e, func) {
		var whichCode = window.Event ? e.which : e.keyCode;
		var key = String.fromCharCode(whichCode);
		if(whichCode == '13') { eval(func); }
	}
	
	/**
	 * Adiciona Um site no favoritos do navegador web.
	 * 
	 * @param string $pagina URL do site a ser adicionado aos favoritos.
	 * @param string $titulo Título que o site terá nos favoritos.
	 */
	this.addFavoritos = function(pagina, titulo) {
		if(window.external) {
			//Internet Explorer
			window.external.AddFavorite(pagina, titulo);
		} else if(window.sidebar) {
			//Gecko(Mozilla, Firefox, Firebird & Netscape)
			window.sidebar.addPanel(titulo, pagina,'');
		} else {
			//Opera & Outros
			alert("Desculpe, mas seu navegador não possui essa função");
		}
	}
	
	/**
	 * Adiciona o mecanismo de pesquisa do JáCotei no Firefox.
	 * 
	 * @param string $nomeDoSite
	 * @param sintrg $enderecoDoIcone
	 */
	this.pesquisaFirefox = function(nomeDoSite, enderecoDoIcone) {
		var dir = enderecoDoIcone.split('/');
		var imgFile = dir.pop();
		var path = dir.join('/') + '/';
		var splitedImgFile = imgFile.split('.');
		splitedImgFile.pop();
		var srcFile = splitedImgFile.join('.') + '.src';
		try {
			window.sidebar.addSearchEngine(path + srcFile, path + imgFile, nomeDoSite, 'Campo de pesquisa do Firefox');
		} catch(ex) {
			window.alert('Esta pesquisa é um recurso para usuários do browser Firefox.\r\nInstale-o gratuitamente em http://br.mozdev.org');
		}
	}
	
	/**
	 * Cria um link para adicionar o JáCotei no Firefox.
	 * @param string $linkFav
	 */
	this.linkPesquisaFirefox = function(linkFav) {
		if(window.sidebar) {
			linkFav.innerHTML = linkFav.innerHTML + "<a href=\"javascript:void util.pesquisaFirefox('Jacotei','http://adm.jacotei.com.br/firefox/jacotei.gif')\">Firefox</a>";
		} else {
			linkFav.innerHTML = "";
		}
	}
	
	/**
	 * Codifica uma string em URL.
	 * 
	 * @param string $str String a ser convertida
	 * @return string
	 */
	this.urlEncode = function(str) {
		return escape(str).replace(/\+/g, '%2B').replace(/\"/g, '%22').replace(/\'/g, '%27').replace(/\//g, '%2F');
	}
	
	/**
	 * Escapa caracteres especiais.
	 * 
	 * @param string $str String a ser convertida
	 * @return string
	 */
	this.Escape = function(str) {
		return str.replace(/\+/g, '%2B').replace(/\"/g, '%22').replace(/\'/g, '%27').replace(/\//g, '%2F').replace(/\&/g, '%26');
	}
	
}

/** Instanciando a classe **/
var util = new Util();