try {
	if (typeof(Prototype) == "undefined")
		alert("[ERROR] Prototype library required.");
} catch(e) {
	alert(e.description);
}

var GameLauncher = Class.create();
GameLauncher.prototype = {
	initialize : function() {
		this.setAgeLimit(0);				// 나이제한 없음
		this.setTesterLimit(false);			// 테스터 권한체크 없음
		this.setExpAccountLimit(false);		// 체험계정 실행체크 없음

		this.setAgeLimitMessage('');
		this.setTesterLimitMessage('알파 테스터만 플레이 하실 수 있습니다.');
		this.setExpAccountLimitMessage('체험 계정은 본 게임을 실행하실 수 없습니다.');
	},
	_beforeLaunch : function() {
		if( isLogged() == "true" ) {
			if( this._ageLimitCheck() 		== false ) return false;
			if( this._testerLimitCheck() 	== false )	return false;
			if( this._expAccountLimitCheck()== false ) return false;

			return true;
		} else { alert("로그인 후 게임 실행이 가능합니다."); }
	},
	_afterLaunch : function() {
	},
	_ageLimitCheck	: function() {
		if( this.ageLimit > 0 && this.ageLimit > _launcherParam.age ){
			alert(this.getAgeLimitMessage());
			return false;
		}else
			return true;
	},
	_testerLimitCheck	: function() {
		if( this.testerLimit == true && _launcherParam.tester != "true" ) {
			alert(this.getTesterLimitMessage());
			return false;
		}else
			return true;
	},
	_expAccountLimitCheck	: function() {
		if( this.expAccountLimit == true && _launcherParam.expAccount == "true" ) {
			alert(this.getExpAccountLimitMessage());
			return false;
		}else
			return true;
	},

	_goLauncher : function() {
		try{
			var url = "/common/inc/launcher/getGameLauncherStatus";
		    var serviceID = _launcherParam.gameCode;
		    new Ajax.Request(url, {
						            method: 'post',
						            encoding: 'UTF-8',
						            parameters: "serviceID=" + serviceID  ,
						            onSuccess: checkLauncherStatus,
						            onFailure: function() {	alert("잠시 후에 다시 이용해 주십시요.");	}
	        						}
		        				);	// end of Ajax.Request()
	  	} catch(e) { alert(e.description);	}
	},

	setAgeLimit 		: function(nAge) { this.ageLimit = nAge; },
	setTesterLimit 		: function(bTrue) { this.testerLimit = bTrue; },
	setExpAccountLimit 	: function(bTrue) { this.expAccountLimit = bTrue; },

	setAgeLimitMessage 			: function(message) { this.ageLimitMessage = message; },
	setTesterLimitMessage 		: function(message) { this.testerLimitMessage = message; },
	setExpAccountLimitMessage 	: function(message) { this.expAccountLimitMessage = message; },
	getAgeLimitMessage 			: function() { return this.ageLimitMessage; },
	getTesterLimitMessage 		: function() { return this.testerLimitMessage; },
	getExpAccountLimitMessage 	: function() { return this.expAccountLimitMessage; },


	launch : function() {
		try{
			if( this._beforeLaunch() == true ) {
				this._goLauncher();
				this._afterLaunch();
			}
		} catch(e) { alert(e.description);	}
	}
}


function FlashStartButton() {
	/* GAMESTART 클리 수 측정 로거 */
	eval('try{ _trk_clickTrace( \'EVT\', \'/스틸독/알파사이트/게임스타트\' ); }catch(_e){ }');

	try{
		var launcher = new GameLauncher();
		//launcher.launch();
		alert("스틸독 새로운 테스트 버전 준비 중 입니다.\n달라진 모습으로 찾아 뵙겠습니다.\n감사합니다. ");
  	} catch(e) { alert(e.description); }
}

function checkLauncherStatus(transport) {
	try{
	    var result = transport.responseXML;
	    var launcherStatus = "-1";
	    var alertMessage = "";
	        launcherStatus = result.getElementsByTagName("launcherStatus")[0].firstChild.nodeValue;
	        if (result.getElementsByTagName("launcherStatus")[0].childNodes.length > 0) {
	        if (result.getElementsByTagName("alertMessage")[0].childNodes.length > 0) {
	            alertMessage = result.getElementsByTagName("alertMessage")[0].firstChild.nodeValue;
	        }
	        if (launcherStatus == "0") {
		        new Ajax.Request(	"/common/inc/loginCheck", {	method:'post',
																encoding: 'UTF-8',
																onComplete: execLauncher,
																onFailure: function() {	alert("런처 실행에 실패했습니다. ");	}
															}
							);	// end of Ajax.Request()
	        }
	        else { alert(alertMessage); }
	    }
	    else {  alert("잠시 후에 다시 이용해 주십시요.");    }
    } catch(e) { alert(e.description);	}
}

var isTester = false;

function execLauncher(result) {
	if( result.responseText == 'true' ) {
		isTester090518_return();
		if (isTester == 'true') {
			var launcher = GameStart(_launcherParam.gameStartID
								, _launcherParam.loginSessionID
								, _launcherParam.userNick
								, _launcherParam.companyID
								, _launcherParam.gameSite);
		} else {
			window.open ('/event/proposal/090518_tester','tester','width=400,height=222,toolbar=0,status=no,scrollbars=no,resizable=0');
		}
	} else {
		alert('장시간 미사용으로 세션이 종료되었습니다.\n다시 로그인해주시기 바랍니다.');
		window.location.href=_launcherParam.gameSite;
	}
}

function isTester090518_return() {
	var url = '/event/proposal/tester/isTester';
	try {
		new Ajax.Request(
			url,
			{
				asynchronous : false,
				method:'post',
				encoding:'UTF-8',
				onComplete: function(result) {
					if (result.responseText.trim() != '-1') {
						isTester =  result.responseText.trim();
					}
				},
				onFailure: function() {
				}
			}
		);
	} catch(e) {
	}
}
