/****************************************************
	商品番号を送信し、商品情報を取得する
	引数  ：pageURI	送信先URL
		   iLpCnt	対象箇所番号
	戻り値 ：なし
****************************************************/
function dataSendNm(pageURI, iLpCnt) {
	//隠しフォーム(商品番号、単価、数量)をクリア
	document.Myfrm.elements["shohin_no" + iLpCnt].value = "";
	document.Myfrm.elements["price" + iLpCnt].value = "";
	document.Myfrm.elements["suryo" + iLpCnt].value = "";
	//ハイフンを外す
	chkS_no = $F("ajax_shohin_no" + iLpCnt).replace("-","");
	//入力不備の場合は処理しない(商品番号7桁以下)
	if (7 > chkS_no.length) {
		getTotalCtrl();	//総合計算出
		return;
	}
	//入力された商品番号を取得
	strShohin_no = $F("ajax_shohin_no" + iLpCnt);
	//ハイフン、半角英数字チェック
	strShohin_no = s_noCheck(strShohin_no);
	//商品番号が半角英数字でない場合はエラー
    if(strShohin_no == "     "){
    	$("ajax_shohin_nm" + iLpCnt).innerHTML = "<span style=\"font-weight:bold;color:red\">商品番号に不正な文字が入力されています。</span>";
    	return;
    }
	//チェック後の商品番号を設定
	document.Myfrm.elements["ajax_shohin_no" + iLpCnt].value = strShohin_no;
	//商品番号をエンコード
	strShohin_no = encodeURIComponent(strShohin_no);
	//商品番号情報を作成し、送信する
	strData = "{shohin_no:'" + strShohin_no + "',count:'" + iLpCnt + "',ajax_mode:'ajax_shohin'}";
	strData = eval("(" + strData + ")");
	// Ajax送受信
	if (strData != "") {
		sendRequest(setSearchData, strData, 'POST', './' + pageURI, true, true);
	}
}

/****************************************************
	入力した商品番号の検索結果を画面に表示する
	引数  ：受信データ
	戻り値 ：なし
****************************************************/
function setSearchData(data) {
	//取得した内容をデコードする
	strRes = decodeURIComponent(data.responseText);
	//受信したデータを「：：」単位で分割する
	var sWrk = strRes.split("::");
	//商品情報表示箇所の取得
	iLpCnt = sWrk[0];
	//該当商品が存在する場合
	if ("Shohin" == sWrk[1].substring(0,6)) {
		//受信したデータを「：」単位で分割する
		var sWrk = strRes.substring(6).split(":");
		//商品番号、単価を隠し項目に設定
		document.Myfrm.elements["shohin_no" + iLpCnt].value = sWrk[1];
		document.Myfrm.elements["price" + iLpCnt].value = sWrk[3];
		//商品名、単価を画面上に表示
		$("ajax_shohin_nm" + iLpCnt).innerHTML = sWrk[2];
		$("ajax_price" + iLpCnt).innerHTML = numberFormat(sWrk[3]);
		//数量をプルダウンで表示する
		var objSuryo = document.getElementById("ajax_suryo" + iLpCnt);
		//プルダウンの初期化
		while (objSuryo.length > 0){
			objSuryo.removeChild(objSuryo.options[0]);
		}
		objSuryo.options[0] = new Option("-", "");
		//数量を設定
		var loopCnt = 1;
		for(i = Number(sWrk[4]);i <= Number(sWrk[5]);i = i +Number(sWrk[6])) {
			objSuryo.options[loopCnt] = new Option(i,i);
			loopCnt++;
		}
	//該当商品がない、またはエラーの場合
	} else {
		$("ajax_shohin_nm" + iLpCnt).innerHTML = sWrk[1];
	}
	getTotalCtrl();	//総合計算出
}

/****************************************************
	選択した数量を送信し、小計を取得する
	引数  ：pageURI	送信先URL
		   iLpCnt	対象箇所番号
	戻り値 ：なし
****************************************************/
function dataSendCnt(pageURI, iLpCnt) {
	//隠しフォーム(数量)をクリア
	document.Myfrm.elements["suryo" + iLpCnt].value = "";
	//選択不備の場合は処理しない(未選択または1個未満)
	if (($F("ajax_suryo" + iLpCnt) == 0) || ($F("ajax_suryo" + iLpCnt) == '-')) {
		getTotalCtrl();	//総合計算出
		return;
	}
	//入力された商品番号、数量を取得
	strShohin_no = $F("ajax_shohin_no" + iLpCnt);
	strSuryo = $F("ajax_suryo" + iLpCnt);
	//ハイフン、半角英数字チェック
	strShohin_no = s_noCheck(strShohin_no);
	//商品番号,数量をエンコード
	strShohin_no = encodeURIComponent(strShohin_no);
	strSuryo = encodeURIComponent(strSuryo);
	//商品情報を作成し、送信する
	strData = "{shohin_no:'" + strShohin_no + "',suryo:'" + strSuryo + "',count:'" + iLpCnt + "',ajax_mode:'ajax_price'}";
	strData = eval("(" + strData + ")");
	// Ajax送受信
	if (strData != "") {
		sendRequest(setSearchPrice, strData, 'POST', './' + pageURI, true, true);
	}
}

/****************************************************
	選択した数量の検索結果を画面に表示する
	引数  ：受信データ
	戻り値 ：なし
****************************************************/
function setSearchPrice(data) {
	//取得した内容をデコードする
	strRes = decodeURIComponent(data.responseText);
	//受信したデータを「：：」単位で分割する
	var sWrk = strRes.split("::");
	//商品情報表示箇所の取得
	iLpCnt = sWrk[0];
	strRes = sWrk[1];
	//該当商品が存在する場合
	if ("Shohin" == strRes.substring(0, 6)) {
		//受信したデータを「：」単位で分割する
		var sWrk = strRes.substring(6).split(":");
		//数量を隠し項目に設定
		document.Myfrm.elements["suryo" + iLpCnt].value = sWrk[1];
		//商品名を設定する
		$("ajax_shohin_nm" + iLpCnt).innerHTML = sWrk[3];
		//数量が未選択の場合は小計を0とする
		if(sWrk[1] != ""){
			//小計を算出する
			var intKin = Number(sWrk[1]) * Number(sWrk[2]);
			//小計を画面上に表示
			$("ajax_gokei" + iLpCnt).innerHTML = numberFormat(String(intKin));
		} else {
			//小計を画面上に表示
			$("ajax_gokei" + iLpCnt).innerHTML = 0;
		}
	//該当商品がない、またはエラーの場合
	} else {
		$("ajax_shohin_nm" + iLpCnt).innerHTML = strRes;
	}
	getTotalCtrl();	//総合計算出
}

/****************************************************
	総合計金額を表示し、未入力箇所を初期化する
	引数  ：なし
	戻り値 ：なし
****************************************************/
function getTotalCtrl() {
	var lngKingaku = 0;		//合計金額を初期化
	var fieldCnt = 0;
	//項目数を取得
	for(i=0;i<document.Myfrm.elements.length;i++){
		if((document.Myfrm.elements[i].type == "text") && (document.Myfrm.elements[i].name != "")){
			fieldCnt += 1;
		}
	}
	//項目数ループする
	for (iCnt = 0; iCnt < fieldCnt; iCnt++) {
		//商品番号、数量が隠し項目に設定されている場合
		if ((0 != $F("shohin_no" + iCnt).length) && ("-" != $F("suryo" + iCnt).value)) {
			//隠し項目に設定されている数量、単価から小計を算出し、表示する
			intG = parseInt(document.Myfrm.elements["suryo" + iCnt].value * document.Myfrm.elements["price" + iCnt].value)
			$("ajax_gokei" + iCnt).innerHTML = numberFormat(String(intG));
			//総合計金額に小計を加算する
			lngKingaku += intG;
		//商品番号、数量が隠し項目に設定されていない場合
		} else {
			//商品番号が5桁以下の場合
			if (5 > $F("ajax_shohin_no" + iCnt).length) {
				//商品名を初期化
				$("ajax_shohin_nm" + iCnt).innerHTML = "&nbsp;";
			}
			//数量、単価、小計を初期化
			var objSuryo = document.getElementById("ajax_suryo" + iCnt);
			while (objSuryo.length > 0){
				objSuryo.removeChild(objSuryo.options[0]);
			}
			objSuryo.options[0] = new Option("-", "");
			$("ajax_price" + iCnt).innerHTML = "&nbsp;";
			$("ajax_gokei" + iCnt).innerHTML = "&nbsp;";
		}
	}
	//総合計金額を表示する
	$("ajax_kingaku").innerHTML = numberFormat(String(lngKingaku)) + '円';
}

/****************************************************
	対象項目を初期化する
	引数  ：pageURI	送信先URL
		   iLpCnt	対象箇所番号
	戻り値 ：なし
****************************************************/
function dataDelete(pageURI, iLpCnt) {
	//隠しフォーム(商品番号、数量、単価)をクリア
	document.Myfrm.elements["shohin_no" + iLpCnt].value = "";
	document.Myfrm.elements["suryo" + iLpCnt].value = "";
	document.Myfrm.elements["price" + iLpCnt].value = "";
	//入力内容(商品番号、数量)をクリア
	document.Myfrm.elements["ajax_shohin_no" + iLpCnt].value = "";
	var objSuryo = document.getElementById("ajax_suryo" + iLpCnt);
	while (objSuryo.length > 0){
		objSuryo.removeChild(objSuryo.options[0]);
	}
	objSuryo.options[0] = new Option("-", "");
	//入力不備の場合は処理しない
	if (5 > $F("ajax_shohin_no" + iLpCnt).length || 0 == $F("ajax_suryo" + iLpCnt).length) {
		getTotalCtrl();
		return;
	}
	//XML・HTTPリクエスト処理を開始
	new Ajax.Request(pageURI, { method:"get", parameters:"shohin_no=" + encodeURI($F("ajax_shohin_no" + iLpCnt)) + "&suryo=" + encodeURI($F("ajax_suryo" + iLpCnt)) + "&COUNT=" + iLpCnt + "&AJAX_SEARCH=true", onComplete:setSearchData });
}

/****************************************************
	商品番号ハイフンチェック
	引数  ：文字列(value)
	戻り値 ：ハイフンを外した文字列
****************************************************/
function s_noCheck(strSno){
	//ハイフンがある場合は外す
	strSno = strSno.replace("-","");
	//商品番号の半角英数字チェック
	if (check_IsEngNum(strSno) == false) {
		//半角英数でない場合は商品番号に空白を設定
		strSno = "     ";
	} else {
		//ハイフンを再度設定する
		strlen = strSno.length-1;
		strSno = strSno.substr(0,5) + '-' + strSno.substr(5,strlen);
	}
	return strSno;
}

/****************************************************
	半角英数字チェック(bool型)
	引数  ：文字列(value)
	戻り値 ：true(半角英数字のみ)
		   false(半角英数字以外)
****************************************************/
function check_IsEngNum(strValue) {
	strValue = String(strValue);
	if ((strValue.length == 0) || (strValue.match(/[^0-9a-zA-Z]/))) {
		return false;
	}
	return true;
}

/****************************************************
	数字を千位毎にグループ化してフォーマットする
	引数  ：対象データ
	戻り値 ：変換後のデータ
****************************************************/
function numberFormat(strValue) {
	var iCnt;
	for (iCnt = 0; iCnt < strValue.length / 3; iCnt++) {
		strValue = strValue.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2");
	}
    return strValue;
}
