// ログイン処理フラグ
var loginFlg = false;

// ログイン関連関数
function CheckEnter()
{
	if (window.event) {
		if (event.keyCode == 13) {
			objrequire(login);
		}
	}
}
function toLowerIDPass()
{
	document.getElementById('userID').value = document.getElementById('userID').value.toLowerCase();
	document.getElementById('password').value = document.getElementById('password').value.toLowerCase();
}

function objrequire(obj)
{

	if(loginFlg) {
		return false;
	} else {
		loginFlg = true;
	}

	var userid = obj.userID.value;
	var password  = obj.password.value;

	// cookie有効性チェックを実施する
	if(!checkCookie()){
		loginFlg = false;
		return false;
	}

	if(!objnullchk(userid)){
	  account = new Array('ID');
	  alert(getMessage('errors.required', account));
	  loginFlg = false;
	  return false;
	}

	resultnum = betweenchk(userid, 4, 12);
	if((!resultnum == 0) || (!userid.match(/^[0-9|A-Z|a-z]+$/))){
		account = new Array('ID','4','12');
		alert(getMessage('errors.min.to.maxlength', account));
		loginFlg = false;
		return false;
	}
	resultnum = passwordchk( password );
	if(resultnum == -1){
	  pass = new Array('パスワード');
	  alert(getMessage('errors.required', pass));
	  loginFlg = false;
	  return false;
	}
	if(resultnum == -2 || resultnum == -3){
		alert(getMessage('errors.min.to.maxlength', new Array('パスワード', 4, 16)));
		loginFlg = false;
		return false;
	}
	if(resultnum == -4){
		alert(getMessage('errors.invalid', new Array('パスワード')));
		loginFlg = false;
		return false;
	}
	
	DWREngine.setTimeout(1000);		// DWR実行タイムアウト
	DWREngine.setAsync(false);		// 同期的に実行(false で同期)
	
    // アカウントチェックをする
    LoginChk.existAccount(callbackExistAccount, obj.userID.value, obj.password.value, '');
	function callbackExistAccount(data) {
		if(data == 0){
			// パスワード変更が必要かチェック
			var res = chkPwUpdateRequired(obj.userID.value);
			if (res) {
				loginFlg = false;
				return; 
			}
			chkIdResult(true);
			return;
		} else if (data == 2) {
			alert(
				'パスワード入力間違いが規定回数に達しましたので、\n' +
				'不正ログイン防止のためログイン制限状態とさせていただきます。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしましたので、メールをご確認ください。\n');
			loginFlg = false;
		} else if (data == 3) {
			alert(
				'不正ログイン防止のため、本IDはログイン制限状態となっています。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしていますので、メールをご確認ください。');
			loginFlg = false;
		} else {
			chkIdResult(false);
		}
		obj.password.value = '';
	}
}

/**
 * ログイン処理時に使用します。<br>
 * パスワード変更が必要かチェックします。
 * @param accountID
 * @return
 */
function chkPwUpdateRequired(accountID) {
	 return false; // 使用する場合は以下コメントはずす（common.js、neadea_common.js、account.js）
//	DWREngine.setTimeout(1000);		// DWR実行タイムアウト
//	DWREngine.setAsync(false);		// 同期的に実行(false で同期)
//	
//	var required = false;
//	PwChk.isPwUpdateRequired(callbackChkPwUpdateRequired, accountID);
//	return required;
//	
//	function callbackChkPwUpdateRequired(res) {
//		required = res;
//		if (res) {
//			alert('■　お知らせ　■ \n' + 
//					'@gamesサポートチームです。\n' +
//					'セキュリティ確保のため登録メールにパスワード変更手続きのURLを送付いたしました。\n' +
//					'お手数ですがパスワードを変更くださるようお願いいたします。\n' +
//					'変更後は通常ログインにて@gamesをご利用いただけます。');
//			loginFlg = false;
//		}
//	}
}

function chkIdResult(data)
{
	if(data == false){
		alert('ログインできません。');
		loginFlg = false;
	}else{
		if ((typeof(login) == 'undefined') || (typeof(login) == 'object')) {
			document.getElementsByTagName('form').item(0).submit();
		} else if (login instanceof HTMLFormElement) {
			login.submit();
		} else {
			for(var i=0;i<login.length;i++) {
				if (login[i] instanceof HTMLFormElement) {
					login[i].submit();
					break;
				}
			}
		}
	}
}

function passwordchk(inString)
{
	if(!objnullchk(inString)){
		// 未入力
		return -1;
	}else{
		resultnum = betweenchk(inString, 4, 16);
		if(resultnum == -1){
			// 入力文字数不足
			return -2;
		}else if(resultnum == -2){
			// 入力文字数超過
			return -3;
		}

		if(!inString.match(/^[-0-9a-zA-Z\!\"\'\#\$\%\&\(\)\*\+\,\.\/\:\;\<\>\=\?\@\[\]\\\^\_\`\{\}\|\~]+$/)){
			// 入力禁止文字
			return -4;
		}
	}
	return 0;
}

function objnullchk(data)
{
	var result = true;
	if(data == null){
		result = false;
	}
	if(data == ""){
		result = false;
	}
	return result;
}
