
	// 処理中確認フラグ
	var glv_koi_working = false;

	Event.observe(window, "load", loadKoiCart );

	function addKoiCart (id) {
		if (glv_koi_working == true) return;
		glv_koi_working = true;
		Element.show('koi_loader');
		
		params = id + "/" + glv_key + "/?" + timestr();

		var a = new Ajax.Request(
			glv_webroot + "koi_carts/add/" + params, {
				method: "get",
				onSuccess: function(httpObj) {
					switch (httpObj.responseText) {
						case "ok":    loadKoiCart(); return;
						case "self":  loadKoiCart(); alertmsg("The item is already in the shopping cart."); return;
						case "no":    alertmsg("The item cannot be ordered. It is reserved by other customers."); break;
						case "sold":  alertmsg("The item has been sold out."); break;
						case "login": alertmsg("Please login to order."); break;
					}
					glv_koi_working = false; Element.hide('koi_loader');
					return;
				},
				onFailure: function(httpObj) {
					alertmsg('An error occurred. Please contact us.');
					glv_koi_working = false; Element.hide('koi_loader');
					return;
				},
				onException: function (httpObj) {
					loadKoiCart();
					return;
				}
			}
		);
	}

	function delKoiCart (id) {
		if (glv_koi_working == true) return;
		glv_koi_working = true;
		Element.show('koi_loader');
		
		params = id + "/" + glv_key + "/?" + timestr();

		var a = new Ajax.Request(
			glv_webroot + "koi_carts/del/" + params, {
				method: "get",
				onSuccess: function(httpObj) {
					switch (httpObj.responseText) {
						case "ok":    loadKoiCart(); return;
						case "login": alertmsg("Please login to order."); break;
					}
					glv_koi_working = false; Element.hide('koi_loader');
					return;
				},
				onFailure: function(httpObj) {
					alertmsg('An error occurred. Please contact us.');
					glv_koi_working = false; Element.hide('koi_loader');
					return;
				},
				onException: function (httpObj) {
					glv_koi_working = false;
					loadKoiCart();
					return;
				}
			}
		);
	}

	function loadKoiCart() {
		if ($('sid_cart_list') && glv_key != "") {
			params = glv_key + "/?" + timestr();
			var a = new Ajax.Updater(
				"sid_cart_list", glv_webroot + "koi_carts/view/" + params, {
					method: "get",
					onSuccess: function(httpObj) { glv_koi_working = false; Element.hide('koi_loader'); },
					onFailure: function(httpObj) { glv_koi_working = false; Element.hide('koi_loader'); },
					onException: function (httpObj) { glv_koi_working = false; Element.hide('koi_loader'); }
				}
			);
		}
	}

	function orderKoiCart() {
		if (!$('CartConfirmation').checked) {
			alertmsg('Place Check the check box.'); return;
		}

		if (glv_koi_working == true) return;
		glv_koi_working = true;
		
		params = glv_key + "/?" + timestr();
		Element.update($('cart_msg'), "");
		var a = new Ajax.Request(
			glv_webroot + "koi_carts/order/" + params, {
				method: "post", parameters: Form.serialize("ajax_form"),
				onSuccess: function(httpObj) {
					switch (httpObj.responseText) {
						case "ok":    loadKoiCart(); Element.update($('cart_msg'), "The order was received."); return;
						case "err":   loadKoiCart(); Element.update($('cart_msg'), "An error occurred. Please contact us."); break;
						case "login": Element.update($('cart_msg'), "Please login to order."); break;
						default: $('CartMemo').value = httpObj.responseText;
					}
					glv_koi_working = false;
					return;
				},
				onFailure: function(httpObj) {
					glv_koi_working = false;
					Element.update($('cart_msg'), "An error occurred. Please contact us.");
					return;
				},
				onException: function (httpObj) {
					glv_koi_working = false;
					Element.update($('cart_msg'), "An error occurred. Please contact us.");
					loadKoiCart();
					return;
				}
			}
		);
	}

	function cngBoxVal (id) {
		params = id + "/" + $F('CartBoxValue' + id) + "/?" + timestr();
		var a = new Ajax.Request(
			glv_webroot + "koi_carts/cngval/" + params, {
				method: "post", parameters: Form.serialize("ajax_form"),
				onSuccess: function(httpObj) {
					switch (httpObj.responseText) {
						case "ok":  loadKoiCart(); cartCalculate(); return;
						case "err": alertmsg('Value Change Error!'); break;
					}
				}
			}
		);
	}

	function cartCalculate () {
		var sumprice = 0;
		var box_values = $$('select.box_value');
		var box_prices = $$('input.box_price');
		sumprice = parseInt($F('CartPdtSum'));
		for (i=0;i<box_values.length;i++) {
			sumprice += box_values[i].value * box_prices[i].value
		}
		Element.update($('CartTotalVal'), 'Total : ' + number_format(sumprice) + ' yen');
	}

	function number_format ( val ) {
		var to = String( val );
		var tmp = "";
		while (to != (tmp = to.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2"))){
			to = tmp;
		}
		return to;
	}

	function alertmsg(msg) {
		alert(msg);
	}

	function timestr () {
		objDate = new Date();
		return "stamp" + objDate.toTimeString().replace(" ", "");
	}
