
/*
Example :	<input type="text" id="" class="TTstepper {label:label, minvalue:1, maxvalue:15}" value="" />;
*/

(function($) {

	jQuery.TTstepper = function() {

		var input = $(':text.TTstepper');

		jQuery.each(input, function() {

			var error = false;

			var settings = {
				label : '',
				minvalue : 0,
				maxvalue : 5,
				width : 0
			};

			var container = jQuery(this);

			var opts = container.attr('class');

			if((opts.indexOf('minvalue') == -1) && (opts.indexOf('maxvalue') == -1) && (opts.indexOf('label') == -1)) { error = true; }
			else {
				opts = opts.replace('TTstepper', '');
				opts = opts.replace('{', '');
				opts = opts.replace('}', '');
				opts = opts.split(',');
				opts[0] = jQuery.trim(opts[0]);
				opts[1] = jQuery.trim(opts[1]);
				opts[2] = jQuery.trim(opts[2]);

				if(opts[0].indexOf('minvalue') != -1) {
					var min = opts[0].split(':');
					settings.minvalue = parseInt(min[1]);
				}
				else if(opts[1].indexOf('minvalue') != -1) {
					var min = opts[1].split(':');
					settings.minvalue = parseInt(min[1]);
				}
				else if(opts[2].indexOf('minvalue') != -1) {
					var min = opts[2].split(':');
					settings.minvalue = parseInt(min[1]);
				}

				if(opts[0].indexOf('maxvalue') != -1) {
					var max = opts[0].split(':');
					settings.width = (max[1].length*14);
					settings.maxvalue = parseInt(max[1]);
				}
				else if(opts[1].indexOf('maxvalue') != -1) {
					var max = opts[1].split(':');
					settings.width = (max[1].length*14);
					settings.maxvalue = parseInt(max[1]);
				}
				else if(opts[2].indexOf('maxvalue') != -1) {
					var max = opts[2].split(':');
					settings.width = (max[1].length*14);
					settings.maxvalue = parseInt(max[1]);
				}

				if(opts[0].indexOf('label') != -1) {
					var label = opts[0].split(':');
					settings.label = jQuery.trim(label[1]) + ': ';
				}
				else if(opts[1].indexOf('label') != -1) {
					var label = opts[1].split(':');
					settings.label = jQuery.trim(label[1]) + ': ';
				}
				else if(opts[2].indexOf('label') != -1) {
					var label = opts[2].split(':');
					settings.label = jQuery.trim(label[1]) + ': ';
				}
			}

			if(settings.maxvalue <= settings.minvalue) { error = true; }
			
			if(error) { return; }
			
			var val;
			if(container.val() == "") { val = settings.minvalue; }
			else { val = container.attr('value'); }
			
			var div = '<div class="TTstepper"><div class="label fl">'+settings.label+'</div>';
			div += '<input type="text" readonly="true" id="'+container.attr('id')+'" name="'+container.attr('name')+'" class="fl" style="width:'+settings.width+'px;" value="'+val+'"/>';
			div += '<input type="hidden" value="'+settings.maxvalue+':'+settings.minvalue+'"/>';
			div += '<div class="controls fl"><ul><li class="ttUp"></li><li class="ttDown"></li></ul></div><div class="clear"></div></div>';

			container.before(div);

			var upBtn   = container.prev().children('.controls').children('ul').children('.ttUp');
			var downBtn = container.prev().children('.controls').children('ul').children('.ttDown');

			upBtn.click(function() {
				var box = $(this).parent().parent().prev().prev();				
				var maxvalue = $(this).parent().parent().prev().val();
				maxvalue = maxvalue.split(':');
				maxvalue = parseInt(maxvalue[0]);
				var minvalue = $(this).parent().parent().prev().val();
				minvalue = minvalue.split(':');
				minvalue = parseInt(minvalue[1]);
				
				value = parseInt($(box).val());
				if(value < maxvalue) {
					value++;
					$(box).val(value);
				}else if(value > minvalue){
					$(box).val(minvalue);
				}
				return true;
			});

			downBtn.click(function() {
				var box = $(this).parent().parent().prev().prev();
				var minvalue = $(this).parent().parent().prev().val();
				minvalue = minvalue.split(':');
				minvalue = parseInt(minvalue[1]);
				var maxvalue = $(this).parent().parent().prev().val();
				maxvalue = maxvalue.split(':');
				maxvalue = parseInt(maxvalue[0]);
				
				var value = parseInt($(box).val());
				if(value > minvalue) {
					value--;
					$(box).val(value);
				}else if(value < maxvalue){
					$(box).val(maxvalue);	
				}
				return true;
			});

			container.remove();

			return(this);
		});

	};
	
})(jQuery);
