jQuery.fn.ajaxValidate = function() {
	// set URL for validation
	if (window.location.pathname == '/') {
		window.ajaxUrl = window.location.href + 'success_stories/index';
	} else {
		window.ajaxUrl = window.location.href;
	}
	
	var form = $(this);
	form.bind('ajaxValidate', function(){
		var inputs = $(this).find('input:not(.validated)[name*="data"], select:not(.validated)[name*="data"], textarea:not(.validated)[name*="data"]');
		if (inputs.size() == 0) {
			form.trigger('form.ajaxValidateComplete');
		}
		var validated = 0;
		inputs.trigger('blur').bind('ajaxValidateComplete', function(){
			validated++;
			if (validated == inputs.size()) {
				$(this).parents('form').trigger('form.ajaxValidateComplete');
				inputs.unbind('ajaxValidateComplete');
			}
		});
	}).find('input, select, textarea').blur(function(){
		var element = $(this);
		// remove any existing displayed error message
		element.removeClass('validated').siblings('div.error-message').remove();
		$.post(window.ajaxUrl+'/ajax_validate:1/field:'+element.attr('name'), form.serialize(), function(data){
			if (!data.validates) {
				element.parent().append('<div class="error-message">'+data.message+'</div>');
			}	
			// trigger event for the form
			element.trigger('ajaxValidateComplete').addClass('validated');		
		}, 'json');
		element.addClass('validated');
	});
	return this;
}
