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

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

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

		var a = new Ajax.Request(
			glv_webroot + "fav_carts/add/" + params, {
				method: "get",
				onSuccess: function(httpObj) {
					switch (httpObj.responseText) {
						case "ok":    loadFavCart(); return;
						case "self":  loadFavCart(); 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_fav_working = false; Element.hide('koi_loader');
					return;
				},
				onFailure: function(httpObj) {
					alertmsg('An error occurred. Please contact us.');
					glv_fav_working = false; Element.hide('koi_loader');
					return;
				},
				onException: function (httpObj) {
					loadFavCart();
					return;
				}
			}
		);
	}

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

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

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

	function sendFavCart() {
		if (glv_fav_working == true) return;
		glv_fav_working = true;
		
		params = glv_key + "/?" + timestr();
		Element.update($('cart_msg'), "");
		var a = new Ajax.Request(
			glv_webroot + "fav_carts/order/" + params, {
				method: "post", parameters: Form.serialize("ajax_form"),
				onSuccess: function(httpObj) {
					switch (httpObj.responseText) {
						case "ok":    loadFavCart(); Element.update($('cart_msg'), "The Inquiry was received."); return;
						case "err":   loadFavCart(); 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_fav_working = false;
					return;
				},
				onFailure: function(httpObj) {
					glv_fav_working = false;
					Element.update($('cart_msg'), "An error occurred. Please contact us.");
					return;
				},
				onException: function (httpObj) {
					glv_fav_working = false;
					Element.update($('cart_msg'), "An error occurred. Please contact us.");
					loadFavCart();
					return;
				}
			}
		);
	}
