var NOTICE_BLINKING_COUNT     = 2;
var NOTICE_BLINKING_WAIT_TIME = 500;
var confRootDir;

Event.observe(window, 'load', function(){

	// ----------------
	// 値の初期化
	// ----------------

	confRootDir = readArgs('confRootDir');

	var deleteIntentionFlag = false;

	// ----------------
	// フォーカスの初期化
	// ----------------

	$('select-name').focus();

	// ----------------
	// 各イベント関係
	// ----------------

	$('select') && Event.observe($('select'), 'submit', function(e){
		if(!submitSelect()){
			Event.stop(e);
		}
	});

	$('delete-intention-button') && Event.observe($('delete-intention-button'), 'click',  function(){
		deleteIntentionFlag = deleteIntentionClick(deleteIntentionFlag);
	});

	// ----------------

});

// ----------------
// 登録内容のチェックを行なう
// ----------------

function submitSelect(){

	var idNoticeName     = $('notice-name');
	var idNoticePassword = $('notice-password');
	var idSelectSubmit   = $('select-submit');

	// ----------------
	// エラー状態・表示の初期化
	// ----------------

	var emptyNameFlag     = false;
	var lockedFlag        = false;
	var notFoundFlag      = false;

	idNoticeName.style.visibility     = 'hidden';
	idNoticePassword.style.visibility = 'hidden';

	// ----------------
	// ユーザ入力値を取得
	// ----------------

	var vName = $('select-name').value;

	// ----------------
	// 名前の必須チェック
	// ----------------

	if(vName.trim() == ''){
		emptyNameFlag = true;
	}

	// ----------------
	// 名前が入力されている場合、そのキャラクターの存在チェック
	// ----------------

	if(!emptyNameFlag){

		var response = new Ajax.Request(
			confRootDir + 'parts/asynchronous/information-asynchronous.php',
			{
				method: 'POST',
				parameters: 'name=' + encodeURIComponent(vName),
				asynchronous: false
			}
		).transport.responseText;

		if(response == 'Locked'){
			lockedFlag = true;
		}else if(response == 'Not Found'){
			notFoundFlag = true;
		}

	}

	// ----------------
	// エラーメッセージの表示
	// ----------------

	if(emptyNameFlag){
		idNoticeName.innerHTML        = '名前を入力してください';
		idNoticeName.style.visibility = 'visible';
	}else if(lockedFlag){
		idNoticeName.innerHTML        = '現在処理が込み合っています';
		idNoticeName.style.visibility = 'visible';
	}else if(notFoundFlag){
		idNoticeName.innerHTML            = '入力内容に一致するキャラクターが';
		idNoticePassword.innerHTML        = '登録されていません';
		idNoticeName.style.visibility     = 'visible';
		idNoticePassword.style.visibility = 'visible';
	}

	// ----------------
	// 入力内容にエラーがある場合 false を返却し、なければ true を返却する
	// ----------------

	if(emptyNameFlag || lockedFlag || notFoundFlag){

		var interval    = false;
		var noticeFlag  = false;
		var noticeCount = 0;

		interval && clearInterval(interval);

		idSelectSubmit.className = 'notice';

		interval = setInterval(function(){
			if(noticeFlag){
				idSelectSubmit.className = 'notice';
				noticeFlag = false;
			}else{
				idSelectSubmit.className = '';
				noticeCount++;
				noticeFlag = true;
			}
			if(noticeCount >= NOTICE_BLINKING_COUNT){
				clearInterval(interval);
			}
		}, NOTICE_BLINKING_WAIT_TIME);

		return false;

	}else{
		return true;
	}

	// ----------------

}

// ----------------
// 削除ボタン（ステップ 1）を押したときの処理
// ----------------

function deleteIntentionClick(flag){
	if(flag){
		$('delete-intention-button').innerHTML = 'キャラクターを削除する';
		$('delete').className = 'delete-false';
	}else{
		$('delete-intention-button').innerHTML = 'やっぱりやめる';
		$('delete').className = 'delete-true';
	}
	return !flag;
}

