jQuery(function($) {

		/*
		 * カンマ区切りにする
		 */

		function myFormatNumber(x) {
		var s = "" + x;
		var p = s.indexOf(".");
		if (p < 0) {
		p = s.length;
		}
		var r = s.substring(p, s.length);
		for (var i = 0; i < p; i++) {
		var c = s.substring(p - 1 - i, p - 1 - i + 1);
		if (c < "0" || c > "9") {
		r = s.substring(0, p - i) + r;
		break;
		}
		if (i > 0 && i % 3 == 0) {
		r = "," + r; 
		}
		r = c + r;
		}
		return r;
		}
		/*
		 * Cookie の配列数を数えます。
		 */

		function cookieArrayCount() {
			var cookieCount = 0;
			while(true) {
				// alert($.cookie('cart[' + cookieCount + ']'));
				if($.cookie('cart[' + cookieCount + ']') == null)
					break;
				cookieCount++;
			}
			return cookieCount;
		}

		/*
		 * カートの指定した行を削除します。
		 *    削除した行は埋めます。
		 */

		function cookieDelete() {
			$("#cart_body input.delete_button").each(function(){
					$(this).click(function() {
						var source = $(this).attr("id");
						var cartId = source.split('_');
						var cookieTemp;
						var i = cartId[1];
						var n;
						$.cookie('cart[' + i + ']', 'delete',{ expires: -1 });
						while(true) {
						n = Number(i) + 1;
						cookieTemp = $.cookie('cart[' + n + ']');
						if(cookieTemp == null)
						break;
						$.cookie('cart[' + i + ']', cookieTemp,{ expires: 1, path:'/' });
						$.cookie('cart[' + n + ']', 'delete',{ expires: -1, path:'/' });
						i++;
						}
						cart();
						});
					});
		}

		/*
		 * カートの中身を出力します。
		 */

		function cart() {

			var cartBody = new Array();            // 出力するデータが格納されます。
			var cookieCount = cookieArrayCount();  // カートの商品数が入ります。
			var cartItem = new Array();            // 商品の詳細データが配列で入ります。
			var rowItem = new Array();             // Item の属性数が入ります。
			var itemData = new Array();            // 属性の内部を name と value に分けます。
			var source;                            // 代入用品変数
			var n;
			var itemNum;                           // Item の数量を後で使うため保存します。
			var money = 0;                         // 単価

			for(var i = 0; i < cookieCount; i++) {
				source = $.cookie('cart[' + i + ']');
				cartItem = source.split('#');
				rowItem = cartItem.length;
				rowItem--;
				cartBody[i] = '<dt class="clearfix">';
				cartBody[i] += '<input type="button" class="delete_button" id="cart_' + i + '_' + 'delete" value="削除" />';
				cartBody[i] += cartItem[0];
				cartBody[i] += '</dt>';

				cartBody[i] += '<dd>';
				for(n = 1; n < rowItem; n++) {
					itemData = cartItem[n].split(':');
					cartBody[i] += itemData[0] + ':';
					cartBody[i] += itemData[1];
					cartBody[i] += ' / '; 
					if(itemData[0] == '数量')
						itemNum = itemData[1];
				}
				money = cartItem[rowItem].replace(/\,/g, "");
				cartBody[i] +=  '&yen;' + myFormatNumber(money * itemNum);
				cartBody[i] += '</dd>';
			}

			// カートを書きなおすため要素内を削除
			$('#cart_body').html('');

			if(cookieCount) {
				var joinData = '<dl>';
				joinData += cartBody.join("\n");
				joinData += '</dl>';
				$('#cart_body').append(joinData);
			} else {
				$('#cart_body').append('<p class="empty">まだカートには何も入っていません。</p>');
			}

			cookieDelete();

			/* demo 用 ----------------------- */

			var cartHeight = $('#cookie_cart').outerHeight();
			$("#JSCart").css("padding-bottom", cartHeight);


		} cart();

		/*
		 * 商品の追加
		 */

		$("input.cart_button").each(function(){
				$(this).click(function() {
					var cartNum = $(this).attr("tabindex");
					var cartData = new Array();
					var cartCount = 1;
					var cartId = '#cart_' + cartNum + ' ';

					// title
					cartData[0] = $(cartId + '#item_name').val();

					// item
					while(true) {
					cartData[cartCount] = $(cartId + '.item_' + cartCount).text();
					cartData[cartCount] += ':';
					cartData[cartCount] += $(cartId + '.item_' + cartCount  + ' + dd select').val();
					cartCount++;
					if($(cartId + '.item_' + cartCount).size() == 0)
					break;
					}
					cartData[cartCount] = $(cartId + 'p.price span.price').text();
					if(cartData[cartCount] == '') {
					cartData[cartCount] = $(cartId + '#item_money').val();
					}
					var cookieCount = cookieArrayCount();

					if(cookieCount > 19) {
						alert("これ以上カートに商品を入れられません。\nカートの中身を減らしてください。")
					} else {
						var joinData = cartData.join('#');

						// Firefox だと謎の改行が入る場合がある
						
						joinData = joinData.replace(/\n/g, "");

						/*
						 * IE 用。スペースが入ることがあります。
						 * スペースが入ると金額計算に致命的です。
						 */

						joinData = joinData.replace(/ /g, "");
						$.cookie('cart[' + cookieCount + ']', joinData,{ expires: 1, path:'/'});
						alert('カートに商品を追加しました。');
					}  cart();
				});
		});

		/*
		 * Cookie の中身を出力します。
		 */

		$('#print_cookie').click(function() {
				var cookieData = '';
				var count = 0;
				while(count < 20) {
				cookieData += count + '=' + $.cookie('cart[' + count + ']') + "\n";
				count++;
				}
				if(cookieData == '') {
				alert('カートの中身は空です。');
				} else {
				alert(cookieData);
				}
				}); 

		/*
		 * Cookie を全て削除します。
		 */

		$('#cookie_all_clear').click(function() {
				if (confirm("カートを空にします。よろしいですか？")) {
				var count = 0;
				while(count < 21) {
				$.cookie('cart[' + count + ']', 'delete',{ expires: -1, path:'/' });
				count++;
				}
				alert('カートを空にしました。');
				cart();
				}
				}); 

		/*
		 * テキストエリアの移動
		 */

		$('#textcart #open').click(function() {
				// alert(Math.PI/2);

				$("#textcart").animate({right:"+=450px", top:"+=321px"}, 300);
				$("#open").css("display", 'none');
				$("#close").css("display", 'block');
				}); 

		$('#textcart #close').click(function() {
				$("#textcart").animate({right:"-=450px", top:"-=321px"}, 300);
				$("#open").css("display", 'block');
				$("#close").css("display", 'none');
				}); 


		/*
		 * テキストエリアに注文情報を貼り付け
		 */


   /*
    * テキストエリアに注文情報を貼り付け
    */
	// cahnged
	(function() {

		var cartBody = new Array();            // 出力するデータが格納されます。
		var cookieCount = cookieArrayCount();  // カートの商品数が入ります。
		var cartItem = new Array();            // 商品の詳細データが配列で入ります。
		var rowItem = new Array();             // Item の属性数が入ります。
		var itemData = new Array();            // 属性の内部を name と value に分けます。
		var source;                            // 代入用品変数
		var n;
		var itemNum;                           // Item の数量を後で使うため保存します。
		var money = 0;                         // 単価
		var result_money = 0;                  // 合計金額

		for(var i = 0; i < cookieCount; i++) {
			source = $.cookie('cart[' + i + ']');
			cartItem = source.split('#');
			rowItem = cartItem.length;
			rowItem--;
			cartBody[i] = '商品名: ' + cartItem[0] + "\n";

			for(n = 1; n < rowItem; n++) {
			itemData = cartItem[n].split(':');
			cartBody[i] += itemData[0] + '：';
			cartBody[i] += itemData[1] + "\n";
			if(itemData[0] == '個数')
			itemNum = itemData[1];
			}
			money = cartItem[rowItem].replace(/\,/g, "");
			// alert(money);
			result_money += money * itemNum;
			cartBody[i] +=  '金額: \u00a5' + myFormatNumber(money * itemNum) + "\n";
			cartBody[i] +=  "----------------------------------------------------------\n";
		}

	$('#order_content textarea').val('');

	if(cookieCount) {
		var joinData = cartBody.join("\n");
		var sum = '合計金額: \u00a5' + myFormatNumber(result_money);
		$('#order').val(joinData);
		$('#money').val(sum);
	} else {
		$('#order').val('カートに商品が入っていません。');
	}

   })();


});
