$.fn.validate = function() {
	var er = 0;
    var defaultMsg = 'This field is required';
	$('.form-error',this).remove();
    // Not empty validation
    $('.required',this).each(function(i) {
		var valid = true; 
		var v = this.value;
		switch($(this).attr('class')){
			case "validate-zip":
				valid = validate_zip(v);
				break;			
			case "validate-email":
				valid = validate_email(v);
				break;
			default:
				valid = validate_empty(v);
				break;
		}
		if(!valid){
			var msg  = ($(this).attr('title') !== '') ? $(this).attr('title') : defaultMsg;
			var html = '<span class="form-error">'+msg+'</span>';
			$('#'+this.id).after(html);
			er++; 
		} else {
			$('#'+this.id).removeClass('form-error');
		}
	});
	if (er) {
		return false;
	}else{
		return true;
	}
	
	/* validation methods */
	function validate_zip(v) {
		return (validate_numeric(v) && v.length == 5) ? true : false; 
	}		
	
	function validate_numeric(v){
		return (isNaN(v) == false && validate_empty(v)) ? true : false; 
	}
	
	function validate_email(v) {
		var reg = new RegExp('^[^@()<>,;:\\\\/"[\\]]+@[^@()<>,;:\\\\/"[\\]]+\\.[a-zA-Z0-9]{2,6}$','');
		return (v.match(reg)) ? true : false;
	}	
	
	function validate_empty(v) {
		return (v !== '') ? true : false; 
	}
}