function insert_cart(cm_id, cm_count) {
	if (is_valid_meisai_count(cm_id) == true) {
		if (check_duplicated_itemcd(cm_id) == false) {
			var cmId = cm_id;
			var cmCount = cm_count;
			if (isValidNumWithMassage(cmCount, '1以上の整数値を半角で入力してください')) {
				if (checkStock(cmId, cmCount)) {
					if (checkLimit(cmId, cmCount)) {
						PtanoDwr.insertCart(cmId, cmCount, update_cart_infomation);
						showCartInDialog();//カートインダイアログ
					} else {
						showErrorDialog('カートに入れられる上限個数を超えています');
					}
				} else {
					showStockShortageDialog();//在庫不足ダイアログ
				}
			}
		}
	}
}

function checkStock(cmId, cmCount) {
	var res;
	PtanoDwr.checkStock(cmId, cmCount, {
		callback : function(data) {
			res = data;
		},
		async : false
	});
	return res;
}

function checkLimit(cmId, cmCount) {
	var res;
	PtanoDwr.checkLimit(cmId, cmCount, {
		callback : function(data) {
			res = data;
		},
		async : false
	});
	return res;
}

function checkStatus(cmId) {
	var res;
	PtanoDwr.checkStatus(cmId, {
		callback : function(data) {
			res = data;
		},
		async : false
	});
	return res;
}

function insert_cart_ex(cmid) {
	var str = "item_count_" + cmid;
	var count = document.getElementById(str).value;
	insert_cart(cmid, count);
}

function insert_cart_ex2(cmid, count_name) {
	var str = count_name;
	var count = document.getElementById(str).value;
	;
	insert_cart(cmid, count);
}

// チェックをつけた商品のカートへの一括インサート
function insert_cart_ikkatsu(checkbox_name, amount_prefix) {
	var obj = document.getElementsByName(checkbox_name);
	var check_count = 0;
	var cm_id;
	var elem;
	var str;
	var count;
	var map = new Object();
	var list = new Array();
	
	for ( var i = 0; i < obj.length; i++) {
		if (obj.item(i).checked == true) {
			cm_id = obj.item(i).value;
			str = amount_prefix + cm_id;
			elem = document.getElementById(str);
			if (elem == null) {
				showErrorDialog('カラーサイズのバリエーション商品が含まれています。<br />一覧ページからカートに入れることができませんので、商品詳細ページからカラーサイズをご選択後、カート投入をお願いいたします。');
				check_count = 0;
				break;
			}
			count = document.getElementById(str).value;

			// 1以上の数値かどうか
			if (isValidNumWithMassage(count, '1以上の整数値を半角で入力してください') == false) {
				check_count = 0;
				document.getElementById(str).focus();
				break;
			}

			// 在庫は足りているか
			if (checkStock(cm_id, count) == false) {
				showStockShortageDialog();//在庫不足ダイアログ
				check_count = 0;
				document.getElementById(str).focus();
				break;
			}

			// 制限個数は足りているか
			if (checkLimit(cm_id, count) == false) {
				showErrorDialog('カートに入れられる上限個数を超える商品があります');
				check_count = 0;
				document.getElementById(str).focus();
				break;
			}

			map[cm_id] = count; // MAPに格納
			list[check_count] = cm_id; // EDPチェック用に作成
			check_count++;
		}
	}

	if (check_count > 0) {
		if(is_valid_meisai_count_list(list) == true){
			if (check_duplicated_itemcd_list(list) == false) {
				PtanoDwr.insertCartBySeq(list, map, update_cart_infomation);
				showCartInDialog();//カートインダイアログ
				return "";
			}
		}
	}
}

// チェックをつけた商品がカート投入可能かチェック
function check_cart_ikkatsu(checkbox_name, cart_status_map) {
	var obj = document.getElementsByName(checkbox_name);
	var cm_id;
	var status = 1;
	var flg = true;

	for ( var i = 0; i < obj.length; i++) {
		if (obj.item(i).checked == true) {
			cm_id = obj.item(i).value;
			status = cart_status_map[cm_id];
			if (status != 1) {
				showErrorDialog('販売終了または停止中の商品が含まれております。<br />ご確認をお願いいたします。');
				flg = false;
				break;
			}
		}
	}
	return flg;
}

/**
 * 
 * カート情報の更新します。
 * 
 * @param map
 *            DemoSiteCommon.reCalcBuyListの戻り値
 */
function update_cart_infomation(map) {
	if (map != null) {
		var elem;
		var totalPrice = map["TotalPrice"];
		var itemCount = map["ItemCount"];
		var cmCount = map["CmCount"];
		var freePayShip = map["FreePayShip"];
		var shipPay = map["shipPay"];
		var weightFlag = map["weightFlag"];

		elem = document.getElementById("total_price");
		// ページ上にログインBOXがない場合は何もしない。
		if (elem != null) {
			if (totalPrice > 0) {
				elem.innerHTML = "￥" + add_figure(totalPrice);
				elem = document.getElementById("item_count");
				elem.innerHTML = itemCount;
				elem = document.getElementById("cm_count");
				elem.innerHTML = cmCount;

				elem = document.getElementById("cart_is_filled");
				elem.style.display = "block";

				elem = document.getElementById("cart_is_empty");
				elem.style.display = "none";

				// 送料表示欄
				if (weightFlag == 'true') {
					elem = document.getElementById("carriage_1");
					elem.style.display = "none";
					elem = document.getElementById("carriage_2");
					elem.style.display = "none";
					elem = document.getElementById("carriage_3");
					elem.style.display = "block";
				} else {
					if (freePayShip > 0) {
						elem = document.getElementById("carriage_1");
						elem.style.display = "block";
						elem = document.getElementById("carriage_2");
						elem.style.display = "none";
					} else {
						elem = document.getElementById("carriage_1");
						elem.style.display = "none";
						if (shipPay > 0) {
							elem = document.getElementById("carriage_2");
							elem.style.display = "none";
						} else {
							elem = document.getElementById("carriage_2");
							elem.style.display = "block";
						}
					}
					elem = document.getElementById("carriage_3");
					elem.style.display = "none";
				}
				elem = document.getElementById("free_pay_ship");
				elem.innerHTML = add_figure(freePayShip);

				// アイテムリスト欄
				var elemStr, itemURL, itemName, itemAmout, itemPrice;
				for (i = 0; i < 4; i++) {
					itemURL = map["ItemURL" + i];
					elemStr = "item_url" + i;
					elem = document.getElementById(elemStr)
					if (i < cmCount) {
						elem.href = itemURL;
					} else {
						elem.href = "";
					}

					itemName = map["ItemName" + i];
					elemStr = "item_name" + i;
					elem = document.getElementById(elemStr)
					if (i < cmCount) {
						elem.innerHTML = itemName;
					} else {
						elem.innerHTML = "";
					}

					elemStr = "item_amount" + i;
					elem = document.getElementById(elemStr)
					itemAmount = map["ItemAmount" + i];
					if (i < cmCount) {
						elem.innerHTML = itemAmount;
					} else {
						elem.innerHTML = "";
					}

					elemStr = "item_price" + i;
					elem = document.getElementById(elemStr)
					itemPrice = map["ItemPrice" + i];
					if (i < cmCount) {
						elem.innerHTML = "￥ " + add_figure(itemPrice);
					} else {
						elem.innerHTML = "";
					}
				}
				// 続きを見るの部分
				elemStr = "cart_continue";
				elem = document.getElementById(elemStr);
				if (cmCount > 4) {
					elem.style.display = "block";
				} else {
					elem.style.display = "none";
				}
			} else {
				elem = document.getElementById("cart_is_filled");
				elem.style.display = "none";

				elem = document.getElementById("cart_is_empty");
				elem.style.display = "block";
			}
		}
		$('.wordBreak').wb();//右カートブロックでの文字列折り返し	
	}
}

// 金額表示にする
function add_figure(str) {
	var num = new String(str).replace(/,/g, "");
	while (num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")))
		;
	return num;
}

// 有効な整数値かどうか判定する
function isValidNumWithMassage(val, message) {
	reg = new RegExp('^[1-9][0-9]*$');
	if (!reg.exec(val)) {
		showErrorDialog(message);
		return false;
	}
	return true;
}

// お気に入りの追加
function insert_fvrtdata(cm_id) {
	var cmId = cm_id;
	PtanoDwr.insertFvrtData(cmId);
	showSuccessDialog('お気に入りに追加しました');
}

// ポイントカートに追加（個数の取得）
function insert_cart_pt_ex(cmid) {
	var str = "item_count_" + cmid;
	var count = document.getElementById(str).value;
	insert_cart_pt(cmid, count);
}

// ポイントカートに追加
function insert_cart_pt(cm_id, cm_count) {
	var cmId = cm_id;
	var cmCount = cm_count;
	var result_type = 0;
	var result_cart_num = 0;
	var elem;

	if (isValidNumWithMassage(cmCount, '1以上の整数値を半角で入力してください')) {
		PtanoDwr.insertCartPt(cm_id, cm_count, {
			callback : function(data) {
				result_type = data["result_type"];
				result_cart_num = data["result_cart_num"];
			},
			async : false
		});

		switch (result_type) {
		case 0:
			showSuccessDialog('ポイントカートに追加しました');
			break;
		case 1:
			showErrorDialog('ご利用可能なポイントを超えております');
			break;
		case 2:
			showErrorDialog('ご利用可能なポイントの桁数を超えております');
			break;
		default:
			break;
		}

		if (result_cart_num > 0) {
			elem = document.getElementById("point_cart_box1");
			elem.style.display = "block"
			elem = document.getElementById("point_cart_box2");
			elem.style.display = "block"
		} else {
			elem = document.getElementById("point_cart_box1");
			elem.style.display = "none"
			elem = document.getElementById("point_cart_box2");
			elem.style.display = "none"
		}
	}
}

// 商品コードからCMIDを返す
function get_cmid_from_cmcd(cmcd) {
	PtanoDwr.getCmIdByCmCd(cmcd, cmid_callback);
}

function cmid_callback(cmid) {
	if (cmid < 0) {
		showErrorDialog('該当する商品がありません');
	} else {
		showErrorDialog('商品ID=' + cmid);
	}
}

// 比較表のアイテム数を取得
function get_comparison_item_count() {
	var count;
	PtanoDwr.getComparisonItemCount( {
		callback : function(data) {
			count = data;
		},
		async : false
	});
	return count;
}

// カート内商品とのEDPコード重複チェック(単一商品)
function check_duplicated_itemcd(cm_id) {
	var flg;
	PtanoDwr.checkDuplicatedItemCdInCart(cm_id, {
		callback : function(data) {
			if (data.length > 0) {
				flg = true;
			} else {
				flg = false;
			}
		},
		async : false
	});

	if (flg == true) {
		showErrorDialog('単品商品とまとめ商品を同時に注文することはできません');
		return true;
	} else {
		return false;
	}
}

// カート内商品とのEDPコード重複チェック(複数商品)
function check_duplicated_itemcd_list(list) {
	var flg;
	var cm_nm_list;

	PtanoDwr.checkDuplicatedItemCdInCart2(list, {
		callback : function(data) {
			cm_nm_list = data;
			if (data.length > 0) {
				flg = true;
			} else {
				flg = false;
			}
		},
		async : false
	});

	if (flg == true) {
		showErrorDialog('単品商品とまとめ商品を同時に注文することはできません（' + cm_nm_list[0] + '）');
		return true;
	} else {
		return false;
	}
}

function message_duplicate(list) {
	if (list.length > 0) {
		showErrorDialog('単品商品とまとめ商品を同時に注文することはできません')
		return false;
	} else {
		return true;
	}
}

//明細数のチェック。追加しようとする商品との合算でカート内明細数が98以上となる場合。
function is_valid_meisai_count(cm_id) {
	var flg;
	PtanoDwr.getBuyListCount(cm_id, {
		callback : function(data) {
			if (data <= 98) {
				flg = true;
			} else {
				flg = false;
			}
		},
		async : false
	});

	if (flg == true) {
		return true;
	} else {
		showErrorDialog('一度に承れるご注文は98明細までとなっております。');
		return false;
	}
}

//明細数のチェック。追加しようとする商品との合算でカート内明細数が98以上となる場合。(複数商品)
function is_valid_meisai_count_list(list) {
	var flg;
	PtanoDwr.getBuyListCount2(list, {
		callback : function(data) {
			if (data <= 98) {
				flg = true;
			} else {
				flg = false;
			}
		},
		async : false
	});

	if (flg == true) {
		return true;
	} else {
		showErrorDialog('一度に承れるご注文は98明細までとなっております。');
		return false;
	}
}

