	function splitId(itemId) {
		t0 = itemId.substring(1);		
		t1 = t0.split('_');
		t2 = [];
		t2[0] = parseInt(t1[0]);
		t2[1] = parseInt(t1[1]);
		t2[2] = parseInt(t1[2]);
		return t2;
	}
	function getTableId(t) {
		artId = t[0];
		colorId = t[1];
		size = t[2];
		return 't' + String(artId) + '_' + String(colorId) + '_' + String(size);
	}
	function getListId(t) {
		artId = t[0];
		colorId = t[1];
		size = t[2];
		return 'l' + String(artId) + '_' + String(colorId) + '_' + String(size);
	}
	function getDiscountPercent(price) {
		var i = discount_lenght;
		while (price < discount[i]) {
			i--;			
		}
		return discount_percent[i];
	}
	function getNextDiscount(price) {
		var i = discount_lenght;
		while (price < discount[i]) {
			i--;			
		}
		if (i < discount_lenght) {
			i++;
		}
		return i;
	}
	function getPercent(discountPercent) {
		if (discountPercent >= 0) {
			dp = '+' + discountPercent;
		} else {
			dp = '' + discountPercent;
		}
		return dp;
	}
	function processInput(thisId) {
		var t = splitId(thisId);
		if (isNaN(t[2])) {
			return;
		}
		var num = parseInt($('#' + thisId).val());
		if (isNaN(num)) {
			ret = 0;
		} else {
			if (num < 1) {
				ret = 0;
			} else {
 				ret = Math.min(cartLimits[t[0]][t[1]][t[2]], num);
 				if (num > ret) {
					if (ret == 20) {
						$.jGrowl('К сожалению, для онлайн заказа доступно <b>не более 20 изделий</b>.<br/><br/>Чтобы заказать больше, свяжитесь, пожалуйста, с нашими менеджерами.');
 					} else {
						$.jGrowl('К сожалению, для заказа доступно только <b>' + ret + ' изделий</b>');
 					}
 				}
			}
		}
	 	count[t[0]] = count[t[0]] - cart[t[0]][t[1]][t[2]] + ret;
	 	totalNum = totalNum - cart[t[0]][t[1]][t[2]] + ret;

		line_count[t[0]][t[1]] = line_count[t[0]][t[1]] - cart[t[0]][t[1]][t[2]] + ret; /* */

	 	totalPrice = totalPrice - (cart[t[0]][t[1]][t[2]] - ret) * price[t[0]];
	 	if (no_discount[t[0]]) {
		 	totalNoDiscountPrice = totalNoDiscountPrice - (cart[t[0]][t[1]][t[2]] - ret) * price[t[0]];
	 	}
	 	discountPercent = getDiscountPercent(totalPrice - totalNoDiscountPrice);
		totalPriceDiscount = (totalPrice - totalNoDiscountPrice) * (100 + discountPercent)/100 + totalNoDiscountPrice;
		dp = getPercent(discountPercent);
	 	if ($('#totalSum').size() == 0) {
			$.jGrowl('Общая сумма заказа: <br/><span id="totalSum">' + totalPrice.toFixed(2) + '</span> руб. <span id="totalPercent">' + dp + '</span>% = <b><span id="totalPriceDiscount">' + totalPriceDiscount.toFixed(2) + '</span> руб.</b>', { sticky: true });
	 	} else {
	 		$('#totalSum').text(String(totalPrice.toFixed(2)));
	 		$('#totalPercent').text(String(dp));
	 		$('#totalPriceDiscount').text(String(totalPriceDiscount.toFixed(2)));
	 	}
 		$('#price_num').text(String(totalNum));
 		$('#price_sum').text(String(totalPrice.toFixed(2)));
 		$('#price_totalsum').text(String(totalPriceDiscount.toFixed(2)));
 		$('#price_discount').text(String((totalPrice - totalPriceDiscount).toFixed(2)));
	 	cart[t[0]][t[1]][t[2]] = ret;
//	 	changeAllSum(discountPercent, dp);

		$('#current_dp').text(String(100 + discountPercent));
		nextPercent = getNextDiscount(totalPrice - totalNoDiscountPrice);
		$('#future_dp').text(String(100 + discount_percent[nextPercent]));
		raisePrice = Math.max(discount[nextPercent] - totalPrice + totalNoDiscountPrice, 0);
		$('#raise_price').text(String(raisePrice.toFixed(2)));

		$('#line_count'+String(t[0])+'_'+String(t[1])).text( line_count[t[0]][t[1]] ) ;
		var lineTotalPrice = line_count[t[0]][t[1]] * price[t[0]];
		$('#line_sum'+String(t[0])+'_'+String(t[1])).text(String(lineTotalPrice.toFixed(2)));

 		$('#' + getTableId(t)).val(ret);
	}
/*
	function changeAllSum(discountPercent, dp) {
		for (var i = 0; i < enumeration.length; i++) {
			var t = enumeration[i];
		 	var thisTotalPrice = count[t] * price[t] * (100 + discountPercent) / 100;
 			$('#sum' + String(t)).text(' x ' + count[t] + ' ' + dp + '% = ' + thisTotalPrice + ' руб.');
		}
	}
*/
	$(document).ready(function() {
	 	if ($('#order_cart').size() == 1) {
			processAllInputs();
			$('table.itemTable input').change(function() {processInput(this.id); });
		}
	});


function removeFromCart(id) {
	$.post("/order/removefromcart", { cart_item_id: id } ,
		function(data) {
			if (data=="OK") {
				refreshCart();
//				$.jGrowl('Удалено из корзины');
			} else if (data=="NOTHING_TO_REMOVE")	{
				$.jGrowl('Не было в корзине');
			}
		}
	);
	return false;
}

function saveCart() {
	$.post("/order/savecart", $("#order_form").serialize(),
		function(data) {
			if (data=="OK") {
				$.jGrowl('Корзина сохранена');
			}
		}
	);
	return false;
}

function refreshCart() {
	$.post("/order/savecart", $("#order_form").serialize(),
		function(data) {
			if (data=="OK") {
				window.location.reload(true);
			}
		}
	);
	return false;
}

function eraseCart() {
	$.post("/order/savecart", '',
		function(data) {
			if (data=="OK") {
				window.location.reload(true);
			}
		}
	);
	return false;
}

function processAllInputs() {
	$('input').each(function() {
		firstProcessInput(this.id);
	});

 	discountPercent = getDiscountPercent(totalPrice - totalNoDiscountPrice);
	totalPriceDiscount = (totalPrice - totalNoDiscountPrice) * (100 + discountPercent)/100 + totalNoDiscountPrice;
	dp = getPercent(discountPercent);

	$.jGrowl('Общая сумма заказа: <br/><span id="totalSum">' + String(totalPrice.toFixed(2)) + '</span> руб. <span id="totalPercent">' + dp + '</span>% = <b><span id="totalPriceDiscount">' + String(totalPriceDiscount.toFixed(2)) + '</span> руб.</b>', { sticky: true });
	$('#price_num').text(String(totalNum));
	$('#price_sum').text(String(totalPrice.toFixed(2)));
	$('#price_totalsum').text(String(totalPriceDiscount.toFixed(2)));
	$('#price_discount').text(String((totalPrice - totalPriceDiscount).toFixed(2)));
//	changeAllSum(discountPercent, dp);

	$('#current_dp').text(String(100 + discountPercent));
	nextPercent = getNextDiscount(totalPrice - totalNoDiscountPrice);
	$('#future_dp').text(String(100 + discount_percent[nextPercent]));
	raisePrice = Math.max(discount[nextPercent] - totalPrice + totalNoDiscountPrice, 0);
	$('#raise_price').text(String(raisePrice.toFixed(2)));
}

function firstProcessInput(thisId) {
	if (thisId == '') {
		return;
	}
	var t = splitId(thisId);
	if (isNaN(t[2])) {
		return;
	}
	var num = parseInt($('#' + thisId).val());
	if (isNaN(num)) {
		ret = 0;
	} else {
		if (num < 1) {
			ret = 0;
		} else {
			ret = Math.min(cartLimits[t[0]][t[1]][t[2]], num);
		}
	}
 	count[t[0]] = count[t[0]] - cart[t[0]][t[1]][t[2]] + ret;
 	totalNum = totalNum - cart[t[0]][t[1]][t[2]] + ret;
 	totalPrice = totalPrice - (cart[t[0]][t[1]][t[2]] - ret) * price[t[0]];
 	if (no_discount[t[0]]) {
	 	totalNoDiscountPrice = totalNoDiscountPrice - (cart[t[0]][t[1]][t[2]] - ret) * price[t[0]];
 	}

	line_count[t[0]][t[1]] = line_count[t[0]][t[1]] - cart[t[0]][t[1]][t[2]] + ret;
 	cart[t[0]][t[1]][t[2]] = ret;

	$('#line_count'+String(t[0])+'_'+String(t[1])).text(line_count[t[0]][t[1]]);
	var lineTotalPrice = line_count[t[0]][t[1]] * price[t[0]];
	$('#line_sum'+String(t[0])+'_'+String(t[1])).text(String(lineTotalPrice.toFixed(2)));
	$('#' + getTableId(t)).val(ret);
}
