﻿(function($) {
	$.fn.numbox = function(options) {
		var opts = $.extend({}, $.fn.numbox.defaults, options);
		
		return this.each(function() {
			new numbox(this, opts);
		});
	}
	
	$.fn.numbox.defaults = {
		singular:"thing",
		plural:"things",
		hideIfInvalid:false,
		tagName:"span"
	}
	
	numbox = function(textbox, options) {
		var jqtextbox = $(textbox);
		
		var $desc = $(document.createElement(options.tagName)).insertAfter(jqtextbox);
		$desc.addClass("field-desc");
		$desc.css("margin-left", "4px");
		
		if(options.tagName.toLowerCase() == "label") {
			$desc.attr("for", textbox.id);
		}
		
		this.setNoun = function() {
			var val = jqtextbox.val();
			var num = parseInt(val);
			var noun = options.plural;
			if(isNaN(num) || num < 1) {
				if(options.hideIfInvalid) noun = "";
			} else if(num == 1) {
				noun = options.singular;
			}
			$desc.text(noun);
		}
		
		jqtextbox.keyup(this.setNoun);
		jqtextbox.blur(this.setNoun); // catch-all for autocomplete
		
		this.setNoun();
	}
})(jQuery);
