/*
 * Добавляет к текстовому полю переключатели для ув./ум. значения в поле
 */

(function($){
	
	$.fn.numid = function(options){
	// цикл по каждому эл-ту
		return this.each(function() {
			
			// ссылка на текущий эл-т
			var $this = $(this);
			
			$this.val($this.metadata().qty);
			
			// обрамляем текущий эл-т
			$this.wrap('<span class="numid-wrapper" />');
			
			var $decrease = $('<img src="themes/amaltea/img/siteimage/numid.decrease.png" alt="" />');
			var $increase = $('<img src="themes/amaltea/img/siteimage/numid.increase.png" alt="" />')
			
			$decrease.insertBefore($this);
			$increase.insertAfter($this);
			
			$decrease.click(function(){
				if (parseInt($(this).siblings('input').val() ) > 1) {
					$(this).siblings('input').val(parseInt($(this).siblings('input').val() ) - 1);
					if (options.onDecrease) {
						options.onDecrease($this);
					}
				}
			});
			
			if ($.browser.msie) {
				$decrease.dblclick(function(){
					if (parseInt($(this).siblings('input').val() ) > 1) {
						$(this).siblings('input').val(parseInt($(this).siblings('input').val() ) - 1);
						if (options.onDecrease) {
							options.onDecrease($this);
						}
					}
				});
			}
			
			$increase.click(function(){
				$(this).siblings('input').val(parseInt($(this).siblings('input').val() ) + 1);
				if (options.onIncrease) {
					options.onIncrease($this);
				}
			});
			
			if ($.browser.msie) {
				$increase.dblclick(function(){
					$(this).siblings('input').val(parseInt($(this).siblings('input').val() ) + 1);
					if (options.onIncrease) {
						options.onIncrease($this);
					}
				});
			}
			
			$this.keydown(function(e){
				if (e.keyCode == 40 && $(this).val() != 1) {
					$(this).val(parseInt($(this).val() ) - 1);
				} else if (e.keyCode == 38) {
					$(this).val(parseInt($(this).val() ) + 1);
				}
				$(this).val($.extractNumber($(this).val() ) );
				if (e.keyCode > 57 && e.keyCode != 116) {
					return false;
				}
			});
			
			$this.keyup(function(e){
				$(this).val($.extractNumber($(this).val() ) );
				if (options.onKeyUp) {
					options.onKeyUp($this);
				}
			});
			
			$this.change(function(){
				$(this).val($.extractNumber($(this).val() ) );
				if (options.onChange) {
					options.onChange($this);
				}
			});
			
			$this.blur(function(){
				if (!$(this).val() ) {
					$(this).val(0);
				}
			});
			
		});
	// ео цикл по каждом эл-ту
	}
	
	$.extend({
		extractNumber: function(string) {
			var number = string.match(/(?!=\.)\d+/g);
			if (number) number = number.join('');
			return number;
		}
	});
	
})(jQuery);
