 /**
 * アカウント管理およびトップページにて使用するjs
 * @author Gportal
 * @date    $Date: $
 * @version $Revision: $
 * 
 */
 
// チェックフラグ
var regchkflg = 0;

// ログイン処理フラグ
var loginFlg = false;

/** ログイン処理 */

 /**
 * （トップページ）
 * ログイン処理時のアカウント存在チェックを行う。<br>
 * message.js関数使用
 * @param inputvalue 親ウィンドウに返す値
 * 
 */
function objrequire(obj){

	if(loginFlg) {
		return false;
	} else {
		loginFlg = true;
	}

	var accountid = obj.accountID.value;
	var password  = obj.password.value;
	//var resultnum = 0;

	// cookie有効性チェックを実施する
	if(!checkCookie()){
		loginFlg = false;
		return false;
	}

    //require
    if(!objnullchk(accountid)){
      account = new Array('ID');
      alert(getMessage('errors.required', account));
if(document.getElementById('errorTxt2'))
{
document.getElementById('errorTxt2').style.display='block';
}
      loginFlg = false;
      return false;
    }
    
    /*
    「IDは"半角英数字で"4文字以上12文字以下でご入力ください」でお願いいたします
     ID同様、「パスワードは"半角英数字で"4文字以上16文字以下でご入力ください」でお願いいたします     
    */
    //mintomax
    resultnum = betweenchk(accountid, 4, 12);
    if((!resultnum == 0) || (!accountid.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));

if(document.getElementById('errorTxt3'))
{
document.getElementById('errorTxt3').style.display='block';
}


      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.accountID.value, obj.password.value, oldUserID);
	function callbackExistAccount(data) {
		if(data == 0){
			// パスワード変更が必要かチェック
			var res = chkPwUpdateRequired(obj.accountID.value);
			if (res) {
				loginFlg = false;
				return; 
			}
			login_submit();
			return;
		} else if (data == 2) {
			alert(
				'パスワード入力間違いが規定回数に達しましたので、\n' +
				'不正ログイン防止のためログイン制限状態とさせていただきます。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしましたので、メールをご確認ください。');
			loginFlg = false;
		} else if (data == 3) {
			alert(
				'不正ログイン防止のため、本IDはログイン制限状態となっています。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしていますので、メールをご確認ください。');
			loginFlg = false;
		} else {
			loginfail();
		}
		obj.password.value = '';
		obj.password.focus();
	}
}

function login_submit() {
	setCookieIdSave();

	document.login.method="POST";
	document.login.action="https://www.atgames.jp/atgames/login.do";
	document.login.submit();
}

function popup_login_submit() {
	//setCookieIdSave();	
	document.popuplogin.method="POST";
	document.popuplogin.action="https://www.atgames.jp/atgames/popupLogin.do";
	document.popuplogin.submit();
}


/**
 * （トップページ）
 * ログイン処理時のアカウント存在チェックを行う。<br>
 * message.js関数使用
 * @param inputvalue 親ウィンドウに返す値
 * 
 */
function objrequireForPopup(obj){

	if(loginFlg) {
		return false;
	} else {
		loginFlg = true;
	}

	var accountid = obj.accountID.value;
	var password  = obj.password.value;
	//var resultnum = 0;

	// cookie有効性チェックを実施する
	if(!checkCookie()){
		loginFlg = false;
		return false;
	}

    //require
    if(!objnullchk(accountid)){
      account = new Array('ID');
      alert(getMessage('errors.required', account));
      loginFlg = false;
      return false;
    }
    /*
    「IDは"半角英数字で"4文字以上12文字以下でご入力ください」でお願いいたします
     ID同様、「パスワードは"半角英数字で"4文字以上16文字以下でご入力ください」でお願いいたします     
    */
    //mintomax
    resultnum = betweenchk(accountid, 4, 12);
    if((!resultnum == 0) || (!accountid.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.accountID.value, obj.password.value, oldUserID);
	function callbackExistAccount(data) {
		if(data == 0){
			// パスワード変更が必要かチェック
			var res = chkPwUpdateRequired(obj.accountID.value);			
			if (res) {
				loginFlg = false;
				return; 
			}
			document.popuplogin.parentReloadUrl.value = window.opener.location.href;
			popup_login_submit();
			return;
		} else if (data == 2) {
			alert(
				'パスワード入力間違いが規定回数に達しましたので、\n' +
				'不正ログイン防止のためログイン制限状態とさせていただきます。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしましたので、メールをご確認ください。');
			loginFlg = false;
		} else if (data == 3) {
			alert(
				'不正ログイン防止のため、本IDはログイン制限状態となっています。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしていますので、メールをご確認ください。');
			loginFlg = false;
		} else {
			loginfail();
		}
		obj.password.value = '';
		obj.password.focus();
	}
}

 /**
 * （トップページ）
 * ログイン処理時のアカウント(Biglobeユーザ)存在チェックを行う。<br>
 * message.js関数使用
 * @param inputvalue 親ウィンドウに返す値
 * 
 */
function objrequireBiglobe(obj){

	if(loginFlg) {
		return false;
	} else {
		loginFlg = true;
	}

	var accountid = obj.accountID.value;
	var password  = obj.password.value;
	//var resultnum = 0;

	// cookie有効性チェックを実施する
	if(!checkCookie()){
		loginFlg = false;
		return false;
	}

    //require
    if(!objnullchk(accountid)){
      account = new Array('ID');
      alert(getMessage('errors.required', account));
      loginFlg = false;
      return false;
    }

    /*
    「IDは"半角英数字で"4文字以上12文字以下でご入力ください」でお願いいたします
     ID同様、「パスワードは"半角英数字で"6文字以上16文字以下でご入力ください」でお願いいたします     
    */
    //mintomax
    resultnum = betweenchk(accountid, 4, 12);
    if((!resultnum == 0) || (!accountid.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.existBiglobeAccount(callbackExistAccount, obj.accountID.value, obj.password.value);
	function callbackExistAccount(data) {
		if(data == 0){
			// パスワード変更が必要かチェック
			var res = chkPwUpdateRequired(obj.accountID.value);
			if (res) {
				loginFlg = false;
				return; 
			}
			login_submit();
			return;
		} else if (data == 2) {
			alert(
				'パスワード入力間違いが規定回数に達しましたので、\n' +
				'不正ログイン防止のためログイン制限状態とさせていただきます。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしましたので、メールをご確認ください。');
			loginFlg = false;
		} else if (data == 3) {
			alert(
				'不正ログイン防止のため、本IDはログイン制限状態となっています。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしていますので、メールをご確認ください。');
			loginFlg = false;
		} else {
			loginfail();
		}
		obj.password.value = '';
		obj.password.focus();
	}
	setCookieIdSave();
}

 /**
 * （トップページ）
 * ログイン処理時のアカウント(Gooユーザ)存在チェックを行う。<br>
 * message.js関数使用
 * @param inputvalue 親ウィンドウに返す値
 * 
 */
function objrequireGoo(obj){

	if(loginFlg) {
		return false;
	} else {
		loginFlg = true;
	}

	var accountid = obj.accountID.value;
	var password  = obj.password.value;
	//var resultnum = 0;

	// cookie有効性チェックを実施する gooの場合はcookie不要
	//if(!checkCookie()){
	//	loginFlg = false;
	//	return false;
	//}

    //require
    if(!objnullchk(accountid)){
      account = new Array('ID');
      alert(getMessage('errors.required', account));
      loginFlg = false;
      return false;
    }

    /*
    「IDは"半角英数字で"4文字以上12文字以下でご入力ください」でお願いいたします
     ID同様、「パスワードは"半角英数字で"4文字以上16文字以下でご入力ください」でお願いいたします     
    */
    //mintomax
    resultnum = betweenchk(accountid, 4, 12);
    if((!resultnum == 0) || (!accountid.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.existGooAccount(callbackExistAccount, obj.accountID.value, obj.password.value);
	function callbackExistAccount(data) {
		if(data == 0){
			// パスワード変更が必要かチェック
			var res = chkPwUpdateRequired(obj.accountID.value);
			if (res) {
				loginFlg = false;
				return; 
			}
			login_submit();
			return;
		} else if (data == 2) {
			alert(
				'パスワード入力間違いが規定回数に達しましたので、\n' +
				'不正ログイン防止のためログイン制限状態とさせていただきます。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしましたので、メールをご確認ください。');
			loginFlg = false;
		} else if (data == 3) {
			alert(
				'不正ログイン防止のため、本IDはログイン制限状態となっています。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしていますので、メールをご確認ください。');
			loginFlg = false;
		} else {
			loginfail();
		}
		obj.password.value = '';
		obj.password.focus();
	}
}

 /**
 * （トップページ）
 * ログイン処理時のアカウント(Ocnユーザ)存在チェックを行う。<br>
 * message.js関数使用
 * @param inputvalue 親ウィンドウに返す値
 * 
 */
function objrequireOcn(obj){

	if(loginFlg) {
		return false;
	} else {
		loginFlg = true;
	}

	var accountid = obj.accountID.value;
	var password  = obj.password.value;
	//var resultnum = 0;

	// cookie有効性チェックを実施する gooの場合はcookie不要
	//if(!checkCookie()){
	//	loginFlg = false;
	//	return false;
	//}

    //require
    if(!objnullchk(accountid)){
      account = new Array('ID');
      alert(getMessage('errors.required', account));
      loginFlg = false;
      return false;
    }

    /*
    「IDは"半角英数字で"4文字以上12文字以下でご入力ください」でお願いいたします
     ID同様、「パスワードは"半角英数字で"4文字以上16文字以下でご入力ください」でお願いいたします     
    */
    //mintomax
    resultnum = betweenchk(accountid, 4, 12);
    if((!resultnum == 0) || (!accountid.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.existOcnAccount(callbackExistAccount, obj.accountID.value, obj.password.value);
	function callbackExistAccount(data) {
		if(data == 0){
			// パスワード変更が必要かチェック
			var res = chkPwUpdateRequired(obj.accountID.value);
			if (res) {
				loginFlg = false;
				return; 
			}
			login_submit();
			return;
		} else if (data == 2) {
			alert(
				'パスワード入力間違いが規定回数に達しましたので、\n' +
				'不正ログイン防止のためログイン制限状態とさせていただきます。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしましたので、メールをご確認ください。');
			loginFlg = false;
		} else if (data == 3) {
			alert(
				'不正ログイン防止のため、本IDはログイン制限状態となっています。\n' +
				'登録メールアドレス宛に制限解除ページのURLを記載したメールを\n' +
				'お送りしていますので、メールをご確認ください。');
			loginFlg = false;
		} else {
			loginfail();
		}
		obj.password.value = '';
		obj.password.focus();
	}
}

 /**
  * ログイン処理時に使用します。<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;
// 		}
// 	}
 }

 /**
 * （トップページ）
 * ログイン処理時に使用する<br>
 * アカウントチェックのコールバック関数
 * @param data アカウントチェック関数からの戻り値
 * 
 */
function chkIdResult(data) {
//明示的に変更
var login = document.getElementById('login');
  if(data == false){
    loginfail();
  }else{
    setCookieIdSave();	  
    login.method="POST";
    login.action="http://www.atgames.jp/atgames/login.do";
    login.submit();
  }
}

 /**
 * （トップページ）
 * ログイン処理時に使用する<br>
 * 入力がされていないかどうかをチェックする
 * @param data 入力されたデータ
 * 
 */
function objnullchk(data){
  var result = true;
  if(data == null){
    result = false;
  }
  if(data == ""){
    result = false;
  }
  return result;
}

 /**
 * （トップページ）
 * ログイン処理時に使用する<br>
 * ログインが出来ない場合のエラーメッセージ処理
 * 
 */
function loginfail(){
  alert('ログインできません。');
  loginFlg = false;
  return false;
}
/*****************/

 /**
 * （アカウント管理）
 * Modalダイアログの時ウィンドウを閉じる
 * @param inputvalue 親ウィンドウに返す値
 * 
 */
    function winclose(inputvalue){
        returnValue = inputvalue;
        self.window.close();
    }

 /**
 * （アカウント管理）
 * アカウントないし、ニックネームの
 * 重複チェック用Modalダイアログをオープンする
 * @param chkflg 0: アカウントチェック 1: ニックネームチェック
 * 
 */
function registaccount(obj, chkflg){
    var result = "";

    name = 'parent';
    if(chkflg == 0){
        // アカウントチェック
        result = newWindowModal('/atgames/acchk.do?id='+obj.value,name,330,310,'toolbar=no,location=no,status=no,menubar=no,scrollbars=no');
    }else{
        // ニックネームチェック
        result = newWindowModal('/atgames/nickchk.do?id='+obj.value,name,330,310,'toolbar=no,location=no,status=no,menubar=no,scrollbars=no');
    }
    
    if(result != undefined){
        // 結果を入力欄に出力
        obj.value = result;
    }
}

 /**
 * （アカウント管理）
 * アカウントないし、ニックネームの
 * 重複チェックを行う
 * @param obj フォームオブジェクト名(<form name="フォーム名">)
 * @param chkflg チェック方法 0: アカウントチェック 1:ニックネーム
 * 
 */
function accountChk(objvalue, chkflg)
{
    if(doublePushChk(document.chkform.SUBSW.value) == '1'){
        alert('実行中です');
        return false;
    }
    document.chkform.SUBSW.value = '1';
    
    // H18/04/20
    if(chkflg == 0){
        // 数値以外が入力されていないか
        if(!(objvalue.match(/^[0-9|A-Z|a-z]+$/))){
            alert("IDの入力は半角英数字で４文字～１２文字までです");
		}else if( (objvalue.length < 4) | (objvalue.length > 12) ){
			alert("IDの入力は半角英数字で４文字～１２文字までです");
        }else{
            // idが存在するか
            //LoginChk.idChk(CallBackAccount,objvalue, chkflg);
            LoginChk.existId(CallBackAccount,objvalue, chkflg);
        }
    }else{
	    var dmy,i,count=0;
	    
	    count = StrLen(objvalue);
		if( (count < 4) | (count > 16) ){
			alert("ニックネームの入力は全角２～８(半角４～１６)文字までです");
		}else if(objvalue == "ゲスト" || objvalue == "退会されています"){
			alert("使用できない文字列が含まれています");
        }else{
	        // ニックネームが存在するか
	        //LoginChk.idChk(CallBackNickname,objvalue, chkflg);
	        LoginChk.existId(CallBackNickname,objvalue, chkflg);
        }
    }
    document.chkform.SUBSW.value = '0';
}

// 文字列長を返す関数（文字コードの「~」(0x007E)より後の文字を全て2バイトとみなす）
// UTF-8でもShift-JISでも対応
function StrLen(str)
{
    var ct;
    var size = 0;

    for(ct = 0; ct < str.length; ct++) {
        var c = str.charCodeAt(ct);
        if(c >= 128){
            size++;
        }
        size++;
    }
    return size;
}


 /**
 * （アカウント管理）
 * submitボタン等の2重押し防止チェック
 * hidden用フラグの戻り値により判定結果を返す
 * @param obj hidden用フラグ
 * @return 判定後の戻り値 1:実行中 0:停止中
 */
function doublePushChk(obj){
    if(obj == 1){
        return 1;
    }else{
        return 0;
    }
}

 /**
 * （アカウント管理）
 * 重複チェック後のアカウント用コールバック関数
 * 戻った結果により表示する内容を書き換える
 * @param obj フォームオブジェクト名(<form name="フォーム名">)
 * @param data コールバック後の結果
 * 
 */
    function CallBackAccount(data){
        if(data == 0){
            // 正常
            document.getElementById("checking").style.display = "none";
            document.getElementById("displayid").innerHTML = chkform.id.value;
            document.getElementById("ok").style.display = "block";
        }else{
            // 異常
            document.getElementById("checking").style.display = "block";
            document.getElementById("default").style.display = "none";
            document.getElementById("warning").style.display = "block";
            document.getElementById("ok").style.display = "none";
        }
    }

 /**
 * （アカウント管理）
 * 重複チェック後のアカウント用コールバック関数
 * 戻った結果により表示する内容を書き換える
 * @param data コールバック後の結果
 * 
 */
    function CallBackNickname(data){
        if(data == 0){
            // 正常
            document.getElementById("checking").style.display = "none";
            document.getElementById("displayid").innerHTML = chkform.id.value;
            document.getElementById("ok").style.display = "block";
        }else{
            // 異常
            document.getElementById("checking").style.display = "block";
            document.getElementById("default").style.display = "none";
            document.getElementById("warning").style.display = "block";
            document.getElementById("ok").style.display = "none";
        }
    }

 /**
 * （アカウント管理）
 * 各入力チェックを行い正常であれば、submit()を実行する
 * @param obj フォームオブジェクト
 * 
 */
function submitChk(obj){
	DWREngine.setTimeout(1000);		// DWR実行タイムアウト
	DWREngine.setAsync(false);		// 同期的に実行(false で同期)
	
	if(doublePushChk(obj.SUBSW.value) == '1'){
		alert('実行中です');
		obj.SUBSW.value = '0';
		return false;
	}
	obj.SUBSW.value = '1';

	// エラーカウント初期化
	errcnt = 0;

	// IDチェック
	if(!objnullchk(obj.user_id.value)){
		alert('入力されていない項目があります');
		obj.SUBSW.value = '0';
        return false;

    }else if(betweenchk(obj.user_id.value, 4, 12) != 0 || (!obj.user_id.value.match(/^[0-9|A-Z|a-z]+$/))){
    	account = new Array('ID','4','12');
    	alert(getMessage('errors.min.to.maxlength', account));
        obj.SUBSW.value = '0';
        return false;
    }

    // ニックネームチェック
	retnic = nicknamechk(obj.nickname.value);
	if(retnic < 0){
		// 未入力
		if(retnic == -1){
			errmsg = '入力されていない項目があります';
		// 入力文字数不足
		}else if(retnic == -2){
	    	nickname = new Array('ニックネーム','4','16');
	    	errmsg = getMessage('errors.minlength', nickname);
		// 入力文字数超過
		}else if(retnic == -3){
	    	errmsg = 'ニックネームは入力可能文字数を超過しています';
		// 使用禁止文字(カンマ)
		}else if(retnic == -4){
			errmsg = '「，(カンマ)」は使用できません';
		// 禁止ワード
		}else if(retnic == -5){
			errmsg = 'ニックネームに使用禁止文字列が含まれています';
		// 前後スペース検知
		}else if(retnic == -6){
			errmsg = 'ニックネームの前後にはスペースは使用できません';
		// その他禁止文字
		}else if(retnic == -7){
			errmsg = 'ニックネームに使用禁止文字列が含まれています';
		}
		alert(errmsg);
        obj.SUBSW.value = '0';
        return false;
	}

	// パスワードチェック
	retpw = passwordchk(obj.password.value);
	if(retpw < 0){
		// 未入力
		if(retpw == -1){
	    	errmsg = '希望するパスワードを入力してください';
		// 入力文字数不足
		}else if(retpw == -2){
	    	password = new Array('パスワード','6','16');
	    	errmsg = getMessage('errors.minlength', password);
		// 入力文字数超過
		}else if(retpw == -3){
	    	errmsg = 'パスワードは入力可能文字数を超過しています';
		// 使用禁止文字
		}else if(retpw == -4){
	    	errmsg = 'パスワードでは' + obj.password.value + 'は使用禁止文字です';
		}
		alert(errmsg);
        obj.SUBSW.value = '0';
        return false;
	}

	// 確認用パスワードチェック
	// パスワードの入力内容が双方とも同じか
	if(retpw == 0){
		if (obj.password.value != obj.password_confilm.value){
			alert('違うパスワードが入力されています');
			obj.SUBSW.value = '0';
			return false;
		}
	}

    var sexualRadiochk = 0;
    // 性別がチェックされているか
     if (obj.sex.length) {
        for (i = 0; i < obj.sex.length; i++) {
            if (obj.sex[i].checked) {
                sexualRadiochk = 1;
            }
        }
    } else {
        if (obj.sex.checked) {
            sexualRadiochk = 1;
        }
    }
    
    // 性別がチェックされているか
    if(sexualRadiochk == 0){
        alert('性別が選択されてません');
        obj.SUBSW.value = '0';
        return false;
    }

    // idの重複が存在するか
    LoginChk.existId(CallBackReg,obj.user_id.value, 0);
    if (regchkflg == 1) {
        alert('すでにidが登録されています');
        regchkflg = 0;
        obj.SUBSW.value = '0';
        return false;
    }
    // ニックネームの重複が存在するか
    LoginChk.existId(CallBackRegNick,obj.nickname.value, 1);
    if (regchkflg == 3 || obj.nickname.value == "ゲスト"|| obj.nickname.value == "退会されています") {
        alert('すでにニックネームが登録されています');
        regchkflg = 0;
        obj.SUBSW.value = '0';
        return false;
    }

	// メールアドレスチェック
	retmail = mailaddchk(obj.mail_address.value);
	if(retmail < 0){
		// 未入力
		if(retmail == -1){
	        errmsg = 'ご利用のメールアドレスを入力してください';
		// 文字数超過
		}else if(retmail == -2){
	    	errmsg = 'メールアドレスは入力可能文字数を超過しています';
		// 禁止文字列
		}else if(retmail == -3){
			errmsg = '「，(カンマ)」は使用できません';
		// 不正メールアドレス
		}else if(retmail == -4){
	    	errmsg = 'メールアドレスが不正です(「@」以降も記載してください)';
		// 携帯メールアドレス
		}else if(retmail == -5){
	    	errmsg = 'ケータイのメールアドレスは使用できません';
		// 前後スペース検知
		}else if(retmail == -6){
			errmsg = 'メールアドレスの前後にはスペースは使用できません';
		// その他使用禁止文字
		}else if(retmail == -7){
			errmsg = 'メールアドレスに使用禁止文字が含まれています';
		}
		alert(errmsg);
        obj.SUBSW.value = '0';
        return false;
	}

    // 確認用メールアドレスが規定文字列長か
	retmailconf = mailaddchk(obj.mail_address_confilm.value);
	if(retmailconf < 0){
		// 未入力
		if(retmailconf == -1){
	        errmsg = 'ご利用のメールアドレスをご入力ください';
		// 文字数超過
		}else if(retmailconf == -2){
	    	errmsg = 'メールアドレスは入力可能文字数を超過しています';
		// 禁止文字列
		}else if(retmailconf == -3){
			errmsg = '「，(カンマ)」は使用できません';
		// 不正メールアドレス
		}else if(retmailconf == -4){
	    	errmsg = 'メールアドレスが不正です(「@」以降も記載してください)';
		// 携帯メールアドレス
		}else if(retmailconf == -5){
	    	errmsg = 'ケータイのメールアドレスは使用できません';
		// 前後スペース検知
		}else if(retmailconf == -6){
			errmsg = 'メールアドレスの前後にはスペースは使用できません';
		// その他使用禁止文字
		}else if(retmailconf == -7){
			errmsg = 'メールアドレスに使用禁止文字が含まれています';
		}
		alert(errmsg);
        obj.SUBSW.value = '0';
        return false;
	}

 /*
    if(betweenchk(obj.mail_address.value, -1, 128) != 0){
        alert('メールアドレス文字列長エラー');
        obj.SUBSW.value = '0';
        return false;
    }
    // メールアドレスが規定文字列長か
    if(betweenchk(obj.mail_address_confilm.value, -1, 128) != 0){
        alert('メールアドレス文字列長エラー');
        obj.SUBSW.value = '0';
        return false;
    }
*/    
    
    // メールアドレスの入力内容が双方とも同じか
	// メールアドレスおよび確認用メールアドレスが正常時に判定
    if (retmail == 0 && retmailconf == 0) {
	    if (obj.mail_address.value != obj.mail_address_confilm.value){
	        alert('違うメールアドレスが入力されています');
	        obj.SUBSW.value = '0';
	        return false;
	    }
	}
    // 重複するメールアドレスが存在するか
    LoginChk.existId(CallBackRegMail,obj.mail_address.value, 2);
    if (regchkflg == 2) {
        alert('すでに登録されているメールアドレスです');
        regchkflg = 0;
        obj.SUBSW.value = '0';
        return false;
    }

    var agreeRadiochk = 0;
    // 利用規約がチェックされているか
     if (obj.agree_flg.length) {
        for (i = 0; i < obj.agree_flg.length; i++) {
            if (obj.agree_flg[i].checked) {
                agreeRadiochk = 1;
                if(i == 1){
			        alert('同意が必要です');
			        obj.SUBSW.value = '0';
			        return false;
                }
            }
        }
    } else {
        if (obj.agree_flg.checked) {
            agreeRadiochk = 1;
        }
    }
    
    // 利用規約がチェックされているか
    if(agreeRadiochk == 0){
        alert('利用規約のチェックがありません');
        obj.SUBSW.value = '0';
        return false;
    }

    obj.SUBSW.value = '0';
    
    // フォーム送信する
    if(regchkflg == 0){
    	// エラーがなければ送信
    	obj.submit();
    }
}

 /**
 * （アカウント管理）
 * 重複チェック後のアカウント用コールバック関数
 * 戻った結果を判定し、その結果をグローバル変数に持たせる
 * 0正常 1失敗
 * @param data コールバック後の結果
 * 
 */

function CallBackReg(data){
    if(data == true){
        regchkflg = 1;
    }else{
        regchkflg = 0;
    }
}

 /**
 * （アカウント管理）
 * メールアドレス重複チェック後のアカウント用コールバック関数
 * 戻った結果を判定し、その結果をグローバル変数に持たせる
 * 0正常 1失敗
 * @param data コールバック後の結果
 * 
 */

function CallBackRegMail(data){
    if(data == true){
        regchkflg = 2;
    }else{
        regchkflg = 0;
    }
}

 /**
 * （アカウント管理）
 * ニックネーム重複チェック後のアカウント用コールバック関数
 * 戻った結果を判定し、その結果をグローバル変数に持たせる
 * @param data コールバック後の結果
 * 
 */

function CallBackRegNick(data){
    if(data == true){
        regchkflg = 3;
    }else{
        regchkflg = 0;
    }
}

 /**
 * （アカウント管理）
 * 指定したURLへ、submit()を実行する
 * @param URL 遷移先
 * @param obj フォームオブジェクト
 */
function submitJump(URL, obj){
    // 指定したURLへアクション先を設定
    obj.action = URL;
    obj.submit();
}

function validateSubmitForget( userId ) {

   if( userId.isEmpty() ){
        alert( getMessage( 'errors.required', new Array( '@gamesID' ) ) );
        return false;
    }
    if ( betweenchk( userId, 4, 12 ) != 0 || !userId.match(/^[0-9|a-z|A-Z]+$/) ) {
		alert( getMessage( 'errors.min.to.maxlength', new Array( '@gamesID', 4, 12 ) ) );
		return false;
	}
	return true;
}

/**
 * E-mail入力チェック
 */
function validateSubmitForgetID( mailAddress ) {
	if( mailAddress.isEmpty() ){		
		alert( getMessage( 'errors.required', new Array( 'E-mailアドレス' ) ) );
		return false;		
	}

	if(!mailAddress.match(/^\S+@\S+\.\S+$/)) {
		alert( "メールアドレスが不正です。" );
		return false;
	}	

	return true;
}

function submitForget( isEnable, url, param, btnflg) {
	if ( !isEnable ) {
		return;
	}
	
	var form = document.createElement('form');
	form.method = 'POST';
	form.action = url;

	input = document.createElement('input');
	
	if(btnflg == 0) {
		input.name = 'mailAddress';
		input.type = 'hidden';
		input.value = param;
	}

	if(btnflg == 1) {
		input.name = 'userId';
		input.type = 'hidden';
		input.value = param;
	}
	
	form.appendChild(input);

	document.getElementsByTagName('body')[0].appendChild(form);
    form.submit();
}


function submitForgetID( isEnable, url, mail, form) {
	if ( !isEnable ) {
		return;
	}

//	var form = document.createElement('form');
	form.method = 'POST';
	form.action = url;

	input = document.createElement('input');
	input.name = 'mailAddress';
	input.type = 'hidden';
	input.value = mailAddress;
	form.appendChild(input);

	document.appendChild(form);
    form.submit();
}


/**
 * 新規会員登録用パスワードチェック
 * @author aida
 * @param inString 入力文字 
 */
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;
}

/**
 * 新規会員登録用ニックネームチェック
 * @author aida
 * @param inString 入力文字 
 */
function nicknamechk(inString){

	if(!objnullchk(inString)){
		// 未入力
		return -1;
	}

	// 入力文字数チェック
	resultnum = betweenchk(inString, 4, 16);
	if(resultnum == -1){
		// 文字数不足
		return -2;
	}else if(resultnum == -2){
		// 文字数超過
		return -3;
	}

/*
	// 入力禁止文字チェック1
	if(inString == "ゲスト"){
		return -4;
    }
*/

	// 入力禁止文字チェック2(カンマ検知)
	ngString=",";
	for (i=0;i<inString.length;i++){
		if(ngString.indexOf(inString.charAt(i),0)>=0){
			return -4;
		}
	}

	// 入力禁止文字チェック3(禁止文字列検知)
	NG.checkBadLanguage(CallBackReg, inString);
	if(regchkflg == 0){
	}else{
		return -5;
	}

	// 入力禁止文字チェック5(前後のスペースを検知)
	if((inString.match(/^ /)) || (inString.match(/ $/)) 
	|| (inString.match(/^　/)) || (inString.match(/　$/))){
		return -6;
	}

	// 入力禁止文字チェック4(その他使用禁止文字検知)
	ngString="':;\"";
	for (i=0;i<inString.length;i++){
		if(ngString.indexOf(inString.charAt(i),0)>=0){
			return -7;
		}
	}
	return 0;
}

/**
 * 新規会員登録用メールアドレスチェック
 * @author aida
 * @param inString 入力文字 
 */
function mailaddchk(inString){

	// 未入力
	if(!objnullchk(inString)){
		return -1;
	}

	// 入力文字超過
	resultnum = betweenchk(inString, -1, 128);
	if(resultnum == -2){
		return -2;
    }

	// カンマチェック
	ngString = ",";
	for (i=0;i<inString.length;i++){
		if(ngString.indexOf(inString.charAt(i),0)==0){
			return -3;
		}
	}
	
	// メールアドレスチェック
	var cnt = 0;
	ngString = "@";
	for (i=0;i<inString.length;i++){
		if(ngString.indexOf(inString.charAt(i),0)==0){
			cnt = cnt + 1;
		}
	}
	// 検知結果
	if(cnt == 0){
		return -4;
	}

    // 携帯メールアドレスチェック
    // ・EZWeb
	add_ezweb = inString.match(/.@.*ezweb.ne.jp.*/);
	// ・ドコモ
	add_docomo = inString.match(/.@.*docomo.ne.jp.*/);
	// ・ボーダフォン
	add_voda = inString.match(/.@.*vodafone.ne.jp.*/);
	// ・ソフトバンク
	add_softbank = inString.match(/.@.*softbank.ne.jp.*/);
	// ・PHS
	add_phs = inString.match(/.@.*pdx.ne.jp.*/);

	if(add_ezweb || add_docomo || add_voda || add_phs || add_softbank){
		return -5;
    }

	// 入力禁止文字チェック1(前後のスペースを検知)
	if((inString.match(/^ /)) || (inString.match(/ $/)) 
	|| (inString.match(/^　/)) || (inString.match(/　$/))){
		return -6;
	}

	// 入力禁止文字チェック2
	if((inString.match( /[^a-zA-Z0-9@\.\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~]+/))){
		return -7;
	}

	return 0;
}


function getCookieIdSave(){
	var tmp = document.cookie + ";";
	tempindex = tmp.indexOf("atgamesIdSave", 0);
	if(tempindex != -1){
		tmp = tmp.substring(tempindex, tmp.length);
		start = tmp.indexOf("=", 0) + 1;
		end = tmp.indexOf(";", start);
		return(unescape(tmp.substring(start, end)));
	}
	return null;
}

function setCookieIdSave(){

	var idSaveFlg = null;
	if(document.getElementById("idSaveCheck") != null){
		idSaveFlg = document.getElementById("idSaveCheck").checked;
	}

	if(idSaveFlg){
		var value = document.getElementById('accountID').value;
		var tmp = "atgamesIdSave" + "=" + escape(value) + ";";
		tempIdSaveDate = new Date();
		tempIdSaveDate.setTime(tempIdSaveDate.getTime() + 1000 * 60 * 60 * 24 * 30);
		document.cookie = tmp + " expires=" + tempIdSaveDate.toGMTString() + "domain=www.atgames.jp;";
	} else {
		clearCookieCommon("atgamesIdSave");
	}

}