var addListTargetCtrl = "";
var chkAddrText = "";
var chkZipCode = "";

// keyCode check
function funcAllowKeyCheck(checkType, event, srcElement){
	if (!event) { event = window.event; }
	var reg = new RegExp("[" + checkType + "]", "i");
	// get key event
	var keyCode = event.keyCode;
	if (event.keyCode == 0) {
		// is FireFox
		keyCode = event.charCode;
	}
	// Allow BackSpace And TAB
	if (8 <= keyCode && keyCode <= 9) { return true; }
	// Allow DEL
	if (keyCode == 46) { return true; }
	// Allow Up,Down,Left,Right
	if (37 <= keyCode && keyCode <= 40) { return true; }

	// pressed key is macth
	if (String.fromCharCode(keyCode).match(reg) != null){
		return true;
	} else {
		// Not valided keyCode
		if (!srcElement || !srcElement.tagName) {
			srcElement = event.srcElement;
		}
		var divError = funcCreateDivMessage(srcElement, MessageSet[checkType]);
		srcElement.className = srcElement.className.replace(" Err", "");
		divError.style.zIndex = 20;
		// Can get error DIV
		if (divError) {
			clearTimeout(divError["timeoutId"]);
			// behind to 2.5 sec
			divError["timeoutId"] = setTimeout(function() {
							divError.style.display = "none";
							divError.parentNode.removeChild(divError);
							}, 2500);
		}
		return false;
	}
}

// Run Ajax request
function RequestAjaxResponse(argAction, argSendData, argExecuteFuncName, argExecuteFuncArg){
	var req = createHttpRequest();
	if (req == null) { return; 	}
	req.open("GET", "./scripts/AjaxResponse.asp?action=" + argAction + "&" + argSendData, true);
	req.onreadystatechange = function()
	    {
	      	//readyState is 4:Complete and 200:Normal
			if (req.readyState == 4 && req.status == 200)
			{
				// Run function
				if (argExecuteFuncArg) {
					eval(argExecuteFuncName + "(decodeURI(req.responseText), '" + argExecuteFuncArg + "');" );
				} else {
					eval(argExecuteFuncName + "(decodeURI(req.responseText));" );
				}
	      	}
		}
	req.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
	req.send("");
}

//10.11.27 R.Fujii 追加
// Run Ajax request for POST
function RequestAjaxResponsePost(argAction, argPostStr, argExecuteFuncName, argExecuteFuncArg){
	var sendPostData;
	var req = createHttpRequest();
	var rtnStr;
	if (req == null) { return; 	}
	req.open("POST", "./scripts/AjaxResponse.asp", true);
	req.onreadystatechange = function() {
		// readyState is 4:Complete and 200:Normal
		if (req.readyState == 4 && req.status == 200) {
			// Run function
			if (argExecuteFuncArg) {
				eval(argExecuteFuncName + "(decodeURI(req.responseText), '" + argExecuteFuncArg + "');" );
			} else {
				eval(argExecuteFuncName + "(decodeURI(req.responseText));" );
			}
		}
	}
	req.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
	sendPostData = "action=" + argAction + "&" + argPostStr;
	req.send(sendPostData);
}

// Create Async client
function createHttpRequest(){

    //Win ie
	if(window.ActiveXObject){
		try {
			//over MSXML2
			return new ActiveXObject("Msxml2.XMLHTTP"); //[1]'
		} catch (e) {
			try {
				//old MSXML
				return new ActiveXObject("Microsoft.XMLHTTP"); //[1]'
			} catch (e2) {
				return null;
			}
		}
	} else if(window.XMLHttpRequest){
		//other Win ie
		return new XMLHttpRequest(); //[1]'
	} else {
		return null;
	}
}

// get left position
function funcGetOffsetLeftPosition(ctrl){
	var pos = ctrl.offsetLeft;
	// if tag is FORM or TD then pos to 0
	if (ctrl.tagName == "FORM" || ctrl.tagName == "TD") { pos = 0; }
	// if browser is IE then pos to 0
	if (navigator.appName != "Microsoft Internet Explorer") {
		if (ctrl.className == "order_center") { pos = 0; }
	}
	if (ctrl.tagName != "BODY" && ctrl.parentNode){
		pos += funcGetOffsetLeftPosition(ctrl.parentNode);
	}
	return pos;
}

// get top position
function funcGetOffsetTopPosition(ctrl, refPos){
	var pos = ctrl.offsetTop;
	// if tag is FORM or TD then pos to 0
	if (ctrl.tagName == "FORM" || ctrl.tagName == "CENTER") { pos = 0; }
	// if browser is IE then pos to 0
	if (navigator.appName != "Microsoft Internet Explorer") {
		if (ctrl.className == "order_center") { pos = 0; }
	}
	// if preview pos equals to current pos then pos to 0
	if (pos == refPos) { pos = 0; }
	if (ctrl.tagName != "BODY" && ctrl.parentNode){
		pos += funcGetOffsetTopPosition(ctrl.parentNode, ctrl.offsetTop);
	}
	return pos;
}


function funcMeasuresOpera(){
	if (navigator.appName == "Opera") {
		funcAddInterval(1000, "funcViewAddListFromAddr(event)", "MeasuresOpera");
	}
}

// have IntervalId array
var intervalId = new Array();
// timer set
function funcAddInterval(interval, setFunc, idName){
	if (interval == 0) {
		// clear interval from key
		window.clearInterval(intervalId[idName]);
	} else {
		// create interval and save id
		intervalId[idName] = window.setInterval(setFunc, interval);
	}
}

// clear interval
function funcRemoveInterval(idName){
	window.clearInterval(intervalId[idName]);
}

var changeCtrl = null;
// focus get to change style
function funcFocusStyle(ctrl){
	if (!ctrl.className){
		ctrl = document.activeElement;
	}
	// if get focus then remove error style
	funcRemoveErrorStyle(ctrl);
	// if target control is not SELECT then accept focus style
	if (ctrl.tagName != "SELECT" && 
		(!ctrl.className || !ctrl.className.match(" onFocusBorder"))) {
		ctrl.className += " onFocusBorder";
	}
	changeCtrl = ctrl;
	// behind error DIV
//	funcHiddenDivMessage("divError" + ctrl.name);
	// view error DIV to front side
	funcDivzIndex("divError" + ctrl.name, 10);
}

// blur to change style
function funcNormalStyle(ctrl){
	if (!ctrl && event && event.srcElement) {
		ctrl = event.srcElement;
	}
	// get control
	if (ctrl) {
		// set class is remove focus style
		if (ctrl.className) {
			ctrl.className = ctrl.className.replace(" onFocusBorder", "");
		}
	} else {
		changeCtrl.className = changeCtrl.className.replace(" onFocusBorder", "");
	}
	// view error DIV to back
	funcDivzIndex("divError" + ctrl.name, 0);
}

// accept error style
function funcErrorStyle(ctrl){
	ctrl.className = ctrl.className + " Err";
}

// remove error style
function funcRemoveErrorStyle(ctrl){
	if (ctrl.className){
		ctrl.className = ctrl.className.replace(" Err", "");
	}
}

// disabled enter key
function funcDisableEnter(event){
	if (!event){
		event = window.event;
	}
	if (!event) { return true;	}

	var keyCode = event.keyCode;
	if (keyCode == 0){
		keyCode = event.charCode;
	}
	if (keyCode == 13) { return false;	}
	return true;
}

// Add target control to Event
function funcAttachEvent(attachTarget, attachEventName, attachEvent){
	// add event
	if (attachTarget["on" + attachEventName] || attachTarget == this){
		if (attachTarget.addEventListener) {		// W3C DOM
			attachTarget.addEventListener(attachEventName, attachEvent, false);
		} else if (attachTarget.attachEvent) {	// IE
			attachTarget.attachEvent("on" + attachEventName, attachEvent);
		} else {							// OTHER
			attachTarget["on" + attachEventName] = attachEvent;
		}
	} else {							// NOTHING
		attachTarget["on" + attachEventName] = attachEvent;
	}
}

// attach event to all control
function funcAttachAllCtrl(){
	var iFrm = 0;
	var iCnt = 0;
	var iFrmEnd = document.forms.length;
	var iCntEnd = 0;

//11.01.12 R.Fuijii 変更
////10.12.20 R.Fujii 削除 anetセキュリティ診断 PW認証
//////10.11.27 R.Fujii 追加
	var url = document.URL;
	var page = url.substr(url.lastIndexOf("/") + 1);

	for (iFrm = 0; iFrm < iFrmEnd; iFrm ++){
		iCntEnd = document.forms[iFrm].elements.length;

		for (iCnt = 0; iCnt < iCntEnd; iCnt ++){
			var attach = document.forms[iFrm].elements[iCnt];
			switch (attach.tagName){
				case "INPUT":
					if (attach.type == "submit") {
						if (attach.name == "rewrite") {
							// rewrite button to reset button
							funcAttachEvent(attach, "click", function() { return funcResetInputData() });
						} else {
							// submit button to input data check
							funcAttachEvent(attach, "click", function() { return funcSubmitCheck(this) });
						}
					} else if (attach.type == "hidden") {
						// TODO
					} else if (attach.type == "radio") {
						// TODO
					} else if (attach.type == "checkbox") {
						// TODO
					} else if (attach.type == "button") {
						if (attach.name == "rewrite") {
							// rewrite button to reset button
							funcAttachEvent(attach, "click", function() { return funcResetInputData() });
						}
					} else if (attach.type == "reset") {
							funcAttachEvent(attach, "click", function() { return funcResetInputData() });						
//11.01.12 R.Fujii 変更
////10.12.20 R.Fujii 削除 anetセキュリティ診断 PW認証
//////10.11.27 R.Fujii 追加
////					} else if (attach.type == "password") {
////							funcAttachEvent(attach, "keydown", function(event) { return funcDisableEnter(event); });
////							funcAttachEvent(attach, "focus", function() { funcFocusPassWord(this); funcFocusStyle(this); });
////							funcAttachEvent(attach, "blur", function() { funcFocusPassWord(this); funcNormalStyle(this); });
					} else if (attach.type == "password" && page == "UserMod_e.asp" ) {
							funcAttachEvent(attach, "keydown", function(event) { return funcDisableEnter(event); });
							funcAttachEvent(attach, "focus", function() { funcFocusPassWord(this); funcFocusStyle(this); });
							funcAttachEvent(attach, "blur", function() { funcFocusPassWord(this); funcNormalStyle(this); });
					} else {
						// set event to all textbox without search box
						if (attach.name != "itkey"){
							funcAttachEvent(attach, "keydown", function(event) { return funcDisableEnter(event) });
							funcAttachEvent(attach, "focus", function() {	funcFocusStyle(this)	});
							funcAttachEvent(attach, "blur", function() {	funcNormalStyle(this)	});
						}
						// Card no and security code
						if (attach.name.match(/CardNo|security_code/i)){
							funcAttachEvent(attach, "keypress", function (event) { return funcAllowKeyCheck('\\d', event, this) });
							attach.className = "NumberOnly";
						}
						// Card no and security code
						if (attach.name.match(/TelNo|FaxNo|HphoNo/i)){
							funcAttachEvent(attach, "keypress", function (event) { return funcAllowKeyCheck('\\d\\b\\-\\(\\)\\+', event, this) });
							attach.className = "NumberOnly";
						}
					}
					break;
				case "SELECT":
					funcAttachEvent(attach, "focus", function() {	funcFocusStyle(this)	});
					funcAttachEvent(attach, "blur", function() {	funcNormalStyle(this)	});
					break;
				case "TEXTAREA":
					funcAttachEvent(attach, "focus", function() {	funcFocusStyle(this)	});
					funcAttachEvent(attach, "blur", function() {	funcNormalStyle(this)	});
					break;
			}
		}
	}
//11.01.12 R.Fujii 変更
////10.12.20 R.Fujii 削除 anetセキュリティ診断 PW認証
//////10.11.27 R.Fujii 追加
//	if (page == "UserMod_e.asp") {
//		document.getElementsByName("Usr_Ps")[0].focus();
//	}
	if (page == "UserMod_e.asp") {
		document.getElementsByName("Usr_Ps2")[0].focus();
	}
}

// valid e-mail address
function funcCheckMailAddress(ctrl){
	// remove error style
	if (ctrl.className){
		ctrl.className = ctrl.className.replace(" Err", "");
	}
	if (ctrl.value){
		// e-mail address easy check
		if (!ctrl.value.match(/^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9_\-]+\.([\.a-zA-Z0-9_\-])+([a-zA-Z0-9_\-])+$/))
		{
			if (!ctrl.className || !ctrl.className.match(" Err")){
				ctrl.className = ctrl.className + " Err";
			}
			return false;
		}
	}
	return true;
}

// font type check
function funcCheckType(ctrl, checkType){
	// create regulation
	var reg = new RegExp("^[" + checkType + "]+$", "i");
	// no data
	if (ctrl.value === "") { return true; }
	// 引数の書式種別とマッチするかどうかをチェックして返す
	return ctrl.value.match(reg);
}

//10.11.27 R.Fujii 追加
//不具合文字の指定
function funcCheckFailedCharacter(ctrl) {
	if (ctrl.value === "") {
		return true;
	}
//11.05.09 R.Fujii 変更
//	if(ctrl.value.match(/[^a-zA-Z0-9!\-_., #/()^:\'+]/)) {  //'エディタカラーのためのコメント
	if(ctrl.value.match(/[^a-zA-Z0-9!\-_., #/()^:+]/)) {
		return false;
	}
	return true;
}

// イベント発生元コントロールを取得する
function getEventSource(srcElement){
	if (!srcElement || !srcElement.tagName) {
		srcElement = event.srcElement;
	}
	return srcElement;
}

// 指定したIDを持つDIVを非表示にする
function funcHiddenDivMessage(divId){
	var div = document.getElementById(divId);
	if (div){
		div.style.display = "none";
	}
}

// 指定したIDを持つDIVの表示順番を変更する
function funcDivzIndex(divId, zIndex){
	var div = document.getElementById(divId);
	if (div){
		div.style.zIndex = zIndex;
	}
}

// エラーメッセージを対象のコントロールの隣に配置する
function funcCreateDivMessage(targetCtrl, errMessage){
	// スタイルが指定されていないか、エラースタイルが適用されていない場合はエラースタイルを適用する
	if (!targetCtrl.className || targetCtrl.className.indexOf(" Err") == -1){
		targetCtrl.className = targetCtrl.className + " Err";
	}
	// エラー表示を作成する
	var divError = document.getElementById("divError" + targetCtrl.name);
	if (!divError){
		divError = document.createElement("DIV");
		divError.name = "divError";
		divError.id = "divError" + targetCtrl.name;
		divError.className = "Err_Box";
		var parent = document.getElementsByTagName("BODY")[0];
		parent.appendChild(divError);
	}
	divError.innerHTML = errMessage;
	divError.style.display = "inline";
	var parent = targetCtrl.parentNode;
	divError.style.left = funcGetOffsetLeftPosition(parent) + 450;
	divError.style.top = funcGetOffsetTopPosition(targetCtrl);
	// 対象コントロールを保持
	divError["targetCtrl"] = targetCtrl;
	// エラー内容をクリック時対象のコントロールにフォーカスを移動する
	funcAttachEvent(divError, "click", function() { document.getElementsByName(getEventSource(this).id.replace("divError", ""))[0].focus() });
	if (!window["moveErrorDiv"]){
		// まだエラー表示が追加されていない場合、位置調整をウィンドウサイズイベントに追加
		funcAttachEvent(window, "resize", funcMoveAllErrorDiv);
		// 1回追加すればよいので、windowオブジェクトに独自フラグを追加
		window["moveErrorDiv"] = true;
	}
	return divError;
}

// 指定したタグ内の指定した名前の一番最初のコントロールを返します
function funcGetElementByTagNameAndName(tagName, name){
	var tagCtrl = document.getElementsByTagName(tagName);
	var iCnt = 0;
	for (iCnt = 0; iCnt < tagCtrl.length; iCnt++){
		if (tagCtrl[iCnt].name == name) {
			return tagCtrl[iCnt];
		}
	}
	return null;
}

// 指定したタグ内の指定した名前の一番最初のコントロールを返します
function funcMoveAllErrorDiv(){
	var tagCtrl = document.getElementsByTagName("DIV");
	var iCnt = 0;
	for (iCnt = 0; iCnt < tagCtrl.length; iCnt++){
		var divError = tagCtrl[iCnt];
		if (divError["targetCtrl"]){
			// 対象コントロールの親を取得
			var parent = divError["targetCtrl"].parentNode;
			// 位置を設定
			divError.style.left = funcGetOffsetLeftPosition(parent) + 450;
			divError.style.top = funcGetOffsetTopPosition(divError["targetCtrl"]);
		}
	}
}

// フォームの入力内容の検証を実行する
function funcFormValidator(PageValidator){
	var isValidate = false;
	// ページ内のコントロールごとの設定を取得
	for (iName in PageValidator){
		var ctlSetting = PageValidator[iName];
		var ctrls = document.getElementsByName(iName);
		var iCnt = 0;
		// コントロールが取得できない場合は、存在しない画面なので次へ
		if (!ctrls || !ctrls.length) { continue; }
		for (iCnt = 0; iCnt < ctrls.length; iCnt ++) {
			var ctrl = ctrls[iCnt];
			// 隠し項目の場合は、チェック不要
			if (ctrl.type == "hidden") { continue; }
			// 入力がない場合
			if (!ctrl.value){
				if (ctlSetting["Require"] == true){
					// 必須の場合、入力がなければエラー
					isValidate = funcCreateDivMessage(ctrl, "Please fill out the " + ctlSetting["Name"]);
					continue;
				} else {
					// 必須ではない場合、入力がなければそのほかのチェックは不要なので、次へ
					continue;
				}
			}
			// 書式チェック
			if (ctlSetting["Type"]){
				switch(ctlSetting["Type"]){
					// Mail Address
					case "Mail":
						if (!funcCheckMailAddress(ctrl)){
							isValidate = funcCreateDivMessage(ctrl, ctlSetting["Name"] + " is not a valid email address.");
							continue;
						}
						break;
					// Number
					case "Number":
						if (funcCheckType(ctrl, "\\d") != ctrl.value){
							isValidate = funcCreateDivMessage(ctrl, "Please use half-width numerals.");
							continue;
						}
						break;
					// Alphanumeric
					case "Alphanumeric":
						if (funcCheckType(ctrl, "\\w") != ctrl.value){
							isValidate = funcCreateDivMessage(ctrl, "Please use letters or numbers.");
							continue;
						}
						break;
					// 英数書式チェック
					case "AlphanumericCode":
						if (funcCheckType(ctrl, "\\w\\-\\_.@") != ctrl.value){
							isValidate = funcCreateDivMessage(ctrl, "Please use letters, numbers or ( - _ @ . ).");
							continue;
						}
						break;
					// Phone Number
					case "Phone":
						if (funcCheckType(ctrl, "\\d\\b\\-\\(\\)\\+") != ctrl.value) {
							isValidate = funcCreateDivMessage(ctrl, "Please use only 0 to 9, -, (, ), or +");
							continue;
						}
						break;
				}
			}
			// 入力最小桁数チェック
			if (ctlSetting["Min"] > 0 && ctrl.value.length < ctlSetting["Min"]){
				isValidate = funcCreateDivMessage(ctrl, ctlSetting["Name"] + " is not long enough.");
				continue;
			}
			// 入力最大桁数チェック
			if (ctlSetting["Max"] > 0 && ctrl.value.length > ctlSetting["Max"]){
				isValidate = funcCreateDivMessage(ctrl, ctlSetting["Name"] + " is too long.");
				continue;
			}
			// 入力内容が同じかどうかの比較
			if (ctlSetting["Compare"]){
				var ctrlName = ctlSetting["Compare"];
				var compareCtrl = document.getElementsByName(ctrlName);
				if (compareCtrl && compareCtrl.length) { compareCtrl = compareCtrl[0];	}
				if (ctrl.value != compareCtrl.value) {
					isValidate = funcCreateDivMessage(ctrl, PageValidator[ctrlName]["Name"] + " and " + ctlSetting["Name"] + " are different.");
				}
			}
//10.11.27 R.Fujii 追加
			// 新規ユーザ用パスワードチェック
			if (ctlSetting["PassWordNew"]){
				var ctrlName = ctlSetting["PassWordNew"];
				var compareCtrl = document.getElementsByName(ctrlName);
				// 書式チェック
				if (funcCheckType(ctrl, "\\w\\-\\_.@") != ctrl.value){
					isValidate = funcCreateDivMessage(ctrl, "Please use letters, numbers or ( - _ @ . ).");
				}
				// 書式チェック 英字と数字を両方用いているか
				if (!funcCheckPw(ctrl)) {
					isValidate = funcCreateDivMessage(ctrl, "Please use both letters and numbers.");
				}
				// ユーザIDとの比較
				if (compareCtrl && compareCtrl.length) {
					compareCtrl = compareCtrl[0];
				}
				if (ctrl.value == compareCtrl.value) {
					isValidate = funcCreateDivMessage(ctrl, "Your " + ctlSetting["Name"] + " cannot be the same as your ID.");
				}
			}
//10.11.27 R.Fujii 追加
			// 既存ユーザ用パスワードチェック
			if (ctlSetting["PassWordUserMod"]){
				// パスワードが変更された場合のみ判定
//10.12.20 R.Fujii 変更 anetセキュリティ診断 PW認証
//				var ctrlName = ctlSetting["PassWordUserMod"];
//				var compareCtrl = document.getElementsByName(ctrlName)[0];
//				if (ctrl.cmpExistingPw == "DIFFERENT") {
				var ctrlNames       = ctlSetting["PassWordUserMod"];
				var ctrlNameList   = ctrlNames.split(",")
//11.01.12 R.Fujii 変更 anetセキュリティ診断
//				var cmpExistPwCtrl = document.getElementsByName(ctrlNameList[0])[0];
//				var compareCtrl    = document.getElementsByName(ctrlNameList[1])[0];
//				if (ctrl.value != cmpExistPwCtrl.value) {
				var compareCtrl    = document.getElementsByName(ctrlNameList[0])[0];
				if (ctrl.cmpExistingPw == "DIFFERENT") {
					// 書式チェック
					if (funcCheckType(ctrl, "\\w\\-\\_.@") != ctrl.value){
						isValidate = funcCreateDivMessage(ctrl, "Please use letters, numbers or ( - _ @ . ).");
					}
					// 書式チェック 英字と数字を両方用いているか
					if (!funcCheckPw(ctrl)) {
						isValidate = funcCreateDivMessage(ctrl, "Please use both letters and numbers.");
					}
					// ユーザIDとの比較
//10.12.20 R.Fujii 変更 anetセキュリティ診断 PW認証
					if (ctrl.value == compareCtrl.value) {
						isValidate = funcCreateDivMessage(ctrl, "Your " + ctlSetting["Name"] + " cannot be the same as your ID.");
					}
					// 入力最小桁数チェック
					if (ctlSetting["NewMin"] > 0 && ctrl.value.length < ctlSetting["NewMin"]){
						isValidate = funcCreateDivMessage(ctrl,  ctlSetting["Name"] + " is not long enough.");
						continue;
					}
				}
			}
			// 不具合記号チェック
			if (ctlSetting["FailedCharacter"] && !funcCheckFailedCharacter(ctrl)) {
				isValidate = funcCreateDivMessage(ctrl, "Please use letters, numbers or ( !-_.,#/()^:+ ).");
				continue;
			}
		}
	}
	return isValidate;
}

// フォームの送信チェック
function funcSubmitCheck(srcElement){
	// IEでフォームが複数あると、コントロールが取得できないのでイベント発生元を取得
	if (!srcElement || !srcElement.tagName) {
		srcElement = event.srcElement;
	}
	// イベント発生元が特定できない場合、以降の処理でエラーになってしまうので正常で返す（サーバー側チェックを実行）
	if (!srcElement && !srcElement.tagName) {
		return true;
	}
	// 戻るボタンの場合は正常とする
	if (srcElement.value.match("Back")){
		return true;
	}
	var url = document.URL;
	var page = url.substr(url.lastIndexOf("/") + 1);
	var isValidate = "";
	var iName = 0;
	var PageValidator;

	// エラーを全て解除
	funcErrorClear();

	// ジャンプタグを削除
	var sharpPos = page.indexOf("#");
	if (sharpPos >= 0){
		page = page.substring(0, sharpPos);
	}
	// 引数クエリを削除
	var sharpPos = page.indexOf("?");
	if (sharpPos >= 0){
		page = page.substring(0, sharpPos);
	}

	// 発注時のみ特別
	if (page == "Order_e.asp" || page == "Order01_e.asp" || page == "Order02_e.asp" || page == "Order03_e.asp"){
		if (srcElement.name == "haveID") {
			// IDあり側のボタン押下時は発注画面の最初でIDとパスのみ
			PageValidator = PageValidators["Order_e.asp#Usr"];
		} else if (srcElement.name == "inputParsonalData") {
			// IDなし側のボタン押下時は発注画面の最初で情報全部
			PageValidator = PageValidators["Order_e.asp#Info"];
// 海外に別の配送先はなし
//		} else if (document.getElementsByName("gift") && document.getElementsByName("gift")[0].checked){
//			// 配送先画面で、購入者と同じの場合は検証終了
//			return true;
		} else {
			PageValidator = PageValidators[page];
		}
	} else {
		// ページで検証を実行
		PageValidator = PageValidators[page];
	}

	// 検証を実行
	isValidate = funcFormValidator(PageValidator);

	// エラー表示が行われている場合、一度非表示に設定する
	var divError = document.getElementById("divErrorPopup");
	if (divError){
		divError.style.display = "none";
	}
	// エラーメッセージが作成されている場合、エラー表示を行う
	if (isValidate){
		// エラー表示枠が存在しない場合、作成する
		if (!divError){
			divError = document.createElement("DIV");
			divError.id = "divErrorPopup";
			divError.style.padding = "3px";
			divError.style.position = "absolute";
			divError.style.backgroundColor = "Red";
			divError.style.color = "Yellow";
			divError.style.fontWeight = "bold";
			divError.style.textAlign = "center";
			divError.style.width = "300px";
			var parent = document.getElementsByTagName("BODY")[0];
			parent.appendChild(divError);
		}
		divError.style.display = "inline";
		divError.innerHTML = "Please fix the marked areas.";
		var parent = divError.parentNode;
		if (srcElement.value == "goto confirmation screen"){
			divError.style.left = funcGetOffsetLeftPosition(srcElement) - ((divError.offsetWidth - srcElement.offsetWidth) / 2) + srcElement.parentNode.offsetLeft;
		} else {
			divError.style.left = funcGetOffsetLeftPosition(srcElement) - ((divError.offsetWidth - srcElement.offsetWidth) / 2);
		}
		divError.style.top = funcGetOffsetTopPosition(srcElement) - divError.offsetHeight;
		window.setTimeout("document.getElementById('divErrorPopup').style.display = \"none\";", 2500);
	}
	return (!isValidate);
}

// 画面上の入力項目の初期化処理を行う
function funcResetInputData(){
	// 現在のフォームを取得
	var currentForm = document.forms["order_from"];		// 注文情報
	if (!currentForm) {
		currentForm = document.forms["form"];			// お届け先
	}
	// どちらでもない場合は、1つ目のフォーム
	if (!currentForm) {
		currentForm = document.forms[0];
	}
	if (!currentForm) {
		return;
	}
	var iCnt = 0;
	for (iCnt = 0; iCnt < currentForm.elements.length; iCnt ++){
		// コントロールを取得
		var elm = currentForm.elements[iCnt];
		// 個数コントロール以外の場合、初期化処理を実行する
		if (elm.name.indexOf("piece") == -1){
			// 入力項目の場合
			if (elm.tagName == "INPUT") {
				switch (elm.type) {
					case "text":		// テキストボックス
						elm.value = "";
						break;
					case "checkbox":	// チェックボックス
						// 現在は対象がないので何もしない
						break;
					case "radio":
						elm.checked = false;
						document.getElementsByName(elm.name)[0].checked = true;
						break;
					case "password":
						elm.value = "";
						break;
				}
			} else if (elm.tagName == "SELECT") {
				elm.options[0].selected = true;
			}
			// 全てのコントロールにおいて、エラースタイルを削除する
			if (elm.className) { elm.className = elm.className.replace(" Err", ""); }
		}
	}
	funcErrorClear();
	// 戻りは常に不許可
	return false;
}

// 画面上の入力項目のエラースタイル解除処理を行う
function funcErrorClear(){
	// 現在のフォームを取得
	var currentForm = document.forms["order_from"];		// 注文情報
	if (!currentForm) {
		currentForm = document.forms["form"];			// お届け先
	}
	// どちらでもない場合は、1つ目のフォーム
	if (!currentForm) {
		currentForm = document.forms[0];
	}
	if (!currentForm) {
		return;
	}
	var iCnt = 0;
	for (iCnt = 0; iCnt < currentForm.elements.length; iCnt ++){
		// コントロールを取得
		var elm = currentForm.elements[iCnt];
		// 全てのコントロールにおいて、エラースタイルを削除する
		if (elm.className) { elm.className = elm.className.replace(" Err", ""); }
	}
	var errDiv = funcGetElementByTagNameAndName("DIV", "divError");
	while(errDiv){
		errDiv.parentNode.removeChild(errDiv);
		errDiv = funcGetElementByTagNameAndName("DIV", "divError");
	}
	// 戻りは常に不許可
	return false;
}

//10.11.27 R.Fujii 追加
// 英字・数字の両方が含まれているかチェック
function funcCheckPw(ctrl) {
	// 入力がない場合、trueで返す
	if (ctrl.value === "") {
		return true;
	}
	// 英字有無チェック
	if (!ctrl.value.match(/[a-zA-Z]/)) {
		return false;
	}
	// 数字有無チェック
	if (!ctrl.value.match(/[0-9]/)) {
		return false;
	}
	return true;
}

//11.01.12 R.Fujii 変更
//10.12.20 R.Fujii 削除 anetセキュリティ診断 PW認証
////10.11.27 R.Fujii 追加
function funcFocusPassWord(ctrl){
	var url = document.URL;
	var page = url.substr(url.lastIndexOf("/") + 1);
	// UserMod.asp用 パスワードフォーカス時にSUBMITボタン使用不可
	if (page == "UserMod_e.asp") {
		var ctlSetting = PageValidators[page][ctrl.name];
		var OptionList = ctlSetting["Option"];
		var Options = OptionList.split(","); 
		var ctrl_user = document.getElementsByName(Options[0])[0];
		var ctrl_Button01 = document.getElementsByName(Options[1])[0];
		var ctrl_Button02 = document.getElementsByName(Options[2])[0];
		var strData;
		// 確認ボタン 送信ボタンの使用不可
		if (ctrl_Button01) {
			ctrl_Button01.disabled = true;
		}
		if (ctrl_Button02) {
			ctrl_Button02.disabled = true;
		}
		strData="user=" + ctrl_user.value + "&inputpw=" + ctrl.value;
		RequestAjaxResponsePost("CheckPwUserMod", strData, "funcAddCheckPwUserMod", ctrl.name);
	}
}

//11.01.12 R.Fujii 変更 anetセキュリティ診断
//10.12.20 R.Fujii 削除 anetセキュリティ診断 PW認証
////10.11.27 R.Fujii 追加
//// UserMod.asp用 Usr_Psに旧パスワードの要素を追加
function funcAddCheckPwUserMod(strData, ctrlname){
	var url = document.URL;
	var page = url.substr(url.lastIndexOf("/") + 1);
	var ctlSetting = PageValidators[page][ctrlname];
	var OptionList = ctlSetting["Option"];
	var Options = OptionList.split(","); 
	var ctrl_userpw = document.getElementsByName(ctrlname)[0];
	var ctrl_Button01 = document.getElementsByName(Options[1])[0];
	var ctrl_Button02 = document.getElementsByName(Options[2])[0];
	// 比較結果を格納
	ctrl_userpw["cmpExistingPw"] = strData;
	// 確認ボタン 送信ボタンの使用可
	if (ctrl_Button01) {
		ctrl_Button01.disabled = false;
	}
	if (ctrl_Button02) {
		ctrl_Button02.disabled = false;
	}
}


funcAttachEvent(window, "load", funcAttachAllCtrl);
