/**
 * @author Artur Alves
 */
NET.popup = {
	
	getId: function(){
		return NET.popup.getPopup().attr("id");
	},
	
	getPopup: function(){
		return $('#fechar_lightbox').parent();
	},
	
	/**
	 * 
	 */
	isExecutando: false,
	
	/**
	 * 
	 */
	isJanelaRedimensionada: false,
	
	
	/**
	 * @param cId
	 */
	centralizar: function() {
		objPopup = NET.popup.getPopup();
		
		if(NET.efeitosHabilitados){
			NET.popup._processarEfeito(objPopup);
		} else {
			NET.popup._processarSemEfeito(objPopup);
		}
	},
	
	_processarEfeito: function (objPopup) {
		if(!NET.popup.isExecutando) {
			NET.popup.isExecutando = true;
			NET.popup.isJanelaRedimensionada = false;
			var PageSizes = NET.popup.ViewPort.getSize();
			var PageScroll = NET.popup.ViewPort.getScroll();
			$('#jquery-overlay').css({
				top:	PageScroll.top,
				left:	PageScroll.left,
				width:		PageSizes.pageWidth,
				height:		PageSizes.pageHeight
			});
			objPopup.animate({
				top:	PageScroll.top + (PageSizes.windowHeight - objPopup.height()) / 2,
				left:	25
			}, 300, "", function(){
				if(NET.popup.isJanelaRedimensionada) {
					NET.popup.isExecutando = false;
					NET.popup._processarEfeito(objPopup);
				} else {
					NET.popup.isExecutando = false;
					NET.popup.isJanelaRedimensionada = false;
				}
			});
		} else {
			NET.popup.isJanelaRedimensionada = true;
		}
	},
	
	_processarSemEfeito: function (objPopup) {
		var PageSizes = NET.popup.ViewPort.getSize();
		var PageScroll = NET.popup.ViewPort.getScroll();
		$('#jquery-overlay').css({
			top:	PageScroll.top,
			left:	PageScroll.left,
			width:		PageSizes.pageWidth,
			height:		PageSizes.pageHeight
		});
		objPopup.css({
			top:	PageScroll.top + (PageSizes.windowHeight - objPopup.height()) / 2,
			left:	PageScroll.left + (PageSizes.windowWidth - objPopup.width()) / 2
		});
	},
	
	/**
	 * 
	 */
	esconder: function () {
		if(NET.popup.pilhaTelas._pilha.length < 1) {
			NET.popup.getPopup().remove();
			NET.ui.efeito("fadeOut", $('#jquery-overlay'), function() { $('#jquery-overlay').remove(); });
			$('embed, object, select').css({ 'visibility': 'visible' });
			
			$(window).unbind("resize");
			
			$(window).unbind("scroll")
		} else {
			NET.popup.atualizarObj(NET.popup.pilhaTelas.recuperar());
		}
	},
	
	/**
	 * @param pId
	 * @param conteudo
	 * @param pWidth
	 * @param eventos
	 */
	exibir: function(pId, conteudo, pWidth, eventos) {
		$('embed, object, select').css({ 'visibility': 'hidden' });
		
		if (!$('#jquery-overlay')[0]) {
			$('#contaneir').append('<div id="jquery-overlay"></div><div id="' + pId + '" class="popup_"><a href="javascript:;" id="fechar_lightbox">fechar</a>' + conteudo + '</div>');
			var lbOverlay = $('#jquery-overlay');
			var lbDiv = $('#'+pId);
			var PageSizes = NET.popup.ViewPort.getSize();
			var PageScroll = NET.popup.ViewPort.getScroll();
		
			lbDiv.css({
				top:		((PageScroll.top + PageSizes.windowHeight) - lbDiv.height()) / 2,
				left:		((PageScroll.left + PageSizes.windowWidth) - pWidth) / 2,
				width:		pWidth,
				textAlign:	'left'
			});
		
			lbOverlay.css({
				top:	PageScroll.top,
				left:	PageScroll.left,
				width:				PageSizes.pageWidth,
				height:				PageSizes.pageHeight,
				opacity:			0.75,
				backgroundColor:	'#fafafa'
			});
			
			NET.ui.efeito("fadeIn", lbOverlay, function(){ NET.ui.efeito("show", lbDiv); });
		} else {
			NET.popup.getPopup().attr("id", pId).empty().css("width", pWidth).append('<a href="javascript:;" id="fechar_lightbox">fechar</a>' + conteudo);
		}

		NET.popup._posCarregamento(eventos);
	},
	
	pilhaTelas: {
		_pilha: [],
		
		inserir: function(){
			var tela = NET.popup.getPopup().clone(true);
			return NET.popup.pilhaTelas._pilha.push(tela);
		},
		
		recuperar: function(){
			return NET.popup.pilhaTelas._pilha.pop();
		}
	},
	
	/**
	 * 
	 * @param pId
	 * @param conteudo
	 * @param eventos
	 */
	atualizar: function(conteudo, eventos) {
		NET.popup.getPopup().empty().append('<a href="javascript:;" id="fechar_lightbox">fechar</a>' + conteudo);
	
		NET.popup._posCarregamentoPilha(eventos);
	},
	
	atualizarUsandoPilha: function(conteudo, eventos) {
		NET.popup.pilhaTelas.inserir();

		NET.popup.getPopup().empty().append('<a href="javascript:;" id="fechar_lightbox">fechar</a>' + conteudo);
	
		NET.popup._posCarregamentoPilha(eventos);
	},
	
	atualizarObj: function(obj, eventos) {
		NET.popup.getPopup().replaceWith(obj);
	
		NET.popup._posCarregamentoPilha(eventos);
	},
	
	_posCarregamento: function(eventos) {
		$('#fechar_lightbox').click(function() {
			NET.popup.esconder();
		});

		$("#Cancelar").click(function(){
			NET.popup.esconder();
			return false;
		});
		
		$(document).bind("keypress", function (e) {
			if ((e.keyCode || e.which) == 27) {
				NET.popup.esconder();
				$(document).unbind("keypress");
			}
		});
		
		$(window).resize(function() {
			NET.popup.centralizar();
		});
	
		$(window).scroll(function() {
			NET.popup.centralizar();
		});
	
		NET.correcaobrowser.trHover();
		
		NET.popup.centralizar();


		if($.isFunction(eventos)) eventos();
	},

	_posCarregamentoPilha: function(eventos) {
		$('#fechar_lightbox').click(function(){
			NET.popup.atualizarObj(NET.popup.pilhaTelas.recuperar());
		});
		
		$("#Cancelar").click(function(){
			NET.popup.atualizarObj(NET.popup.pilhaTelas.recuperar());
			return false;
		});
		
		NET.correcaobrowser.trHover();
		
		NET.popup.centralizar();
		
		$(".v_botao_validador").click(function(){
			return NET.Validador.validar();
		});

		if($.isFunction(eventos)) eventos();
	},
	
	/**
	 * 
	 */
	ViewPort: {
		
		/**
		 * 
		 */
		getScroll: function() {
				var xScroll, yScroll;
				if (self.pageYOffset) {
					yScroll = self.pageYOffset;
					xScroll = self.pageXOffset;
				} else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
					yScroll = document.documentElement.scrollTop;
					xScroll = document.documentElement.scrollLeft;
				} else if (document.body) {// all other Explorers
					yScroll = document.body.scrollTop;
					xScroll = document.body.scrollLeft;	
				}
				return {left: xScroll, top: yScroll};
		},
	
		/**
		 * 
		 */
		getSize: function() {
			yScroll = NET.popup.ViewPort.getScroll().top; 
			xScroll = NET.popup.ViewPort.getScroll().left;
			
			var windowWidth, windowHeight;
			if (self.innerHeight) {
				if(document.documentElement.clientWidth){
					windowWidth = document.documentElement.clientWidth; 
				} else {
					windowWidth = self.innerWidth;
				}
				windowHeight = self.innerHeight;
			} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
				windowWidth = document.documentElement.clientWidth;
				windowHeight = document.documentElement.clientHeight;
			} else if (document.body) { // other Explorers
				windowWidth = document.body.clientWidth;
				windowHeight = document.body.clientHeight;
			}	

			if(yScroll < windowHeight){
				pageHeight = windowHeight;
			} else {
				pageHeight = yScroll;
			}

			pageWidth = windowWidth;
			
			return {pageWidth: pageWidth, pageHeight: pageHeight, windowWidth: windowWidth, windowHeight: windowHeight};
		}
	}
	
};