(function($) {

	$.fn.modal = function(options) {
	
		// VERIFICANDO O HREF
		if(!options){
			if(this.attr('href')) var options = { url: this.attr('href') };
		} else {
			if(!options.url) { if(this.attr('href')) { options.url = this.attr('href'); } }
		}
		
		var settings = {
			url: '#',
			backgroundColor: '#000',
			backgroundOpacity: 0.5,
			position: 'center',
			referencePosition: this,
			top:0,
			left:0,
			closeEsc:true,
			closeClickOut: false,
			autoOpen: false
		};
		options = jQuery.extend(settings, options);

		function openModal(){
							
			if(options.url == '/pt-br/banner/home.jsp') {	
				if(LerCookie('dhtml-home') == '2') {
					return false;
				} else {
					num = (LerCookie('dhtml-home') == 1) ? 2 : 1;
					GerarCookie('dhtml-home', num,0);
				}
			} else {
				if(LerCookie('dhtml-24horas') == '2') {
					return false;
				} else {
					num = (LerCookie('dhtml-24horas') == 1) ? 2 : 1;
					GerarCookie('dhtml-24horas', num,0);
				}
			}
			
			/*CREATE ELEMENTS*/
			$('body').append($('<img />').attr({src: "../../img/pt-br/load.gif", width: 88, height: 78, alt: "", className: 'load'})).append($('<div></div>').addClass('bg_modal')).append($('<div></div>').addClass('view_modal'));
			
			// verificando se o body é menor do que o screen
			
			var altura = $('html')[0].scrollHeight < $(window).height() ? $(window).height() : $('html')[0].scrollHeight;
			$('.bg_modal').width($('body')[0].scrollWidth).height(window.screen.height);
			
			/*OPACITY*/
			if(options.backgroundOpacity != 0){
				$('.bg_modal').css('background-color',options.backgroundColor);
				$('.view_modal').css('opacity', 0);
				$('.bg_modal').css('opacity', 0);
			}
			
			// escondendo selects
			$('select').css('visibility', 'hidden');

			// posicionamento
			if(options.position=='relative'){
				var offset  = options.referencePosition.offset();
				leftModal = offset.left;		
				topModal =  offset.top;		
			}
			
			/*SHOW BACKGROUND*/
			$('.bg_modal').fadeTo('fast', options.backgroundOpacity, function() {
				$('.view_modal').load(options.url, function() {
				
					/*REMOVE LOAD*/
					$('.load').remove();
					
					GB_getPageScrollTop = function() {
						var yScrolltop;
						if (self.pageYOffset) {
							yScrolltop = self.pageYOffset;
						} else if (document.documentElement && document.documentElement.scrollTop || document.documentElement.scrollLeft) {
							yScrolltop = document.documentElement.scrollTop;
						} else if (document.body) {
							yScrolltop = document.body.scrollTop;
						}
						return yScrolltop;
					}
					
					/*CENTRALIZE MODAL*/
					if(options.position!='center'){
						var alturaModal = parseInt(options.top) + parseInt(topModal) + parseInt($('.view_modal').height());
						if(altura<alturaModal){
							options.top = 0;
							topModal = altura - parseInt($('.view_modal').height());
						}					
						$('.view_modal').css({
								marginTop: topModal, 
								marginLeft: leftModal,
								left: options.left,
								top: options.top
							}
						);
						
					} else {
						var mh = $('.view_modal').height();
						var wh = $(window).height();
						var st = GB_getPageScrollTop();
						/* se o modal for mais alto que a própria janela, ele é alinhado ao topo e não ao centro */
						$('.view_modal').css({marginTop: st+10-(wh-mh>20?mh:wh)/2, marginLeft: -parseInt($('.view_modal').width()/2)});
					}

					/*MODAL HIDE*/
					if(options.backgroundOpacity != 0) $('.view_modal').fadeTo('fast', 1);

					/*CLOSE MODAL*/
					$("a[rel='modalclose']").click(function() {
						closeModal();
						return false;
					});
				});
			});		
			
			
			if(options.closeClickOut==true){
				$('.bg_modal').click(function(){
					closeModal();
				});
			}
			

			if(options.closeEsc==true){
				function trigger(e){
					if(!e){var e=window.event;};
					e.keyCode ? e.keyCode==27 ? closeModal() : '' : '';
					e.which   ? e.which==27   ? closeModal() : '' : '';
				};
				function keyPressHandler(e){
					var kC  = (window.event) ?    // MSIE or Firefox?
						event.keyCode : e.keyCode;
					var Esc = (window.event) ?   
						27 : e.DOM_VK_ESCAPE // MSIE : Firefox
					if(kC==Esc)
						closeModal();
				}			
				$(window).bind("keydown",trigger);
				document.onkeypress = keyPressHandler;
			}
			return false;
		}
		


		if(options.autoOpen == false){
			this.click(openModal);	
			window.setTimeout(closeModal, 15000);
		} else {
			openModal();
			window.setTimeout(closeModal, 15000);
		}
		
		
		
		
		/*CLOSE MODAL*/
		function closeModal(){
			/*HIDE MODAL*/
			$('.view_modal').fadeTo('fast', 0, function(){$(this).remove();});
			
			/*HIDE BACKGROUND*/
			$('.bg_modal').fadeTo('fast', 0, function() {
				$(this).remove();
				$('select').css('visibility', 'visible');
			});
			
			$(window).unbind();
			$('.bg_modal').unbind();
		}	

		
		this.css('visibility','visible');
	}

	$(document).ready(function(){
		$('a[rel="modal"]').each(function(){
			$(this).unbind('click').modal();	
		});
	});
})(jQuery);


