var Popup = function(popupSelector, closeButtonSelector) {

	var popup = $(popupSelector);
	
	// hide the popup and center on screen
	popup.css({
			display: 'none',
			position: 'absolute',
			top: '50%',
			left: '50%',
			'margin-left': '-' + (popup.width() / 2) + 'px',
			'margin-top': '-' + (popup.height() / 2) + 'px',
			'z-index': 3
		});
	
	// create overlay and add styles to it
	var overlay = $(document.createElement('div'))
		.css({
			display: 'none',
			position: 'absolute',
			left: '0px',
			top: '0px',
			'background-color': '#000',
			'z-index': 2,
			opacity: '0.8',
			width: $(document).width(),
			height: $(document).height()
		});
		
	popup.before(overlay);

	var showPopup = function(source) {
		popup.show();
		overlay.show();
		$(popupSelector + ' :input:visible:first').focus();
	};
	var hidePopup = function(source) {
		popup.hide();
		overlay.hide();
	}
	
	var closeButtons;
	
	if(closeButtonSelector == null) {
		closeButtons = popup.find(':submit');
		
	} else if($.isArray(closeButtonSelector)) {
		closeButtons = $(''+closeButtonSelector[0]);
		for(var i = 1; i < closeButtonSelector.length; i++) {
			closeButtons = closeButtons.add(''+closeButtonSelector[i]);
		}
		
	} else {
		closeButtons = popup.find(closeButtonSelector);
	}
	
	var obj = {show: showPopup, hide: hidePopup, popup: popup, overlay: overlay};
	
	closeButtons.click(function() { obj.hide(this); return false; });
	overlay.click(function() { obj.hide(this); });
	
	return obj;
};

