/************************************************************************************************************************************************
Criador: Gustavo Faria Lopes
Iniciais: GFL
Cidade: Itabirito / MG
Arquivo Atualizado: 03/12/2007
************************************************************************************************************************************************/

//Declaração de constates globais
var cstSufixoPixelFrameWork = "px";

function jsFrameWorkGFL() {
	
	//-> Função para remover espaços em strings
	this.trim = function(strTexto) {
		objRegExp = new RegExp("[^\s]+");
		if(objRegExp.test(strTexto)) {
		    //strTexto = strTexto.replace(/\s+/gi,""); //Em qualquer local em uma string
		    strTexto = strTexto.replace(/\s+$/gi,""); //No final de uma string
		    strTexto = strTexto.replace(/^\s+/gi,""); //No início de uma string
		    return strTexto.toString();
		}
		return strTexto;
	}

	//-> Função para criar um elemento em um determinado local de uma página
	this.criaElemento = function(objLocalElemento, strTipoElemento, strIdElemento) {
		if(document.createElement) {
			var objNovoElemento = document.createElement(strTipoElemento);
	  		objNovoElemento.setAttribute("id", strIdElemento);
	  		objLocalElemento.appendChild(objNovoElemento);
	  		return objNovoElemento;
		}
		else {
		    alert("Não é póssivel criar um elemento nesse navegador.");
		    return false;
	 	}
	}
	
	//-> Função para remover um elemento de um determinado local da página
	this.removeElemento = function(objLocalElemento, objElemento) {
		if(document.removeChild) {
			objLocalElemento.removeChild(objElemento);
	  		return true;
		}
		else {
		    alert("Não é póssivel remover um elemento nesse navegador.");
		    return false;
	 	}
	}
	
	//-> Função que demonstra o carregamento de uma página
	this.carregando = function(blnExibeCarregando) {
		var objLocalCarregando = document.getElementsByTagName("body")[0];
		var objDivCarregando;
		if(!document.getElementById("divCarregandoFrameWorkGFL")) {
			objDivCarregando = this.criaElemento(objLocalCarregando, "div", "divCarregandoFrameWorkGFL");
			
			objDivCarregando.style.zIndex = "9999999";
			objDivCarregando.style.position = "absolute";
			objDivCarregando.style.color = "#000000";
			objDivCarregando.style.fontWeight = "bold";
			objDivCarregando.style.fontFamily = "arial";
			objDivCarregando.style.fontSize = "13px";
			objDivCarregando.style.textAlign = "center";
			objDivCarregando.style.verticalAlign = "middle";
			objDivCarregando.style.width = "auto";
			objDivCarregando.style.padding = "4px";
			objDivCarregando.style.backgroundColor = "#E9E9E9";
			if(document.all)
			{
				objDivCarregando.style.filter = "alpha(opacity=80)";
			}
			else if(window.opera)
			{
				objDivCarregando.style.opacity = "0.80";
			}
			else
			{
				objDivCarregando.style.MozOpacity = ((80/100));
			}
			objDivCarregando.title = "Carregando, por favor aguarde.";
			objDivCarregando.innerHTML = "<img src='imagens/carregando.gif' title='Carregando, por favor aguarde.'>" +
						 				 "<br>"+
										 "Carregando, por favor aguarde.";
		}
		else {
			objDivCarregando = document.getElementById("divCarregandoFrameWorkGFL");
		}
	
		if(blnExibeCarregando) {
			objDivCarregando.style.display = "block";
			this.centralizar(objDivCarregando);
		}
		else {
			objDivCarregando.style.display = "none";
		}
		return objDivCarregando;
	}
	
	//-> Função que retorna a altura da janela do navegador
	this.pegarAlturaJanela = function() {
		var alturaJanela = 0;
		if (typeof(window.innerHeight) == "number") {
			alturaJanela = window.innerHeight;
		}
		else {
			if (document.documentElement && document.documentElement.clientHeight) {
				alturaJanela = document.documentElement.clientHeight;
			}
			else {
				if (document.body && document.body.clientHeight) {
					alturaJanela = document.body.clientHeight;
				}
			}
		}
		return alturaJanela;
	}
	
	//-> Função que retorna a largura da janela do navegador
	this.pegarLarguraJanela = function() {
		var larguraJanela = 0;
		if (typeof(window.innerWidth) == "number") {
			larguraJanela = window.innerWidth;
		}
		else {
			if (document.documentElement && document.documentElement.clientWidth) {
	        	larguraJanela = document.documentElement.clientWidth;
			}
			else {
				if (document.body && document.body.clientWidth) {
					larguraJanela = document.body.clientWidth;
	     		}
			}
	  	}
		return larguraJanela;
	}
	
	//-> Função responsável por centralizar o elemento informado na página de acordo com as dimensões da janela do navegador
	this.centralizar = function(elemento) {
		if (document.getElementById) {
			var larguraJanela = this.pegarLarguraJanela();
			var alturaJanela = this.pegarAlturaJanela();
			if (larguraJanela > 0 && alturaJanela > 0) {
				//Verifica se o ELEMENTO passado não é um objeto
				if(typeof(elemento) != "object") {
					var objElemento = document.getElementById(elemento);
				}
				else {
	            	var objElemento = elemento;
				}
				
				var larguraElemento = objElemento.offsetWidth;
				var alturaElemento = objElemento.offsetHeight;
	
				if (larguraJanela - larguraElemento > 0 && alturaJanela - alturaElemento > 0) {
					objElemento.style.position = "absolute";
					objElemento.style.left = ((larguraJanela / 2) - (larguraElemento / 2)) + cstSufixoPixelFrameWork;
					objElemento.style.top = ((alturaJanela / 2) - (alturaElemento / 2)) + cstSufixoPixelFrameWork;
				}
				else if(larguraJanela - larguraElemento > 0) {
					objElemento.style.position = "absolute";
					objElemento.style.left = ((larguraJanela / 2) - (larguraElemento / 2)) + cstSufixoPixelFrameWork;
					objElemento.style.top = 0 + cstSufixoPixelFrameWork;
				}
				else if(alturaJanela - alturaElemento > 0) {
					objElemento.style.position = "absolute";
					if(document.all) {
						objElemento.style.top = ((alturaJanela / 2 + (document.body.scrollTop)) - (alturaElemento / 2)) + cstSufixoPixelFrameWork;
					}
					else {
						objElemento.style.top = (((alturaJanela / 2) + (pageYOffset)) - (alturaElemento / 2)) + cstSufixoPixelFrameWork;
					}
					objElemento.style.left = 0 + cstSufixoPixelFrameWork;
				}				
				else {
					objElemento.style.position = "static";
				}
			}
		}
	}
}