
(function($) { 

	// plugin definition 
	$.fn.validate = function(options) { 

		// build main options before element iteration 
		var opts = $.extend({}, $.fn.validate.defaults, options); 

		// iterate and reformat each matched element 
		return this.each(function() { 
			$this = $(this); 
			// build element specific options 
			var o = $.metadata ? $.extend({}, opts, $this.metadata()) : opts;
			var IDHash = "#"+$this.attr('id'); 

			//functionality

			$(o.submitId).click(function(){

				var valid = true;
				var field;
				var fieldVal;

				$("#Warning").remove();
				
				$("."+o.alertClass).removeClass(o.alertClass);
				
				$("."+ o.requiredClass).each(function(){
					
					fieldVal = $(this).val();
					
					if (isEmpty(fieldVal)){
						$(this).addClass(o.alertClass);
						valid = false;
						}
						
				});
				
				$("#zip").each(function(){
					field = $(this).val();
						
						if(!isValidZipCode(field)){
							$(this).addClass(o.alertClass);
							valid = false;
						}
				
				});
					
				
				if (!valid) {
					addWarning();
					return false; 
				} else {
					$("#Warning").remove();
					$('#calculatorForm').trigger('submit');
					return false;
				}
			});

			function addWarning(){
				$(o.warningPlacement).append("<div id='Warning'>Please enter a make, model and zip code</div>");
			};

		}); 
	}; 

	// plugin defaults 
	$.fn.validate.defaults = { 
		requiredClass: 'required',
		alertClass: 'error',
		submitId: '#btnSubmit',
		warningPlacement: '#vehicleForm',
		formParentId: '#vehicleForm'
	}; 
})(jQuery);
