// control list index define
var _CONTROL_MODE_ = 0;
var _CONTROL_NAME_ = 1;
var _CONTROL_VERSION_ = 2;
var _CONTROL_CLSID_ = 3;

var _nTestMode_, _cdnURL_;
var _bTestSvr_ = (location.host.indexOf('dev') >= 0) || (location.host.indexOf('alpha') >= 0) ;

if (_bTestSvr_)
{
	_nTestMode_ = 1;
	_cdnURL_ = "alpha-cdn.hangame.com";
}
else
{
	_nTestMode_ = 0;
	_cdnURL_ = "cdn.hangame.com";
}



// Object ¸ñ·Ï....
// (mode, name, version, clsid)

var _control_list = new Array(
						Array("earmark", "[SYSTEM]HGEarMark.dll", "1,0,0,4", "DA9F545D-2D0A-4229-8681-672F49E63846"),
                        Array("autopatch", "[SYSTEM]mfc42.dll", "6,0,8267,0", ""),
                        Array("autopatch", "[SYSTEM]msvcrt.dll", "6,0,8267,0", ""),
                        Array("autopatch", "[SYSTEM]OLEPRO32.DLL", "5,0,4265", ""),
                        Array("autopatch", "[SYSTEM]PortalOCP.ocx", "1,1,0,34", "7D949D27-E3CF-48CB-8127-42AAC08C57F1"),
                        Array("vaccine", "[SYSTEM]GHScanLoad.dll", "1,0,61201,1", "38C8C23D-76BC-4CBD-BC93-80C044E4F6F0"),
                        Array("webmsg", "[SYSTEM]atl.dll", "3,0,0,0", ""),
                        Array("webmsg", "[SYSTEM]HanWebMsg1060.dll", "1,0,6,0", "B9DD5FFF-776D-4E53-93D3-A4463E63AD86"),
                        Array("keysecurity", "[SYSTEM]msvcrt.dll", "4,20,0,6164", ""),
                        Array("keysecurity", "[SYSTEM]mfc42.dll", "6,0,8168,0", ""),
                        Array("keysecurity", "[SYSTEM]atl.dll", "3,0,0,0", ""),
                        Array("keysecurity", "[SYSTEM]SCSKAppLink.dll", "4,0,10,21", ""),
                        Array("keysecurity", "[SYSTEM]SCSK4.ocx", "4,0,10,17", "39FC0CF9-86F3-4502-B773-D16706EDEC83"),
                        Array("keysecurity_vista", "[SYSTEM]msvcrt.dll", "4,20,0,6164", ""),
                        Array("keysecurity_vista", "[SYSTEM]mfc42.dll", "6,0,8168,0", ""),
                        Array("keysecurity_vista", "[SYSTEM]atl.dll", "3,0,0,0", ""),
                        Array("keysecurity_vista", "[SYSTEM]SCSKLoader.exe", "4,0,10,15", ""),
                        Array("keysecurity_vista", "[SYSTEM]SCSKCom.dll", "4,0,10,7", ""),
                        Array("keysecurity_vista", "[SYSTEM]SCSKAppLink.dll", "4,0,10,23", ""),
                        Array("keysecurity_vista", "[SYSTEM]SCSK4.ocx", "4,0,6000,19", "39FC0CF9-86F3-4502-B773-D16706EDEC83"),
                        Array("newkeysecurity", "[SYSTEM]CKCrypto.dll", "1,0,0,9", ""),
                        Array("newkeysecurity", "[SYSTEM]CKApp.dll", "1,0,0,27", ""),
                        Array("newkeysecurity", "[SYSTEM]Jrsoftcp.dll", "1,0,0,38", ""),
                        Array("newkeysecurity", "[SYSTEM]CKCSP.dll", "1,2,3,0", ""),
                        Array("newkeysecurity", "[SYSTEM]XecureCK.dll", "3,0,2,1", "6CE20149-ABE3-462E-A1B4-5B549971AA38"),
                        Array("newkeysecurity", "[SYSTEM]CKComObj.dll", "1,0,0,15", "4ABB12B3-8A8B-481D-874A-93E16F930A8B"),
                        Array("hgreport:gamestart:publauncher", "[SYSTEM]HGReport.dll", "1,0,0,19", "8C2E6E01-D1F6-4A94-B314-7C5DF4EE1853"),
                        Array("noad", "[SYSTEM]numgr.dll", "1,0,0,1", "AD5DCFE8-5721-42D3-931A-2BAD6AE6293E"),
                        Array("badukbbs:badukquiz", "[SYSTEM]BadukQuiz.ocx", "1,0,0,1", "38C18C13-FED0-4074-BFB7-9BBEC3384704"),
                        Array("badukbbs:baduklecture", "[SYSTEM]BadukMMLecture.ocx", "1,0,0,8", "8B4A0160-3D50-489F-BC51-ED10ED2A0175"),
                        Array("badukbbs:badukcontrol", "[SYSTEM]BadukControl.ocx", "1,1,0,8", "CCBA62F1-7974-11D2-9B9C-00609778BE1A"),
                        Array("badukbbs:badukauth", "[SYSTEM]BadukAuthor4Web.ocx", "1,1,0,9", "0C6DED75-E9FC-11D3-B22C-005004C0D018"),
                        Array("badukgibo", "[SYSTEM]gdiplus.dll", "5,1,3097,0", ""),
                        Array("badukgibo", "[SYSTEM]CalcGoH.dll", "1,0,0,1", ""),
                        Array("badukgibo", "[SYSTEM]BadukMorphosis3.ocx", "1,1,1,2", "BA40BDA2-DCB3-4E16-94D3-962DB2C1C792"),
                        Array("badukdic", "[SYSTEM]gdiplus.dll", "5,1,3097,0", ""),
                        Array("badukdic", "[SYSTEM]InteliBaduk.ocx", "1,0,6,14", "A314E466-0677-4AFA-AA73-BDE0DA6796A3"),        
                        Array("badukdic", "[SYSTEM]HBadukControl.ocx", "2,0,0,15", "1A4B6888-06CB-4563-92D3-C6A12D9D2ACF"),
                        Array("gamestart", "[SYSTEM]HanGamePlugin19.dll", "19,0,0,61", "5876CAD0-1636-42EA-AC50-4C06F3196089"),
                        Array("gamestart", "[DOWNLOADED]HGNotify19.exe", "19,0,0,6", ""),
                        Array("gamestart", "[DOWNLOADED]hgstart19.exe", "19,0,0,78", ""),
                        Array("publauncher", "[SYSTEM]PubPlugin.dll", "2,0,20,1", "F8160836-0C11-4CA4-AD87-944542C7BCBD"),
                        Array("publauncher", "[DOWNLOADED]PLauncher.exe", "2,0,26,0", ""),
                        Array("publauncher", "[DOWNLOADED]ExLauncher.exe", "1,0,11,10", ""),
                        Array("music", "[SYSTEM]NhnPlayerx.ocx", "1,2,0,4", "575594D5-8974-4AFE-9919-8FE4AA687DEF"),
                        Array("movie", "[SYSTEM]difplayer.dll", "1,1,2,27", "1EE59A7D-F863-4e86-A3D8-93183460B761"),
                        Array("chat", "[SYSTEM]EntoiChatCTRL7.dll", "1,0,1,56", "253380F7-1A0F-4C11-B218-C0E7E8E8C940"),
                        Array("cast", "[SYSTEM]EntoiCastX.ocx", "1,0,0,39", "A69F12F6-9756-45F3-BF00-5A8C93DE24D1"),
                        Array("sketch:bbs", "[SYSTEM]EntoiSketch.ocx", "1,0,2,1", "0A158DAB-1CE3-4ECE-AD12-2626DA4ED444"),
                        Array("camera:bbs", "[SYSTEM]EntoiCamShot.ocx", "1,0,2,1", "E67F10E4-FDD5-47F0-B41F-5F68EE5EC3C8"),
                        Array("flashicon:flashutil", "[SYSTEM]HanIconSetup.ocx", "1,0,0,5", "1D6869BB-383D-4F92-8B62-3DBB0A20A840"),
                        Array("flashfull:flashutil", "[SYSTEM]AxFlashUtil.ocx", "1,0,0,22", "1CB791EA-DF26-487E-A95B-458C9FAD9E1A")
                        );

function check_isloaded()
{
        if (HanSetUp.IsLoaded() == false)
        {
                alert("ÄÁÆ®·Ñ ·Îµå½ÇÆÐ");
        }
}

function check_install()
{
        if (HanSetUp.CheckObjInstall(document.all.class_id.value) == 1)
        {
                alert("ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖÀ½");
        }
	else
	{
                alert("¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀ½");
        }
}

function get_version()
{       
        result = HanSetUp.GetFileVersion(document.all.file_name.value);
        alert(result);
}

function check_SetUpObj()
{
        if (typeof(HanSetUp) == "object" && typeof(HanSetUp.IsLoaded) != "undefined")
                return true;
        else
                return false;
}

function check_update(mode)
{
        var param = "<PARAM><FORCEDELETE>1</FORCEDELETE><MODE>" + mode + "</MODE><SOURCE>http://" + _cdnURL_ + "/hangame/hansetup/control.xml</SOURCE></PARAM>"
        
        if(!check_SetUpObj()) return false;             

        if ( HanSetUp.IsLoaded() == true )
        {
		HanSetUp.TestMode=_nTestMode_;
                HanSetUp.InstallParam=param;
				// ÇÊ¿äÇÑ control ÀÌ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì.. ¼³Ä¡ ÇÁ·Î±×·¥ ½ÇÇà.
				if ( ! check_install_control(mode) )
						HanSetUp.WaitUpdate();
        }
        else
        {                                                                                                         
                // OCX ¼³Ä¡µÇÁö ¾ÊÀº °æ¿ì                                                                         
                alert("ocx¸¦ ¼³Ä¡ÇÏ¼Å¾ß ÇÕ´Ï´Ù.");                                                                
        }                                                                                                         
}                                                                                                                 


// ÇÊ¿äÇÑ control µéÀÌ install µÇ¾î ÀÖ´ÂÁö È®ÀÎ..
function check_install_control(mode)
{
	var array_control = getControl(mode);
	
	for ( var i=0; i<array_control.length; i++)
	{
		if ( array_control[i].obj != "" && array_control[i].ver != "" )
		{
		    var retcd = HanSetUp.CheckUpdate(array_control[i].obj, array_control[i].ver) ;
		    if ( retcd == 1) return false;
		    // vista
		    if ( retcd == 2) return true;
		}
		if ( array_control[i].clsid != "" && HanSetUp.CheckObjInstall(array_control[i].clsid) == 0 )
			return false;
	}
	return true;
}                                                                                            
// ÇÊ¿äÇÑ control µéÀÌ ÀÖ´ÂÁö¸¸ Ã¼Å©..
function check_exist_control(mode)
{
	var array_control = getControl(mode);
	
	for ( var i=0; i<array_control.length; i++)
	{
//		if (array_control[i].clsid != "" && HanSetUp.CheckObjInstall(array_control[i].clsid) == 0)
		if (array_control[i].obj != "" && array_control[i].ver != "" && HanSetUp.GetFileVersion(array_control[i].obj) == "0,0,0,0")
			return false;
	}
	return true;
}                                                                                            

// mode ¿¡ ¸Â´Â control ¸ñ·ÏÀ» ¸®ÅÏ..
function getControl(mode)
{
	var control_list = new Array();
	
	for (var i=0; i < _control_list.length; i++)
	{
		if (check_control_mode(mode, _control_list[i][_CONTROL_MODE_]))
		{
			control_list[control_list.length] = new controlObject(_control_list[i][_CONTROL_NAME_], _control_list[i][_CONTROL_VERSION_], _control_list[i][_CONTROL_CLSID_]);	
		}
	}

	return control_list;
}                                                                      


// ¸ñ·Ï¿¡¼­ mode ¿¡ ¸Â´Â control À» È®ÀÎ..
function check_control_mode(mode, strmode)
{
	var arrMode = strmode.split(":");
	for (var i=0; i< arrMode.length; i++)
		if (mode == arrMode[i]) return true;

	return false;	
}

// Control Object
function controlObject(obj, ver, clsid)
{
	this.obj = obj;
	this.ver = ver;
	this.clsid = clsid;
}

// object Á¸Àç À¯¹« 
function check_object(mode)
{                                                                                                                 
        var param = "<PARAM><FORCEDELETE>1</FORCEDELETE><MODE>" + mode + "</MODE><SOURCE>http://" + _cdnURL_ + "/hangame/hansetup/control.xml</SOURCE></PARAM>"
                                                                                                                  
        if(!check_SetUpObj()) return 3;                                                                       

        if ( HanSetUp.IsLoaded() == true )                                                                        
        {
                HanSetUp.TestMode=_nTestMode_;                                                                              
                HanSetUp.InstallParam=param;
                                // ÇÊ¿äÇÑ control ÀÌ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì.. ¼³Ä¡ ÇÁ·Î±×·¥ ½ÇÇà.                
                                if ( ! check_exist_control(mode) )                                              
				    return 1;
				else
				    return 0;
        }                                                                                                         
        else                                                                                                      
        {                                                                                                         
                // OCX ¼³Ä¡µÇÁö ¾ÊÀº °æ¿ì                                                                         
                //  alert("ocx¸¦ ¼³Ä¡ÇÏ¼Å¾ß ÇÕ´Ï´Ù.");                                                                
		return 4;
        }                                                                                                         
}     

function setUpIns()                                                                                               
{                                                                                                                 
        document.writeln('<div style="display:none;"><OBJECT ID="HanSetUp" CLASSID="CLSID:C044CD87-DFB0-4130-A5E4-49361106FBC8" codebase="/common/HanSetup1030.cab#version=1,0,0,30" style="display:none;"></OBJECT></div>'); 
}                                                                                                                 

if (typeof(setUpIns) == "function")  setUpIns();   
