(function($) {

	var isIE6 = $.browser.msie && $.browser.version == 6.0; // =(

	$.fn.jOverlay = function(options) {
		var options = $.extend({}, $.fn.jOverlay.options, options);
		
		try{
			$("#id_submit").attr("disabled","disabled");
		}catch(err){}

		function center(id) {
			if (options.center) {
				$.center(id);
			}
		}

		var element = this.is('*') ? this : '#jOverlayContent';
		var position = isIE6 ? 'absolute' : 'fixed';

		var imgLoading = options.imgLoading ? "<img id='jOverlayLoading' src='"+options.imgLoading+"' style='position:"+position+"; z-index:"+(options.zIndex + 9)+";'/>" : '';

		$('body').prepend(imgLoading + "<div id='jOverlay' />"
			+ "<div id='jOverlayContent' style='position:"+position+"; z-index:"+(options.zIndex + 5)+"; display:none;'/>"
		);

		// Loading Centered
		$('#jOverlayLoading').load(function(){
			center(this);
		});

		//IE 6 FIX
		if ( isIE6 ) {
			$('select').hide();
			$('#jOverlayContent select').show();
		}

		// Overlay Style
		$('#jOverlay').css({
			backgroundColor : options.color,
			position : position,
			top : '0px',
			left : '0px',
			filter : 'alpha(opacity='+ (options.opacity * 100) +')', // IE =(
			opacity : options.opacity, // Good Browser =D
			zIndex : options.zIndex,
			width : !isIE6 ? '100%' : $(window).width() + 'px',
			height : !isIE6 ? '100%' : $(document).height() + 'px'
		}).show();

		// ELEMENT
		if ( this.is('*') ) {

			$('#jOverlayContent').html(
				this.show().attr('display', options.autoHide ? 'none' : this.css('display') )
			);

		}

		if ( isIE6 ) {

			// Window scroll
			$(window).scroll(function(){
				center('#jOverlayContent');
			});

			// Window resize
			$(window).resize(function(){

				$('#jOverlay').css({
					width: $(window).width() + 'px',
					height: $(document).height() + 'px'
				});

				center('#jOverlayContent');

			});

		}

		$('#jOverlayContent').css(options.css || {});
	};

	$.center = function(element) {
		var element = $(element);
		var elemWidth = element.width();

		element.css({
			width : elemWidth + 'px',
			marginLeft : '-' + (elemWidth / 2) + 'px',
			marginTop : '-' + element.height() / 2 + 'px',
		 	height : 'auto',
         	top : !isIE6 ? '50%' : $(window).scrollTop() + ($(window).height() / 2) + 'px',
         	left : '50%'
		});
	};
	
	$.closeOverlay = function() {
		$('#jOverlayLoading, #jOverlayContent, #jOverlay').remove();
		try{
			$("#id_submit").removeAttr("disabled");
		}catch (err){}
	};	

	$.fn.jOverlay.options = {
		color : '#000',
		opacity : '0.6',
		zIndex : 9999,
		center : true,
		imgLoading : '/media/images/loading.gif',
		css : {}
	};

})(jQuery);