jQuery.fn.overlayform = function(formLocation, settings){
	settings = jQuery.extend({
		beforeFormLoad: null,
		afterFormLoad: null
	}, settings);

	
	var overlay;
	var form;

	if($("#overlay").length == 1){
		overlay = $("#overlay");

	}else{
		//load in form
		form = $("<div id='overlay-form-container'/>");
		form.css("display", "none");
		form.css("position", "absolute");
		form.css("z-index", "201");

		//setup overlay
		overlay = $("<div id='overlay'/>");
		overlay.css("background-color", "black");
		overlay.css("height", $(document).height());
		overlay.css("width", $(document).width());		
		overlay.css("position", "absolute");
		overlay.css("left", "0px");		
		overlay.insertBefore($("body").children()[0]);
		overlay.css("opacity", 0);
		overlay.css("display", "none");
		overlay.css("z-index", "200");		
		overlay.click(function(){
			form.fadeTo("slow", 0, function(){
				form.css("display", "none");
			});
			overlay.fadeTo("slow", 0, function(){
				overlay.css("display", "none");
			});
		})
		form.insertAfter(overlay);
	}
	
	
	$(this).click(function(){
		overlay.css("display", "block");
		overlay.fadeTo("slow", 0.8);
		form.fadeTo("slow", 1);
		
		var formData;
		if(settings.beforeFormLoad){
			formData = settings.beforeFormLoad(form);
		}
		
		form.empty().load(formLocation, formData, function(){
			$(this).css("left", $(window).width() / 2 - $(this).width() / 2);
			form.css("display", "block");
		});
		
		if(settings.afterFormLoad){
			settings.afterFormLoad(form);
		}
		
		var scrollTop = document.documentElement.scrollTop;
		if(!scrollTop)
			scrollTop = document.body.scrollTop;
			
		form.css("top", scrollTop + $(window).height() / 2 -139);				
		return false;
	})
}