X.createSingleton('BHG.ModalFactory',
	// Constructor
	function BHGModalFactory()
	{
	    
	},
	// Prototype Members
	{
		create: function(userSettings)
		{
			var settings =
		    {
			    wrapperClasses: ['bhg-modal'],
			    fixed: true,
			    createHandler: this.onModalCreate
		    };
		    
		    // Take care of user settings
		    if (typeof(userSettings) !== "undefined")
		    {
		        if (userSettings.wrapperClasses != null)
		        {
		            settings.wrapperClasses = userSettings.wrapperClasses;
		        }
		        if (userSettings.fixed != null)
		        {
		            settings.fixed = userSettings.fixed;
		        }
		        if (typeof(userSettings.createHandler) === "function")
		        {
		            settings.createHandler = this.onModalCreate.delegate(this, userSettings.createHandler);
		        }
		    }

		    var modalBody = [];
		    modalBody[modalBody.length] = '<div class="bhg-modal-wrap">';
		    modalBody[modalBody.length] = '<div class="modal-hd"><h3>' + userSettings.header + '</h3><a class="bhg-btn-close" href="#">Close</a></div>';
		    modalBody[modalBody.length] = '<div class="modal-bd">' + userSettings.body + '</div>';
		    modalBody[modalBody.length] = '</div><div class="modal-border"></div>';
		    X.ModalFactory.create(modalBody.join(''), settings);
		},
		onModalCreate: function(modal, callback)
		{
		    var $modal = jQuery(modal.selector);
	        $modal.find('a.bhg-btn-close').click(function(e)
	        {
	            e.preventDefault();
	            modal.hide();
	        });
		    
	        // Resize underlay
	        $modal.find('.modal-border').width($modal.outerWidth());
	        $modal.find('.modal-border').height($modal.outerHeight());
	        
	        if (typeof(callback) === "function")
		    {
	            callback(modal);
	        }
		}
	}
);