/**
 * Viewport
 */
window.viewport = {
    height: function() { 
        return $(window).height(); 
    },
    
    width: function() {
        return $(window).width();
    },
    
    scrollTop: function() {
        return $(window).scrollTop();
    },
    
    scrollLeft: function() {
        return $(window).scrollLeft();
    }
};


/**
 * Simple modal overlay
 */
(function($) {
	$.fn.overlay = function(options) {
		$(this).css({ 'position': 'relative' });
		var open = function () {
			if (!options.content)
				return false;

			var wwidth = $(window).width();
			var wheight = $(window).height();

			if ($('#overlay').size() == 0)
				$(document.body).append('<div id="overlay-bg"></div><div id="overlay"></div>');

			$('#overlay-bg').css({ 'height': $(document).height()});
			
			var owidth = options.width ? options.width : $("#overlay").innerWidth();
			var oheight = options.height ? options.height : $("#overlay").innerHeight();
			var scrollTop = window.viewport.scrollTop();

			$("#overlay").animate({ 'left': (wwidth - owidth) / 2, 'top': (scrollTop + (wheight - oheight) / 2) }, 'fast', 'swing', function () {
				if (options.width && options.height) {
					diff_w = $("#overlay").outerWidth() - $("#overlay").width();
					diff_h = $("#overlay").outerHeight() - $("#overlay").height();
					resize(options.width - diff_w, options.height - diff_h);
					$('#overlay').append('<span class="overlay-close">Fechar</span>');
					$('#overlay').append(options.content);
				}
			});
		};

		var resize = function (w, h) {
			$("#overlay").animate({ 'width': w, 'height': h });
		}

		var close = function () {
			$('#overlay, #overlay-bg').fadeOut('fast', function () {
				clear();
				resize(100, 100);
			});
		};
		
		var clear = function () {
			$('#overlay').html('');
		}

		var items = $(this);
		items.click(function () {
			if (options.callback)
				options.content = options.callback(this);

			open();
			$('#overlay').fadeIn();
			$('#overlay-bg').show('fast', function () {
				$('#overlay-bg').animate({ opacity: 0.5 }, 'fast', 'linear', function () {
					$('#overlay-bg').css({ 'background-color': '#454043' })
				});
			});
			return false;
		});
		
		$('#overlay, #overlay-bg, .overlay-close').live('click', function () {
			close();
		});

		$(document).keyup(function(event) {
 				if (event.keyCode == '27')
    				close();
		});
	}
})(jQuery);
