;(function($){
	var $overlay, $loading, $window, $content, 
		config = {
			opacity: .5
		};
	
	$.modal = function(element, options) {
		return $.modal.window.open(element, options);
	}
	
	$.modal.close = function() {
		return $.modal.window.close();
	}
	
	$.fn.center = function () {
	    this.css("position","absolute");
	    this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");
	    this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
	    return this;
	}
	
	$.modal.window =  {
		options: {
			opacity: .5
		},
		
		open: function(element, options) {
			this.options = $.extend({}, this.options, options);
			var self = this;
			// Overlay
			if ($('#modal-window-overlay').length == 0) {
                // create overlay
                var overlayStyle = {
                    'width': '100%',
                    'height': '100%',
                    'top': 0,
                    'left': 0,
                    'opacity': config.opacity,
                    'position': 'fixed',
                    'background': '#000000',
                    'z-index': 100000
                };
                if ($.browser.msie && $.browser.version < 7) {
                    $.extend(overlayStyle, {
                        'position': 'absolute',
                        'height': $(document).height()
                    });
                }
                $overlay = $('<div id="modal-window-overlay" />').css(overlayStyle).click(function(){
                	self.close();
                }).appendTo('body');
            }
			
			// Loading
            if ($('#modal-window-loading').length == 0) {
                $loading = $('<div id="modal-window-loading" />').css({
                    'top': 0,
                    'left': 0,
                    'position': 'absolute',
                    'color': '#FFFFFF',
                    'padding': '1em',
                    'font-size': '1em',
                    'z-index': 1000000
                }).html('Loading....').appendTo('body').center();
            }
			
			// Create window
            $window = $('<div />').addClass('modal-window').css($.extend({
                'position': 'absolute',
                'top': 0,
                'left': 0,
                'z-index': 1000000
            }, this.options.window)).appendTo('body').hide();
            $content = $('<div />').addClass('modal-window-content').css($.extend({
				'text-align': 'left'
			}, this.options.content)).appendTo($window);
			$content.html(element);
            $closeBtn = $('<a />').addClass('modal-window-close').click(function(event){
				self.close();
                return event.preventDefault();
            }).html('Close').appendTo($window);
			$window.center().fadeIn('normal');
		},
		
		close: function() {
			$overlay.remove();
			$loading.remove();
			$window.remove();
		}
	}
})(jQuery);