/*
 * Basic form validation. 
 * Give the fields the classes required/numeric/email as needed and add to onload.
 *
 */
(function($) {

$.fn.validate = function() {
	$(this).submit(function() {
		var error = false;
		var msg = '<div class="error" id="error-msg">Please correct the errors below.</div>';
		
		$("input, textarea", this).each( function() {
			if ($(this).attr("class")) {
				if (!$.validate.field(this))
					error = true;
			}
		});
		if (error == true) {
			$('#error-msg').remove();
			$(msg).insertBefore(this).hide().slideDown('fast');
			return false;
		} else {
			return true;
		}
	});
};

$.validate = function() {};
$.validate.field = function(field) {
	var error = false;
	
	// required fields
	if ($(field).attr("class").indexOf("required") != -1) {
		if (!$(field).val().length) {
			$(field).focus(function(){ $(this).removeClass("error"); });
			$(field).blur(function(){ if(!$(this).val().length) $(this).addClass("error"); });
			error = true;
		}
	}
	// numeric fields
	if ($(field).attr("class").indexOf("numeric") != -1) {
		if (!/^[0-9]*$/.test($(field).val())) {
			$(field).focus(function(){ $(this).removeClass("error"); });
			$(field).blur(function(){ if(!/^[0-9]*$/.test($(this).val())) $(this).addClass("error"); });
			error = true;
		}
	}
	// emails
	if ($(field).attr("class").indexOf("email") != -1) {
		if (!/^[a-zA-Z0-9]{1}([\._a-zA-Z0-9-]+)(\.[_a-zA-Z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+){1,3}$/.test($(field).val())) {
			$(field).focus(function(){ $(this).removeClass("error"); });
			$(field).blur(function(){ if(!/^[a-zA-Z0-9]{1}([\._a-zA-Z0-9-]+)(\.[_a-zA-Z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+){1,3}$/.test($(this).val())) $(this).addClass("error"); });
			error = true;
		}
	}
	
	if (error) {
		$(field).addClass("error");
	} else {
		$(field).removeClass("error");
	}
	
	return !error;
};

})(jQuery);


