jQuery.fn.formPopup = function(settings) {
	settings = jQuery.extend({	
		modal : false, /* true/false */
		width : false, /* true/false */
		height: false, /* true/false */
		opacity: 0.5, /* value from 0 to 1 */
		animationSpeed: 'fast' /* slow/medium/fast */
	}, settings);
	return this.each(function(){
		var currentLink =  $(this).attr('href');
		
		$(this).click(function(){
			buildoverlay();
			buildpopin();

			// Load the content
			$.get($(this).attr('href'), {type: 900}, function(responseText){
				$('.prettyForm-container').html(responseText);
				$('.prettyForm-container').hide();
				$('.prettyForm').animate({height:  $('.prettyForm-container').height()}, 1000, function() {
					$('.prettyForm-container').fadeIn();
					var form = $('.prettyForm form');
					$('.prettyForm .form-reset').click(function() {
					    form[0].reset();
					    return false;
					});
					$('.prettyForm .form-submit').click(function() {
					    rebuild();
					    return false;
					});
					$('.prettyForm .form-close').click(function(){ closeOverlay(); return false; });
					buildDisplay();
				});
			});

			return false;
		});		
		
		var rebuild = function() {
		    var form = $('.prettyForm form');
		    $('.prettyForm-container').hide();
		    $('.prettyForm').addClass('loading');
		    $.post(form.attr('action'), form.serialize(),function(responseText) {
			$('.prettyForm-container').html(responseText);
			var isError = false;
			var h1_title = $('.prettyForm-container').find('h1:first');
			$('.prettyForm-container input, .prettyForm-container textarea').each(function() {
			    if($(this).hasClass('error')) {
				isError = true;
			    }
			});
			if(isError) {
			    h1_title.append(' / <span class="error">Bitte Angaben überprüfen</span>');
			}
			var newForm = $('.prettyForm form');
			$('.prettyForm .form-reset').click(function() {
			    newForm[0].reset();
			    return false;
			});
			$('.prettyForm .form-submit').click(function() {
			    rebuild();
			    return false;
			});
			$('.prettyForm .form-close').click(function(){ closeOverlay(); return false; });
			buildDisplay();
		    });
		};


		var buildDisplay = function() {
			displayPopin();
		};		

		var displayPopin = function() {
			displayContent();
		};
		
		var buildpopin = function() {
			$('#main .container:first').append('<div class="prettyForm loading"><div class="prettyForm-container"></div></div>');
			$('.prettyForm').width(settings.width).height(150).hide().fadeIn(settings.animationSpeed);

		};
		
		var buildoverlay = function() {
			$('body').append('<div id="overlay"></div>');
			
			// Set the proper height
			$('#overlay').css('height',$(document).height());
			
			// Fade it in
			$('#overlay').css('opacity',0).fadeTo(settings.animationSpeed,settings.opacity);
			
			if(!settings.modal){
				$('#overlay').click(function(){
					closeOverlay();
				});
			};
		};
		
		var displayContent = function() {
			$c = $('.prettyForm-container');
			$c.parent().removeClass('loading');
			$c.fadeIn(function(){
				$(this).find('input[type=text]:first').trigger('focus');
			});
			$('.prettyForm .form-close').click(function(){ closeOverlay(); });
		};
		
		var closeOverlay = function() {
			$('#overlay').fadeOut(settings.animationSpeed,function(){ $(this).remove(); });
			$('.prettyForm').fadeOut(settings.animationSpeed,function(){ $(this).remove(); });
		};		
		
	});
}; 

