window.onerror=null;

/*** お届け先数 ***/
var deliveryCnt = 3;

/*** セレクト表示用　県名 ***/
//ペットボトル
var petPref = new Array("","北海道","青森県","岩手県","秋田県","宮城県","山形県","福島県","東京都","神奈川県","千葉県","埼玉県","茨城県","栃木県","群馬県","新潟県","長野県","山梨県","富山県","石川県","福井県","岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府","兵庫県","奈良県","和歌山県","鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県","福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県","沖縄県");
//ディスペンサー
var disPref = new Array("","愛知県","三重県");

/*** のし紙 ***/
var nosi = new Array("","お中元","お歳暮");

/*** 商品単価 ***/
var petTanka = new Array(3150, 4725, 1890, 2835, 1785);	//ペットボトル
var disTanka = new Array(29400, 0, 2100, 1260);		//ディスペンサー

/*** 商品単位 ***/
var petTani = new Array("ケース", "ケース", "ケース", "ケース", "ケース");	//ペットボトル
var disTani = new Array("台", "台", "個", "本");						//ディスペンサー

/*** 送料 ***/
var carNo = new Array("中部", "関西", "関東信越", "四国", "中国", "東北", "九州", "北海道", "沖縄");

var carRitou = 600;					//離島　追加料金
var carPet500 = new Array(0, 0);	//500mlペットボトル×20本　追加料金（県内,県外）
var carriage = new Array();
	carriage["中部"] = 		0;
	carriage["関西"] = 		0;
	carriage["関東信越"] = 	0;
	carriage["四国"] = 		200;
	carriage["中国"] = 		200;
	carriage["東北"] = 		300;
	carriage["九州"] = 		300;
	carriage["北海道"] = 	500;
	carriage["沖縄"] = 		1800;
	
var carPref = new Array(carriage.length);
	carPref["中部"] = new Array("愛知県", "岐阜県", "三重県", "静岡県", "福井県", "石川県", "富山県");
	carPref["関西"] = new Array("大阪府", "京都府", "兵庫県", "滋賀県", "奈良県", "和歌山県");
	carPref["関東信越"] = new Array("東京都", "千葉県", "埼玉県", "群馬県", "栃木県", "茨城県", "山梨県", "新潟県", "長野県", "神奈川県");
	carPref["四国"] = new Array("香川県", "愛媛県", "徳島県", "高知県");
	carPref["中国"] = new Array("広島県", "岡山県", "山口県", "島根県", "鳥取県");
	carPref["東北"] = new Array("宮城県", "福島県", "岩手県", "青森県", "山形県", "秋田県");
	carPref["九州"] = new Array("福岡県", "佐賀県", "長崎県", "大分県", "熊本県", "宮崎県", "鹿児島県");
	carPref["北海道"] = new Array("北海道");
	carPref["沖縄"] = new Array("沖縄県");

/*****************************************************************************/
/*** ロード時                                                              ***/
/*****************************************************************************/

/******************************/
/*** ペットボトル　初期設定 ***/
/******************************/
function petLoad()
{
	var myForm = window.document.order_form;
	var logForm = window.document.log_form;
	
	/*** 注文者　セット ***/
	setPref(myForm.f0_c06, petPref);

	/*** 各届け先 セット***/
	for (var i=0; i < deliveryCnt; i++)
	{
		setPref(myForm.elements["f" + (i+1) + "_c06"], petPref);
		setNosi(myForm.elements["f" + (i+1) + "_d01"]);
	}
	
	/*** ログ取得 ***/
	getLog(myForm, logForm);
}

/********************************/
/*** ディスペンサー　初期設定 ***/
/********************************/
function disLoad()
{
	var myForm = window.document.order_form;
	var logForm = window.document.log_form;
	
	/*** 注文者　セット ***/
	setPref(myForm.f0_c06, disPref);

	/*** 各届け先 セット***/
	for (var i=0; i < deliveryCnt; i++)
	{
		setPref(myForm.elements["f" + (i+1) + "_c06"], disPref);
		setNosi(myForm.elements["f" + (i+1) + "_d01"]);
	}
	
	/*** ログ取得 ***/
	getLog(myForm, logForm);
}

/********************/
/*** 県名セット ****/
/********************/
function setPref(selectObj, myPref)
{
	selectObj.options.length = myPref.length;
	
	for (var i=0; i < selectObj.options.length; i++)
	{
		selectObj.options[i].text  = myPref[i];
		selectObj.options[i].value = myPref[i];
	}
}

/********************/
/*** のしセット ****/
/********************/
function setNosi(selectObj)
{
	selectObj.options.length = nosi.length;
	
	for (var i=0; i < selectObj.options.length; i++)
	{
		selectObj.options[i].text  = nosi[i];
		selectObj.options[i].value = nosi[i];
	}
}

/******************/
/*** ログ　取得 ***/
/******************/
function getLog(myForm, logForm)
{
	for (var i=0; i<logForm.elements.length; i++)
	{
		with (logForm.elements[i])
		{
			/*** 数量／名前 ***/
			if (name.match(/_1su/) || name.match(/_nm/))
			{
				myForm.elements[name].value = value;
			}
			/*** 定期購入 ***/
			else if (name.match(/_3ck/))
			{
				if (value == "on")
				{
					myForm.elements[name].checked = true;
				}
				else
				{
					myForm.elements[name].checked = false;
				}
			}
			/*** セレクトボタン用 ***/
			else
			{
				myForm.elements[name].selectedIndex = value;
			}
		}
	}
}


/*****************************************************************************/
/*** 随時　エラーチェック等                                                ***/
/*****************************************************************************/

/**************************************************/
/*** ディスペンサー　入力値チェック ***/
/**************************************************/
function disCheck(myObj)
{
	var err = false;
	
	/*** ガロンボトル　数量 *************************************************/
	if (myObj.name.match(/_a04d_1su/))
	{
		if (myObj.value != 0 && myObj.value < 2)
		{
			alert("専用ガロンボトルは２本からのご注文です。");
			err = true;
		}
	}
	
	/*** フォーカス *********************************************************/
	if (err)	myObj.focus();
}

/*****************************************************************************/
/*** submit時                                                              ***/
/*****************************************************************************/

/**************************************/
/*** ペットボトル　submit時初期設定 ***/
/**************************************/
function petSubmit()
{
	var myForm = window.document.order_form;
	var logForm = window.document.log_form;
	
	Calc(myForm, petTanka, petTani);
	setLog(myForm, logForm);
	
	return(true);
}

/****************************************/
/*** ディスペンサー　submit時初期設定 ***/
/****************************************/
function disSubmit()
{
	var myForm = window.document.order_form;
	var logForm = window.document.log_form;
	
	Calc(myForm, disTanka, disTani);
	setLog(myForm, logForm);
	
	return(true);
}

/****************/
/*** 金額計算 ***/
/****************/
function Calc(myForm, myTanka, myTani)
{
	var delID;			//届け先　識別記号(例:f1)
	var delNo;			//届け先　指標
	var no;				//単価配列　指標
	var kgName;			//金額項目名
	var totalProKg;		//商品金額総計
	var totalCarKg;		//送料総計
	var proKg = new Array(deliveryCnt);	//届け先別商品金額計
	var carKg = new Array(deliveryCnt);	//届け先別送料計
	var carText;			//送料（セット用テキスト）
	var myCarriage;		//送料(work)
	var myPref;			//県名
	var myRitou;			//離島(true, false)
	
	/*** 合計項目　初期化 ***/
	totalProKg = 0;
	totalCarKg = 0;
	
	for (var i=0; i<deliveryCnt; i++)
	{
		proKg[i] = 0;
		carKg[i] = 0;
	}
	
	/*** 自動セット項目初期化 ***/
	for (var i=0; i<myForm.elements.length; i++)
	{
		with (myForm.elements[i])
		{
			/*** 金額クリア ***********************************************/
			if(name.match(/_2kg/) && !name.match(/OPT:/))
			{
				value = "";
			}
			/*** 送料クリア ***********************************************/
			if(name.match(/_a91/) && !name.match(/OPT:/))
			{
				value = "";
			}
			/*** お届け先計クリア *****************************************/
			if(name.match(/_a99/) && !name.match(/OPT:/))
			{
				value = "";
			}
		}
	}
	
	/*** 金額計算（全要素　繰り返し） ***/
	for (var i=0; i<myForm.elements.length; i++)
	{
		with (myForm.elements[i])
		{
			/*** 届け先　指標取得 *****************************************/
			if(!name.match(/_/) && !name.match(/OPT:/))
			{
				delID = name;
				delNo = name.match(/[0-9]+/) - 1;
			}
			
			/**************************************************************/
			/*** 氏名セット                                             ***/
			/**************************************************************/
			if (name.match(/_name/) && !name.match(/OPT:/))
			{
				value = myForm.elements[name.replace("_name", "_nm1")].value;
				
				if (myForm.elements[name.replace("_name", "_nm2")].value != "")
				{
					value += "　" + myForm.elements[name.replace("_name", "_nm2")].value;
				}
			}
			
			/*** 以下、お届け先のみ対象 ***********************************/
			if(delNo < 0)	continue;
			
			/**************************************************************/
			/*** 商品金額                                               ***/
			/**************************************************************/
			if (name.match(/_1su/) && !name.match(/OPT:/) && value != 0)
			{
				name.match(/(\w+)_(\w+)_(\w+)/);
				no = RegExp.$2.match(/[0-9]+/) -1;	//単価配列の指標取得
				
				kgName = name.replace("_1su", "_2kg");
				myForm.elements[kgName].value = "@" + myTanka[no] + " × " + value + myTani[no] + " = \\" + (myTanka[no] * value) + " （税込）";
				/*** 定期購入 ***/
				if(myForm.elements[name.replace("_1su", "_3ck")] != null)
				{
					if(myForm.elements[name.replace("_1su", "_3ck")].checked)
					{
						myForm.elements[kgName].value += "　［定期購入］";
					}
				}
				
				proKg[delNo] += myTanka[no] * value;	//届け先別商品金額計
				totalProKg += myTanka[no] * value;	//商品金額総計
			}
			
			/**************************************************************/
			/*** 送料                                                   ***/
			/**************************************************************/
			if(name.match(/_a91/) && !name.match(/OPT:/) && proKg[delNo]!=0)
			{
				/*** ご注文者本人にお届け ***/
				if(delNo == 0 && myForm.elements["f1_b01"].checked)
				{
					myPref = myForm.elements["f0_c06"].value;
					myRitou = myForm.elements["f0_c08"].checked;
				}
				/*** 各お届け先 ***/
				else
				{
					myPref = myForm.elements[delID + "_c06"].value;
					myRitou = myForm.elements[delID + "_c08"].checked;
				}
				
				/*** 送料取得 ***/
				if(myPref != "")
				{
					/*** 地域別送料　取得 ***/
					myCarriage = getCarriage(myPref);
					carText = "\\" + myCarriage;
					
					/*** 離島料金　追加 ***/
					if (myRitou)
					{
						myCarriage += carRitou;
						carText += " ＋ \\" + carRitou + "（離島料金）";
					}
					
					/*** 500mlペットボトル×20本　→　追加料金 ***/
/*****************************************************************************
					if(myForm.elements[delID + "_a01p_1su"] != null)
					{
						if(myForm.elements[delID + "_a01p_1su"].value != 0)
						{
							var j = 0;
							if(myPref != "三重県")
							{
								j = 1;
							}
							myCarriage += carPet500[j];
							carText += " ＋ \\" + carPet500[j] + "（追加料金※１）";
						}
					}
*****************************************************************************/
					
					carKg[delNo] += myCarriage;	//届け先別送料計
					totalCarKg += myCarriage;	//商品送料総計
					value = carText;
				}
			}
			
			/**************************************************************/
			/*** お届け先計（商品金額＋送料）                           ***/
			/**************************************************************/
			if (name.match(/_a99/) && !name.match(/OPT:/) && proKg[delNo]!=0)
			{
				value = "商品合計 \\" + proKg[delNo] + " ＋ 送料 \\" + carKg[delNo] + " = \\" + (proKg[delNo] + carKg[delNo]);
			}
			
			/**************************************************************/
			/*** 入力必須解除                                           ***/
			/**************************************************************/
			if (name.match(/_c01_name/) && !name.match(/OPT:/))
			{
				/*** お届け先住所（１） ***/
				if(delID == "f1")
				{
					if (myForm.elements["f1_b01"].checked)
					{
						checkCancel(myForm, delID);
					}
				}
				/*** お届け先住所（２）以降 ***/
				else
				{
					if (proKg[delNo] ==0)
					{
						checkCancel(myForm, delID);
					}
				}
			}
			
			/**************************************************************/
			/*** お支払金額計（商品金額＋送料）                         ***/
			/**************************************************************/
			if (name == "f99_z01")
			{
				value = "\\" + (totalProKg + totalCarKg) + " （税・送料込）";
			}
		}
	}
}

/************************/
/*** 地域別送料　取得 ***/
/************************/
function getCarriage(myPref, myRitou)
{
	var myCarriage = 0;
	
	/*** 地域別送料　取得 ***/
	for (var i=0; i < carNo.length; i++)
	{
		for (var j=0; j < carPref[carNo[i]] .length; j++)
		{
			if(myPref == carPref[carNo[i]][j])
			{
				myCarriage = carriage[carNo[i]];
				break;
			}
		}
	}
	
	return(myCarriage);
}

/********************/
/*** 入力必須解除 ***/
/********************/
function checkCancel(myForm, myID)
{
	for (var i=0; i<myForm.elements.length; i++)
	{
		with (myForm.elements[i])
		{
			if (name.match("NEED:" + myID + "_c"))
			{
				name = name.replace("NEED", "JPNAME");
			}
			
			if (name.match(myID + "_d"))	break;
		}
	}
}

/********************/
/*** ログ　セット ***/
/********************/
function setLog(myForm, logForm)
{
	for (var i=0; i<logForm.elements.length; i++)
	{
		with (logForm.elements[i])
		{
			/*** 数量／名前 ***/
			if (name.match(/_1su/) || name.match(/_nm/))
			{
				value = myForm.elements[name].value;
				myForm.elements[name].value = "";
			}
			/*** 定期購入 ***/
			else if (name.match(/_3ck/))
			{
				if (myForm.elements[name].checked == true)
				{
					value = "on";
					myForm.elements[name].checked = false;
				}
				else
				{
					value = "";
				}
			}
			/*** セレクトボタン用 ***/
			else
			{
				value = myForm.elements[name].selectedIndex;
			}
		}
	}
}
/*******************************/
/*** 全角数字→半角数字 変換 ***/
/*******************************/
function Fulltohalf(myObj){
	var char1 = new Array("１","２","３","４","５","６","７","８","９","０");
	var char2 = new Array(1,2,3,4,5,6,7,8,9,0);
	var count;
	var data = myObj.value;
	
	while(data.match(/[０-９]/)){     	//入力データに全角数字がある場合
		for(count = 0; count < char1.length; count++){
			//入力データを全角数字から半角数字に置換する
			data = data.replace(char1[count], char2[count]);
		}
	}
	//半角数字に置換したデータを設定
	myObj.value = data;
}

