/*
チェックに利用しているフラグへの戻り値
	OK == null, NG == エラーメッセージ
SignInputCheck 入力チェックの起点
SignNullCheck  Nullチェック
OutputResult   innerHTMLでOK/NG画像の表示などチェック結果をアウトプット
CustomerCheck  重複アカウントの検索
*/

//============================================================
// メイン処理
//============================================================
// JS のロード時、SITE情報を確保 ex) site=KA
var site = null;
var s = new Ajax.Request( "/ajax/GetSite.php", 
	{ 
	method: "post", 
	parameters: "", 
      onSuccess: function(request) {
			site = request.responseText; 
         //$('username_result').innerHTML = request.responseText; 
         // jsonの値を処理する場合↓↓ var json; eval("json="+request.responseText); 
      }, 
		onFailure: function(request) { 
			// PHPが参照出来なかった場合、Waitをエラー表記に上書き
			//$('username_repetition').innerHTML = "<b>Missing</b>";
		}
	}
); 


// Main処理関数
// エラーチェックの宣言
// 各入力項目に合わせてチェック内容を変更 = 関数の有無で調整します
// 上位から順にエラーメッセージを取得、エラーであった場合、
// 次のチェックはスルーされます。→ 優先的なチェックは上位に記述
// 引数 ptn ('', 'temporary', 'edit', 'topics_gry') の内のどれかが選択されています。
// 下記を例とした、それぞれに個別のルールが存在します。
// ''           => SignIn 特別な例外は無く、スタンダードな動作を行います。
// 'temporary'  => 一時ユーザ登録(重複チェック無し etc)
// 'edit'       => アカウント更新(Nullチェック除外 etc)
// 'topics_gry' => Topics/Downloadページで直接呼ばれるフォーム(B1_err etc)

function SignInputCheck(val, ptn, process){
	
	var errmsg = null;
	if(ptn == "edit" && val.value == ""){
		if(val.name == "username" || val.name == "password" || 
		   val.name == "e_mail" || val.name == "confirm_e_mail"){
			// アカウント更新時、nullチェックは不要 
			if(process == "process"){
				// processボタン経由の場合、エラーメッセージ表示しない。
				return;
			}
			SignOutputIcon(val, null);
			SignOutputResult(val, null);
			SignChangeTextBoxColor(val, null);
			return;
		}
	}

	switch(val.name){
		case 'username':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 5, 100); }
			if(errmsg==null){ errmsg = SignCustomerCheck(val, 'username', ptn, process); }
			break;
		case 'username2':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 5, 100); }
			if(errmsg==null){ errmsg = SignCustomerCheck(val, 'username', ptn, process); }
			break;
		case 'password':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 7, 50); }
			break;
		case 'password2':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 7, 50); }
			break;
		case 'old_password':
			if(errmsg==null){ errmsg = SignNullCheck(val, ptn); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 7, 50, ptn); }
			break;
		case 'confirm_pass':
			if(errmsg==null){ errmsg = SignNullCheck(val, ptn); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 7, 50, ptn); }
			if (!!document.request.password2){
				if(errmsg==null){ errmsg = SignConfirmCheck(document.request.password2, val); }
				break;
			}
			if (!!document.request.password){
				if(errmsg==null){ errmsg = SignConfirmCheck(document.request.password, val); }
				break;
			}
			break;
		case 'e_mail':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignMailCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 100); }
			// 一時ユーザ登録は既存EmailはOKです。
			if(errmsg==null){ errmsg = SignCustomerCheck(val, 'e_mail', ptn, process); }
			break;
		case 'confirm_e_mail':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignMailCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 100); }
			if(errmsg==null){ errmsg = SignConfirmCheck(document.request.e_mail, val); }
			break;
		case 'company':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 100); }
			break;
		case 'street':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 100); }
			break;
		case 'street2':
			if(errmsg==null && document.request.country_cd.value == "TW"){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 100); }
			break;
		case 'city':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 100); }
			break;
		case 'state_cd':
			if(errmsg==null && document.request.country_cd.value != "DE"){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 100); }
			break;
		case 'zip':
			if(document.request.country_cd.value != "IE"){	// IE 選択不可
				if(errmsg==null){ errmsg = SignNullCheck(val); }
				if(errmsg==null){ errmsg = zip_checker(val, document.request.country_cd, document.request.state_cd); }
				if(errmsg==null){ errmsg = SignRandCheck(val); }
				if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 10); }
			}
			break;
		case 'country_cd':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 2); }
			break;
		case 'country_other':
			break;
		/*case 'industry_cd':
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 2); }
			break;*/
		case 'first_name':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 100); }
			break;
		case 'last_name':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 100); }
			break;
		case 'phone':
			if(errmsg==null){ errmsg = SignNullCheck(val); }
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 50); }
			break;
		case 'phone_ext':
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 8); }
			break;
		/*case 'fax':
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 50); }
			break;*/
		/*case 'title':
			if(errmsg==null){ errmsg = SignRandCheck(val); }
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 100); }
			break;*/
		/*case 'function_cd':
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 2); }
			break;*/
		/*case 'B1':
			if(errmsg==null){ errmsg = SignLengthCheck(val, 0, 50); }
			break;*/
		case 'enews_signup':
			break;
		default:
			break;
	}
	// 出力
	if(process == "process"){
		// processボタン経由の場合、エラーメッセージ表示しない。
		//return errmsg;	// 2010/03/18 やっぱりエラー誘導する。
	}
	SignOutputIcon(val, errmsg);
	SignOutputResult(val, errmsg);
	SignChangeTextBoxColor(val, errmsg);
	
	return errmsg;
}

// Registarボタン押下時の動作
function Signprocess(ptn){	
	var errmsg = new Array();
	var errflg = false;
	
	// topics_gry では、login.incフォームにあたるフォームと共存している為、
	// フォームの名称がSignInと異なります。
	if(ptn == "topics_gry"){
		document.request.username.value = document.request.username2.value;
		document.request.password.value = document.request.password2.value;
		errmsg[0] = SignInputCheck(document.request.username2, ptn, 'process');
		errmsg[1] = SignInputCheck(document.request.password2, ptn, 'process');
	}else{
		errmsg[0] = SignInputCheck(document.request.username, ptn, 'process');
		errmsg[1] = SignInputCheck(document.request.password, ptn, 'process');
	}
	errmsg[2] = SignInputCheck(document.request.confirm_pass, ptn, 'process');
	errmsg[3] = SignInputCheck(document.request.e_mail, ptn, 'process');
	errmsg[4] = SignInputCheck(document.request.confirm_e_mail, ptn, 'process');
	errmsg[5] = SignInputCheck(document.request.company, ptn, 'process');
	errmsg[6] = SignInputCheck(document.request.street, ptn, 'process');
	errmsg[7] = SignInputCheck(document.request.street2, ptn, 'process');
	errmsg[8] = SignInputCheck(document.request.city, ptn, 'process');
	errmsg[9] = SignInputCheck(document.request.state_cd, ptn, 'process');
	errmsg[10] = SignInputCheck(document.request.zip, ptn, 'process');
	errmsg[11] = SignInputCheck(document.request.country_cd, ptn, 'process');
	//errmsg[12] = SignInputCheck(document.request.industry_cd, ptn, 'process');
	errmsg[13] = SignInputCheck(document.request.first_name, ptn, 'process');
	errmsg[14] = SignInputCheck(document.request.last_name, ptn, 'process');
	errmsg[15] = SignInputCheck(document.request.phone, ptn, 'process');
	errmsg[16] = SignInputCheck(document.request.phone_ext, ptn, 'process');
	//errmsg[17] = SignInputCheck(document.request.fax, ptn, 'process');
	//errmsg[18] = SignInputCheck(document.request.title, ptn, 'process');
	//errmsg[19] = SignInputCheck(document.request.function_cd, ptn, 'process');
	
	// topics_gryは、高い頻度で OptionalQuestionと同時表示される為、
	// Hou～ B1をnameに持つ Formが複数登場し、エラーを起こすため、イレギュラーとして回避
	if(ptn == "topics_gry"){
		//SignOutputIcon('B1_err', null);
	}else{
		//errmsg[20] = SignInputCheck(document.request.B1, ptn, 'process');
	}

	if(ptn == "edit"){
		errmsg[21] = SignInputCheck(document.request.old_password, ptn, 'process');
	}
	
	for(var i=0; i<errmsg.length; i++){
		if(errmsg[i] != null){
			errflg = true;
		}
	}

	if(ptn == "topics_gry"){
		// process不可! changelink実行の為、グレイフォームに返します。
		if(!errflg){
			SignCustomerCheckProcess(document.request.username, document.request.e_mail, ptn, document.request);
		}
	}else{
		// SignInのページ遷移
		if(!errflg){ // errflg=false エラーが無い場合、次ページへ遷移  ※重複チェックのエラー有無は不明の為true
			// 重複チェックのエラー有無のみ再判定
			// 重複チェックの結果が errflgに反映されていない為、常にProcessの状態となってしまう。
			// JS が PHP処理の結果を待ってくれない。
			SignCustomerCheckProcess(document.request.username, document.request.e_mail, ptn, document.request);
		}
	}
	
	return ;
}

// Registarボタン押下時の動作（一時ユーザ登録）
// チェック項目が異なる為、SignInと分けています。
function Temporaryprocess(ptn){	

	var errmsg = new Array();
	var errflg = false;
	
	errmsg[0] = SignInputCheck(document.request.e_mail, ptn, 'process');
	errmsg[1] = SignInputCheck(document.request.confirm_e_mail, ptn, 'process');
	errmsg[2] = SignInputCheck(document.request.company, ptn, 'process');
	errmsg[3] = SignInputCheck(document.request.street, ptn, 'process');
	errmsg[4] = SignInputCheck(document.request.street2, ptn, 'process');
	errmsg[5] = SignInputCheck(document.request.city, ptn, 'process');
	errmsg[6] = SignInputCheck(document.request.state_cd, ptn, 'process');
	errmsg[7] = SignInputCheck(document.request.zip, ptn, 'process');
	errmsg[8] = SignInputCheck(document.request.country_cd, ptn, 'process');
	//errmsg[9] = SignInputCheck(document.request.industry_cd, ptn, 'process');
	errmsg[10] = SignInputCheck(document.request.first_name, ptn, 'process');
	errmsg[11] = SignInputCheck(document.request.last_name, ptn, 'process');
	errmsg[12] = SignInputCheck(document.request.phone, ptn, 'process');
	errmsg[13] = SignInputCheck(document.request.phone_ext, ptn, 'process');
	//errmsg[14] = SignInputCheck(document.request.fax, ptn, 'process');
	//errmsg[15] = SignInputCheck(document.request.title, ptn, 'process');
	//errmsg[16] = SignInputCheck(document.request.function_cd, ptn, 'process');
	//errmsg[17] = SignInputCheck(document.request.B1, ptn, 'process');

	for(var i=0; i<errmsg.length; i++){
		if(errmsg[i] != null){
			errflg = true;
		}
	}
	
	if(!errflg){ // errflg=false エラーが無い場合、次ページへ遷移
		//document.getElementById('input_err_msg').innerHTML = "";
		process('');
	}else{
		//var input_err_msg = SignGetErrMsg ('process', 'input_err_msg');
		//document.getElementById('input_err_msg').innerHTML = input_err_msg;
	}
		
	return ;
}

//============================================================
// チェック関数
//============================================================
// 空チェック
function SignNullCheck(val, ptn){
	
	if(ptn=="edit"){
		if(val.name == "old_password" || val.name == "confirm_pass"){
			if(document.getElementById('password_input').value == ""){
				return null;
			}
		}
	}
	
	var str = val.value;
	str = str.trim();
	str = str.trim2();
	
	if(str==""){
		return SignGetErrMsg("nullchk", val.name);
	}
	
	return null;
}

// メール妥当性チェック
function SignMailCheck(val){
	
	var str = val.value;
	var filter=/^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+?\.[A-Za-z0-9_\.\-]*$/;
	
	if (filter.test(str)) {
		return null;
	}else{
		return SignGetErrMsg("mailchk", val.name);
	}
	
	return null;
}

// 桁数チェック
function SignLengthCheck(val, minsize, maxsize, ptn){

	if(ptn=="edit"){
		if(val.name == "old_password" || val.name == "confirm_pass"){
			if(document.getElementById('password_input').value == ""){
				return null;
			}
		}
	}
	
	if(val.value.length < minsize || maxsize < val.value.length){
		return SignGetErrMsg("lengthchk", val.name);
	}

	return null;
}

// 不正入力チェック(ルール後述)
function SignRandCheck(val){
	
	var str = val.value;
	var filter = "";
	str = str.trim();
	str = str.trim2();
	

	if(val.name == "old_password"){
		if(document.getElementById('password_input').value == ""){
			return null;
		}
	}
	
	// asdf, qwer などの入力は不可（全項目）
	if(str=="asdf" || str=="qwer"){
		return SignGetErrMsg("randchk", val.name);
	}
	
	// 特定のフォームはスペースを許可しない
	if(val.name=="username" || val.name=="password" || val.name=="confirm_password" || val.name=="old_password"){
		var filter=/[ 　]/;
		if (filter.test(str)) {
			return SignGetErrMsg("randchk", val.name);
		}
	}
	// Company, Firstname, Lastnameは半角で１文字ならＮＧ。全角で１文字はＯＫとします。
	// 2010リニューアル時、半角１文字ＯＫに更新
	if(val.name=="company" || val.name=="first_name" || val.name=="last_name"){
		/*var filter=/^[\x41-\x5A|\x61-\x7A|\x30-\x39]$/;
		if (filter.test(str)) {
			return SignGetErrMsg("randchk", val.name);
		}*/
		// Firstname、Lastname　の欄に "test" の入力があればNG
		if(val.name=="first_name" || val.name=="last_name"){
			var filter=/(test | test)/;
			if (filter.test(str)) {
				return SignGetErrMsg("randchk", val.name);
			}	
			/*if(str=="test"){
				return SignGetErrMsg("randchk", val.name);
			}*/
			// 
			// 最初または最後に半角数字が入力されていればNG
			filter=/^[^0-9]+$/;
			if (!filter.test(str)) {
				return SignGetErrMsg("randchk", val.name);
			}
		}
	}
	
	return null;
}

// Confirmテキストの一致チェック
function SignConfirmCheck(val, confirm){
	
	var str  = val.value;
	var str2 = confirm.value;

	if(str != str2){
		return SignGetErrMsg("confilmchk", confirm.name);
	}
	
	return null;
}

// 重複チェック
function SignCustomerCheck(val, col, ptn, process) {

	// ユーザ更新の場合、自らの設定は入力可能
	if(ptn == "edit"){
		if(edit_username == val.value || edit_e_mail == val.value){
			if(process == "process"){
				// processボタン経由の場合、エラーメッセージ表示しない。
				return;
			}
			SignOutputIcon(val, null);
			SignOutputResult(val, null);
			SignChangeTextBoxColor(val, null);
			return;
		}
	}
	// 一時ユーザ登録の場合、Emailは既存OK
	if(ptn == "temporary" && col == "e_mail"){
		return;
	}
	
	// val.value 検索データ
	var result = null;
	var a = new Ajax.Request( "/ajax/CustomerCheck.php", 
		{ 
		method: "post", 
		parameters: "val="+val.value+"&col="+col, 
		asynchronous:true, 
         onSuccess: function(request) { 
				result = request.responseText; 
            //alert(result); 
            // 下部 Wait状態から結果表示状態に上書き
            if(result<1){
					$(val.name+'_result_icon').innerHTML = "<img src=\"/img/icon_ok.gif\">";
					$(val.name+'_result').innerHTML = "";
					var obj = document.getElementById(val.name+'_input');
					obj.style.backgroundColor = "#ffffff";
				}else{
					if(val.name == "e_mail"){
						$(val.name+'_result_icon').innerHTML = "<img src=\"/img/icon_error.gif\">";
						$(val.name+'_result').innerHTML = 'Email Address is already in use. Request account information <a href="javascript:openGetPassword(\''+site+'\')" class="blue205">here.</a>';
						var obj = document.getElementById(val.name+'_input');
						obj.style.backgroundColor = "#ffe1e2";
					}else if(val.name == "username" || val.name == "username2"){
						$(val.name+'_result_icon').innerHTML = "<img src=\"/img/icon_error.gif\">";
						$(val.name+'_result').innerHTML = 'Username is already in use.';
						var obj = document.getElementById(val.name+'_input');
						obj.style.backgroundColor = "#ffe1e2";
					}
				}
				
            //$('username_result').innerHTML = request.responseText; 
            // jsonの値を処理する場合↓↓ var json; eval("json="+request.responseText); 
				return ;
         }, 
			onLoaded: function(request) { 
				$(val.name+'_result_icon').innerHTML = "<img src=\"/img/icon_working.gif\">";
				$(val.name+'_result').innerHTML = "Waiting...";
			},
			onLoading: function(request) { 
				$(val.name+'_result_icon').innerHTML = "<img src=\"/img/icon_working.gif\">";
				$(val.name+'_result').innerHTML = "Waiting...";
			},
			onFailure: function(request) { 
				// PHPが参照出来なかった場合、Waitをエラー表記に上書き
				//$(val.name+'_result').innerHTML = "<img src=\"/img/icon_error.gif\"><b>Email address is already in use. Request account information here.</b>";
			}
		}
	); 
	
	// この下の記述に注意 → 上記のScriptの終了前に実行される為、結果の参照は不可
}



// 重複チェック後にページ遷移する。
function SignCustomerCheckProcess(username, e_mail, ptn, form_obj) {

	var action_url    = form_obj.action;
	
	// ユーザ更新の場合、自らの設定は入力可能
	var data_username = username.value;
	var data_e_mail   = e_mail.value;
	
	if(ptn == "edit"){
		if(edit_username == data_username){
			data_username = "";
		}
		if(edit_e_mail == data_e_mail){
			data_e_mail = "";
		}
	}
	
	// 一時ユーザ登録の場合、Emailは既存OK
	if(ptn == "temporary" && col == "e_mail"){
		return;
	}
	
	// val.value 検索データ
	var result = null;
	var a = new Ajax.Request( "/ajax/CustomerCheckProcess.php", 
		{ 
		method: "post", 
		parameters: "username="+data_username+"&e_mail="+data_e_mail, 
		asynchronous:true, 
         onSuccess: function(request) { 
				result = request.responseText; 
            //alert(result); 
            // 下部 Wait状態から結果表示状態に上書き
            var result_ary = result.split(",");
            if(result_ary[0] < 1 && result_ary[1] < 1){
					if(ptn == "edit"){
						// 遷移先はactionの値を使用 session_idが付与されていないと処理が完了できない為。
						process("");
					}else{
						// GETリクエストで持ちまわしているdoneを引き継ぐ為、actionの値から取得して設定。
						var set_done = "";
						var register_action = HTTPS_ROOT+"/myaccount/register.php";
						
						var action_url_ary = action_url.split("?");
						if (action_url_ary.length > 1) {
							var request_ary = action_url_ary[1].split("&");
							for (var i = 0; i < request_ary.length; i++) {
								if (request_ary[i].match(/^done=/i)) set_done = request_ary[i];
							}
						}
						if (set_done != "") register_action += "?" + set_done;
						process(register_action);
					}
				}else{
					if(result_ary[0] != 0){
						$(username.name+'_result_icon').innerHTML = "<img src=\"/img/icon_error.gif\">";
						$(username.name+'_result').innerHTML = 'Username is already in use.';
						var obj = document.getElementById(username.name+'_input');
						obj.style.backgroundColor = "#ffe1e2";
					}
					if(result_ary[1] != 0){
						$(e_mail.name+'_result_icon').innerHTML = "<img src=\"/img/icon_error.gif\">";
						$(e_mail.name+'_result').innerHTML = 'Email Address is already in use. Request account information <a href="javascript:openGetPassword(\''+site+'\')" class="blue205">here.</a>';
						var obj = document.getElementById(e_mail.name+'_input');
						obj.style.backgroundColor = "#ffe1e2";
					}
				}
         }
		}
	); 
}



function zip_checker(obj1, obj2, obj3){

	var cnt1 = 0;
	var cnt2 = 0;

	if(obj1.value == "/s"){
		return null;
	}

	if(obj3.value != ''){
		//50州以外の州コード
		var other50_state = new Array('AS', 'AE', 'AA', 'AP', 'FM', 'GU', 'MH', 'MP', 'PW', 'PR', 'VI');
		for(var i=0; i<other50_state.length; i++){
			var element = other50_state[i];
			if(element == obj3.value){
				cnt2 = 1;
			}
		}
		//カウントリーコードがUSでzipが数字で無い時
		if(!cnt2){
			if((obj1.value.length < 5 || obj1.value.match(/[^0-9]+/)) && obj2.value == 'US'){
				cnt1 = 1;
			}
		}
		if(cnt1){
			return SignGetErrMsg("zipchk", obj1.name);
		}else{
			return null;
		}
	}else{
		return null;
	}
	
}

//============================================================
// アウトプット関数
//============================================================
// OK or NG 表示
function SignOutputResult(val, errmsg) {

	var obj = document.getElementById(val.name+'_result');
	if (errmsg==null) {
		obj.innerHTML = '';
	} else {
		obj.innerHTML = errmsg;
	}
	
	return ;
}

// マークの表示、非表示切り替え
function SignOutputIcon(val, errmsg) {
	
	var obj;
	
	// topics_gryは、高い頻度で OptionalQuestionと同時表示される為、
	// How～ B1をnameに持つ Formが複数登場し、エラーを起こすため、イレギュラーとして回避
	/*if(val == 'B1_err'){
		obj = document.getElementById('B1_result_icon');
		if (errmsg==null) {
			obj.innerHTML = '<img src=\"/img/icon_ok.gif\">';
		} else {
			obj.innerHTML = '<img src=\"/img/icon_error.gif\">';
		}
		return;
	}*/
	
	// phone_ext用の表示域は無い → phoneで代用します
	if(val.name=="phone_ext"){ return; } 
	
	obj = document.getElementById(val.name+'_result_icon');

	// streetが必須ではない条件のときマークの表示は不要です
	if(document.request.country_cd.value != "TW"){
		if(val.name=="street2"){ obj.innerHTML = ''; return; }
	}

	if (errmsg==null) {
		// 必須以外の入力項目にOKのチェックマークは不要です
		if(val.name=="fax"){         obj.innerHTML = ''; return; } 
		if(val.name=="title"){       obj.innerHTML = ''; return; } 
		if(val.name=="industry_cd"){ obj.innerHTML = ''; return; } 
		if(val.name=="function_cd"){ obj.innerHTML = ''; return; } 
		if(val.name=="B1"){          obj.innerHTML = ''; return; } 
		if(val.name=="cell_phone"){  obj.innerHTML = ''; return; } 
		
		obj.innerHTML = '<img src=\"/img/icon_ok.gif\">';
	} else {
		obj.innerHTML = '<img src=\"/img/icon_error.gif\">';
	}

	return ;
}

// エラー時テキストボックスの色変更
function SignChangeTextBoxColor(val, errmsg) {

	var obj = document.getElementById(val.name+'_input');
	if (errmsg == null) {
		obj.style.backgroundColor = "#ffffff";
	} else {
		obj.style.backgroundColor = "#ffe1e2";
	}
	return ;
}

//============================================================
// エラーメッセージの取得
// type = チェック内容を記述 ex) 空チェックは Null
// val  = nameの値
// 最終的に name 以外の文言が同じ場合、
//	alert(val.name+'_test'); 左記で作って返しましょう
//============================================================
function SignGetErrMsg (errtype, name){
	var msg = new Array();
	var country = document.request.country_cd_input.value;
	
	if(errtype=="nullchk" || errtype=="mailchk"){
		msg["username"]       = "Username is not available";
		msg["username2"]       = "Username is not available";
		msg["password"]       = "Invalid Password";
		msg["password2"]       = "Invalid Password";
		msg["old_password"]   = "Invalid Password";
		msg["confirm_pass"]   = "Invalid Password";
		msg["e_mail"]         = "Invalid Email address";
		msg["confirm_e_mail"] = "Invalid Email address";
		msg["company"]        = "1 characer minimum";
		msg["street"]         = "Only letters. 1 minimum";
		msg["street2"]        = "Only letters. 1 minimum";
		msg["city"]           = "Only letters. 1 minimum";
		msg["state_cd"]       = "Please select a "+state_cd_name[country];
		msg["zip"]            = "Invalid zip code";
		msg["country_cd"]     = "Please select a country";
		msg["first_name"]     = "Only letters. 1 minimum";
		msg["last_name"]      = "Only letters. 1 minimum";
		msg["phone"]          = "Only numbers, 1 minimum";
	}else if(errtype=="lengthchk"){
		msg["username"]       = "5 character minimums, no spaces";
		msg["username2"]       = "5 character minimums, no spaces";
		msg["password"]       = "7 character minimums, no spaces";
		msg["password2"]       = "7 character minimums, no spaces";
		msg["old_password"]   = "7 character minimums, no spaces";
		msg["confirm_pass"]   = "7 character minimums, no spaces";
		msg["e_mail"]         = "Invalid Email address";
		msg["confirm_e_mail"] = "Invalid Email address";
		msg["company"]        = "1 characer minimum";
		msg["street"]         = "Only letters. 1 minimum";
		msg["street2"]        = "Only letters. 1 minimum";
		msg["city"]           = "Only letters. 1 minimum";
		msg["state_cd"]       = "Please select a "+state_cd_name[country];
		msg["zip"]            = "Invalid zip code";
		msg["country_cd"]     = "Please select a country";
		msg["first_name"]     = "Only letters. 1 minimum";
		msg["last_name"]      = "Only letters. 1 minimum";
		msg["phone"]          = "Only numbers, 1 minimum";
	}else if(errtype=="randchk"){
		msg["username"]       = "5 character minimums, no spaces";
		msg["username2"]       = "5 character minimums, no spaces";
		msg["password"]       = "7 character minimums, no spaces";
		msg["password2"]       = "7 character minimums, no spaces";
		msg["old_password"]   = "7 character minimums, no spaces";
		msg["confirm_pass"]   = "7 character minimums, no spaces";
		msg["company"]        = "1 characer minimum";
		msg["street"]         = "Only letters. 1 minimum";
		msg["street2"]        = "Only letters. 1 minimum";
		msg["zip"]            = "Invalid zip code";
		msg["first_name"]     = "Only letters. 1 minimum";
		msg["last_name"]      = "Only letters. 1 minimum";
		msg["phone"]          = "Only numbers, 1 minimum";
		msg["fax"]            = "Only numbers, 1 minimum";
		msg["title"]          = "Only numbers, 1 minimum";
	}else if(errtype=="confilmchk"){
		msg["confirm_pass"]   = "Passwords must be the same";
		msg["confirm_e_mail"] = "Email address must be the same";
	}else if(errtype=="zipchk"){
		msg["zip"]            = "Only numbers, 5 minimum";
	}else if(errtype=="process"){
		msg["input_err_msg"]            = "Please fill in the form above";
	}
	
	if(msg[name] == ""){
		return "not messeage";
	}
	
	return msg[name];
}

//============================================================
// メイン処理補助関数
//============================================================
String.prototype.trim = function() {
   return this.replace(/^[ ]+|[ ]+$/g, '');
}
String.prototype.trim2 = function() {
   return this.replace(/^[　]+|[　]+$/g, '');
}

