﻿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('게임 실행은 만 15세 이상부터 가능합니다.');
		this.setTesterLimitMessage('베타테스터만 이용가능 합니다.');
		this.setExpAccountLimitMessage('체험 계정은 본 게임을 실행하실 수 없습니다.');
	},
	_beforeLaunch : function() {
		var obj = this;
		var rt 	= false;
		try {
			new Ajax.Request("/common/inc/launcher/getlauncherparam",
					{	method		: "post", 
						asynchronous	: false,
						encoding 	: "UTF-8",
						onComplete	: function(transport) {
										var result 	= eval(transport.responseText);
										rt = obj._limitCheck(result);
									},
						onFailure	: function() {
										alert("can't get the launcher paramters.");
									}
					}
				);
		} catch(e) { alert(e.description); }
		return rt;
	},
	_afterLaunch : function() {
			
	},
	_limitCheck : function(result) {
		if( isLogged() == "true" ) {	
			if( this._ageLimitCheck(result[0].age)== false ) return false;		 
			if( this._expAccountLimitCheck(result[0].expAccount)== false ) return false;		
			if( this._testerLimitCheck(result[0].tester)==false ) return false;	 			 
			
			return true;	 
		} else { alert("로그인 후 게임 실행이 가능합니다."); } 
	}, 	
	_ageLimitCheck	: function(age) {
		if( this.ageLimit > 0 && this.ageLimit > age ){ 
			alert(this.getAgeLimitMessage());
			return false;
		}else
			return true;
	},
	_testerLimitCheck	: function(tester) {
		if( this.testerLimit == true && tester != "true" ) {
			alert(this.getTesterLimitMessage());
			return false;
		}else
			return true;
	},	
	_expAccountLimitCheck	: function(expAccount) {
		if( this.expAccountLimit == true && expAccount == "true" ) {
			alert(this.getExpAccountLimitMessage());
			return false;
		}else
			return true;
	},
	
	_goLauncher : function() {
		try{		
			var url = "/common/inc/launcher/getGameLauncherStatus";
		    var serviceID = _siteInfo.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() {
	try{
		var launcher = new GameLauncher();
		launcher.launch();
					
  	} catch(e) { alert(e.description);	}
} 

function checkLauncherStatus(transport) {
	try{		 
	    var result = transport.responseXML;
	    var launcherStatus = "-1";
	    var alertMessage = "";	    
	    if (result.getElementsByTagName("launcherStatus")[0].childNodes.length > 0) {
	        launcherStatus = result.getElementsByTagName("launcherStatus")[0].firstChild.nodeValue;	        
	        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: getLauncherParam,
																onFailure: function() {	alert("런처 실행에 실패했습니다. ");	}
															}
							);	// end of Ajax.Request()	  
	        }
	        else { alert(alertMessage); }                        
	    }          
	    else {  alert("잠시 후에 다시 이용해 주십시요.");    }
    } catch(e) { alert(e.description);	}
}

function getLauncherParam(result) {
	if( result.responseText == 'true' ) {
		try {
			new Ajax.Request("/common/inc/launcher/getlauncherparam",
					{	method		: "post",
						encoding 	: "UTF-8",
						onComplete	: execLauncher,
						onFailure	: function() {
										alert("can't get the launcher parameters.");
									}
					}
				);
		} catch(e) { alert(e.description); }
	} else { 
		alert('장시간 미사용으로 세션이 종료되었습니다.\n다시 로그인해주시기 바랍니다.');
		window.location.href = _siteInfo.gameSite;	
	}
}

function execLauncher(transport) {		
	var result 	= null;
	var jsonObj = transport.responseText;
	
	try {
		result = eval(jsonObj);
	} catch (e) {
		alert(e.description);
	}
	
	try {
		
	} catch (e) {
		alert(e.description);
	}
	
	var launcher = GameStart(result[0].launcherStartgameid
						, result[0].GPSESSIONID
						, result[0].portalNick
						, result[0].company_id
						, result[0].gameSite);
							
	if( launcher == SUCCESS_RUN ) {

	} else {
		alert('장시간 미사용으로 세션이 종료되었습니다.\n다시 로그인해주시기 바랍니다.');
		window.location.href= _siteInfo.gameSite;	
	}
}

/*
function execLauncher(result) {		
	if( result.responseText == 'true' ) {
//		var launcher =  StartLauncher();
		var launcher = GameStart(_launcherParam.gameStartID
								, _launcherParam.loginSessionID
								, _launcherParam.userNick
								, _launcherParam.companyID
								, _launcherParam.gameSite);
								
		if( launcher == SUCCESS_RUN ) {
//			window.location.href=_launcherParam.redirectSite;	
		}
	} else {
		alert('장시간 미사용으로 세션이 종료되었습니다.\n다시 로그인해주시기 바랍니다.');
		window.location.href=_launcherParam.gameSite;	
	}
}
*/
