
$.fn.extend({
	numeric : function(options, callbackFnk){
	   var defaults = {
               min: 0,
               max: 100000,
               val: 1
           };
	   
	   	var options = $.extend(defaults, options);
	   	
	   	var source = $(this);
		
		$(source).each(function(){
			var src = $(this);
			
			var cur_val = src.val()  ? src.val() : options.val;
			
			var content = $('<div class="numeric_wrapper">'
				+'<input type="text" value="'+ cur_val + '"/>'
				+'<div class="numeric_enc_button ui-icon ui-icon-triangle-1-s"/>'
				+'<div class="numeric_dec_button ui-icon ui-icon-triangle-1-s"/>'
				+'</div>');
			
			content.click(function(e){ 
				var input = $("input", this);
				var val = input.val() * 1;
				var clicked = $(e.target);
				if (clicked.hasClass("numeric_enc_button"))
				{
					if (val< options.max) {
						input.val(val+1);
					}
					else{ 
						if(typeof callbackFnk == 'function'){
							callbackFnk.call();
						}
					}
					input.change();
				}
				else if (clicked.hasClass("numeric_dec_button"))
				{
					if (val> options.min) input.val(val-1);;
					input.change();
				}
			});
		
		
			var input = $("input", content);
			if (src.attr("class")) input.attr("class", src.attr("class"));
			if (src.attr("id")) input.attr("id", src.attr("id"));
			
			var regex = new RegExp("[0-9]");
			input.keypress(function(event){
				var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
				if (key == 8 || key == 9 || key == 13 || key == 35 || key == 36|| key == 37 || key == 39 || key == 46) return true;
				if (regex.test(String.fromCharCode(key))) return true;
				return false;
			})
			
			
			src.replaceWith(content);
		})
	
		return this;
	}
});
