(function () {
	var popupCallback = null;

	popup = {
		closeCallback: null,
		
		getPopup: function () {
			return $('#_popup');
		},
		
		getPopupTitle: function () {
			return popup.getPopup().find('#popupHeader');
		},
		
		getPopupBody: function () {
			return popup.getPopup().find('#popupContent');
		},
	
		openPopup: function (options) {
			/* options = {
			 * 				url: url of an endpoint you want added to content
			 * 				urlParams: an object of params for the ajax call to url
			 * 				closeCallback: function to call when the popup is closed
			 * 				title: set the title of the popup to this
			 * 				content: set the content of the popup to this
			 * 			 }
			*/
			var myPopup = $('#_popup');
	
			if (myPopup.size() === 0) {
				/*we have a problem*/
				return;
			} else {
				if (popup.closeCallback) {
					popup.closeCallback();
				}
			}
			
			popup.emptyPopup();
	
			var content = popup.emptyBody();
			var header = popup.emptyTitle();
			
			if (options) {
				if (options.title) {
					header.html(options.title);
				}
				
				if (options.content) {
					content.html(options.content);
				} else if (options.url) {
					var urlParams = options.urlParams ? options.urlParams : {}; 
					$.get(options.url, urlParams, function (html) {
						content.html(html);
					});	
				}
				
			}
	
			popup.closeCallback = null;
			if (options) {
				if (options.closeCallback) {
					popup.closeCallback = options.closeCallback;
				}
			}
			
			myPopup.fadeIn("fast");
			
			myPopup.find("a.close").click(function (event) {
				
				popup.closePopup();
				return false;
		    });
			
			$('body').addClass("popup-visible");
			$('#overlay').show();
			
			return myPopup;
		},
		
		emptyPopup: function () {
			popup.emptyBody();
			popup.emptyTitle();
		},
		
		emptyBody: function () {
			return popup.getPopupBody().empty();
		},
		
		emptyTitle: function () {
			return popup.getPopupTitle().empty();
		},
		
		setTitle: function (title) {
			var mytitle = popup.emptyTitle();
			mytitle.html(title);
		},
		
		setBody: function (body) {
			var content = popup.emptyBody();
			
			content.html(body);
		},
	
		closePopup: function () {
			$('body').removeClass("popup-visible");
			$('#overlay').hide();
			popup.getPopup().hide();
			
			popup.emptyPopup();
			
			if (popup.closeCallback) {
				popup.closeCallback();
				popup.closeCallback = null;
			}
		}
	}
})();
