/*
  オンラインショッピング・カタログ＆集計スクリプト
  Authorized by tsuyoshi otsuki
  -----------------------------------------------------------
  謝辞：
  このプログラムはホームページ裏技（著：KURUMI）を
  参考にさせていただきました。使用させ
  ていただいていることに感謝いたします。
*/
document.write("<link rel='stylesheet' href='css/easybuy.css' type='text/css'>"); 
//Add : 2007/10/18
	ZIPCODE_SAMPLE = '<font color="#ff9999">例:2440021</font>';
	ZIPCODE_SAMPLE_MESSAGE = '郵便番号をハイフンなしの半角数字７桁のみ入力してください。';
	//	プログラム内で用いる定数
	//
	NUM_FIELDS = 10;
	NUM_INPUTS_OPTIONS = 4; 
	LIST_FORM_NAME		= 'list';
	CONTROL_FORM_NAME	= 'control';
	PAGE_SUM_TEXT_NAME	= 'page_sum';
	TOTAL_SUM_TEXT_NAME	= 'total_sum';
	ORDERS_VAR		= 'orders';
	CATALOG_VERSION_VAR	= 'catalogVer';
	MAIL_FORM_NAME		= 'mailForm';

	//YOSHI配送料対応:
	var isCheckedZip = false;
//Add : 2007/08/08

	//	カタログのヘッダーを出力する
	//
	function outputTableHeader() {
		document.write(CATALOG_HEADER);
		outputCartInfo();
		document.write('<FORM NAME="' + LIST_FORM_NAME + '">' );
		document.write('<TABLE ' + TABLE_OPTION + '>' );
		document.write('<TR>');
		
		for (var fieldIdx = 0; fieldIdx <= NUM_FIELDS-2; ++fieldIdx) {
			if( fieldIdx == 5 ){
				document.write('<TH ' + OPTIONS[fieldIdx] + '><font color=#000000 size=2>' + HEADERS[fieldIdx] + '</font></TH>');
			}else{
				document.write('<TH ' + OPTIONS[0] + '><font color=#000000 size=2>' + HEADERS[fieldIdx] + '</font></TH>');
			}
		}
		document.write('</TR>');
	}
	
	//	カタログのフッターを出力する
	//
	function outputTableFooter() {
		document.write('</TABLE>');
		document.write('</FORM>');
		document.write('<hr size=1 noshade width=100%>');
		document.write('<div>');
		document.write(SUMMURY_COMPONENTS2);
		document.write('</div>');
		document.write('<div>');
		document.write(XCATALOG_FOOTER);
		document.write('</div>');

		document.write('<hr size=1 noshade width=100%>');	
	}

	function outputCartInfo(){
		document.write("<div id='tBox'>");
		document.write("<table bgcolor='ffffcc' width='100%'>");
		document.write("<tr>");
			document.write("<td valign='center' align='right'>");
				// 合計金額を表示する
				document.write('<FORM NAME="' + CONTROL_FORM_NAME + '">');
					//ページごとの合計金額を表示する
					document.write(SUMMURY_COMPONENTS);
				document.write('</FORM>');
			document.write("</td>");
			document.write("<td align='left'>");
				//document.write('<hr size=1 noshade width=100%>');
				document.write(XCATALOG_FOOTER);	
			document.write("</td>");
		document.write("</tr>");
		document.write("<tr>");
			document.write("<td  colspan='2' align='center'>");
				//検索バー
				document.write(SEARCH_BAR);
			document.write("</td>");
		document.write("</tr>");
		document.write("</table>");
		document.write("</div>");
	}


	//	カタログ（商品一覧表）を出力する
	//
	function outputTable() {
		/*  カタログのヘッダーを出力 */
		outputTableHeader();
		var numItems = gCatalog.length / NUM_FIELDS;
		for (var itemIdx = 0; itemIdx < numItems; ++itemIdx) {
			var catalogIdx = itemIdx * NUM_FIELDS;
			
			var itemCode			= gCatalog[catalogIdx];
			var itemName			= gCatalog[catalogIdx + 1];
			var itemImageWithURL	= gCatalog[catalogIdx + 2];
			var itemComment			= gCatalog[catalogIdx + 3];
			var itemPrice			= Math.floor(gCatalog[catalogIdx + 4]*TAX_DEAL);
			var itemAdvice			= gCatalog[catalogIdx + 5];
			var itemDelivery		= (gCatalog[catalogIdx + 6]==0?0:1);
			var itemCategory		= gCatalog[catalogIdx + 7];
			var itemDeliveryDate	= gCatalog[catalogIdx + 8];
			/* Reserved */
			//	var itemReserve	= gCatalog[catalogIdx + 9];
			var itemInfo	= itemName +"@"+ itemComment +"@"+ itemAdvice +"@"+ itemDelivery;

			// キャンペーン対象チェック
			if (itemAdvice == 1) {
				itemAdvice = '○';
			} else {
				itemAdvice = '－';
			}

			// 商品について偶数、奇数で行の色を分ける
			var rowColor;
			if (itemIdx % 2 == 0) {
				rowColor = EVEN_ROW_COLOR;
			} else {
				rowColor = ODD_ROW_COLOR;
			}
			if( itemCategory == gCategory ){
				document.write('<TR BGCOLOR="' + rowColor + '">');
				if( itemPrice == 0 ){
					/* Inquire */
					document.write('<TD ' + OPTIONS[0] + '>');
					document.write('<IMG SRC="./img/resource/bt_80x20_yellow_conquire_00.gif" border="0"><br><INPUT TYPE="checkbox" NAME="' + itemCode + '" VALUE="' + itemPrice + '" \
					onClick="inquireWindow(this.form.' + itemCode + ',\'' + itemIdx + '\',\'' + itemCode + '\',\'' + itemName  + '\',\'' + itemAdvice  + '\',\'' + itemDelivery + '\')"></TD>');
					document.write(
						'<TD ' + OPTIONS[1] + '><INPUT TYPE="text" NAME="odno" size="3" value="1" ><input type="hidden" name="itemInfo" value="'+ itemInfo +'"></TD>');	
				}else{
					document.write('<TD ' + OPTIONS[0] + '>');
					document.write('<INPUT TYPE="checkbox" NAME="' + itemCode + '" VALUE="' + itemPrice + '" onClick="updateSum();"></TD>');
					document.write('<TD ' + OPTIONS[1] + '><INPUT TYPE="text" NAME="odno" size="3" value="1" onkeyup="updateSum();"><input type="hidden" name="itemInfo" value="'+ itemInfo +'"></TD>')
				}
				
				//Added by Yoshi,2009/02/02 --reday to Category list link
				var linkURLRef = itemImageWithURL;
				if( linkURLRef.length>0){
					//linkURLRef = linkURLRef.substring(9);
					linkURLRef = linkURLRef.substring(9,linkURLRef.indexOf("\"",9));
				}else{
					linkURLRef = "";
				}
				//[DEBUG]
				//alert(linkURLRef);
				//if(itemIdx==4) break;
				//linkURLRef = "<A HREF=\"" + linkURLRef + "\">" +  + "</A>";
				
				
				document.write(
					'<TD ' + OPTIONS[2] + '><FONT SIZE=\"2\">' + appendLinkURL( linkURLRef,itemCode) + '</FONT></TD>' + 
					'<TD ' + OPTIONS[3] + '><FONT SIZE=\"2\">' + appendLinkURL( linkURLRef,itemName) + '</FONT></TD>' + 
					'<TD ' + OPTIONS[4] + '><P ALIGN=\"center\">' + itemImageWithURL	+ '</P></TD>' + 
					'<TD ' + OPTIONS[5] + '  >' + itemDeliveryDate + (itemDeliveryDate!=""?"<BR>":"" ) + "<FONT SIZE=\"2\">" + itemComment	+ '</FONT></TD>' + 
					'<TD ' + OPTIONS[6] + '>');
						if( itemPrice == 0 ){
							document.write('--');
						}else{
							document.write(itemPrice);
						}
						document.write(
					'</TD>' + 
					'<TD ' + OPTIONS[0] + '><a name="' + itemCode + '">' + itemAdvice	+ '</a></TD>' + 
					'<TD ' + OPTIONS[8] + '>' + (itemDelivery==0?DELI_LABEL_SUM:DELI_LABEL_EACH)	+ '</TD>');	
			}else{}
			document.write('</TR>');
		}
		// カタログのフッターを出力
		outputTableFooter();
	}

	function appendLinkURL( linkURLRef,argText ){
		return  "<A HREF=\"" + linkURLRef + "\"   style=\"text-decoration:none;\" >" + argText + "</A>";
	}

	/**
	 * オーダの数が0の場合は再入力を求める
	 */
	function checkOrderNumber(){
		var obj = document.getElementByName( "odno" );
		alert (obj.value);
	}

	/**
	 * InquireWindow
	 */
	function inquireWindow( formObj,pItemIdx,pCode,pName,pCarton,pDelivery ){
		win = window.open(
			"" , 
			"お問い合わせフォーム", "location=no,width=550,height=600,dependent=yes,directories=no,fullscreen=no,menubar=no,personalbar=no,resizable=yes,scrollbars=yes,status=yes,toolbar=no");
		win.location.href ="inquire.jsp?pINDEX=" + pItemIdx + "&pCODE=" + pCode + "&pNAME=" + pName + "&pCARTON=" + pCarton + "&pDELIVERY=" + pDelivery;
		win.focus();
	}
	
	//	合計値を再計算してテキストフィールドに書き出す
	//
	function updateSum() {
		var numCheckboxes = document.forms[LIST_FORM_NAME].length;
		
		// クッキーから全注文情報を得る
		var orders = loadOrders();
		
		// 全注文情報のうち,このページの分を（とりあえずすべて）除く（というか空にする）
		for (var checkboxIdx = 0; checkboxIdx < numCheckboxes; ++checkboxIdx) {
			var elem = document.forms[LIST_FORM_NAME].elements[checkboxIdx];
			for (var orderIdx = 0; orderIdx < orders.length; ++orderIdx) {
				var itemAndPrice = orders[orderIdx].split("@");
				if (itemAndPrice[0] == elem.name) {
					orders[orderIdx] = "";
				}
			}
		}

		var pageSum = 0;	// このページの注文金額合計
		
		// あらためて,注文情報にこのページのチェックされている分を追加する
		for (var checkboxIdx = 0; checkboxIdx < numCheckboxes; checkboxIdx=checkboxIdx+3) {
			var hoge1 = document.forms[LIST_FORM_NAME].elements[checkboxIdx];
			var hoge2 = document.forms[LIST_FORM_NAME].elements[checkboxIdx+1];
			var hoge3 = document.forms[LIST_FORM_NAME].elements[checkboxIdx+2];
			if (hoge1.checked) {
				pageSum += eval(hoge1.value * hoge2.value);
				orders[orders.length] = hoge1.name + "@" + hoge1.value + "@"+ hoge2.value + "@" + hoge3.value;
			}
		}
		var totalSum = 0;
		for (var orderIdx = 0; orderIdx < orders.length; ++orderIdx) {
			if (orders[orderIdx] != "") {
				var itemAndPrice = orders[orderIdx].split("@");
				totalSum += eval(itemAndPrice[1] * itemAndPrice[2]);
			}
		}
		// テキストフィールドに合計値を書く
		//document.forms[CONTROL_FORM_NAME].elements[TOTAL_SUM_TEXT_NAME].value = totalSum;
		//if (USE_MULTI_PAGE) {
		//	document.forms[CONTROL_FORM_NAME].elements[PAGE_SUM_TEXT_NAME].value = pageSum;
		//}
		document.getElementById(PAGE_SUM_TEXT_NAME).value = pageSum;
		document.getElementById(TOTAL_SUM_TEXT_NAME).value = totalSum;		
		document.getElementById("2"+PAGE_SUM_TEXT_NAME).value = pageSum;
		document.getElementById("2"+TOTAL_SUM_TEXT_NAME).value = totalSum;				
		
		saveOrders(orders);
	}


	//	チェックボックスの状態を前回訪問時の状態に復元する
	//
	function restoreCheck() {
		var numCheckboxes = document.forms[LIST_FORM_NAME].length;
		
		// 前回の注文情報を読み込む
		var orders = loadOrders();
		
		// 各チェックボックスと ＴＥＸＴボックスについて
		for (var checkboxIdx = 0; checkboxIdx < numCheckboxes; checkboxIdx=checkboxIdx+3) {
			var elem = document.forms[LIST_FORM_NAME].elements[checkboxIdx];		
			//var elem2= document.forms[LIST_FORM_NAME].elements[checkboxIdx+1];
			var isFound = false;
			var isFoundKazu = 1;
			for (var orderIdx = 0; orderIdx < orders.length; ++orderIdx) {
				var itemAndPrice = orders[orderIdx].split('@');
				if (itemAndPrice[0] == elem.name) {
					isFound = true;
					isFoundKazu = itemAndPrice[2];
					break;
				}
			}
			elem.checked = isFound;
			document.forms[LIST_FORM_NAME].elements[checkboxIdx+1].value = isFoundKazu;
		}
	}

	//	購入商品リストを出力
	//
	function outputList() {
		
		//
		
		document.write(CONFIRM_LIST_HEADER);
		//YOSHI配送料対応:
		document.write('<div style="visibility:show" id="CONFIRM_LIST_NOTYET_CALCULATE_DELIVERYPRICE">' + 
			CONFIRM_LIST_NOTYET_CALCULATE_DELIVERYPRICE + '</div>');
		document.write('<TABLE ' + TABLE_OPTION + '>');
		document.write(
			'<TR>' + 
				'<TH>' + HEADERS[2] + '</TH>' + 
				'<TH>' + HEADERS[3] + '</TH>' + 
				'<TH>単価</TH>' + 
				'<TH>' + HEADERS[1] + '</TH>' + 
				'<TH>おすすめ</TH>' + 
				'<TH>金額(円)</TH>' + 
				//'<TH>送料</TH>' + 	//YOSHI
				//'<TH>送料計</TH>' + 
			'</TR>'
		);
		
		gMailText = '';
		gMailItemText = '';
		var orders = loadOrders();
		var numOrders = orders.length;
		var sum = 0;
		var cartonOK = 0;
		var cartonNO = 0;

		var remitalDiscountValue = 0;


		//20070811:Yoshi
		//var sumDeli = 0;
		//var numDeli = 0;
		var numDeliSum = 0;
		var numDeliEach = 0;
		var sumDeliSum = 0;
		var sumDeliEach = 0;

		for (var orderIdx = 0; orderIdx < numOrders; ++orderIdx) {
			var itemAndPrice = orders[orderIdx].split("@");
			
			var itemCode  = itemAndPrice[0]
			var itemName  = itemAndPrice[3];	// 商品名
			var itemTanka = itemAndPrice[1];	// 単価
			var itemKazu  = itemAndPrice[2];	// 数量
			var itemPrice = eval(itemTanka * itemKazu);		// 金額
			//YOSHI:個別と一括を計算 {
				//var itemDelivery = itemAndPrice[6];	// 送料
				//var itemDeliPrice = eval(itemDelivery * itemKazu);	// 送料計
				var itemDeliveryFlag =  itemAndPrice[6];	// 配送フラグ(0:一括)
				//alert( itemAndPrice );
				if( itemDeliveryFlag == 0  ){
					numDeliSum+=new Number(itemKazu);
				}else{
					numDeliEach+=new Number(itemKazu);
				}

			//YOSHI:gMailItemText += "<INPUT TYPE=\"hidden\" name=\"orderItems\" value=\"" + orders[orderIdx] +"@"+ itemDelivery +"@"+ itemDeliPrice + "\">";
			gMailItemText += "<INPUT TYPE=\"hidden\" name=\"orderItems\" value=\"" + 
								orders[orderIdx] +"@"+ 0 +"@"+ itemDeliveryFlag + "\">";

				//if (itemDelivery > 0) {
				//	numDeli += eval(itemKazu);
				//}
			sum += eval(itemPrice);
//			sumDeli += eval(itemDeliPrice);	//YOSHI




			var itemCarton= itemAndPrice[5];
			if (itemCarton == 1){
				var itemCartonStr = '○';
				cartonNO += eval(itemKazu);
			} else {
				var itemCartonStr = '－';
			}
			var rowColor;
			if (orderIdx % 2 == 0) {
				rowColor = EVEN_ROW_COLOR;
			} else {
				rowColor = ODD_ROW_COLOR;
			}
			document.write(
			'<TR BGCOLOR="' + rowColor + '">' +
				'<TD ' + OPTIONS[2] + '>' + itemCode	+ '</TD>' + //コード
				'<TD ' + OPTIONS[3] + '>' + itemName	+ '</TD>' + //品名
				'<TD ' + OPTIONS[6] + '>' + itemTanka	+ '</TD>' + //単価
				'<TD ' + OPTIONS[6] + '>' + itemKazu	+ '</TD>' + //数量
				'<TD ' + OPTIONS[0] + '>' + itemCartonStr+ '</TD>' + 	//おすすめ
				'<TD ' + OPTIONS[6] + '>' + itemPrice	+ '</TD>' + 	//金額
				//YOSHI:'<TD ' + OPTIONS[6] + '>' + itemDelivery	+ '</TD>' + 	//送料
				//YOSHI:'<TD ' + OPTIONS[6] + '>' + itemDeliPrice+ '</TD>' + 	//送料計
			'</TR>');
		}
		
		if (cartonNO >= DISCOUNT_NO){
			remitalDiscountValue = eval(cartonNO * -DISCOUNT_PRICE);
		}
		var remitPlusSum = eval(sum + remitalDiscountValue );//YOSHI + sumDeli);
		var taxSum = eval(Math.floor(remitPlusSum / TAX_DEAL));
		var taxPlusSum = eval(remitPlusSum - taxSum);

		// 申込メール用の注文品目文字列を作成しておく
		if (gMailText.charAt(0) == ";") {
			gMailText = gMailText.substring(1, gMailText.length);
		}
		
		gMailSum = 	sum +";"+ 
					DISCOUNT_NO +";"+ 
					DISCOUNT_PRICE +";" + 
					remitalDiscountValue + ";" + 
				//Yoshi: {
				//	numDeli + ";"+ 
				//	sumDeli + ";"+ 
					numDeliSum + ";"+ 
					numDeliEach + ";"+ 
					sumDeliSum  + ";"+ 
					sumDeliEach  + ";"+ 
				// }
					remitPlusSum +";"+ 
					taxSum +";"+ 
					taxPlusSum +";"+ 
					cartonNO + ";" + 
					TAX_VALUE + ";" + 
					TAX_DEAL; 

		document.write(
		'<TR>' + 
			'<TD COLSPAN="5">' + CONFIRM_CELL_FIELD1 + '</TD>' + 
			'<TD align="right"><STRONG>' + sum + '</STRONG></TD>' + 
		//Yoshi: {
		//	'<TD align="right"><STRONG>-</STRONG></TD>' + 
		//	'<TD align="right"><STRONG>' + sumDeliSum + "&" +sumDeliEach + '</STRONG></TD>' + 
		//}
		'</TR>');
		if (cartonNO >= DISCOUNT_NO) {
			document.write(
			'<tr>' + 
				'<td COLSPAN="3">' + CONFIRM_CELL_FIELD2 + '</td>' + 
				'<td align="right"><STRONG>' + cartonNO + '</STRONG></td>' + 
				'<td align="right"><STRONG>' + DISCOUNT_PRICE + '</STRONG></td>' + 
				'<td align="right"><STRONG><font color="#FF0000">' + remitalDiscountValue + '</font></STRONG></td>' + 
				'<td colspan="2" rowspan="5"><BR></td>' + 
			'</tr>');
		} else {
			document.write('<tr>' + 
				'<td COLSPAN="3">' + CONFIRM_CELL_FIELD2 + '</td>' + 
				'<td align="right"><STRONG>-</STRONG></td>' + 
				'<td align="right"><STRONG>-</STRONG></td>' + 
				'<td align="right"><STRONG>-</STRONG></td>' + 
				'<td colspan="2" rowspan="5"><BR></td>' + 
			'</tr>');
		}

		document.write(
		//YOSHI:送料表示{
			'<tr>' + 
				'<td COLSPAN="3">' + CONFIRM_CELL_FIELD3_1 + '</td>' + 
				'<td align="right"><STRONG><div id="NUMDELISUMLABEL">' + (numDeliSum>0?1:0) + '</div></STRONG></td>' + 
				'<td align="right"><STRONG>-</STRONG></td>' + 
				'<td align="right"><STRONG><div id="SUMDELISUMLABEL">' + sumDeliSum + '</div></STRONG></td>' + 
			'</tr>' + 

			'<tr>' + 
				'<td COLSPAN="3">' + CONFIRM_CELL_FIELD3 + '</td>' + 
				'<td align="right"><STRONG><div id="NUMDELIEACHLABEL">' + numDeliEach + '</div></STRONG></td>' + 
				'<td align="right"><STRONG>-</STRONG></td>' + 
				'<td align="right"><STRONG> <div id="SUMDELIEACHLABEL">' + sumDeliEach + '</div></STRONG></td>' + 
			'</tr>' + 
		//}
			'<tr>' +  //総合計
				'<td colspan="5">' + CONFIRM_CELL_FIELD7 + '</td>' + 
				'<td align="right"><STRONG><div id="REMITPLUSSUMLABEL">' + remitPlusSum + '</div></STRONG></td>' + 
			'</tr>' + 

//			'<tr>' +  //合計
//				'<td colspan="5">' + CONFIRM_CELL_FIELD8 + '</td>' + 
//				'<td align="right"><STRONG><div id="TAXSUMLABEL">' + taxSum + '</div></STRONG></td>' + 
//			'</tr>' + 
//			'<tr>' +  //消費税
//				'<td/ colspan="5">' + CONFIRM_CELL_FIELD9 + '</td>' + 
//				'<td align="right"><STRONG><div id="TAXPLUSSUMLABEL">' + taxPlusSum + '</div></STRONG></td>' + 
//			'</tr>' + 

			'</TABLE>' + 
			'<br><div align="center"><HR BORDER="0" width="50%"></div>' + 
			CONFIRM_LIST_FOOTER
		);
		gMailItemText +=	'<INPUT type="hidden" id="DELIPRICE" name="DELIPRICE" value="' + 0 + '" />' + 
			'<INPUT type="hidden" id="NUMDELISUM" name="NUMDELISUM" value="' + numDeliSum + '" />' + 
			'<INPUT type="hidden" id="SUMDELISUM" name="SUMDELISUM" value="' + sumDeliSum + '" />' +
			'<INPUT type="hidden" id="NUMDELIEACH" name="NUMDELIEACH" value="' + numDeliEach + '" />' + 
			'<INPUT type="hidden" id="SUMDELIEACH" name="SUMDELIEACH" value="' + sumDeliEach + '" />' + 
			'<INPUT type="hidden" id="ORIGIN_REMITPLUSSUM" name="ORIGIN_REMITPLUSSUM" value="' + remitPlusSum + '" />' + 
			'<INPUT type="hidden" id="ORIGIN_TAXSUM" name="ORIGIN_TAXSUM" value="' + taxSum + '" />' + 
			'<INPUT type="hidden" id="ORIGIN_TAXPLUSSUM" name="ORIGIN_TAXPLUSSUM" value="' + taxPlusSum + '" />' + 
			'<INPUT type="hidden" id="REMITPLUSSUM" name="REMITPLUSSUM" value="' + remitPlusSum + '" />' + 
			'<INPUT type="hidden" id="TAXSUM" name="TAXSUM" value="' + taxSum + '" />' + 
			'<INPUT type="hidden" id="TAXPLUSSUM" name="TAXPLUSSUM" value="' + taxPlusSum + '" />';

		return gMailItemText;
	}



	/**
	 * 値のチェック
	 */
	function checkValues() {
			var numInputs = INPUTS.length / NUM_INPUTS_OPTIONS;
			for (var inputIdx = 0; inputIdx < numInputs; ++inputIdx) {
				var keyIdx = inputIdx * NUM_INPUTS_OPTIONS;
				var key      = INPUTS[keyIdx];
				var elemName = INPUTS[keyIdx + 1];
				var elemSize = INPUTS[keyIdx + 2];
				var required = INPUTS[keyIdx + 3];
				if (required && document.forms[MAIL_FORM_NAME].elements[elemName].value == "") {
					alert(key + 'を正しく入力してください');
					return (false);
				}else{}
				if (required && document.forms[MAIL_FORM_NAME].elements[elemName].value.length > elemSize) {
					alert(key + 'を正しく入力してください');
					return (false);
				}else{}
			}
			if (USE_REMIT_FIELD) {
				var remitRadio = document.forms[MAIL_FORM_NAME].elements["paytype"];
				for (var radioIdx = 0; radioIdx < remitRadio.length; ++radioIdx) {
					if (remitRadio[radioIdx].checked) {
						return (true);
					}
				}
				alert(REMIT_FIELD_NAME + 'が指定されていません');
				return (false);
			}
	}

	//	申込フォームを出力する
	function outputForm( orderItemsHTML ) {
		document.write('<FORM NAME="' + MAIL_FORM_NAME + 
			'" ACTION="mailorders.jsp?securepage=' + 
			//2010/01/29	:Ready to cache		
			Math.floor(Math.random()*1024) +
			'" METHOD="POST">');
		document.write('<TABLE BORDER="1">');
		var numInputs = INPUTS.length / NUM_INPUTS_OPTIONS;
		for (var inputIdx = 0; inputIdx < numInputs; ++inputIdx) {
			var keyIdx = inputIdx * NUM_INPUTS_OPTIONS;
			var key      = INPUTS[keyIdx];
			var elemName = INPUTS[keyIdx + 1];
			var elemSize = INPUTS[keyIdx + 2];
			var required = INPUTS[keyIdx + 3];
			
			if ((inputIdx == 0)||(inputIdx == 1)){
				document.write('<INPUT TYPE="hidden" NAME="' + elemName + '" SIZE="' + elemSize + '">');
			}else{
				if( required == true ){
					key = key + '<font color=#ff2222>*</font>';
				}else{}
				document.write('<TR>');
					document.write('<TD>' + key + '</TD><TD>');
					if( keyIdx == 2 * NUM_INPUTS_OPTIONS  ){
						document.write('<INPUT TYPE="text" NAME="' + elemName + '"  ID="' + elemName + '" SIZE="' + elemSize + '" onKeyUp=\"" >');
					
					}else if( keyIdx == 3 * NUM_INPUTS_OPTIONS  ){
						document.write('<select name=\"state\" id=\"state\" onclick=\"blur();\" ><option value=\"\" selected>選択してください</option><option value=\"北海道\">北海道</option><option value=\"青森県\">青森県</option><option value=\"岩手県\">岩手県</option><option value=\"宮城県\">宮城県</option><option value=\"秋田県\">秋田県</option><option value=\"山形県\">山形県</option><option value=\"福島県\">福島県</option><option value=\"茨城県\">茨城県</option><option value=\"栃木県\">栃木県</option><option value=\"群馬県\">群馬県</option><option value=\"埼玉県\">埼玉県</option><option value=\"千葉県\">千葉県</option><option value=\"東京都\">東京都</option><option value=\"神奈川県\">神奈川県</option><option value=\"新潟県\">新潟県</option><option value=\"富山県\">富山県</option><option value=\"石川県\">石川県</option><option value=\"福井県\">福井県</option><option value=\"山梨県\">山梨県</option><option value=\"長野県\">長野県</option><option value=\"岐阜県\">岐阜県</option><option value=\"静岡県\">静岡県</option><option value=\"愛知県\">愛知県</option><option value=\"三重県\">三重県</option><option value=\"滋賀県\">滋賀県</option><option value=\"京都府\">京都府</option><option value=\"大阪府\">大阪府</option><option value=\"兵庫県\">兵庫県</option><option value=\"奈良県\">奈良県</option><option value=\"和歌山県\">和歌山県</option><option value=\"鳥取県\">鳥取県</option><option value=\"島根県\">島根県</option><option value=\"岡山県\">岡山県</option><option value=\"広島県\">広島県</option><option value=\"山口県\">山口県</option><option value=\"徳島県\">徳島県</option><option value=\"香川県\">香川県</option><option value=\"愛媛県\">愛媛県</option><option value=\"高知県\">高知県</option><option value=\"福岡県\">福岡県</option><option value=\"佐賀県\">佐賀県</option><option value=\"長崎県\">長崎県</option><option value=\"熊本県\">熊本県</option><option value=\"大分県\">大分県</option><option value=\"宮崎県\">宮崎県</option><option value=\"鹿児島県\">鹿児島県</option><option value=\"沖縄県\">沖縄県</option></select>');
					}else{
						document.write('<INPUT TYPE="text" NAME="' + elemName + '" ID="' + elemName + '" SIZE="' + elemSize + '">');
					}
					document.write('</TD>');
				document.write('</TR>');
			}
		}
		if (USE_REMIT_FIELD) {
			var numMethods = REMIT_METHODS.length / 2;
			document.write('<TR>');
			document.write('<TD ROWSPAN="' + numMethods + '">' + REMIT_FIELD_NAME + ' <font color=#ff2222>*</font></TD>');
			for (var methodIdx = 0; methodIdx < numMethods; ++methodIdx) {
				var methodName  = REMIT_METHODS[methodIdx * 2];
				var methodValue = REMIT_METHODS[methodIdx * 2];
				if (0 < methodIdx) {
					document.write('<TR>');
				}
				document.write('<TD><INPUT TYPE="radio" NAME="paytype" VALUE="' + methodValue + '">' + methodName + '</INPUT></TD>');
				document.write('</TR>');
			}
		}
		
		document.write('</TABLE>');
		document.write('<P>');
		document.write('<INPUT TYPE="hidden" NAME="' + ORDERS_VAR + '" VALUE="' + gMailText + '">');
		document.write('<INPUT TYPE="hidden" NAME="orderssum" VALUE="' + gMailSum + '">');
		document.write('' + orderItemsHTML );
		//alert(orderItemsHTML);
		document.write('<INPUT TYPE="submit" VALUE="' + CONFIRM_SEND_BUTTON_TEXT + '" onClick="return checkValues();">');
		document.write('<INPUT TYPE="button" VALUE="' + CONFIRM_BACK_BUTTON_TEXT + '" onClick="history.back();">');
		document.write('</FORM>');
	}

	//	クッキーから注文情報を取り出す
	//
	function loadOrders() {
		var ordersStr = getCookie(ORDERS_VAR);
		if (ordersStr == null) {
			return (new Array());
		}
		var orders = ordersStr.split('&');
		return (orders);
	}
			
	//	クッキーに注文情報を記録する
	//
	function saveOrders(orders) {
		var ordersStr = "";
		for (var orderIdx = 0; orderIdx < orders.length; ++orderIdx) {
			if (orders[orderIdx] != "") {
				ordersStr += "&" + orders[orderIdx];
			}
		}
		if (ordersStr.charAt(0) == "&") {
			ordersStr = ordersStr.substring(1, ordersStr.length);
		}
		setCookie(ORDERS_VAR, ordersStr, getExpirationDate());
	}

	//	クッキーから前回訪問時に見ていたカタログのバージョンを取得し,それが今のカタログのバージョンより古かったら
	//	注文データを消す
	function assureCatalogVersion() {
		var lastVersion = getCookie(CATALOG_VERSION_VAR + "@" + document.location.pathname);
		if (CATALOG_VERSION != null && CATALOG_VERSION != lastVersion) {
			//clearOrders();
		}
		setCookie(CATALOG_VERSION_VAR + "@" + document.location.pathname, CATALOG_VERSION, getExpirationDate());
	}

	//	クッキー中の注文情報をクリアする
	function clearOrders() {
		setCookie(ORDERS_VAR, '');
	}

	//	注文があるかどうかチェックする
	function hasOrders() {
		var orders = loadOrders();
		return (0 < orders.length);
	}

	//	購入確認HTMLを生成する
	//	
	function makeConfirm( catalog1 ) {
		if (hasOrders()) {
			gCatalog = catalog1;
			var orderItems = outputList();
			outputForm(orderItems);
		}
		else {
			document.write(NO_ORDER_MESSAGE_TEXT);
			document.write('<A HREF="javascript:history.back();">' + NO_ORDER_GO_BACK_TEXT + '</A>');
		}

		Event.observe("zip", "keyup", findZipAJAX, true);
		Event.observe("zip", "click", findZipAJAX, true);
		Event.observe("city", "focus", changeCityField, true);
	}

	//	カタログHTMLを生成する
	//	
	function makeCatalog(catalog,category) {
		gCatalog = catalog;
		gCategory = category;
		//	カタログ項目をチェックする
		if ((gCatalog.length % NUM_FIELDS) != 0) {
			alert('カタログに項目が足りません。' +
				  '品目コード・品名・オプション１・オプション２・価格の５つがそれぞれそろっているか確認して下さい');
		}
		if (OPTIONS.length != NUM_FIELDS + 2) {
			alert('OPTIONSに項目が足りません。' +
				  'チェック・品目コード・品名・オプション１・オプション２・価格の６つの列の表示オプションがあるか確認して下さい');
		}

		if (HEADERS.length != NUM_FIELDS + 2) {
			alert('OPTIONSに項目が足りません。' +
				  'チェック・品目コード・品名・オプション１・オプション２・価格の６つの列の項目名があるか確認して下さい');
		}

		assureCatalogVersion();
		outputTable();
		restoreCheck();
		updateSum();
	}

	/*
	  クッキー関連
	  setCookie	: クッキーに値を設定する
	  getCookie	: クッキーから値を取得する
	*/
	SECONDS_PER_MINUTE    = 60;		//	１分＝６０秒
	MINUTES_PER_HOUR      = 60;		//	１時間＝６０分
	HOURS_PER_DAY         = 24;		//	１日＝２４時間
	SECOND_TO_MILLISECOND = 1000;	//	１秒＝１０００ミリ秒

	//	クッキーに値を設定する
	//
	//	返値			: なし
	//	name			: 変数名（文字列型）［必須］ただしセミコロン（;）カンマ（,）空白（ ）は使用不可
	//	value			: 変数の値（文字列型）［必須］ただしセミコロン（;）カンマ（,）空白（ ）は使用不可
	//	expirationTime	: 有効期限（日付型）［省略可］
	//	domain			: ドメイン名（文字列型）［省略可］
	//	path			: パス（文字列型）［省略可］
	//	isSecure		: SSL利用時のみ取得可能かどうか（ブーリアン型）［省略可］
	//						isSecureがtrueのときは、SSLを利用していないときには値が取得できない
	function setCookie(name, value, expirationTime, domain, path, isSecure) {
		var	cookieText = name + "=" + escape(value);
		if (expirationTime != null) {
			cookieText += "; expires=" + expirationTime.toGMTString();
		}else{}
		if (domain != null) {
			cookieText += "; domain=" + domain;
		}else{}
		if (path != null) {
			cookieText += "; path=" + path;
		}else{}
		if (isSecure != null) {
			cookieText += "; secure=" + isSecure;
		}else{}
		document.cookie = cookieText;
	}
			
	//	クッキーから値を得る
	//
	//	返値		: 変数の値（文字列型）ただし指定した変数名で値が格納されてなければnull
	//	name		: 変数名（文字列型）［必須］
	function getCookie(name) {
		var key = name + "=";
		var cookieText = document.cookie + ";";
		var beginIndex = cookieText.indexOf(key, 0);
		if (beginIndex != -1) {
			beginIndex += key.length;
			var endIndex = cookieText.indexOf(";", beginIndex);
			if (beginIndex != endIndex) {
				var value = unescape(cookieText.substring(beginIndex, endIndex));
				return (value);
			}else{}
		}else{}
		return (null);
	}
			
	//	～日後（～時間後）の日付を計算する
	//
	//	返値		: 計算後の日付（日付型）
	//	baseDate	: 基準日付（日付型）［必須］
	//	days		: 日数（数値型）［必須］
	//	hours		: 時間数（数値型）［必須］
	function offsetDate(baseDate, days, hours) {
		var targetDate = new Date;
		targetDate.setTime(
			baseDate.getTime() +
			(days * HOURS_PER_DAY + hours) *
			MINUTES_PER_HOUR * SECONDS_PER_MINUTE * SECOND_TO_MILLISECOND);
		return (targetDate);
	}

	//	有効期限を計算する
	//
	//	返値		: 有効期限（日付型） いま（この関数が呼ばれた時）からグローバル変数EXPIRATION_HOURSで設定した時間数後とする
	function getExpirationDate() {
		var baseDate = new Date;
		return (offsetDate(baseDate, 0, EXPIRATION_HOURS));
	}
	
	function linkToOrderConfirm(  ){
		location.href = LINKTOORDERURL;
		return false;
	}
	function findZipAJAX( event ){
		if( event.type== "click" ){
			AjaxZip2.prev = '';
			$('city').value= "";
			$('zip').value= "";
		}
		$('zip').value = $('zip').value.replace(/[^0-9]/,"");
		if($F('zip').length > 7){
			$('zip').value= "";
			$('city').value= "";
		}else{}
		//alert(AjaxZip2.JSONDATA);
		AjaxZip2.zip2addr('zip','state','city','address',null);
	}
	function changeCityField(){
		$("address").focus();
	    if(($F("city").length > 1 )){
			isCheckedZip = true;
			$("CONFIRM_LIST_NOTYET_CALCULATE_DELIVERYPRICE").style.visibility = "hidden";

			//送料と合計を再計算
			
				//代金取得
				var zipCodePre = new Number($F('zip').substring(0,2));

				 deliprice[ zipCodePre ][0]	//番号
				 deliprice[ zipCodePre ][1]	//都道府県名
				 deliprice[ zipCodePre ][2]	//価格

				//基本価格を格納
				$("DELIPRICE").value = deliprice[ zipCodePre ][2];
				
				//1つ以上で一括送料とする
	 			if( $F("NUMDELISUM") > 0 ){
					$("SUMDELISUM").value = $F("DELIPRICE");
				}else{
					$("SUMDELISUM").value = 0;
				}
				$("NUMDELISUMLABEL").innerHTML = $F("NUMDELISUM");
				$("SUMDELISUMLABEL").innerHTML = $F("SUMDELISUM");


				//個別配送代金
				//1つ以上で一括送料とする
				$("SUMDELIEACH").value = new Number($F("DELIPRICE")) *  new Number($F("NUMDELIEACH"));
				$("NUMDELIEACHLABEL").innerHTML = $F("NUMDELIEACH");
				$("SUMDELIEACHLABEL").innerHTML = $F("SUMDELIEACH");

			$F("ORIGIN_REMITPLUSSUM");
			$F("ORIGIN_TAXSUM");
			$F("ORIGIN_TAXPLUSSUM");
			//合計金額
			$("REMITPLUSSUM").value =  new Number($F("SUMDELISUM")) + new Number($F("SUMDELIEACH")) + new Number( $F("ORIGIN_REMITPLUSSUM") ) ;
			$("REMITPLUSSUMLABEL").innerHTML = $F( "REMITPLUSSUM" );

			$("TAXSUM");
			$("TAXPLUSSUM");
			alert(CONFIRM_LIST_VALID_AREA_MESSAGE);
	    }else{
			isCheckedZip = false;
		}
	}
	
	
/////////////////////////
// Added by tsuyoshi 2009/09/02
/**
 * URL params
 *
 */
var locationParameters;
function getURLParameter( name ){
	locationParameters = new Object;
	var pair=location.search.substring(1).split('&');
	for(i=0;pair[i];i++) {
		var kv = pair[i].split('=');
		locationParameters[kv[0]]=kv[1];
	}
	return locationParameters[ name ];
}
/**
 * Ready function for EnterKey
 *
 */
function productSearchKeydown(e){
	 if(e.keyCode == 13) productSearchBefore();
}
/**
 * Search method before Injection
 */
function productSearchBefore( pLocation ){
	if(pLocation){
		setCookie("beforeURL",pLocation , getExpirationDate());		
	}else{}
	//alert(  getCookie("searchQuery") );
	var query = document.getElementById("searchQuery").value;
	
	//var query = document.getElementById("searchQuery").value;
	var escapedQuery = escape( query );
	setCookie("searchQuery",query , getExpirationDate());
	//document.frm.submit();
}
function productSearchBeforePage(){
	var retPage = getCookie("beforeURL");
	if( retPage ){
		location.href = retPage;
	}else{
		location.href = "/";
	}
}

/**
 * Product Search function
 */	
function productSearchHTML( catDB,templateId ){
	//[OLD]var query = ((getURLParameter("searchQuery") )).toUpperCase();
	var query = getCookie("searchQuery");

	if( !query || query.length == 0 ){
		return false;
	}else if( query.length < 3 ){
		alert( "検索文字が少なすぎます。３文字以上でお願いします。" );
		return;
	}else{
		query = query.toUpperCase();
		document.getElementById("searchQuery").value = query;
		
		//検索キー
		$.get(
			"./index.html",
			
			{ query: query, time: "2pm" },
			function(data){}
		);	
	}

	//Restrict category datas
    var count = 0;
	curCatalogData = new Array();
	
	//Init for local
	gCatalog = catDB;

	//
	var numItems = gCatalog.length / NUM_FIELDS;
	
	document.write('<table>');
	
	var resultHTML = "";
	
	var rowNum = 0;
	for (var itemIdx = 0; itemIdx < numItems; ++itemIdx) {
	//for (var itemIdx = 0; itemIdx < 5; ++itemIdx) {

		var catalogIdx = itemIdx * NUM_FIELDS;

		var itemCode			= gCatalog[catalogIdx];
		var itemName			= gCatalog[catalogIdx + 1];
		var itemImageWithURL	= gCatalog[catalogIdx + 2];
		var itemComment			= gCatalog[catalogIdx + 3];
		var itemPrice			= Math.floor(gCatalog[catalogIdx + 4]*TAX_DEAL);
		var itemAdvice			= gCatalog[catalogIdx + 5];
		var itemDelivery		= (gCatalog[catalogIdx + 6]==0?0:1);
		var itemCategory		= gCatalog[catalogIdx + 7];
		var itemDeliveryDate	= gCatalog[catalogIdx + 8];

		var isMatch1 = itemCode.replace("-","").indexOf( query.replace("-","") );
		var isMatch2 = itemName.replace("-","").indexOf( query.replace("-","") );
		var isMatch3 = itemComment.replace("-","").indexOf( query.replace("-","") );
		var isMatch4 = itemDeliveryDate.indexOf( query );
		
		//alert( isMatch1 + "/" + isMatch2 + "/" + isMatch3 + "/" + isMatch4 );
		
		if( (isMatch1 > -1) |
			(isMatch2 > -1) |
			(isMatch3 > -1) |
			(isMatch4 > -1) 
		  ){	
		  	
		  	var linkUrl = itemCategory;
			
			//Added by Yoshi,2009/02/02 --reday to Category list link
			var linkURLRef = itemImageWithURL;
			if( linkURLRef.length>0){
				//linkURLRef = linkURLRef.substring(9);
				linkURLRef = linkURLRef.substring(9,linkURLRef.indexOf("\"",9));
			}else{
				linkURLRef = "";
			}
			
			var rowColor;
			if (rowNum % 2 == 0) {
				rowColor = EVEN_ROW_COLOR;
			} else {
				rowColor = ODD_ROW_COLOR;
			}
			rowNum++;
			document.write('<tr bgcolor="' + rowColor + '">');
				document.write('<td>');
					document.write('' + itemImageWithURL  );
				document.write('</td>');
				document.write('<td>');
				document.write('<h2>');
					document.write('<div><a href="' + linkURLRef + '"><img src="libs/images/icon/comment/ico_comment6a_02.gif" />詳細説明へご案内</a></div>');
					document.write('<div><a href="' + itemCategory.toLowerCase() + '.html#' + itemCode + '"><img src="libs/images/icon/cart/ico_cart1_5.gif" />売り場へご案内</a></div>');
				document.write('</h2>');
				document.write('<div class="searchProductDescription">');
					if( itemPrice < 10 ){
						itemPrice = "問い合せ";
					}else{
						itemPrice = "&yen;" + itemPrice;
					}
					document.write('<div>' + itemDeliveryDate + '</div>');
					document.write('<div>価格：' + itemPrice + '</div>');
				document.write('</div>');
				document.write('</td>');
				
				document.write('<td>');
				document.write('<div class="searchProductDescription">');
					document.write('<p >商品コード：' + itemCode + '</p>');
					document.write('<p >商品名：' + itemName + '</p>');
					document.write('<p >' + itemComment + '</p>');
					//document.write(":" +isMatch1 + "/" + isMatch2 + "/" + isMatch3 + "/" + isMatch4);
				document.write('</div>');
				document.write('</td>');
			document.write('</tr>');
		}else{}
	}	
	document.write('</table>');
	
	document.write('<div><center>');
		document.write('検索キーワード「' + query);
		document.write('」で検索をした結果');
		document.write('' + rowNum);
		document.write(' 件のデータが見つかりました。');
	document.write('</center></div>');
}
		