//------------------------------------------------------------------------------
// 初期設定
//------------------------------------------------------------------------------
jQuery.noConflict();
var j$ = jQuery;



//------------------------------------------------------------------------------
// 画面のロードと同時に使用可
//------------------------------------------------------------------------------
jQuery(document).ready(function($){
	// ここでは、$はjQueryとして使えます。


	//--------------------------------------------------------------------------
	// かごIN
	//--------------------------------------------------------------------------
	jQuery(".ACItemInForm").submit(function() {

		//アイテムコード取得
		var itemCode = jQuery(this).attr("class").replace("ACItemInForm ACItemInForm_","");
		var formNo = jQuery(this).attr("id").replace("ACItemInForm_"+ itemCode +"_","");
		var kosuu = jQuery("#ACItemInNumber_"+ String(itemCode) +"_"+ String(formNo)).val();
		var viewNo;

		//通信
		jQuery.ajax({
			url : "/shopping/activecage.php",
			type : "post",
			data : "m=in&c="+ itemCode +"&k="+ kosuu,
			timeout : 5000,
			dataType : "text",
			beforeSend : function() {
			},
			complete : function() {
			},
			success : function(data){
				//リザルト読み込み
				results = sanitizeResult(data);
				result   = results["result"];
				goukei   = results["goukei"];
				retPoint = results["retPoint"];
				souryou  = results["souryou"];
				souryouBorder = results["souryouBorder"];
				syoukei  = results["syoukei"];
				tax      = results["tax"];
				usePoint = results["usePoint"];
				//追加データ
				if(result == "true") {
					setFlag = results["presetFlag"];
					name    = results["name"];
					url     = results["url"];
					tanka   = results["tanka"];
					skosuu  = results["kosuu"];
					point   = results["point"];
					cageNo  = results["cageNo"];
				}

				//データなし処理
				if(result == "false") {
					openCageAlertWindow(getErrorNote(results["errorType"]));
					return;

				//正常処理
				}else{
					//新規
					if(setFlag == 1) {
						var newNo = getMaxIdNumber("ACcageNo","ACcageNo_")+1;

						itemWinClone = jQuery("#ACitemWindow_clone").clone().show().insertBefore("#ACitemWindow_clone").attr("id","ACitemWindow_"+ newNo);
						newHtml = jQuery("#ACitemWindow_"+ newNo).html();
						newHtml = String(newHtml).replace("clone",newNo);
						jQuery("#ACitemWindow_"+ newNo).html(newHtml);

						jQuery("#ACitemWindow_"+ newNo).find("#ACnewItemName_clone").attr("id","ACnewItemName_"+ newNo);
						jQuery("#ACitemWindow_"+ newNo).find("#ACnewItemUrl_clone").attr("id","ACnewItemUrl_"+ newNo);
						jQuery("#ACitemWindow_"+ newNo).find("#ACnewItemTanka_clone").attr("id","ACnewItemTanka_"+ newNo);
						jQuery("#ACitemWindow_"+ newNo).find("#ACnewItemPoint_clone").attr("id","ACnewItemPoint_"+ newNo);
						jQuery("#ACitemWindow_"+ newNo).find("#ACKosuuSelect_clone").attr("id","ACKosuuSelect_"+ newNo);
						jQuery("#ACitemWindow_"+ newNo).find("#ACOutButton_clone").attr("id","ACOutButton_"+ newNo);
						jQuery("#ACitemWindow_"+ newNo).find("#ACitemCode_clone").attr("id","ACitemCode_"+ newNo).attr("class","ACitemCode");
						jQuery("#ACitemWindow_"+ newNo).find("#ACcageNo_clone").attr("id","ACcageNo_"+ newNo);
						jQuery("#ACitemWindow_"+ newNo).find("#ACusePointFlag_clone").attr("id","ACusePointFlag_"+ newNo);
						jQuery("#ACKosuuSelect_"+ newNo).change(function() {
							kosuuChange(jQuery(this));
						});
						jQuery("#ACOutButton_"+ newNo).click(function() {
							itemDelete(jQuery(this));
						});

						jQuery("#ACnewItemName_"+ newNo).text(name);
						jQuery("#ACnewItemUrl_"+ newNo).attr("href",url);
						jQuery("#ACnewItemTanka_"+ newNo).text(numberFormat(tanka));
						jQuery("#ACnewItemPoint_"+ newNo).text(numberFormat(point));
						jQuery("#ACitemCode_"+ newNo).val(itemCode);
						jQuery("#ACcageNo_"+ newNo).val(cageNo);
						jQuery("#ACusePointFlag_"+ newNo).val("");
						viewNo = newNo;
					}else{
						//viewId取得
						viewNo = -1;
						jQuery(".ACitemCode").each(function() {
							if(jQuery(this).val() == itemCode) {
								var tmpId = jQuery(this).attr("id").replace("ACitemCode_","");
								if(jQuery("#ACusePointFlag_"+ tmpId).val() == "") {
									viewNo = tmpId;
								}
							}
						});
					}
					setActiveCageKosuu("#ACKosuuSelect_"+ viewNo,skosuu);
					recalcCageTotal(goukei,retPoint,souryou,souryouBorder,syoukei,tax,usePoint);
					cageInBcon(itemCode);
					openCageAlertWindow('商品を買い物かごに入れました。');
				}
			},
			error : function() {
				openCageAlertWindow("更新に失敗しました。");
			}
		});

	});

	//--------------------------------------------------------------------------
	// かごから削除
	//--------------------------------------------------------------------------
	jQuery(".ACOutButton").click(function() {
		itemDelete(jQuery(this));
	});

	function itemDelete(src) {
		//アイテムコード取得
		viewNo = parseInt(src.attr("id").replace("ACOutButton_",""),10);
		cageNo = parseInt(jQuery("#ACcageNo_"+ viewNo).val(),10);

		//通信
		jQuery.ajax({
			url : "/shopping/activecage.php",
			type : "post",
			data : "m=delete&n="+ cageNo +"&k=0",
			timeout : 5000,
			dataType : "text",
			beforeSend : function() {
			},
			complete : function() {
			},
			success : function(data){

				//リザルト読み込み
				results = sanitizeResult(data);
				result   = results["result"];
				goukei   = results["goukei"];
				retPoint = results["retPoint"];
				souryou  = results["souryou"];
				souryouBorder = results["souryouBorder"];
				syoukei  = results["syoukei"];
				tax      = results["tax"];
				usePoint = results["usePoint"];

				//データなし処理
				if(result == "false") {
					openCageAlertWindow(getErrorNote(results["errorType"]));
					return;

				//正常処理
				}else{
					jQuery("#ACitemWindow_"+ viewNo).remove();
					reNumberingAC();
					recalcCageTotal(goukei,retPoint,souryou,souryouBorder,syoukei,tax,usePoint);

					//かご詳細のみ
					if(jQuery("#ACResultNoItem").size() > 0) {
						if(jQuery(".ACitemWindow").size() <= 0) {
							jQuery("#ACResultNoItem").show();
							jQuery(".ACResultTotal").hide();
						}
					}
				}
			},
			error : function() {
				openCageAlertWindow("更新に失敗しました。");
			}
		});
	}

	//--------------------------------------------------------------------------
	// 個数変更
	//--------------------------------------------------------------------------
	//かご
	jQuery(".ACKosuuSelect").change(function() {
		kosuuChange(jQuery(this));
	});

	function kosuuChange(src) {
		//アイテムコード取得
		viewNo = parseInt(src.attr("id").replace("ACKosuuSelect_",""),10);
		cageNo = parseInt(jQuery("#ACcageNo_"+ viewNo).val(),10);
		itemCode = jQuery("#ACitemCode_"+ viewNo).val();

		//個数取得
		kosuu = src.val();

		//通信
		jQuery.ajax({
			url : "/shopping/activecage.php",
			type : "post",
			data : "m=change&n="+ cageNo +"&c="+ itemCode +"&k="+ kosuu,
			timeout : 5000,
			dataType : "text",
			beforeSend : function() {
			},
			complete : function() {
			},
			success : function(data){

				//リザルト読み込み
				results = sanitizeResult(data);
				result   = results["result"];
				goukei   = results["goukei"];
				retPoint = results["retPoint"];
				souryou  = results["souryou"];
				souryouBorder = results["souryouBorder"];
				syoukei  = results["syoukei"];
				tax      = results["tax"];
				usePoint = results["usePoint"];
				itemUsePoint = results["itemUsePoint"];

				//データなし処理
				if(result == "false") {

					src.val(results["kosuu"]);
					openCageAlertWindow(getErrorNote(results["errorType"]));
					return;

				//正常処理
				}else{
					src.val(kosuu);
					recalcCageTotal(goukei,retPoint,souryou,souryouBorder,syoukei,tax,usePoint);
					jQuery("#ACitemUsePoint_"+ viewNo).text(numberFormat(itemUsePoint));

					//かご詳細のみ
					if(jQuery("#ACResultItemTanka_"+ viewNo).size() > 0) {
						if(jQuery("#ACusePointFlag_"+ viewNo).val() != 1) {
							tanka = parseInt(jQuery("#ACResultItemTanka_"+ viewNo).text().replace("円","").replace(",",""));
							jQuery("#ACResultItemSyoukei_"+ viewNo).text(numberFormat(tanka * kosuu));
						}
					}

				}
			},
			error : function() {
				openCageAlertWindow("更新に失敗しました。");
			}
		});
	}

});

//------------------------------------------------------------------------------
// かごロード時処理
//------------------------------------------------------------------------------
jQuery("#souryouBorderNavi").ready(function() {
	activeCageSetup();
});
jQuery("#ACitemWindow_clone").ready(function() {
//	jQuery("#ACitemWindow_clone").hide();
});
jQuery("#ACResultNoItem").ready(function() {
	if(jQuery(".ACitemWindow").size() > 0) {
		jQuery("#ACResultNoItem").hide();
	}
});

//------------------------------------------------------------------------------
// メッセージウインドウ
//------------------------------------------------------------------------------
jQuery("#cageAlertWindow").ready(function() {
	jQuery("#cageAlertWindowCloseButton").click(function() {
		closeCageAlertWindow();
	});
	closeCageAlertWindow();
});

function openCageAlertWindow(mes) {

	wleft = Math.floor((jQuery(window).width()  - jQuery("#cageAlertWindow").width()) / 2);
	wtop  = Math.floor((jQuery(window).height() - jQuery("#cageAlertWindow").height()) / 2) + jQuery(document).scrollTop();

	jQuery("#cageAlertWindow").css("top",wtop).css("left",wleft);
	jQuery("#cageAlertWindowMes").html(mes);
	jQuery("#cageAlertWindow").show();

	tid = setTimeout("closeCageAlertWindow()",2000);
}

function closeCageAlertWindow() {
	jQuery("#cageAlertWindow").hide();
}

//------------------------------------------------------------------------------
// ベリトランスビーコン
//------------------------------------------------------------------------------
function cageInBcon(id) {
	jQuery("#cageInBconWindow").html("<img src='" + location.protocol + "//re.veritrans.co.jp/bcon/heavy/?k=vG7ltHZu8nl6s&id[]="+ id +"' width='1' height='1'>");
}

//------------------------------------------------------------------------------
// 合計など再描画
//	引:税込合計額,取得ポイント,送料,送料無料まであと*円
//	戻:--
//------------------------------------------------------------------------------
function recalcCageTotal(goukei,point,souryou,souryouBorder,syoukei,tax,usePoint) {
	jQuery("#ACTotalGoukei").text(numberFormat(goukei));
	jQuery("#ACTotalPoint").text(numberFormat(point));
	jQuery("#ACTotalSouryou").text(numberFormat(souryou));
	jQuery("#ACTotalSyoukei").text(numberFormat(syoukei));
	jQuery("#ACTotalTax").text(numberFormat(tax));
	jQuery("#ACTotalUsePoint").text(numberFormat(usePoint));
//	jQuery("#ACitemUsePoint_"+ itemUseNo).text(numberFormat(itemUsePoint));

//	if(souryouBorder <= 0) {
	if(souryou <= 0) {
		jQuery("#souryouBorderNavi").hide();
	}else{
		jQuery("#ACTotalSouryouBorder").text(numberFormat(souryouBorder));
		jQuery("#souryouBorderNavi").show();
	}

}

//------------------------------------------------------------------------------
// 数値文字列のカンマ割り
//	引:数値文字列
//	戻:整形後文字列
//------------------------------------------------------------------------------
function numberFormat(numStr) {
	numStr = String(numStr);
	numStr = numStr.replace(/,/g, '');
	numStr = numStr.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, "$1,");
	return numStr;
}

//------------------------------------------------------------------------------
// かごセットアップ
//	引:--
//	戻:--
//------------------------------------------------------------------------------
function activeCageSetup() {

	//送料表示
//	souryouBorder = jQuery("#ACTotalSouryouBorder").text().replace(",","");
	souryou = jQuery("#ACTotalSouryou").text().replace(",","");
	if(souryou <= 0) {
		jQuery("#souryouBorderNavi").hide();
	}else{
		jQuery("#souryouBorderNavi").show();
	}
}

//------------------------------------------------------------------------------
// エラー文
//	引:エラーコード
//	戻:エラー文
//------------------------------------------------------------------------------
function getErrorNote(errorCode) {

	//商品なし
	if(errorCode == "NO_ITEM") {
		return "ご指定の商品は<br>現在取り扱っておりません。";
	}

	//在庫なし
	if(errorCode == "NO_ZAIKO") {
		return "ご指定の商品は<br>在庫がありません。";
	}

	//種類数制限
	if(errorCode == "CAGE_MAX") {
		return "一度にお買い上げいただける商品は<br>20種類までとなります。";
	}

	//サンプル品
	if(errorCode == "SAMPLE") {
		return "サンプル品はかごに投入できません。";
	}

	//ポイント不足
	if(errorCode == "POINT_OVER") {
		return "ご利用可能なポイント数を<br>超えています。";
	}

	return "";
}

//------------------------------------------------------------------------------
// 個数セット
//	引:SELECTタグのID,個数
//	戻:--
//------------------------------------------------------------------------------
function setActiveCageKosuu(id,kosuu) {
	if(kosuu > 20) {
		str = "";
		for(i=1; i<=kosuu; i++) {
			str = str + '<option value="'+ i +'">'+ i +'</option>';
		}
		jQuery(id).html(str);
	}
	jQuery(id).val(kosuu);
}
//------------------------------------------------------------------------------
// 特定クラスの最大Noを得る
//	引:CLASS,ID
//	戻:最大No
//------------------------------------------------------------------------------
function getMaxIdNumber(className,idName) {
	var maxNo = 0;
	var tmpNo;

	jQuery("."+ className).each(function() {
		tmpNo = parseInt(jQuery(this).attr("id").replace(idName,""),10);
		if(tmpNo > maxNo) maxNo = tmpNo;
	});
	return maxNo;
}

//------------------------------------------------------------------------------
// 再ナンバリングAC
//	引:--
//	戻:--
//------------------------------------------------------------------------------
function reNumberingAC() {
	var cnt = 0;
	jQuery(".ACcageNo").each(function() {
		jQuery(this).val(cnt);
		cnt++;
	});
}

//------------------------------------------------------------------------------
// リザルト読み込み＆加工
//	引:リザルト
//	戻:加工済みリザルト
//------------------------------------------------------------------------------
function sanitizeResult(arg) {

	var tmp = new Array();
	var ret = new Array();

	var results = arg.split("\r\n");
	var cnt = results.length;

	for(i=0; i<cnt; i++) {
		tmp = results[i].split("\t");
		ret[tmp[0]] = tmp[1];
	}

	return ret;
}

//------------------------------------------------------------------------------
// 数値をparseIntし、数値以外は0を返す
//	引:入力値
//	戻:数値
//------------------------------------------------------------------------------
function sanitizeNumber(arg) {

	var ret = parseInt(arg,10);

	if(isNaN(ret) == false) {
		return ret;
	}else{
		return 0;
	}
}

