﻿//var isIE = navigator.appVersion.toLowerCase().indexOf("msie") > 0 ? true : false;
var _Browser = new fnGetBrowser();
var _ACTIVEX_Version = 1029;
var _CountryID = 2;
var _GameID = 8;
var _ServiceID = 1;
var _AuthUseType = 1;
var _XmlUrl = __DOMAIN_PORTAL+ "/_Files/StarterInfo.xml";
var _objStarter = null;

//Browser Check
function isSupportedBrowser()
{
	var isbool = false;

	if(_Browser.isIE)isbool=true;	//Explorer
	if(_Browser.isFF)isbool=true;	//FireFox
	if(_Browser.isOP)isbool=true;	//Opera
	if(_Browser.isSF)isbool=true;	//Safari
	if(_Browser.isCR)isbool=true;	//Chrome

	return isbool;
}

//Auto Installer Popup
function popAutoInstaller()
{
	layertemp.open('/_Common/layerStarter.aspx',518,209);
}

//GameStarter Object Get
function getGameStartController()
{
	var obj = "";
	if(_Browser.isIE)
	{
		obj =	'<object id="GameWebStarter" ';
		obj +=	'CLASSID="CLSID:39BC8B20-FB5A-43E5-9EBC-E637B700859E" ';
		obj +=	'width="0" height="0" style="display:none">';
		obj +=	'</object>';
	}
	else
	{
	//	obj =	'<object width="0" height="0">';
		obj +=	'<embed id="GameWebStarterFX" type="application/WebzenGameWebStarterPlugin" width="0" height="0" />';
	//	obj +=	'</object>';
	}
	return obj;
}

//GameStarter Object Setting
function setStartController(){
	var startDiv = document.getElementById('startObjet');
	if(startDiv == null)
	{
		var obj = document.createElement('div');
		obj.setAttribute('id','startObjet');
		obj.style.border = '0px';
		obj.style.width = '0px';
		obj.style.height = '0px';
		startDiv = document.body.appendChild(obj);
	}
	startDiv.innerHTML = getGameStartController();
}

//Game Page Execute
function execGameStart(gameID, serviceID)
{
	var startFrame = document.getElementById("startFrame");
	var obj = document.createElement('script');
	obj.type = 'text/javascript';
	obj.setAttribute('id','startFrame');

	startFrame = document.getElementsByTagName("head")[0].appendChild(obj);
	startFrame.src = "/_Common/comGameLaunch.aspx?iGC="+ gameID +"&iSC="+ serviceID;
}

//Game Starter Object Load
function getStartObject()
{
	if(_objStarter == null)
	{
		setStartController();

		if(_Browser.isIE)
		{
			if(document.GameWebStarter != null && typeof(document.GameWebStarter) != "undefined" && document.GameWebStarter.object != null)
			{
				_objStarter = document.GameWebStarter;
			}
		}
		else
		{
			var objPlugin = navigator.plugins["NPGameWebStarter"];
			if(objPlugin != null)
			{
				_objStarter = document.getElementById("GameWebStarterFX");
			}
		}
	}

	return _objStarter;
}

function SCCheck() {
    //쿠키값세팅
    //fnSetDomainCookie("Mu_ScStatus", "N", 1);
    var rtnVal = "-1";

    $.ajax(
            {
                type: "POST",
                url: "/_Common/comGameLaunch.aspx/SecurityCardSetCookies",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: false,
                success: function (msg) {
                    //보안카드 사용자
                    if (msg.d == "0") {
                        //popLayerBox.AccountTransfer('popLayerBox');
                        rtnVal = "0";
                    }
                    //보안카드 미사용자
                    else {
                        rtnVal = "-1";
                    }
                },
                error: function (xhr, status, error) {
                    //실패
                    alert("ajax오류");
                    rtnVal = "-1";
                }
            });

    return rtnVal;
}
//베타키 유저인지 확인
function PreCheck_Beta() {

    var rtnVal = 0;
    $.ajax(
            {
                type: "POST",
                url: "/Default.aspx/BetaKeyUserCheck",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: false,
                success: function (msg) {
                                    
                    //보안카드 사용자                    
                    if (msg.d == 0) {
                        rtnVal = 0;
                    }
                    else {
                        rtnVal = -1;
                    }
                },
                error: function (xhr, status, error) {
                    //실패
                    alert(xhr.responseText);
                    rtnVal = -2;
                }
            });

    return rtnVal;
}

//스타터 오픈했는지 확인
function PreCheck_Starter() {

    var rtnVal = 0;    
    $.ajax(
            {
                type: "POST",
                url: "/_Common/comGameLaunch.aspx/GetStarterInfo",
                data: "{\'GameCode\': \'" + _GameID + "\'," +
                       "\'ServerType\':\'" + _ServiceID + "\'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: false,
                success: function (msg) {
                    //보안카드 사용자                    
                    if (msg.d == "0") {
                        rtnVal = "0";
                    }
                    else {                        
                        rtnVal = msg;
                    }
                },
                error: function (xhr, status, error) {
                    //실패
                    alert(xhr.responseText);
                    rtnVal = -2;
                }
            });

    return rtnVal;
}

function PreCheck(_GameID, _ServiceID) {    
    if (!isLogin()) { errLogin(); return; }
    if (SCCheck() == "-1") {
        execGameStart(_GameID, _ServiceID);
    }

}

function InnerIPCheck() {
    var rtnVal = 0;
    $.ajax(
            {
                type: "POST",
                url: "/Default.aspx/InnerIPCheck",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: false,
                success: function (msg) {                    
                    //보안카드 사용자                    
                    if (msg.d == 0) {
                        rtnVal = 0;
                    }
                    else {
                        rtnVal = -1;
                    }
                },
                error: function (xhr, status, error) {
                    //실패
                    alert(xhr.responseText);
                    rtnVal = -2;
                }
            });
    return rtnVal;
}

//Game Starter Execute
function startGame(intType) 
{
    //1: 라이브,3: 오픈베타
    _ServiceID = intType;
    /*
    if (InnerIPCheck() != 0) {

        alert("Service will be available soon.");
        return;
    }
    */
    if (InnerIPCheck() != 0) {
        var controlValue;
        controlValue = PreCheck_Starter();

        if (controlValue != "0") {
            alert(controlValue);
            return;
        }
    }

    if (_ServiceID == 3) {
        
        if (PreCheck_Beta() != "0") {
            alert("You have not registered a User test beta key.\r\nPlease go to our Beta key event page.");
            document.location = "http://www.webzen.com/event/allinonebetakey/main/";
            return;
        }        
    }
    
    

	if(!isSupportedBrowser()){errBrowser(); return;}
	if(!isLogin()){errLogin();return;}

	var objStarter	= getStartObject();
	var strParam	= _XmlUrl+"|"+_GameID+"|"+_ServiceID+"|"+_CountryID;

	if(objStarter == null)
	{
		popAutoInstaller();
	}
	else
	{
		if(objStarter.GetModuleVersionINT() != _ACTIVEX_Version)	//Check ActiveX Version
		{
			if(objStarter.GetModuleVersionINT() < _ACTIVEX_Version)
			{
				popAutoInstaller();
			}
			else
			{
			    if(!objStarter.IsExecGameClient(strParam))	//Check Game Process
			    {
			        PreCheck(_GameID, _ServiceID);
			        //execGameStart(_GameID, _ServiceID);
			    }
			    else
			    {
			        errGameStarterExec(-500);    
			    }
			}
		}
		else
		{  
			var confirmResult = objStarter.IsGameClientInstalled(strParam);
			if(confirmResult != '100')
			{
			    //Move Download Page
			    errGameStarterExec(confirmResult);
			}
			else
			{
				if(!objStarter.IsExecGameClient(strParam))	//Check Game Process
				{
				    PreCheck(_GameID, _ServiceID);
			        //execGameStart(_GameID, _ServiceID);
			    }
			    else
			    {
			        errGameStarterExec(-500);    
			    }
			}
		}
	}
}

//ActiveX Install Page Move
function movePluginInstall()
{
	document.location.href = "/_HTML/ActivexInstall.aspx";
}

//Game Client Install Page Move
function moveClientDownLoad()
{
	if(confirm("Install the game client before starting the game. Please click OK to move to the game client download page.")) {
	    if (_ServiceID == 1) {
	        document.location.href = __DOMAIN_PORTAL + "/Download/Archlord";
	    }
	    else {
	        document.location.href = "http://archlord.webzen.com/News/Notice/Default.aspx?iBS=2594";
	    }
	}
}

//WebStarter Execute Error
function errGameStarterExec(intError)
{
	if(intError == '0')
	{
		moveClientDownLoad();
		return false;
	}
	else if(intError == '-500')
	{
		alert('The game is currently running...');
		return false;
	}
	else if (intError == '-600')
	{
		return false;
	}
	else
	{
		alert('A problem caused the game to stop working correctly. : ' + intError);
		return false;
	}
}

//Browser Error
function errBrowser()
{
	alert('It is recommended to execute the game client in the Internet Explorer or Mozilla Firefox web browser.');
}

//AuthKey Error
function errAuthKey()
{
	alert('Your authenication data is invalid.');
}

//Login Error
function errLogin()
{
	alert('Please sign-in to your account.');
}


//Game Launcher Execute
function fnGameStartExec(strAccountID, strKey, intGameID, intServiceCode, strUserID)
{
	if(!isLogin()){errLogin(); return;}
	if(strKey.length != 36){errAuthKey(); return;}
	if(strKey.split('-').length != 5){errAuthKey(); return;}

	var objStarter	= getStartObject();
	var strParam	= strAccountID+"|"+strUserID+"|"+_XmlUrl+"|"+strKey+"|"+intGameID+"|"+intServiceCode+"|"+_CountryID+"|"+_AuthUseType;

	if(objStarter == null)
	{
		popAutoInstaller();
	}
	else
	{
		var confirmResult = objStarter.StartWebLauncher_SelectAuth(strParam);
	}

	if (confirmResult != '100') {
	    errGameStarterExec(confirmResult);
	}
	else {

	    //지급
	    //기간
	    /*$.ajax(
                    {
                        type: "POST",
                        url: "/_Common/comGameLaunch.aspx/EventUserPayLog",
                        data: "{\'intAccountGuid\': \'" + strAccountID + "\',\'intGameCode\': \'" + intGameID + "\',\'PayPromotionSeq\': \'1001\',\'PayType\': \'1\'}",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        async: true,
                        success: function (msg) {
                            //onSubmit(msg);
                            //alert(msg);
                            //0 : 성공
                            //1 : 이미지급
                            //2 : 대상자아님
                            //-1 : 알수없는 오류 실패 
                        },
                        error: function (xhr, status, error) {
                            //alert(xhr.responseText);
                        }
                    });*/
	}
}

function isLogin() {

    var rtn = false;
    var ckLogin = fnGetStrCookie("WZ_GLOBAL_SECURE");
    if (ckLogin == "" || ckLogin == "undefined" || ckLogin == null) {
        rtn = false
    }
    else
        rtn = true;

    return rtn;
}

function fnGetStrCookie(sName) {
    var aRec;
    var aCook = document.cookie.split("; ");

    for (var i = 0; i < aCook.length; i++) {
        aRec = aCook[i].split("=");
        if (sName.toLowerCase() == unescape(aRec[0].toLowerCase())) return fnGetRealContent(aRec);
    }

    return "";
}

function fnGetRealContent(aRec) {

    if (aRec.length > 2) {
        var strContents = aRec[1];
        for (var i = 2; i < aRec.length; i++) {
            strContents = strContents + "=" + aRec[i];

        }
        return strContents;


    }
    return aRec[1];
}
