//==============================================================================
// イベント
//==============================================================================
function cntEdit(trCnt, itemId){

	//小計を変更する
	var tcartCnt = parseInt(document.getElementById("tcartCnt"+itemId).value);	//入力した個数
	var mPrice = parseInt(document.getElementById("mcom_price"+itemId).value);	//１個の値段
	var oldSubTtl = parseInt(document.getElementById("sub_total"+itemId).value);	//旧小計
	var subTotal = parseInt(mPrice * tcartCnt);	//新しい小計

	//合計に変更が無ければ処理を実施しない
	if(tcartCnt == (oldSubTtl / mPrice)){
		return;
	}
		
	//入力が数値じゃなければ処理を実施しない
	var chk = String(tcartCnt);
    if (chk.match(/[^0-9]/g)) {
		if(!(isNaN(oldSubTtl / mPrice))){
			document.getElementById("tcartCnt"+itemId).value = oldSubTtl / mPrice;
		}
        return;
    }
	///DB内のデータを更新する
	sendData = "itemId="+encodeURI(itemId).replace(/&/g , "%26");
	sendData += "&tcartCount="+encodeURI(tcartCnt).replace(/&/g , "%26");
	httpObj = createXMLHttpRequest(displayData);
	if (httpObj){
		httpObj.open("POST","../cartItemEdit.php",true);
	    httpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8')
		httpObj.send(sendData);
	}

	//カウント減少数チェック
	var minusCnt = 0;
	//位置情報を取得
	for (var i = 0; i < delNum.length; i++){
		if (delNum[i] < trCnt){
			minusCnt++;
		}
	}
	//実際の行位置取得
	var targetCnt = eval(trCnt-minusCnt);
	
	//0じゃなければ小計を削除し、入れなおす
	if(!(isNaN(subTotal)) && subTotal != 0){
		var mySpan = document.getElementById("span_sub_total"+itemId);
		mySpan.removeChild(mySpan.lastChild);
		currenttext=document.createTextNode(addComma(subTotal)+"円（税別）");
		mySpan.appendChild(currenttext);
	}

	//価格、小計がNaNもしくは０の時は０円商品とみなし、表示は変えずに終了する
	if(isNaN(oldSubTtl) || isNaN(mPrice) || oldSubTtl == 0 || mPrice == 0){
		return;
	}
	
	//合計数と金額を再計算の為、合計数，合計金額を再取得
	var totalCnt = parseInt(document.getElementById("totalCnt").value);
	var totalPrice = parseInt(document.getElementById("totalPrice").value);
	
	//合計数
	totalCnt = eval(totalCnt - (oldSubTtl / mPrice) + tcartCnt);

	//合計金額
	totalPrice = eval(totalPrice - oldSubTtl + subTotal);

	//合計入力欄をいったん削除し、再入力する
	var mySpan = document.getElementById('result');
	mySpan.removeChild(mySpan.lastChild);
	currenttext=document.createTextNode("合計数：　" + totalCnt + "　　｜　合計金額：　" + addComma(totalPrice) + "円（税別）");
	mySpan.appendChild(currenttext);

	//小計を登録しなおす
	document.getElementById("sub_total"+itemId).value = subTotal;

	//合計を登録しなおす
	document.getElementById("totalCnt").value = totalCnt;
	document.getElementById("totalPrice").value = totalPrice;
	
}

function cntEditZeroTbl(trCnt, itemId){

	//小計を変更する
	var tcartCnt = parseInt(document.getElementById("tcartCnt"+itemId).value);	//入力した個数
	var bftcartCnt = parseInt(document.getElementById("tcartCnt"+itemId+"Hyde").value);	//旧個数
	//var mPrice = parseInt(document.getElementById("mcom_price"+itemId).value);	//１個の値段
	//var oldSubTtl = parseInt(document.getElementById("sub_total"+itemId).value);	//旧小計
	//var subTotal = parseInt(mPrice * tcartCnt);	//新しい小計
	
	//入力が数値じゃなければ処理を実施しない
	var chk = String(tcartCnt);
    if (chk.match(/[^0-9]/g)) {
		document.getElementById("tcartCnt"+itemId).value = bftcartCnt;
        return;
    }
	///DB内のデータを更新する
	sendData = "itemId="+encodeURI(itemId).replace(/&/g , "%26");
	sendData += "&tcartCount="+encodeURI(tcartCnt).replace(/&/g , "%26");
	httpObj = createXMLHttpRequest(displayData);
	if (httpObj){
		httpObj.open("POST","../cartItemEdit.php",true);
	    httpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8')
		httpObj.send(sendData);
	}

	//カウント減少数チェック
	var minusCnt = 0;
	//位置情報を取得
	for (var i = 0; i < delNum2.length; i++){
		if (delNum2[i] < trCnt){
			minusCnt++;
		}
	}
	//実際の行位置取得
	var targetCnt = eval(trCnt-minusCnt);
	
	
	//合計数の再計算の為、合計数を再取得
	var totalCnt = parseInt(document.getElementById("totalCnt2").value);
	
	//合計数
	totalCnt = eval(totalCnt - bftcartCnt + tcartCnt);

	//合計金額
	//totalPrice = eval(totalPrice - oldSubTtl + subTotal);

	//合計入力欄をいったん削除し、再入力する
	var mySpan = document.getElementById('result2');
	mySpan.removeChild(mySpan.lastChild);
	currenttext=document.createTextNode("合計数：　" + totalCnt + "　");
	mySpan.appendChild(currenttext);

	//小計を登録しなおす
	document.getElementById("sub_total"+itemId).value = subTotal;

	//合計を登録しなおす
	document.getElementById("totalCnt2").value = totalCnt;
	//document.getElementById("totalPrice").value = totalPrice;
	
}

function delItem(trCnt, itemId, cnt, price, catNo){

	//DBからデータを削除する
	//var d = new Date();
	var sendData = "";
	sendData = "itemId="+encodeURI(itemId).replace(/&/g , "%26");
	//sendData += "&"+d.getTime();

	httpObj = createXMLHttpRequest(displayData);
	if (httpObj){
		httpObj.open("POST","cartItemDel.php",true);
	    httpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8')
		httpObj.send(sendData);
	}
	
	//合計数と金額を再計算
	//hiddenから情報取得
	
	var totalCnt;
	var totalPrice;
	if(catNo == 1){
		totalCnt = parseInt(document.getElementById("totalCnt").value);
		totalPrice = parseInt(document.getElementById("totalPrice").value);
		//削除する数を減らす
		totalCnt = eval(totalCnt - cnt);
		totalPrice = eval(totalPrice - price);
			
		//alert(document.getElementById("totalCnt").value);
		//合計入力欄をいったん削除し、再入力する
		var mySpan = document.getElementById('result');
		mySpan.removeChild(mySpan.lastChild);
		currenttext=document.createTextNode("合計数：　" + parseInt(totalCnt) + "　　｜　合計金額：　" + addComma(totalPrice) + "円（税別）");
		mySpan.appendChild(currenttext);
		//合計を登録しなおす
		document.getElementById("totalCnt").value = totalCnt;
		document.getElementById("totalPrice").value = totalPrice;
	}else{
		totalCnt = parseInt(document.getElementById("totalCnt2").value);
		//totalPrice = parseInt(document.getElementById("totalPrice2").value);
		//削除する数を減らす
		totalCnt = eval(totalCnt - cnt);
		//totalPrice = eval(totalPrice - price);
			
		//alert(document.getElementById("totalCnt").value);
		//合計入力欄をいったん削除し、再入力する
		var mySpan = document.getElementById('result2');
		mySpan.removeChild(mySpan.lastChild);
		currenttext=document.createTextNode("合計数：　" + parseInt(totalCnt) + "　");
		mySpan.appendChild(currenttext);
		//合計を登録しなおす
		document.getElementById("totalCnt2").value = totalCnt;
		//document.getElementById("totalPrice").value = totalPrice;
	}
 	//行削除
	remove_row(trCnt, catNo);
}

function remove_row(trCnt, catNo){
	var delNumTmp = new Array();
	if (catNo == 1){
		delNumTmp = delNum;
	}else{
		delNumTmp = delNum2;
	}

	var minusCnt = 0;
	//既に削除されたIDで今回のIDより小さいものの分だけ、IDを小さくする
	//thisが上手く動作しなかった為、この方法に変更
	for (var i = 0; i < delNumTmp.length; i++){
		if (delNumTmp[i] < trCnt){
			minusCnt++;
		}
	}
	
	var node;
	if (catNo == 1){
		node = document.getElementById("cart");
	}else{
		node = document.getElementById("cart2");
	}
	var childs = node.getElementsByTagName("tr");
	var chilCnt = eval(trCnt-minusCnt);
	childs[chilCnt].parentNode.deleteRow(childs[chilCnt].sectionRowIndex);
	
	//削除したIDを覚えておく
	delNumTmp.push(trCnt);
}

var statusCode = new Array();
	statusCode["200"] = function (){
		
	}
	statusCode["401"] = function (){ alert("認証失敗"); }
	statusCode["403"] = function (){ alert("アクセスが許可されてません"); }
	statusCode["404"] = function (){ alert("ファイルがありません"); }
	statusCode["500"] = function (){ alert("内部エラー"); }

function displayData(){

	if (httpObj.readyState == 4){
		try {
			//alert(httpObj.responseText)
			statusCode[""+httpObj.status]();
		}catch(e){
			return;
		}
	}

}

// HTTP通信用、共通関数
function createXMLHttpRequest(cbFunc)
{
	var XMLhttpObject = null;
	try{
		XMLhttpObject = new XMLHttpRequest();
	}catch(e){
		try{
			XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				return null;
			}
		}
	}
	if (XMLhttpObject) XMLhttpObject.onreadystatechange = cbFunc;
	return XMLhttpObject;
}

function number_format (numStr) {

	numStr = String(numStr).replace("/,/g", '');
	numStr = numStr.replace("/(\d{1,3})(?=(\d{3})+(?!\d))/g", "$1,");

	return numStr;	
}

function addComma(value){
    var i;
    value = String(value);
    for(i = 0; i < value.length/3; i++){
        value = value.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2");

    }
    return value;
}
