// +--------------------------------------------------------+
// | Class: classLoader          
// |
// | Uma classe para o gerenciamento da mensagem de carregando
// | quando uma função está sendo executada na segunda camada.           
// +--------------------------------------------------------+
function classLoader()
{
    // +--------------------------------------------------------+
    // | Variable: iWidth
    // | Largura da janela onde a mensagem de carregando será exibida.
    // +--------------------------------------------------------+
	var iWidth;
    // +--------------------------------------------------------+
    // | Variable: sDivName
    // | Nome do objeto DIV que representa a janela.
    // +--------------------------------------------------------+	
	var sDivName;
    // +--------------------------------------------------------+
    // | Variable: sMsg
    // | Mensagem a ser exibida.
    // +--------------------------------------------------------+	
	var sMsg;
    // +--------------------------------------------------------+
    // | Variable: sImg
    // | Endereço da imagem a ser exibida.
    // +--------------------------------------------------------+	
	var sImg;
	this.setDivName = setDivName;
	this.setMsg = setMsg;
	this.setImg = setImg;
	this.setSize = setSize;
	this.createLoader = create;
	this.removeLoader = remove;

	// +--------------------------------------------------------+
	// | Function: setDivName
	// | Atribui valor a propriedade sDivName do objeto instanciado,
	// | definindo o nome do objeto DIV onde será montada a mensagem.
	// |
	// | Parameters: 
	// | _sDivName - nome do objeto DIV.
	// +--------------------------------------------------------+
	function setDivName(_sDivName)
	{
		this.sDivName = _sDivName;	
	}

	// +--------------------------------------------------------+
	// | Function: setMsg
	// | Atribui valor a propriedade sMsg do objeto instanciado,
	// | definindo a mensagem que será exibida.
	// |
	// | Parameters: 
	// | _sMsg - mensagem a ser exibida.
	// +--------------------------------------------------------+		
	function setMsg(_sMsg)
	{
		this.sMsg = _sMsg;	
	}

	// +--------------------------------------------------------+
	// | Function: setImg
	// | Atribui valor a propriedade sImg do objeto instanciado,
	// | definindo a imagem que será exibida abaixo da mensagem de 
	// | carregando.
	// |
	// | Parameters: 
	// | _sImg - endereço da imagem a ser exibida.
	// +--------------------------------------------------------+	
	function setImg(_sImg)
	{
		this.sImg = _sImg;	
	}

	// +--------------------------------------------------------+
	// | Function: setSize
	// | Atribui valor a propriedade iWidth do objeto instanciado,
	// | definindo a largura da janela onde a mensagem de carregando
	// | será exibida.
	// |
	// | Parameters: 
	// | _iWidth - largura da janela
	// +--------------------------------------------------------+	
	function setSize(_iWidth)
	{
		if (_iWidth < 0)
			iWidth = "auto"
		else
			iWidth = _iWidth;
	}

	// +--------------------------------------------------------+
	// | Function: createDiv
	// | Cria os objetos DIVs na página para que assim a mensagem 
	// | de carregando possa ser exibida.             
	// +--------------------------------------------------------+	
	function createDiv(_sPosicao)
	{
		switch(_sPosicao)
		{
			case "center": 
			{
				var sHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td align='center'><span class='fonte_loader_msg'>" + sMsg + "</span><BR /></td></tr>";
				if (sImg != "")
					sHTML = sHTML + "<tr><td align='center'><img src='" + sImg + "' /></td></tr>";
				sHTML = sHTML + "</table>";
				if(document.getElementById(sDivName) === null)
				{
					$("body").append("<div id='" + sDivName + "'>" + sHTML + "</div>");	
				}
				break;
			}
			case "left":
			{
				var sHTML = "<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td align='right'><img src='" + sImg + "' /></td><td align='left' width='8'></td>";
				if (sImg != "")
					sHTML = sHTML + "<td align='left'><span class='fonte_loader_msg'>" + sMsg + "</span><BR /></td></tr>";
					sHTML = sHTML + "</table>";
				if(document.getElementById(sDivName) === null)
				{
					$("body").append("<div id='" + sDivName + "'>" + sHTML + "</div>");	
				}
				break;
			}
		}		
	}
	
	// +----------------------------------------------------------+
	// | Function: create
	// | Função responsável por preparar a página para exibição da 
	// | mensagem de carregando. Para ser acessada deve ser chamada como:
	// | createLoader
	// |
	// | Parameters:
	// | _sDivName - deve ser o nome da classe na folha de estilo 
	// |             que fornecerá as configurações para a DIV;   
	// | _sMsg - mensagem que irá aparecer acima da imagem definada em _sImg;
	// | _sImg - imagem (opcional);   
	// | _iWidth - largura da DIV que será criada.  
	// +----------------------------------------------------------+	
	function create(_sDivName, _sMsg, _sImg, _iWidth, _sPosicao)
	{
		sDivName = _sDivName;
		sMsg = _sMsg;
		sImg = _sImg;
		setSize(_iWidth);
		
		// Verifica se é o IE6 ou superior. Caso positivo cria um iframe
		// para esconder os combobox da página.
	    if ( (jQuery.browser.msie) && (jQuery.browser.version >= 6) )
	    {
		    $("body","html").css({height: "100%", width: "100%"});
		    $("html").css("overflow","hidden");
		    if (document.getElementById("iframe_selects") === null) 
			    $("body").append("<iframe id='iframe_selects'></iframe>");
	    }

	    if (document.getElementById("div_background") === null)
	        $("body").append("<div id='div_background'></div>");
	    
		// Ativa a div_background e deixa o fundo opaco	    		
		$("#div_background").addClass("div_backgroundBG"); 
		
		createDiv(_sPosicao);
		$("#div_background").unbind();
		$("#" + sDivName).show();
		$("#" + sDivName).blur();
	}
	
	// +----------------------------------------------------------+	
	// | Function: remove
	// | Retira a mensagem de carregando da página. Para ser acessada 
	// | deve ser chamada como: removeLoader
	// |
	// | Parameters:
	// | _bBGFlag - essa flag define se o fundo continuará opaco  
	// |            ou não. Se TRUE remove fundo opaco, c.c. fundo 
	// |            permanece.          
	// +----------------------------------------------------------+	
	function remove(_bBGFlag)
	{
		if(document.getElementById("div_background") !== null)
		{
			if ( ($("#div_background")[0].style.display != "none") && (_bBGFlag) )
			{
				$('#iframe_selects').trigger("unload").unbind().remove();
		        $('#div_background').trigger("unload").unbind().remove();		
			}
		}
        $("#" + sDivName).trigger("unload").unbind().remove();
		if ( (typeof document.body.style.maxHeight == "undefined") && (_bBGFlag) ) 
		{
	        $("body","html").css({height: "auto", width: "auto"});
	        $("html").css("overflow","");
        }		
	}
	
}