﻿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(15);				// 나이제한 체크
		this.setTesterLimit(false);			// 테스터 권한체크 
		this.setExpAccountLimit(true);		// 체험계정 실행체크 
		this.setIpinAccountLimit(true);		// 체험계정 실행체크
		
		this.setAgeLimitMessage('게임 실행은 만 15세 이상부터 가능합니다.');
		this.setTesterLimitMessage('베타테스터만 이용가능 합니다.');
		this.setExpAccountLimitMessage('체험 계정은 본 게임을 실행하실 수 없습니다.');
		this.setIpinAccountLimitMessage('서비스를 이용하시려면 추가 회원 정보가 필요합니다.');
	},
	_beforeLaunch : function() {		
		if( isLogged() == "true" ) {	
			if( this._ageLimitCheck() 		== false ) return false;		 
			if( this._ipinAccountLimitCheck()== 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;
	},
	_ipinAccountLimitCheck	: function() {
		if( this.ipinAccountLimit == true && _launcherParam.ipinAccount == "8" ) {
			alert(this.getIpinAccountLimitMessage());
			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; },
		setIpinAccountLimit 	: function(bTrue) { this.ipinAccountLimit = bTrue; },
	
	setAgeLimitMessage 			: function(message) { this.ageLimitMessage = message; },
	setTesterLimitMessage 		: function(message) { this.testerLimitMessage = message; },
	setExpAccountLimitMessage 	: function(message) { this.expAccountLimitMessage = message; },
	setIpinAccountLimitMessage 	: function(message) { this.ipinAccountLimitMessage = message; },

	getAgeLimitMessage 			: function() { return this.ageLimitMessage; },
	getTesterLimitMessage 		: function() { return this.testerLimitMessage; },
	getExpAccountLimitMessage 	: function() { return this.expAccountLimitMessage; },
	getIpinAccountLimitMessage 	: function() { return this.ipinAccountLimitMessage; },
	
	
	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: execLauncher,
																onFailure: function() {	alert("런처 실행에 실패했습니다. ");	}
															}
							);	// end of Ajax.Request()	  
	        }
	        else { alert(alertMessage); }                        
	    }          
	    else {  alert("잠시 후에 다시 이용해 주십시요.");    }
    } catch(e) { alert(e.description);	}
}
function execLauncher(result) {		
		if( result.responseText == 'true' ) {

		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;	
	}
}
