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

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

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

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


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

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

	var obFormBody = $(".body", "#" + FORM_ID);
	obFormBody.toggleClass("reminder");

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

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

	obFormBody.html(setHtml);

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

	$("#pr_login")[0].focus();
}

/*
 * ログインIDをサーバーにPOSTし、結果を取得する
 */
function postReminderId() {
	var getId = $("#pr_login").val();
	// エラー表示部分をクリアする
	$("#loginerror").html("");
	
	if (getId == "") {
		dipslayReminderResult("0", "ログインIDを入力してください。");
		return;
	}

	// サーバーと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入力欄にフォーカスを移動する
			$(".loginerror", ".pwdwrap").html(message);
			$("#pr_login").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").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; }
}
