/*
 * パスワードリマインダー用JavaScript
 * 必ず事前に jquery.js と common.js を呼び出しておいてください。
 */

var formHtml = "";
var loginStr = "";
var pwdStr = "";
var strRemindLoginId = "";
var isAutoLogin = false;

var reminderUrl = "";	// ログインID認証用URL
var inquireUrl = "";		// 契約管理Key認証要URL

function setReminderUrl(url){
	reminderUrl = url;
}
function setInquireUrl(url){
	inquireUrl = url;
}


var connectTimeout = 10000;	// サーバーと通信を試みる時間（ミリ秒）
var connectErrorMess = "サーバーとの通信に失敗しました。<br />詳細については管理者にお問い合わせください。";

/*
 * パスワードリマインダー用画面に切り替える
 */
function startReminder(objForm) {

	var obFormBody = $(objForm);
	obFormBody.toggleClass("reminder");

	// ログインフォームのHTML情報を一旦保存する
	formHtml = obFormBody.html();
	loginStr = $("#loginname2").val();
	pwdStr = $("#loginpass2").val();
	isAutoLogin = ($("#chkAuto2")[0].checked) ? true : false;

	// ログインID入力用フォームを作成・表示する
	var setHtml  ="";
	setHtml += "<h2>パスワード</h2>";
	setHtml += "<div class='pwdwrap'>";
	setHtml += "<p class='info'>ログインIDを入力してください。<p>";
	setHtml += "<p id='loginerror2' class='loginerror2'></p>";
	setHtml += "<p class='login'>";
	setHtml += "<input type='text' id='pr_login2' name='pr_login2' value='' />";
	setHtml += "</p>";
	setHtml += "<p class='loginbutton'>";
	setHtml += "<a href='javascript:void(0);' onClick='javascript:postReminderId();' class='nextBtn'>次へ</a>";
	setHtml += "</p>";
	setHtml += "<p class='caution'>※無料お試しサービスのパスワード忘れには対応しておりません。</p>";
	setHtml += "</div>";

	obFormBody.html(setHtml);

    // 入力箇所にキー押下イベントを付加する
	$("#pr_login2").keydown(function(e) {
	 	e = e || window.event;
	 	if(getKeyCode(e)==13){ // リターンキー
			return postReminderId();
		}	
	});

	$("#pr_login2").focus();
}

/*
 * ログインIDをサーバーにPOSTし、結果を取得する
 */
function postReminderId() {
	var getId = $("#pr_login2").val();
	// エラー表示部分をクリアする
	$("#loginerror2").html("");
	
	if (getId == "") {
		dipslayReminderResult("0", "ログインIDを入力してください。");
		return false;
	}
	// サーバーとXML通信を行う。
	$.ajax({ 
		url: 			reminderUrl,
		type: 			'POST',
    	dataType: 'xml',
		timeout: 	connectTimeout,
		data: "pr_login=" + getId,
		success: function(xml) {	// POSTに成功した場合の処理
			var getCode = "";
			var getMess = "";
			$(xml).find('code').each(function() {
				getCode = $(this).text();
			});
			$(xml).find('message').each(function() {
				getMess = $(this).text();
			});
			dipslayReminderResult(getCode, getMess);
		},
		error: function() {	// POSTに失敗した場合の処理
			dipslayReminderResult("0", connectErrorMess);
		}
	});
}

/*
 * ログインIDをサーバーにPOSTした結果を画面上に表示する
 */
function dipslayReminderResult(code, message) {
	var setHtml = "";
	switch (code) {

		// 異常系の表示
		case "0":
			// 表示中のフォーム下部にエラーメッセージを表示し、ID入力欄にフォーカスを移動する
			$("#loginerror2", ".pwdwrap").html(message);
			$("#pr_login2").focus();
			break;

		// 正常系1（ユーザへのメール送信完了の場合）の表示
		case "1":
			$(".pwdwrap").html(getSuccessSendHtml1());
			break;

		// 正常系2（要：契約管理Keyの場合）の表示
		case "2":
			setHtml += "<p class='info'>パスワードは、<strong>契約管理者</strong>にご確認ください。</p>";
			setHtml += "<p class='middleclose'><a href='javascript:closeLoginForm();'>× このウインドウを閉じる</a></p>";
			setHtml += "<p class='subinfo'>契約を担当された方がパスワードを忘れた場合には、<strong>契約管理Key</strong>を入力してください。</p>";
			setHtml += "<p class='keyerror'></p>";
			setHtml += "<p class='key'><input type='text' id='pr_key' name='pr_key' value='' />";
			setHtml += "<input type='hidden' id='pr_login' name='pr_login' value='" + message + "' />";
			setHtml += "<a href='javascript:postInquireKey();' class='nextBtn'>次へ</a></p>";
			$(".pwdwrap").html(setHtml);

		    // 入力箇所にキー押下イベントを付加する
			$("#pr_key").keydown(function(e) {
			 	e = e || window.event;
			 	if(getKeyCode(e)==13){ // リターンキー
					return postInquireKey();
				}	
			});

			$("#pr_key").focus();
			break;

		// 正常系3（マイページユーザへのメール送信完了の場合）の表示
		case "3":
			$(".pwdwrap").html(getSuccessSendHtml2());
			break;
	}
}

/*
 * 契約管理KeyをサーバーにPOSTし、結果を取得する
 */
function postInquireKey() {
	var getKey = $("#pr_key").val();
	var getId = $("#pr_login").val();

	// エラー表示部分をクリアする
	$("#keyerror").html("");
	
	if (getKey == "") {
		dipslayInquireResult("0", "契約管理Keyを入力してください。");
		return;
	}

	// サーバーとXML通信を行う。
	$.ajax({ 
		url: 			inquireUrl,
		type: 			'POST',
    dataType: 'xml',
		timeout: 	connectTimeout,
		data: "pr_key=" + getKey + "&pr_login=" + getId,
		success: function(xml) {	// POSTに成功した場合の処理
			var getCode = "";
			var getMess = "";
			$(xml).find('code').each(function() {
				getCode = $(this).text();
			});
			$(xml).find('message').each(function() {
				getMess = $(this).text();
			});
			dipslayInquireResult(getCode, getMess);
		},
		error: function() {	// POSTに失敗した場合の処理
			dipslayInquireResult("0", connectErrorMess);
		}
	});
}

/*
 * 契約管理KeyをサーバーにPOSTした結果を画面上に表示する
 */
function dipslayInquireResult(code, message) {
	var setHtml = "";
	switch (code) {

		// 異常系の表示
		case "0":
			// 表示中のフォーム下部にエラーメッセージを表示し、ID入力欄にフォーカスを移動する
			$(".keyerror", ".pwdwrap").html(message);
			$("#pr_key").focus();
			$("#pr_key").select();
			break;
			
		// 正常系1（ユーザへのメール送信完了の場合）の表示
		case "1":
			$(".pwdwrap").html(getSuccessSendHtml1());
			break;
	}
}

/*
 * メール送信完了時のメッセージを定義
 */
function getSuccessSendHtml1() {
	var setHtml = 	"<p class='info'>登録されているメールアドレス宛に<strong>メールを送信</strong>しました。</p>";
	setHtml += "<p class='secondInfo'>メール内に記述された<strong>URLにアクセス</strong>し、<br /><strong>パスワードの再設定</strong>を行ってください。</p>";
	setHtml += "<p class='bottomclose'><a href='javascript:closeLoginForm();'>× このウインドウを閉じる</a></p>";
	return setHtml;
}

/*
 * メール送信完了時のメッセージを定義
 */
function getSuccessSendHtml2() {
	var setHtml = 	"<p class='info'>登録されているメールアドレス宛に<strong>メールを送信</strong>しました。</p>";
	setHtml += "<p class='secondInfo'>メール内に記述された<strong>URLにアクセス</strong>し、<br /><strong>パスワードの再設定</strong>を行ってください。</p>";
	setHtml += "<p class='bottomclose'><a href='javascript:closeLoginForm();'>× このウインドウを閉じる</a></p>";
	return setHtml;
}

/*
 * 切り替えた画面を最初のログインフォームに戻す
 * （このファンクションは使用しないかも・・・。）
 */
function restoreForm() {
	$(".body", "#" + FORM_ID).html(formHtml);
	var obFormBody = $(".body", "#" + FORM_ID);
	obFormBody.toggleClass("reminder");

	// 入力値の復元
	$("#loginname", obFormBody).val(loginStr);
	$("#loginpass", obFormBody).val(pwdStr);
	if (isAutoLogin) { $("#chkAuto", obFormBody)[0].checked = true; }
}

/*******************************************************************/
/* 下記は、右カラム用
/*******************************************************************/
/*
 * パスワードリマインダーのHTMLフォーム
 */
function getReminderFrom() {
	var html  ="";
	html += "<form>";
	html += '<p id="loginerror"></p>';
	html += '<p class="info">ログインIDを入力し、「次へ」をクリックしてください。<br />登録されたメールアドレスにパスワード変更のURLを送信します。</p>';
	html += "<table>";
	html += '<tr><td><label for="pr_login">ログインID</label></td><td><input type="text" name="pr_login" id="pr_login" value="" onfocus="this.select();" ></td></tr>';
	html += '<tr><td colspan="2"><div style="text-align: right;"><input id="backBtn" type="button" value="戻る" onclick="return restoreForm2();" /><input id="nextBtn" type="button" value="次へ" onclick="return postReminderId2();" /></div></td></tr>';
	html += "</table>";
	html += "<p class='caution'>※無料お試しサービスのパスワード忘れには対応しておりません。</p>";
	html += "</form>";

	return html;
}

/*
 * パスワードリマインダー用画面に切り替える
 */
function startReminder2() {

	// エラー表示部分をクリアする
	$("#loginerror").html("");

	var obFormBody = $("#pypagelogin");
	obFormBody.toggleClass("reminder");

	// ログインフォームのHTML情報を一旦保存する
	formHtml = obFormBody.html();
	loginStr = $("#loginname", obFormBody).val();
	pwdStr = $("#loginpass", obFormBody).val();
	isAutoLogin = $("#chkAuto")[0].checked;

	// リマインダーフォームをセット
	obFormBody.html(getReminderFrom());

    // 入力箇所にキー押下イベントを付加する
	$("#pr_login").keydown(function(e) {
	 	e = e || window.event;
	 	if(getKeyCode(e)==13){ // リターンキー
			return postReminderId2();
		}	
	});

	$("#pr_login").focus();
}

function restartReminder2(loginid) {

	// エラー表示部分をクリアする
	$("#loginerror").html("");

	var obFormBody = $("#pypagelogin");
	obFormBody.toggleClass("reminder");

	// リマインダーフォームをセット
	obFormBody.html(getReminderFrom());

	$("#pr_login", obFormBody).val(loginid);

    // 入力箇所にキー押下イベントを付加する
	$("#pr_login").keydown(function(e) {
	 	e = e || window.event;
	 	if(getKeyCode(e)==13){ // リターンキー
			return postReminderId2();
		}	
	});

	$("#pr_login").focus();
}

/*
 * ログインIDをサーバーにPOSTし、結果を取得する
 */
function postReminderId2() {

	// エラー表示部分をクリアする
	$("#loginerror").html("");

    // ボタンを使用不可にする
	$("#backBtn").attr('disabled', 'disabled');
	$("#nextBtn").attr('disabled', 'disabled');

	var getId = $("#pr_login").val();
	
	if (getId == "") {
		dipslayReminderResult2("0", "ログインIDを入力してください。");
		// ボタンを使用可能にする
		$("#backBtn").attr('disabled', '');
		$("#nextBtn").attr('disabled', '');
	} else {
		// サーバーとXML通信を行う。
		$.ajax({ 
			url: 			reminderUrl,
			type: 			'POST',
	    	dataType: 'xml',
			timeout: 	connectTimeout,
			data: "pr_login=" + getId,
			success: function(xml) {	// POSTに成功した場合の処理
				var getCode = "";
				var getMess = "";
				$(xml).find('code').each(function() {
					getCode = $(this).text();
				});
				$(xml).find('message').each(function() {
					getMess = $(this).text();
				});
				dipslayReminderResult2(getCode, getMess);

				// ボタンを使用可能にする
				$("#backBtn").attr('disabled', '');
				$("#nextBtn").attr('disabled', '');
			},
			error: function(req, status, errorThrown) {	// POSTに失敗した場合の処理
				dipslayReminderResult2("0", connectErrorMess);

				// ボタンを使用可能にする
				$("#backBtn").attr('disabled', '');
				$("#nextBtn").attr('disabled', '');
			}
		});
	}

	return false;
}

/*
 * ログインIDをサーバーにPOSTした結果を画面上に表示する
 */
function dipslayReminderResult2(code, message) {
	var setHtml = "";
	switch (code) {

		// 異常系の表示
		case "0":
			// 表示中のフォーム下部にエラーメッセージを表示し、ID入力欄にフォーカスを移動する
			$("#loginerror").html(message);
			$("#pr_login").focus();
			break;

		// 正常系1（ユーザへのメール送信完了の場合）の表示
		case "1":
			$("#pypagelogin").html(getSuccessSendHtml3());
			break;

		// 正常系2（要：契約管理Keyの場合）の表示
		case "2":
			setHtml += "<form>";
			setHtml += '<p id="loginerror"></p>';
			setHtml += '<p class="info">入力したログインIDのパスワードは、<strong>契約管理者</strong>にご確認ください。<br />契約管理者でパスワードを忘れた場合には、以下に<strong>契約管理Key</strong>を入力し、「次へ」をクリックしてください。</p>';
			setHtml += "<table>";
			setHtml += '<tr><td><label for="pr_key">契約管理Key</label></td><td><input type="text" name="pr_key" id="pr_key" value="" onfocus="this.select();" ></td></tr>';
			setHtml += '<tr><td colspan="2"><div style="text-align: right;"><input id="backBtn" type="button" value="戻る" onclick="return restartReminder2(\'' + message + '\');" /><input id="nextBtn" type="button" value="次へ" onclick="return postInquireKey2();" /></div></td></tr>';
			setHtml += "</table>";
			setHtml += "<input type='hidden' id='pr_login' name='pr_login' value='" + message + "' />";
			setHtml += "</form>";
			$("#pypagelogin").html(setHtml);
			$("#pr_key").focus();
			break;

		// 正常系3（マイページユーザへのメール送信完了の場合）の表示
		case "3":
			$("#pypagelogin").html(getSuccessSendHtml4());
			break;
	}
}

/*
 * 契約管理KeyをサーバーにPOSTし、結果を取得する
 */
function postInquireKey2() {
	var getKey = $("#pr_key").val();
	var getId = $("#pr_login").val();

	// エラー表示部分をクリアする
	$("#loginerror").html("");

    // ボタンを使用不可にする
	$("#backBtn").attr('disabled', 'disabled');
	$("#nextBtn").attr('disabled', 'disabled');

	if (getKey == "") {
		dipslayInquireResult2("0", "契約管理Keyを入力してください。");

		// ボタンを使用可能にする
		$("#backBtn").attr('disabled', '');
		$("#nextBtn").attr('disabled', '');
	} else {

		// サーバーとXML通信を行う。
		$.ajax({ 
			url: 			inquireUrl,
			type: 			'POST',
	    	dataType: 	'xml',
			timeout: 	connectTimeout,
			data: 		"pr_key=" + getKey + "&pr_login=" + getId,
			success: function(xml) {	// POSTに成功した場合の処理
				var getCode = "";
				var getMess = "";
				$(xml).find('code').each(function() {
					getCode = $(this).text();
				});
				$(xml).find('message').each(function() {
					getMess = $(this).text();
				});
				dipslayInquireResult2(getCode, getMess);

				// ボタンを使用可能にする
				$("#backBtn").attr('disabled', '');
				$("#nextBtn").attr('disabled', '');
			},
			error: function() {	// POSTに失敗した場合の処理
				dipslayInquireResult2("0", connectErrorMess);

				// ボタンを使用可能にする
				$("#backBtn").attr('disabled', '');
				$("#nextBtn").attr('disabled', '');
			}
		});
	}

	return false;
}

/*
 * 契約管理KeyをサーバーにPOSTした結果を画面上に表示する
 */
function dipslayInquireResult2(code, message) {
	var setHtml = "";
	switch (code) {

		// 異常系の表示
		case "0":
			// 表示中のフォーム下部にエラーメッセージを表示し、ID入力欄にフォーカスを移動する
			$("#loginerror").html(message);
			$("#pr_key").focus();
			$("#pr_key").select();
			break;
			
		// 正常系1（ユーザへのメール送信完了の場合）の表示
		case "1":
			$("#pypagelogin").html(getSuccessSendHtml3());
			break;
	}
}

/*
 * メール送信完了時のメッセージを定義
 */
function getSuccessSendHtml3() {
	var setHtml = '';
	setHtml += "<p class='info'>登録されているメールアドレス宛に<strong>メールを送信</strong>しました。</p>";
	setHtml += "<p class='info'>メール内に記述された<strong>URLにアクセス</strong>し、<br /><strong>パスワードの再設定</strong>を行ってください。</p>";
	setHtml += '<input id="backBtn" type="button" value="ログインフォームに戻る" onclick="return restoreForm2();" />';
	return setHtml;
}

/*
 * メール送信完了時のメッセージを定義
 */
function getSuccessSendHtml4() {
	var setHtml = '';
	setHtml += "<p class='info'>登録されているメールアドレス宛に<strong>メールを送信</strong>しました。</p>";
	setHtml += "<p class='info'>メール内に記述された<strong>URLにアクセス</strong>し、<br /><strong>パスワードの再設定</strong>を行ってください。</p>";
	setHtml += '<input id="backBtn" type="button" value="ログインフォームに戻る" onclick="return restoreForm2();" />';
	return setHtml;
}

/*
 * 切り替えた画面を最初のログインフォームに戻す
 */
function restoreForm2() {
	var obFormBody = $("#pypagelogin");
	obFormBody.html(formHtml);
	obFormBody.toggleClass("reminder");

	// 入力値の復元
	$("#loginname", obFormBody).val(loginStr);
	$("#loginpass", obFormBody).val(pwdStr);
	$("#chkAuto", obFormBody)[0].checked = isAutoLogin;

	return false;
}

