/**
* @author Heber
*/
/**********************************************************************
* Framework Javascript                                                *
* Desenvolvimento : Heber Aragão 									  *
* Alteração: Rosemeire da Silva										  *
* Data : 12/02/2008													  *
* Objetivo : Esta Classe tem por Objetivo a criação de um box         *
* flutuante na tela                                                   *	
* Obs.: Essa Classe nescessita, pra funcionar, da classe ajax.js e 	  *
* tools.js. 
***********************************************************************/

	//	id_layer	 	= "block"; id do frame que bloqueia fundo
	//	id_box		 	= "box"; id da caixa (box_flutuante)
	//  id_cont 	 	= "content";  id da div onde é apresentado o conteúdo
	//	css_tit_box		= css da barra de título
	//	css_btclose		= css da barra do botão close;
	//	left			= posicao da caixa (box) a esquerda, para valor = "" a classe calcula
	// 	top				= posicao da caixa (box) do top, para valor = "" a classe calcula
	//	bt_close		= botão fechar da caixa box

	// tp_box    	 = tipo de box (1 - Formulario  2 - Mensagem  3 - Exibição de imagem, );
	// conteudo  	 = conteúdo que vai abrir no floatBox: arquivo, mensagem, imagem;
	// tit_box       = Titulo da barra do box
	// imgFundo_box  = imagem de background
	// h    		 = altura da caixa
	// w    		 = largura da caixa
	// css_tit_box	 = css utilizado no título da caixa
	// block		 = Boolean que determina o bloqueio do fundo [1] sim [0] não
	// drag_drop	 = Boolean que determina se a caixa (box) poderá ser arrastável
	// element_start = Elemento onde foi dado início na classe floatbox
	function floatBox(vtp_box,vconteudo,vtit_box,vw,vh,vblock,vdrag_drop,velement_start){
		/* Atributos c/ valores fixos da Classe, podendo ser alterada com a função setNome_Propriedade() */
		var id_layer	 	= "block";
		var	id_box		 	= "box";
		var id_cont 	 	= "content";
		var css_tit_box		= "tit";	
		var css_btclose		= "btclose";
		var css_barra		= "barra";
		var left			= "";
		var top				= "";
		var	bt_close		= "|X|";
		var name_class 		= "floatbox";
		var width_btclose	= 25;
		var w_image			= 0;
		var h_image			= 0;
		/* Atributos c/ valores determinados pela classe */
		var width_tit 		= "";
		var width_content	= "";		
		var cursor_tit		= "default";

		var codExec			= '';

		
		/* Atributos c/ valores de chamada da Classe */
		var	tp_box	 	 	= "";
		var	conteudo	 	= "";
		var	tit_box 	 	= "";
		var	w 			 	= "";
		var	h 		 	 	= "";
		var	css 	     	= "";
		var block		 	= 1;
		var drag_drop		= 0;
		var element_start	= "";
		var event_tit		= "";

		/* Variaveis utilizada para movimentar o */
		var	__dragX = 0; 
		var	__dragY = 0; 
		var	__dragId = ''; 
		var	__dragging = false;

		/* Métodos da classe */		
		this.floatBox 			= floatBox;
		this.createBox			= createBox;	
		this.start				= start;
		this.blockLayer			= blockLayer;
		this.unblockLayer		= unblockLayer;		
		this.newBox				= newBox;
		this.boxClose			= boxClose;
		this.Height_Width_Pagina = Height_Width_Pagina;
		this.boxOpen			= boxOpen;
		this.initDragDrop		= initDragDrop;
		this.closeDragDrop		= closeDragDrop;
		this.__dragDown			= __dragDown;
		this.__dragMove			= __dragMove;
		this.setId_layer		= setId_layer;
		this.setId_box			= setId_box;
		this.setId_cont 	 	= setId_cont;
		this.setCss_tit_box		= setCss_tit_box;
		this.setCss_btclose		= setCss_btclose;
		this.setCss_barra		= setCss_barra;
		this.setLeft			= setLeft;
		this.setTop				= setTop;
		this.setBt_close		= setBt_close;
		this.setName_class		= setName_class;
		this.setTamanho_image 	= setTamanho_image;
		this.set__dragId		= set__dragId;
		this.setCodExec			= setCodExec;
		/*Construtor*/
		floatBox(vtp_box,vtit_box,vconteudo,vw,vh,vblock,vdrag_drop,velement_start);
		
		function floatBox(vtp_box,vtit_box,vconteudo,vw,vh,vblock,vdrag_drop,velement_start)
		{
			tp_box	 	 	= vtp_box;
			tit_box 	 	= vtit_box;
			conteudo	 	= vconteudo;
			w 			 	= vw;
			h 		 	 	= vh;
			block		 	= vblock;
			drag_drop 		= vdrag_drop;
			element_start	= velement_start;
		}
		
		function createBox(){
			start();
			if (block == 1){
				blockLayer();
			}
			newBox();
			boxOpen();
		}
		
		// start valores para atributos
		function start(){
			// calcula a posição inicial da caixa (box)
			if (left == ""){
				left = Height_Width_Pagina('w');
				left = (Number(left)/2)-(Number(w)/2);
			}
			
			if (top == ""){
				top = (getPosicaoElemento(element_start).top);
			}
			
			// calcula o tamanho p/ barra de titulo
			width_tit = Number(w)-(Number(width_btclose)+25);
			// calcula o tamanho p/ DIV result
			width_content = Number(w) - 6;
			
			// Defini o cursor da barra de título
			if (drag_drop == 1){
				cursor_tit = "move";
				initDragDrop();				
				event_tit = ' onMouseOver="'+name_class+'.set__dragId(\''+id_box+'\')" ';
			} 						
		}
		

		// bloqueia o fundo da aplicação deixando-o desabilitado
		function blockLayer()
		{
			// cria o frame que desabilita o fundo da aplicação
			var corpo  = document.getElementsByTagName("body").item(0);
			var Layer = document.createElement("iframe");
				Layer.setAttribute("id",id_layer);			
				corpo.appendChild(Layer);		
			
			// seta as propriedades da Layer
			var caixa          			= getObj(id_layer);
				caixa.style.display  		= "block";
				caixa.style.position 		= "absolute";
				caixa.style.left     		= "0pt";
				caixa.style.top      		= "0pt";	
				caixa.style.backgroundColor = "#000000";	
				caixa.style.width    		= '100%';
				caixa.style.height   		= '120%';
				caixa.style.visibility      = "visible";
				caixa.style.zIndex          = "70";
		}
		
		// fecha a caixa na tela
	
		function unblockLayer(obj)
		{		
			
			obj.removeChild(obj.lastChild);		
		}
		
		
		// cria uma caixa flutuante
		function newBox()
		{
			// cria uma caixa (div flutuante) no corpo do documento
			var corpo  = document.getElementsByTagName("body").item(0);
			var divBox = document.createElement("div");
			divBox.setAttribute("id",id_box);			
			corpo.appendChild(divBox);	

			// seta as propriedades da caixa
			var caixa           = getObj(id_box);	
			caixa.style.left 	= left+'px';
			caixa.style.top     = top+"px";	
			caixa.style.width   = w+"px";
			caixa.style.height  = h;
			caixa.style.zIndex  = "100";
			caixa.style.display = "block";	
			
			// insere cabeçalho
			caixa.innerHTML = "<div class='"+css_barra+"' style='width:"+w+"px;' ><div class='"+css_tit_box+"' style='width:"+width_tit+"px;cursor:"+cursor_tit+";' "+event_tit+" >"+tit_box+"</div><div class='"+css_btclose+"' style='width:"+width_btclose+"px;' onclick='"+name_class+".boxClose()' >"+bt_close+"</div></div><div id='"+id_cont+"' name='"+id_cont+"' style='width:"+width_content+"px;height="+h+"' ></div>";	
		}
		
		function boxClose()
		{
			if (block == 1)	delObj(getObj(id_layer));
			if (drag_drop == 1) closeDragDrop();			
			delObj(getObj(id_box));
		}
		
		// retorna a resoluão da tela
		function Height_Width_Pagina(medida)
		{
			var xScroll, yScroll;
			if(window.innerHeight && window.scrollMaxY) 
			{
				xScroll = document.body.scrollWidth;
				yScroll = window.innerHeight + window.scrollMaxY;
			}
			else if (document.body.scrollHeight > document.body.offsetHeight) // todos os navegadores
			{
				xScroll = document.body.scrollWidth;
				yScroll = document.body.scrollHeight;
			} 
			else 
			{ // Para Mac...trabalha também com Explorer 6, Mozilla e Safari
				xScroll = document.body.offsetWidth;
				yScroll = document.body.offsetHeight;
				navegador = 'explorer';
			}
			var windowWidth, windowHeight;
			if (self.innerHeight) 	// todos exceto Explorer
			{
				windowWidth = self.innerWidth;
				windowHeight = self.innerHeight;
			} 
			else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 
			{
				windowWidth = document.documentElement.clientWidth;
				windowHeight = document.documentElement.clientHeight;
			} 
			else if (document.body)  // outros navegadores
			{
				windowWidth = document.body.clientWidth;
				windowHeight = document.body.clientHeight;
			}
			// para páginas pequenas com altura total menos a altura do viewport
			if (medida == 'w'){
				if(xScroll < windowWidth)
				{
					pageWidth = windowWidth;
				} 
				else 
				{
					pageWidth = xScroll;
				}
				return pageWidth;
			} else {
				if(yScroll < windowHeight)
				{
					pageHeight = windowHeight;
				} 
				else 
				{
					pageHeight = yScroll;
				}
				return pageHeight;
			}
		}
	
		
		function boxOpen()
		{
			if(document.getElementById) // Para os browsers complacentes com o DOM W3C.
			{ 	
				// div que exibirá o resultado
				var divResult = document.getElementById(id_cont); 
				setVisible(id_box);
					
				// Instancia o Ajax. 
				if (tp_box == 1){ 
					// arquivos e formulários: php, html
					var ajx = new ajax("POST",conteudo,"application/x-www-form-urlencoded",divResult); 
					// abre o ajax chamando o arquivo
					ajx.openAjax(1,"","");		
					// somente envia passando os parametros
					ajx.enviaExecuta('',"Carregando...",codExec); 					
				}
				
				if (tp_box == 2){
					// mensagem
					divResult.innerHTML = conteudo;								
				}
				
				if (tp_box == 3){
					// imagem
					divResult.innerHTML = "<img src='"+conteudo+"' width='"+w_image+"' height='"+h_image+"' />";								
				}
			}
		}	
		
		function initDragDrop() {
		/* função que permiti movimentar objetos no browser */	
			document.body.onmousedown = __dragDown;
			document.body.onmousemove = __dragMove;
			document.body.onmouseup = function() { __dragging = false; };
		}		

		function closeDragDrop() {
		/* função que permiti movimentar objetos no browser */	
			document.body.onmousedown = '';
			document.body.onmousemove = '';
			document.body.onmouseup = '';
		}		

		function __dragDown(e) {
		/* função que permiti movimentar objetos no browser */	
			e = e ? e : window.event;
			__dragEl = document.getElementById(__dragId) || null;
			var _target = document.all ? e.srcElement : e.target;
			var css_exec = "/"+css_tit_box+"/.test(_target.className)";
			if(!__dragEl || !(eval(css_exec))) return;
			__dragX = e.clientX - __dragEl.offsetLeft;
			__dragY = e.clientY - __dragEl.offsetTop;
			__dragging = true;
		};
		
		function __dragMove(e) {
		/* função que permiti movimentar objetos no browser */	
			if(typeof __dragging == 'undefined' || !__dragging) return;
			e = e ? e : window.event;
			__dragEl.style.left = (e.clientX - __dragX)+'px';
			__dragEl.style.top = (e.clientY - __dragY)+'px';
		};
		
		function setId_layer(valor){
			id_layer = valor
		}
		
		function setId_box(valor){
			id_box = valor
		}
		
		function setId_cont(valor){
			id_cont = valor
		}

		function setCss_tit_box(valor){
			css_tit_box	= valor
		}
		
		function setCss_btclose(valor){
			css_btclose	= valor
		}
		
		function setCss_barra(valor){
			css_barra = valor;
		}
		
		function setLeft(valor){
			left = valor
		}
		
		function setTop(valor){
			top = valor
		}
		
		function setBt_close(valor){
			bt_close = valor;
		}
		
		function setName_class(valor){
			name_class = valor;
		}
		
		function setTamanho_image(vw_image, vh_image){
			if (w_image > w){
				alert('Atenção!!! O tamanho da imagem é maior do que o tamanho da caixa BOX!!!');
				return false;
			}
			w_image = vw_image;
			h_image = vh_image;
		}
		
		function set__dragId(id){
			__dragId = id; 
		}
		
		function setCodExec($valor){
			codExec = $valor;
		}
	}
	