﻿var fgDataNew="";					//取得したデータ（メインデータ）
var fgDataMail="";					//取得したデータ（メール送信先）

/************************************************************************/
// 買い物かご（構造体として使用する）
// Input Parameter
//    psCM3_FULL_NAME : 商品名
//    psCM3_AMOUNT : 金額
//    psCM3_TAX_AMOUNT : 消費税
//    psCM_UNIT : 数量
//    psCM3_AMOUNT_SUM : 合計金額
//    psCM2_CODE : 製品グループコード
//    psCM3_COM_CODE : 商品コード
//    psCM2_NAME : 製品グループ名
//    psFlg_Del : 削除フラグ(1:削除)
// Output Parameter
//    なし
// 戻り値
//    なし
/************************************************************************/
function stKago(psCM3_FULL_NAME, psCM3_AMOUNT, psCM3_TAX_AMOUNT, psCM_UNIT, psCM3_AMOUNT_SUM, psCM2_CODE, psCM3_COM_CODE, psCM2_NAME, psFlg_Del){
	this.CM3_FULL_NAME=psCM3_FULL_NAME;		//製品名
	this.CM3_AMOUNT=psCM3_AMOUNT;			//価格
	this.CM3_TAX_AMOUNT=psCM3_TAX_AMOUNT;	//消費税
	this.CM_UNIT=psCM_UNIT;					//数量
	this.CM3_AMOUNT_SUM=psCM3_AMOUNT_SUM;	//小計
	this.CM2_CODE=psCM2_CODE;				//基本情報コード
	this.CM3_COM_CODE=psCM3_COM_CODE;		//製品コード
	this.CM2_NAME=psCM2_NAME;				//製品グループ名
	this.Flg_Del=psFlg_Del;					//削除フラグ
}

/************************************************************************/
// フォーム初期化処理
// Input Parameter
//    なし
// Output Parameter
//    なし
// 戻り値
//    なし
/************************************************************************/
window.onload=function(){
var oAllKago="";	//前回表示した買い物かご
var i;				//ループカウンタ

	document.getElementById("btn_chumon").onclick = function(evt){OpenMailUrl();};
	document.getElementById("btn_clear").onclick = function(evt){initKago();return false;};

	getProductList(document.getElementById("CM1_CODE").value);	//製品情報を取得する

	//買い物かごを初期化する
	initKago();

	//戻るボタンなどで戻ったときに買い物かごを再表示する
	//（IE、Netscapeではonloadイベントが発生するため）
	if (document.getElementById("Flg_Submit").value=="1"){
		oAllKago = eval("(" + document.getElementById("sv_kago").value.replace(/@@10@@/g,"'") + ");");
		for(var oKago in oAllKago){
			fgKago[oKago] = oAllKago[oKago];
		}

		document.getElementById("div_kago").className="";
		for(i=0;i<fgKago.length;i++){
			setKagoDisp(i, true);	//買い物かごの中身
		}
		setSumDisp();		//合計エリア
	}

	setContents_r();
									//ページカウンター処理
	comSetCounterPage(comGetFileName());
}

/************************************************************************/
// 製品情報を取得する
// Input Parameter
//    psMode : 01:販売 02:ダウンロード 03:資料請求
// Output Parameter
//    なし
// 戻り値
//    なし
/************************************************************************/
function getProductList(psMode){
var sType = "";		//パラメータ編集エリア
var sWhere = "";	//パラメータ編集エリア
var sSql = "";		//パラメータ編集エリア
var sRepl = "";		//パラメータ編集エリア

var objTbl = document.getElementById("tbl_product");	//テーブルオブジェクト

	//テーブルオブジェクトを初期化する
	deleteTableRow(objTbl);

	//QueryStringを取得する
	comGetQueryString();

	//製品一覧を表示する
	var sParam = "({CM2_IMAGE:{pclass:'td_image',pcolspan:'1',prowspan:'1',pcollf:'0',ptype:'I',palign:'left',pimgsrc:'CM2_IMAGE',purl:'',pjs:''}"
				+ ",CM3_FULL_NAME:{pclass:'td_full_name',pcolspan:'1',prowspan:'1',pcollf:'0',ptype:'S',palign:'left',pimgsrc:'',purl:'',pjs:''}"
				+ ",CM3_AMOUNT:{pclass:'td_qty',pcolspan:'1',prowspan:'1',pcollf:'0',ptype:'S',palign:'right',pimgsrc:'',purl:'',pjs:''}"
				+ ",CM_UNIT:{pclass:'td_unit',pcolspan:'1',prowspan:'1',pcollf:'0',ptype:'S',palign:'right',pimgsrc:'',purl:'',pjs:''}"
				+ ",CM_BTN:{pclass:'td_btn',pcolspan:'1',prowspan:'1',pcollf:'0',ptype:'S',palign:'center',pimgsrc:'../images/link/in.jpg',purl:'javascript:setKago(this,[row]);',pjs:''}"
				+ "})";

	sParam = eval(sParam);
	sType = "DWN_LIST";
	sRepl = "@@CM2_CODE@@=" + psMode;
	comGetServerData2(fgsUrl, sType, sWhere , sRepl, sSql);

	fgDataNew = fgData;
	if (fgDataNew != ""){
		comDataAdd(objTbl,fgDataNew,sParam);

		//製品グループのヘッダー行を挿入する
		SetCM2_Header(objTbl);
	}

}

/************************************************************************/
// 製品グループのヘッダー行を挿入する
// Input Parameter
//    pobjTbl : テーブルオブジェクト
// Output Parameter
//    なし
// 戻り値
//    なし
/************************************************************************/
function SetCM2_Header(pobjTbl){

	var sCM2_NAME = eval("(" + fgDataNew + ");")[0]["CM2_NAME"];	//製品グループ名（キーブレイク用）
	var sCM2_StartRow = 0;	//製品グループの先頭行
	var sCM2_CntRow = 1;	//製品グループの行数
	var j;					//ループカウンタ
	var newTR;				//追加する行
	var newTD;				//追加する列
	var nCellIndex = 0;		//セルの追加位置
	var nCntGrp = 0;		//製品グループの数
	var sRepStr = "";		//変換文字列
	var sDestStr = "";		//変換元文字列

	for(i=0;i<pobjTbl.rows.length;i++){
		sRepStr = eval("(" + fgDataNew + ");")[i - nCntGrp]["CM2_NAME"];
		sDestStr = pobjTbl.rows[i].cells[0].innerHTML;
		pobjTbl.rows[i].cells[0].innerHTML = sDestStr.replace(sRepStr, encodeURIComponent(sRepStr));
		//製品グループのキーブレイク		
		if (sCM2_NAME != sRepStr){
			//カウントアップ
			nCntGrp++;
			//製品グループのマージ
			if (sCM2_CntRow > 1){
				for(j=1;j<sCM2_CntRow - 1;j++){
					pobjTbl.rows[sCM2_StartRow + j].deleteCell(0);
				}
				pobjTbl.rows[sCM2_StartRow].cells[0].rowSpan = sCM2_CntRow - 1;
			}

			sCM2_NAME = sRepStr;
			sCM2_StartRow = i + 1;
			sCM2_CntRow = 0;

			//製品グループのヘッダー行
			newTR = pobjTbl.insertRow(i);
			nCellIndex = 0;

			//製品グループ
			newTD = newTR.insertCell(nCellIndex);
			newTD.innerHTML = "　";
			newTD.className = "td_cm2header";

			//製品名
			nCellIndex++;
			newTD = newTR.insertCell(nCellIndex);
			newTD.innerHTML = "製　品　名";
			newTD.className = "td_cm2header";

			//価格(税込み)
			nCellIndex++;
			newTD = newTR.insertCell(nCellIndex);
			newTD.innerHTML = "価格(税込み)";
			newTD.className = "td_cm2header";

			//価格(税込み)
			nCellIndex++;
			newTD = newTR.insertCell(nCellIndex);
			newTD.innerHTML = "数量";
			newTD.className = "td_cm2header";

			//ボタン
			nCellIndex++;
			newTD = newTR.insertCell(nCellIndex);
			newTD.innerHTML = "　";
			newTD.className = "td_cm2header";

			newTD.id = "btn_Dtl" + sCM2_CntRow;
		}
		sCM2_CntRow++;
	}

	//製品グループのマージ（最後の製品グループ）
	if (sCM2_CntRow > 1){
		for(j=1;j<sCM2_CntRow - 1;j++){
			pobjTbl.rows[sCM2_StartRow + j].deleteCell(0);
		}
		pobjTbl.rows[sCM2_StartRow].cells[0].rowSpan = sCM2_CntRow - 1;
	}
}
/************************************************************************/
// テーブルオブジェクト初期化処理
// Input Parameter
//    poTable : テーブルオブジェクト
// Output Parameter
//    なし
// 戻り値
//    なし
/************************************************************************/
function deleteTableRow(poTable){
var i;	//ループカウンタ

	for (i=poTable.rows.length - 1;i >= 0;i--){
		poTable.deleteRow(i);
	}
}

/************************************************************************/
// お客さま情報入力画面を表示する
// Input Parameter
//    なし
// Output Parameter
//    なし
// 戻り値
//    true  :正常
//    false :エラー
/************************************************************************/
function OpenMailUrl(){
var sCM1_CODE = "";	 		//基本情報コード
var sCM1_MAIL = ""; 		//メールアドレス
var sCM1_MAIL_SUBJECT = ""; //件名
var sHref = "";				//次のURL

	sCM1_CODE = document.getElementById("CM1_CODE").value;					//商品グループコード

	//メール送信先を取得する
	getMailInfo(sCM1_CODE);
	sCM1_MAIL = eval("(" + fgDataMail + ");")[0]["CM1_MAIL"];					//メールアドレス
	sCM1_MAIL_SUBJECT = eval("(" + fgDataMail + ");")[0]["CM1_MAIL_SUBJECT"];	//件名

	//お客さま情報入力画面に値を渡す
	document.getElementById("CM1_CODE").value=sCM1_CODE;					//基本情報コード
	document.getElementById("CM1_MAIL").value=sCM1_MAIL;					//メール送信先
	document.getElementById("CM1_MAIL_SUBJECT").value=sCM1_MAIL_SUBJECT;	//メール件名

	getKagoStr();	//買い物かご

	document.getElementById("Flg_Submit").value="1";
	document.getElementById("sv_kago").value=convKago();

	document.InpUser.submit();
	return true;
}

/************************************************************************/
// 送信先の情報を取得する
// Input Parameter
//    psCM1_CODE : 基本情報コード
// Output Parameter
//    なし
// 戻り値
//    なし
/************************************************************************/
function getMailInfo(psCM1_CODE){
var sType = "";		//パラメータ編集エリア
var sWhere = "";	//パラメータ編集エリア
var sSql = "";		//パラメータ編集エリア

	//QueryStringを取得する
	comGetQueryString();

	//ページカウンタを表示する
	var sParam = "({CM1_MAIL:{pclass:'',pcolspan:'1',prowspan:'1',pcollf:'0',ptype:'S',palign:'left',pimgsrc:'',purl:'',pjs:''}"
				+ ",CM1_MAIL_SUBJECT:{pclass:'',pcolspan:'1',prowspan:'1',pcollf:'0',ptype:'S',palign:'left',pimgsrc:'',purl:'',pjs:''}"
				+ "})";

	sParam = eval(sParam);
	sType = "DWN_SEND";
	sWhere = "CM1_CODE='" + psCM1_CODE + "'";
	comGetServerData(fgsUrl, sType, sWhere, sSql);
	fgDataMail = fgData;
}

/************************************************************************/
// 買い物かごを表示する
// Input Parameter
//    pObj : テーブルオブジェクト
//    piRowIndex : カレント行のインデックス
// Output Parameter
//    なし
// 戻り値
//    なし
/************************************************************************/
function setKago(pObj,piRowIndex){
var iIndex = piRowIndex-1;	//行インデックス
var sCM3_FULL_NAME = "";	//商品名
var sCM3_AMOUNT = "";		//価格
var sCM3_TAX_AMOUNT = "";	//消費税
var sCM_UNIT;				//数量
var sCM3_AMOUNT_SUM = "";	//小計
var sCM2_CODE = "";	 		//商品グループコード
var sCM3_COM_CODE = ""; 	//商品コード
var sCM2_NAME = "";			//商品名
var oDatanew = eval("(" + fgDataNew + ");");	//商品一覧

	for(i=0;i<fgKago.length;i++){
		if(fgKago[i].CM2_CODE==oDatanew[iIndex]["CM2_CODE"]){
			if(fgKago[i].CM2_NAME==oDatanew[iIndex]["CM2_NAME"]){
				if(fgKago[i].CM3_COM_CODE==oDatanew[iIndex]["CM3_COM_CODE"]){
					if(fgKago[i].Flg_Del==fgFlg_Del_Off){
						alert("すでに同じ商品がかごに入っています。");
						break;
					}
				}
			}
		}
	}

	if(i==fgKago.length){
		sCM3_FULL_NAME = oDatanew[iIndex]["CM3_FULL_NAME"];		//商品名
		sCM3_AMOUNT = oDatanew[iIndex]["CM3_AMOUNT"];			//価格
		sCM3_TAX_AMOUNT = oDatanew[iIndex]["CM3_TAX_AMOUNT"];	//消費税
		sCM_UNIT = oDatanew[iIndex]["CM_UNIT"];					//数量
		sCM3_AMOUNT_SUM = sCM3_AMOUNT;							//小計
		sCM2_CODE = oDatanew[iIndex]["CM2_CODE"];				//基本情報コード
		sCM3_COM_CODE = oDatanew[iIndex]["CM3_COM_CODE"];		//商品コード
		sCM2_NAME = oDatanew[iIndex]["CM2_NAME"];				//商品名

		fgKago[fgKago.length]=new stKago(sCM3_FULL_NAME, sCM3_AMOUNT, sCM3_TAX_AMOUNT,sCM_UNIT, sCM3_AMOUNT_SUM, sCM2_CODE, sCM3_COM_CODE, sCM2_NAME, fgFlg_Del_Off);
		document.getElementById("div_kago").className="";
		setKagoDisp(fgKago.length-1, true);	//買い物かごの中身
		setSumDisp();	//合計エリア
	}
}

/************************************************************************/
// 買い物かごから削除する（もどす）
// Input Parameter
//    pObj : テーブルオブジェクト
//    piRowIndex : カレント行のインデックス
// Output Parameter
//    なし
// 戻り値
//    なし
/************************************************************************/
function delKago(poObj, pnIndex){
var oTbl = document.getElementById("tbody_kago");	//テーブルオブジェクト
var i;	//ループカウンタ

	fgKago[pnIndex-1].Flg_Del=fgFlg_Del_On;
	oTbl.rows[pnIndex-1].className="tr_hidden";
	setSumDisp();	//合計エリア

	for(i=0;i<fgKago.length;i++){
		if(fgKago[i].Flg_Del==fgFlg_Del_Off){
			break;
		}
	}
	if (i==fgKago.length){
		//非表示にする
		document.getElementById("div_kago").className="div_init";	//買い物かご
	}
}
/************************************************************************/
// 買い物かごを初期化する
// Input Parameter
//    なし
// Output Parameter
//    なし
// 戻り値
//    なし
/************************************************************************/
function initKago(){
	//テーブルオブジェクトを初期化する
	deleteTableRow(document.getElementById("tbody_kago"));
	document.getElementById("div_kago").className="div_init";
	fgKago=new Array();
	//合計エリア
	document.getElementById("tbody_sum1").innerHTML = "&yen;0";
	document.getElementById("tbody_sum2").innerHTML = "&yen;0";
	document.getElementById("tbody_sum3").innerHTML = "&yen;0";
}
/************************************************************************/
// 買い物かごの中身を取得する（メールに表示する文字列として）
// Input Parameter
//    なし
// Output Parameter
//    なし
// 戻り値
//    なし
/************************************************************************/
function getKagoStr(){
var sProd="";		//商品コード
var sKago="";		//買い物かご
var sSum="";		//合計金額
var nCnt=1;			//商品のカウンタ
var i;				//ループカウンタ

	for(i=0;i<fgKago.length;i++){
		if(fgKago[i].Flg_Del==fgFlg_Del_Off){
			//商品コード
			if(sProd!=""){
				sProd += ",";
			}
			sProd += fgKago[i].CM3_COM_CODE;

			//買い物かご
			sKago += "商品名";
			sKago += nCnt;
			sKago += "：";
			sKago += fgKago[i].CM3_FULL_NAME.replace("<BR>"," ");
			sKago += fgsBR;

			sKago += "[単価/数量/消費税]";
			sKago += getRightPad(document.getElementById("tbody_kago").rows[i].cells[1].innerHTML, 12);
			sKago += "円×";
			sKago += fgKago[i].CM_UNIT;
			sKago += " 税込 ---小計";
			sKago += getRightPad(document.getElementById("tbody_kago").rows[i].cells[3].innerHTML, 12);
			sKago += "円---";
			sKago += fgsBR;
			
			nCnt++;
		}
	}

	sSum += getRightPad("商品代金計：", 48);
	sSum += getRightPad(document.getElementById("tbody_sum1").innerHTML, 12);
	sSum += "円";
	sSum += fgsBR;

	sSum += getRightPad("うち消費税：", 48)
	sSum += getRightPad(document.getElementById("tbody_sum2").innerHTML, 12);
	sSum += "円";
	sSum += fgsBR;

	sSum += getRightPad("合計　　　：", 48);
	sSum += getRightPad(document.getElementById("tbody_sum3").innerHTML, 12);
	sSum += "円";
	sSum += fgsBR;

	sSum += getRightPad("支払方法　：", 48);
	sSum += Get_RadioValue(document.getElementById("InpUser").kind);

	document.getElementById("inf_product").value=sProd;
	document.getElementById("inf_kago").value=sKago + sSum;

}
/************************************************************************/
// 買い物かごの中身をeval()で読み取れる形式に変換する
// Input Parameter
//    なし
// Output Parameter
//    なし
// 戻り値
//    変換した文字列
/************************************************************************/
function convKago(){
var sStr="{";	//文字列編集エリア
var i;			//ループカウンタ

	for(i=0;i<fgKago.length;i++){
		sStr += i + ":";

		sStr += "{CM3_FULL_NAME:@@10@@"
		sStr += fgKago[i].CM3_FULL_NAME;
		sStr += "@@10@@";

		sStr += ",CM3_AMOUNT:@@10@@"
		sStr += fgKago[i].CM3_AMOUNT;
		sStr += "@@10@@";

		sStr += ",CM3_TAX_AMOUNT:@@10@@"
		sStr += fgKago[i].CM3_TAX_AMOUNT;
		sStr += "@@10@@";

		sStr += ",CM_UNIT:@@10@@"
		sStr += fgKago[i].CM_UNIT;
		sStr += "@@10@@";

		sStr += ",CM3_AMOUNT_SUM:@@10@@"
		sStr += fgKago[i].CM3_AMOUNT_SUM;
		sStr += "@@10@@";

		sStr += ",CM2_CODE:@@10@@"
		sStr += fgKago[i].CM2_CODE;
		sStr += "@@10@@";

		sStr += ",CM3_COM_CODE:@@10@@"
		sStr += fgKago[i].CM3_COM_CODE;
		sStr += "@@10@@";

		sStr += ",CM2_NAME:@@10@@"
		sStr += fgKago[i].CM2_NAME;
		sStr += "@@10@@";

		sStr += ",Flg_Del:@@10@@"
		sStr += fgKago[i].Flg_Del;
		sStr += "@@10@@";

		sStr += "}";
		if (i != fgKago.length-1){
			sStr += ",";
		}
	}

	sStr += "}";
	return sStr;
}
/************************************************************************/
// 金額の小計を算出する
// Input Parameter
//    psAmount : 金額
//    psUnit : 数量
// Output Parameter
//    なし
// 戻り値
//    算出した金額
/************************************************************************/
function getAmount(psAmount, psUnit){
var sAmount = getNum(psAmount);	//金額
var sUnit = getNum(psUnit);		//数量
var sRet;	//金額編集エリア

	sRet = sAmount * sUnit
	return "&yen;" + addComma(sRet);
}

/************************************************************************/
// 文字列のバイト数を取得する
// Input Parameter
//    psValue : 文字列
// Output Parameter
//    なし
// 戻り値
//    文字列のバイト数
/************************************************************************/
function getLength(psValue) {
var iCnt;			//ループカウンタ
var iLenCnt = 0;	//桁数

   for(iCnt = 0; iCnt < psValue.length; iCnt++){  
      if(escape(psValue.charAt(iCnt)).length >= 4){
		if(escape(psValue.charAt(iCnt)).length == 6 && navigator.userAgent.toUpperCase().indexOf("NETSCAPE") != -1){
			//Netscapeの"&yen;"対応
			iLenCnt ++;
		}else{
			iLenCnt += 2;
		}
      }else{
         iLenCnt ++;
      }
   }

   return(iLenCnt);
}
/************************************************************************/
// 固定長文字列を取得する（左側にスペースを埋めて右詰にする）
// Input Parameter
//    なし
// Output Parameter
//    なし
// 戻り値
//    編集後の文字列
/************************************************************************/
function getRightPad(psValue, nLength) {
var i;				//ループカウンタ
var sPadStr ="";	//パディングのためのスペース
var sEdtStr ="";	//文字列編集エリア

	for(i=getLength(psValue);i<nLength;i++){
		sPadStr += " ";
	}
	sEdtStr = sPadStr + psValue;
return sEdtStr;

	for(i=0;i<nLength;i++){
		sPadStr += " ";
	}
	sEdtStr = sPadStr + psValue;
    sEdtStr = sEdtStr.substring(getLength(sEdtStr) - nLength, getLength(sEdtStr));
    return sEdtStr;
}
