/**
 * 新規登録に利用するjs
 * @author Gportal
 * @date    $Date: $
 * @version $Revision: $
 * 
 */
 
// チェックフラグ
var regchkflg = 0;

/**
 * （アカウント管理）
 * アカウントないし、ニックネームの
 * 重複チェック用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;
	    
	    for(i=0;i<objvalue.length;i++){
			dmy=escape(objvalue.charAt(i));
			if(dmy.length < 4){
				count++;
			}else{
				count+=2;
			}
		}
		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';
}

/**
 * （アカウント管理）
 * 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(obj.SUBSW.value == '1'){
		alert('実行中です');
		obj.SUBSW.value = '0';
		return false;
	}
	obj.SUBSW.value = '1';

	// エラーカウント初期化
	errcnt = 0;

	// IDチェック
	if(!objnullchk(obj.userId.value)){
		alert('入力されていない項目があります');
		obj.SUBSW.value = '0';
        return false;

    }else if(betweenchk(obj.userId.value, 4, 12) != 0 || (!obj.userId.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('パスワード','4','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;
    }
    // 生まれた年
	if ( obj.birthMonth ) {
		var birthMonth = obj.birthMonth.value;
		if ( birthMonth.isEmpty() ) {
			alert( '入力されていない項目があります' );
	        obj.SUBSW.value = '0';
	        return false;
		}
		if ( !birthMonth.match( /^[0-9]+$/ ) ) {
			alert( getMessage( 'errors.integer', new Array( '誕生日' ) ) );
	        obj.SUBSW.value = '0';
	        return false;
		}
	}
	if ( obj.birthDay ) {
		var birthDay = obj.birthDay.value;
		if ( birthDay.isEmpty() ) {
			alert( '入力されていない項目があります' );
	        obj.SUBSW.value = '0';
	        return false;
		}
		if ( !birthDay.match( /^[0-9]+$/ ) ) {
			alert( getMessage( 'errors.integer', new Array( '誕生日' ) ) );
	        obj.SUBSW.value = '0';
	        return false;
		}
	}
	if ( obj.birthYear ) {
		var birthYear = obj.birthYear.value;
		if ( birthYear.isEmpty() ) {
			alert( '入力されていない項目があります' );
	        obj.SUBSW.value = '0';
	        return false;
		}
		if ( !birthYear.match( /^[0-9]+$/ ) ) {
			alert( getMessage( 'errors.integer', new Array( '生まれた年' ) ) );
	        obj.SUBSW.value = '0';
	        return false;
		}
		if ( birthYear.length > 4 ) {
			alert( getMessage( 'errors.maxlength', new Array( '生まれた年', 4 ) ) );
	        obj.SUBSW.value = '0';
	        return false;
		}
	}
	if ( obj.birthYear && obj.birthMonth && obj.birthDay ) {
		if ( !isValidDate( obj.birthYear.value, obj.birthMonth.value, obj.birthDay.value ) ) {
			alert( '誕生日、生まれた年に存在しない日付が入力されています。もう一度お確かめください' );
	        regchkflg = 0;
	        obj.SUBSW.value = '0';
	        return false;
		}
	}

    // idの重複が存在するか
    LoginChk.existId(CallBackReg,obj.userId.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;
    }

    obj.SUBSW.value = '0';
    
    // フォーム送信する
    if(regchkflg == 0){
    	// エラーがなければ送信
    	obj.submit();
    }
}

/**
 * （アカウント管理）
 * メールアドレス入力チェックを行い正常であれば、submit()を実行する
 * @param obj フォームオブジェクト
 * 
 */
function submitAddressChk(obj){
	DWREngine.setTimeout(1000);		// DWR実行タイムアウト
	DWREngine.setAsync(false);		// 同期的に実行(false で同期)
	
	// cookie有効性チェックを実施する
	if(!checkCookie()){
		return false;
	}

	if(doublePushChk(obj.SUBSW.value) == '1'){
		alert('実行中です');
		obj.SUBSW.value = '0';
		return false;
	}
	obj.SUBSW.value = '1';

	// エラーカウント初期化
	errcnt = 0;

	//小文字にしておく
	var mailAddress = obj.mailAddress.value;
	mailAddress = mailAddress.toLowerCase();

	// メールアドレスチェック
	retmail = mailaddchk(mailAddress);
	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;
	}

    // 重複するメールアドレスが存在するか
    LoginChk.existId(CallBackRegMail,mailAddress, 2);
    if (regchkflg == 2) {
        alert('すでに登録されているメールアドレスです');
        regchkflg = 0;
        obj.SUBSW.value = '0';
        return false;
    }

    obj.SUBSW.value = '0';

	// 小文字で送信する。
	obj.mailAddress.value = mailAddress;
    
    // フォーム送信する
    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;
}

function submitForget( isEnable, url, userId ) {
	if ( !isEnable ) {
		return;
	}

	var form = document.createElement('form');
	form.method = 'POST';
	form.action = url;

	input = document.createElement('input');
	input.name = 'userId';
	input.type = 'hidden';
	input.value = userId;
	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.*/);
	// ・Jフォン－北海道
	add_jh_d = inString.match(/.@.*jp-d.ne.jp.*/);
	// ・Jフォン－東北
	add_jh_h = inString.match(/.@.*jp-h.ne.jp.*/);
	// ・Jフォン－東京
	add_jh_t = inString.match(/.@.*jp-t.ne.jp.*/);
	// ・Jフォン－東海
	add_jh_c = inString.match(/.@.*jp-c.ne.jp.*/);
	// ・Jフォン－北陸
	add_jh_r = inString.match(/.@.*jp-r.ne.jp.*/);
	// ・Jフォン－関西
	add_jh_k = inString.match(/.@.*jp-k.ne.jp.*/);
	// ・Jフォン－中国
	add_jh_n = inString.match(/.@.*jp-n.ne.jp.*/);
	// ・Jフォン－四国
	add_jh_s = inString.match(/.@.*jp-s.ne.jp.*/);
	// ・Jフォン－九州
	add_jh_q = inString.match(/.@.*jp-q.ne.jp.*/);
	// ・ディズニー
	add_disney = inString.match(/.@.*disney.ne.jp.*/);
	// ・イーモバイル
	add_emobile = inString.match(/.@.*emnet.ne.jp.*/);

	if(add_ezweb || add_docomo || add_voda || add_phs || add_softbank ||
		add_jh_d || add_jh_h || add_jh_t || add_jh_c || add_jh_r || add_jh_k ||
		add_jh_n || add_jh_s || add_jh_q || add_disney || add_emobile){
		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;
}

 /**
 * （トップページ）
 * ログイン処理時に使用する<br>
 * 入力がされていないかどうかをチェックする
 * @param data 入力されたデータ
 * 
 */
function objnullchk(data){
  var result = true;
  if(data == null){
    result = false;
  }
  if(data == ""){
    result = false;
  }
  return result;
}

function submitConfirm(form,action){
	if(form.SUBSW.value == '1'){
		alert('登録中です');
		form.SUBSW.value = '0';
		return false;
	}
	form.SUBSW.value = '1';

	form.action = action;
	form.submit();
}

 /**
 * 会員登録完了後のログイン処理時に<br>
 * メインフレームの初期表示ページを指定する場合に使用する。
 * 
 * @param url メインフレームの初期表示ページ
 */
function submitLoginForm(url){
	document.loginForm.mainUrl.value = url;
	document.loginForm.submit();
}

/**
 * （アカウント管理）
 * メールアドレス入力チェックを行い正常であれば、submit()を実行する
 * アクションは「/atgames/tempRegist」に遷移させる
 * 
 * @param obj フォームオブジェクト
 * 
 */
function submitAddressChkSendAction(obj){
	DWREngine.setTimeout(1000);		// DWR実行タイムアウト
	DWREngine.setAsync(false);		// 同期的に実行(false で同期)
	
	// cookie有効性チェックを実施する
	if(!checkCookie()){
		return false;
	}

	if(doublePushChk(obj.SUBSW.value) == '1'){
		alert('実行中です');
		obj.SUBSW.value = '0';
		return false;
	}

	document.regist.SUBSW.value = '1';

	// エラーカウント初期化
	errcnt = 0;

	//小文字にしておく
	var mailAddress = document.getElementsByName('tempMailAddress')[0].value;
	mailAddress = mailAddress.toLowerCase();

	// メールアドレスチェック
	retmail = mailaddchk(mailAddress);
	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;
	}

	// 重複するメールアドレスが存在するか
	LoginChk.existId(CallBackRegMail,mailAddress, 2);
	if (regchkflg == 2) {
		alert('すでに登録されているメールアドレスです');
		regchkflg = 0;
		obj.SUBSW.value = '0';
		return false;
	}

	obj.SUBSW.value = '0';

	// 小文字で送信する。
	obj.mailAddress.value = mailAddress;
	
	// フォーム送信する
	if(regchkflg == 0){
		// 遷移先アクションを指定する
		obj.action='http://www.atgames.jp/atgames/tempRegist.do';
		// エラーがなければ送信
		obj.submit();
	}

}

/**
 * アイテム確認画面へ遷移する
 * 
 * @param hairId ヘアスタイルＩＤ
 * @param topId トップスＩＤ
 * @param bottomId ボトムＩＤ
 * 
 */
function toSelectItemConfirm(hairId, topId, bottomId) {
	document.regist.action = '/atgames/registDetailSelectItemConfirm.do';
	document.regist.clothesIdHair.value = hairId;
	document.regist.clothesIdTop.value = topId;
	document.regist.clothesIdBottom.value = bottomId;
	document.regist.submit();
}


// ユーザーIDチェック新バージョン
function userIDCheck(objvalue)
{
	// 数値以外が入力されていないか
	if(!(objvalue.match(/^[0-9|A-Z|a-z]+$/))){
	    alert("IDの入力は半角英数字で４文字～１２文字までです");
	}else if( (objvalue.length < 4) | (objvalue.length > 12) ){
		alert("IDの入力は半角英数字で４文字～１２文字までです");
	}else{
		// 存在チェック
	    LoginChk.existId(callbackUserIDCheck,objvalue, 0);
	}
}

// ニックネームチェック新バージョン
function nicknameCheck(objvalue)
{
	var dmy,i,count=0;

	for(i=0;i<objvalue.length;i++){
		dmy=escape(objvalue.charAt(i));
		if(dmy.length < 4){
			count++;
		}else{
			count+=2;
		}
	}
	if( (count < 4) | (count > 16) ){
		alert("ニックネームの入力は全角２～８(半角４～１６)文字までです");
	}else if(objvalue == "ゲスト" || objvalue == "退会されています"){
		alert("使用できない文字列が含まれています");
	}else{
		// 存在チェック
		LoginChk.existId(callbackNicknameCheck,objvalue, 1);
	}
}

function callbackUserIDCheck(data) {
	if(data == 0){
		// 正常
		document.getElementById("idCheck").innerHTML = "使用可能です";
	}else{
		// 異常
		document.getElementById("idCheck").innerHTML = "既に使われているか、使用不可能なユーザーIDです";
	}
}

function callbackNicknameCheck(data) {
	if(data == 0){
		// 正常
		document.getElementById("nicknameCheck").innerHTML = "使用可能です";
	}else{
		// 異常
		document.getElementById("nicknameCheck").innerHTML = "既に使われているか、使用不可能なニックネームです";
	}
}


/**
 * （アカウント管理）
 * メールアドレス入力チェックを行い正常であれば、submit()を実行する
 * アクションは「/atgames/tempRegist」に遷移させる
 * 
 * @param obj フォームオブジェクト
 * 
 */
function submitAddressChkSendAction2(obj){
	DWREngine.setTimeout(1000);		// DWR実行タイムアウト
	DWREngine.setAsync(false);		// 同期的に実行(false で同期)
	
	// cookie有効性チェックを実施する
	if(!checkCookie()){
		return false;
	}

	if(doublePushChk(obj.SUBSW.value) == '1'){
		alert('実行中です');
		obj.SUBSW.value = '0';
		return false;
	}

	document.regist.SUBSW.value = '1';

	// エラーカウント初期化
	errcnt = 0;

	//小文字にしておく
	var mailAddress = document.getElementsByName('tempMailAddress')[0].value;
	mailAddress = mailAddress.toLowerCase();

	// メールアドレスチェック
	retmail = mailaddchk(mailAddress);
	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;
	}

	// 重複するメールアドレスが存在するか
	LoginChk.existId(CallBackRegMail,mailAddress, 2);
	if (regchkflg == 2) {
		alert('すでに登録されているメールアドレスです');
		regchkflg = 0;
		obj.SUBSW.value = '0';
		return false;
	}

	obj.SUBSW.value = '0';

	// 小文字で送信する。
	obj.mailAddress.value = mailAddress;
	
	// フォーム送信する
	if(regchkflg == 0){
		// 遷移先アクションを指定する
		obj.action='/atgames/openId/sendOpenIdRegisterMail.do';
		// エラーがなければ送信
		obj.submit();
	}
	
	return false;
}

/**
 * （アカウント管理）
 * 各入力チェックを行い正常であれば、submit()を実行する
 * @param obj フォームオブジェクト
 * 
 */
function submitChkForOpenId(obj, registerAgain){
	DWREngine.setTimeout(1000);		// DWR実行タイムアウト
	DWREngine.setAsync(false);		// 同期的に実行(false で同期)
	
	if(obj.SUBSW.value == '1'){
		alert('実行中です');
		obj.SUBSW.value = '0';
		return false;
	}
	obj.SUBSW.value = '1';

	// エラーカウント初期化
	errcnt = 0;
	
	// セルフィちゃんねる登録したことがあるユーザーの再登録の場合
	if(registerAgain == 1) {
		//
	} else {
	    // ニックネームチェック
		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;
		}
		
		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;
	    }
	}
	
    // 生まれた年
	if ( obj.birthMonth ) {
		var birthMonth = obj.birthMonth.value;
		if ( birthMonth.isEmpty() ) {
			alert( '入力されていない項目があります' );
	        obj.SUBSW.value = '0';
	        return false;
		}
		if ( !birthMonth.match( /^[0-9]+$/ ) ) {
			alert( getMessage( 'errors.integer', new Array( '誕生日' ) ) );
	        obj.SUBSW.value = '0';
	        return false;
		}
	}
	if ( obj.birthDay ) {
		var birthDay = obj.birthDay.value;
		if ( birthDay.isEmpty() ) {
			alert( '入力されていない項目があります' );
	        obj.SUBSW.value = '0';
	        return false;
		}
		if ( !birthDay.match( /^[0-9]+$/ ) ) {
			alert( getMessage( 'errors.integer', new Array( '誕生日' ) ) );
	        obj.SUBSW.value = '0';
	        return false;
		}
	}
	if ( obj.birthYear ) {
		var birthYear = obj.birthYear.value;
		if ( birthYear.isEmpty() ) {
			alert( '入力されていない項目があります' );
	        obj.SUBSW.value = '0';
	        return false;
		}
		if ( !birthYear.match( /^[0-9]+$/ ) ) {
			alert( getMessage( 'errors.integer', new Array( '生まれた年' ) ) );
	        obj.SUBSW.value = '0';
	        return false;
		}
		if ( birthYear.length > 4 ) {
			alert( getMessage( 'errors.maxlength', new Array( '生まれた年', 4 ) ) );
	        obj.SUBSW.value = '0';
	        return false;
		}
	}
	if ( obj.birthYear && obj.birthMonth && obj.birthDay ) {
		if ( !isValidDate( obj.birthYear.value, obj.birthMonth.value, obj.birthDay.value ) ) {
			alert( '誕生日、生まれた年に存在しない日付が入力されています。もう一度お確かめください' );
	        regchkflg = 0;
	        obj.SUBSW.value = '0';
	        return false;
		}
	}
	
	// セルフィちゃんねる登録したことがあるユーザーの再登録の場合
	if(registerAgain == 1) {
		//
	} else {		
	    // ニックネームの重複が存在するか
	    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;
	    }
	}

    obj.SUBSW.value = '0';
    
    // フォーム送信する
    if(regchkflg == 0){
    	// エラーがなければ送信
    	obj.submit();
    }
}

/**
 * オープンID登録用ニックネーム重複チェック
 * @author Yi
 * @param inString 入力文字 
 */
function nicknamecheck(inString){
	// ニックネーム重複チェック
	OpenIdLoginChk.existNickname(CallBackReg, inString);
	if(regchkflg == 0){
		document.getElementById("dupNickname").innerHTML = "";
	}
}

/**
 * （アカウント管理）
 * アカウントないし、ニックネームの
 * 重複チェック用Modalダイアログをオープンする
 * @param chkflg 0: アカウントチェック 1: ニックネームチェック
 * 
 */
function registaccount2(obj, chkflg){
    if(obj == undefined || obj == null) {
    	return;
    }
	var result = "";
    
    name = 'parent';
    if(chkflg == 0){
    	// アカウントチェック
        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;
    }
}

function serDispDefault()
{
	document.getElementById("defaultDisp").style.display = "block";
	document.getElementById("resultDisp").style.display = "none";
}

/**
 * （アカウント管理）
 * アカウントないし、ニックネームの
 * 重複チェックを行う
 * @param obj フォームオブジェクト名(<form name="フォーム名">)
 * @param chkflg チェック方法 0: アカウントチェック 1:ニックネーム
 * 
 */
function accountChkForOpenId(objvalue, chkflg)
{
    if(doublePushChk(document.regist.SUBSW.value) == '1'){
        alert('実行中です');
        return false;
    }
    document.regist.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;
	    
	    for(i=0;i<objvalue.length;i++){
			dmy=escape(objvalue.charAt(i));
			if(dmy.length < 4){
				count++;
			}else{
				count+=2;
			}
		}
		if( (count < 4) | (count > 16) ){
			serDispDefault();
			alert("ニックネームの入力は全角２～８(半角４～１６)文字までです");
		}else if(objvalue == "ゲスト" || objvalue == "退会されています"){
			serDispDefault();
			alert("使用できない文字列が含まれています");
        }else{
	        // ニックネームが存在するか
	        //LoginChk.idChk(CallBackNicknameForOpenId,objvalue, chkflg);
	        LoginChk.existId(CallBackNicknameForOpenId,objvalue, chkflg);
        }
    }
    document.regist.SUBSW.value = '0';
}

/**
 * （アカウント管理）
 * 重複チェック後のアカウント用コールバック関数
 * 戻った結果により表示する内容を書き換える
 * @param data コールバック後の結果
 * 
 */
function CallBackNicknameForOpenId(data){
    if(data == 0){
        // 正常
    	document.getElementById("defaultDisp").style.display = "none";
    	document.getElementById("resultDisp").style.display = "block";
    	document.getElementById("resultDisp").innerHTML = "<font color='#2845FF' size='2'>ニックネーム「" + document.getElementById("regist").nickname.value + "」は利用可能なニックネームです。<br><br></font>";
    }else{
        // 異常
        document.getElementById("defaultDisp").style.display = "none";
        document.getElementById("resultDisp").style.display = "block";
        document.getElementById("resultDisp").innerHTML = "<font color='#E40000' size='2'>既に使用されているか、使用できない文字列が含まれています。<br><br></font>";
    }
}

