﻿(function($) {
	
	$.popups = {
		
		// These properties can be read/written by accessing $.popups.propertyName from your scripts at any time
		_popupid: "",
		verticalOffset: -75,                // vertical offset of the dialog from center screen, in pixels
		horizontalOffset: 0,                // horizontal offset of the dialog from center screen, in pixels/
		repositionOnResize: true,           // re-centers the dialog on window resize
		overlayOpacity: .01,                // transparency level of overlay
		overlayColor: '#FFF',               // base color of overlay
		draggable: true,                    // make the dialogs draggable (requires UI Draggables plugin)		
		dialogClass: null,                  // if specified, this class will be applied to all dialogs
		
		// Public methods
		
		alert: function(popupid,popuptitleid,popupcloseid) {	
		    $.popups._popupid = popupid;		
			$.popups._show(popupid,popuptitleid,popupcloseid);
		},	
		
		// Private methods		
		_show: function(popupid,popuptitleid,popupcloseid) {
			
			$.popups._hide();
			$.popups._overlay('show');			
			

			if( $.popups.dialogClass ) $("#"+$.popups._popupid).addClass($.popups.dialogClass);
			
			// IE6 Fix
			var pos = ($.browser.msie && parseInt($.browser.version) <= 6 ) ? 'absolute' : 'fixed'; 
			
			$("#"+ $.popups._popupid).css({
				position: pos,
				zIndex: 99999,
				padding: 0,
				margin: 0,
				display: ''
			});		
			
			
			$("#"+ $.popups._popupid).css({
				minWidth: $("#"+ $.popups._popupid).outerWidth(),
				maxWidth: $("#"+ $.popups._popupid).outerWidth()
			});
			
			$.popups._reposition();
			$.popups._maintainPosition(true);		
			
			if(popupcloseid != null && popupcloseid != '')
			{
			    $("#"+popupcloseid).click( function() {
				    $.popups._hide();				
			    });
			}
			// Make draggable
			if( $.popups.draggable ) {	
				if(popuptitleid != null && popuptitleid != '')
			    {	
				    try {
					    $("#"+ $.popups._popupid).draggable({ handle: $("#"+popuptitleid) });
					    $("#"+popuptitleid).css({ cursor: 'move' });
				    } catch(e) { /* requires jQuery UI draggables */ }
				}
			}
		},
		
		_hide: function() {
			//$("#"+ $.popups._popupid).remove();
			$.popups._overlay('hide');
			$.popups._maintainPosition(false);
		},
		
		_overlay: function(status) {
			switch( status ) {
				case 'show':
					$.popups._overlay('hide');
					
			        
//					$("BODY").append('<div id="popup_overlay"></div>');
//					$("#popup_overlay").css({
//						position: 'absolute',
//						zIndex: 99998,
//						top: '0px',
//						left: '0px',
//						width: '100%',
//						height: $(document).height(),
//						background: $.popups.overlayColor,
//						opacity: $.popups.overlayOpacity
//					});
					
					//$("#"+ $.popups._popupid).css({display: ''});
					$("#"+ $.popups._popupid).fadeIn("hide");
				break;
				case 'hide':
				    $("#"+ $.popups._popupid).fadeOut("hide");
				    //$("#"+ $.popups._popupid).css({display: 'none'});
					$("#popup_overlay").remove();
				break;
			}
		},
		
		_reposition: function() {
			var top = (($(window).height() / 2) - ($("#"+$.popups._popupid).outerHeight() / 2)) + $.popups.verticalOffset;
			var left = (($(window).width() / 2) - ($("#"+$.popups._popupid).outerWidth() / 2)) + $.popups.horizontalOffset;
			if( top < 0 ) top = 0;
			if( left < 0 ) left = 0;
			
			// IE6 fix
			if( $.browser.msie && parseInt($.browser.version) <= 6 ) top = top + $(window).scrollTop();
			
			$("#"+$.popups._popupid).css({
				top: top + 'px',
				left: left + 'px'
			});
			$("#popup_overlay").height( $(document).height() );
		},
		
		_maintainPosition: function(status) {
			if( $.popups.repositionOnResize ) {
				switch(status) {
					case true:
						$(window).bind('resize', $.popups._reposition);
					break;
					case false:
						$(window).unbind('resize', $.popups._reposition);
					break;
				}
			}
		}
		
	}
	
	// Shortuct functions
	jPopUp = function(popupid,popuptitleid,popupcloseid) {
		$.popups.alert(popupid,popuptitleid,popupcloseid);
	};
	
	jPopUp_Overlay = function(popupid,popuptitleid,popupcloseid,popupoverlay) {
		$.popups.alert(popupid,popuptitleid,popupcloseid);
		if(popupoverlay == false)
		    $("#popup_overlay").remove();
	};
	
	jPopUpClose = function(popupid) {
		$("#"+ popupid).fadeOut("hide");
		$("#popup_overlay").remove();
	};
})(jQuery);