function __NgbAOS() 
{
    this.isWriteObject = false;
	this.isAutoRunning = false;
	this.isKeyDefenseUse = false;
	this.isFireWallUse = false;
	
	this.isAOSKeydefenceSetPopUp = true;
	this.isAOSFireWallSetPopUp = true;

	this.strKeyDefenseURL = "/lib/security/setupkeydefense.html";
	this.strKeyDefenseWindowType = "width=488,height=460,toolbar=no,status=no,directories=no,scrollbars=no,location=no,resizable=no,menubar=no";

	this.strFireWallURL = "/lib/security/setupfirewall.html";
	this.strFireWallWindowType = "width=488,height=445,toolbar=no,status=no,directories=no,scrollbars=no,location=no,resizable=no,menubar=no";
	
	this.strSetUpCompleteURL = "http://www.lunia.nexon.com";
	
	this.isUseCloseAOSPopup = false;
	
	this.strCloseInfoURL = "";
	this.strCLoseInfoWindowType = "";
	
	this.ProductCode = 
	{
	    KEYDEFENDER : "40"
    ,   FIREWALL    : "e5"	    
	},
    this.AOSBrowser =
    {
        agt: navigator.userAgent.toLowerCase(),
        check: function( browserName ) { return NgbAOS.AOSBrowser.agt.indexOf( browserName.toLowerCase() ) != -1 },
        isUseNgbAOS: function() 
        {
            try 
            {
                if ( navigator.platform.indexOf( "Win" ) > -1 )
                {
                    if ( this.msie() ) 
                    {
                        if ( Math.round( NgbAOS.AOSBrowser.agt.substring( NgbAOS.AOSBrowser.agt.toLowerCase().indexOf("msie") ).split(';')[0].split(' ')[1] ) >= 6 )
                            return true;
                        else
                            return false;
                    }
                    else
                        return false;
                }
                else
                    return false;
            }
            catch (e) { return false; }
        },

        msie        : function() { return NgbAOS.AOSBrowser.check("msie") },
        msie5       : function() { return NgbAOS.AOSBrowser.check("msie 5") },
        msie55      : function() { return NgbAOS.AOSBrowser.check("msie 5.5") },
        msie6       : function() { return NgbAOS.AOSBrowser.check("msie 6") },
        msie7       : function() { return NgbAOS.AOSBrowser.check("msie 7") },
        msie8       : function() { return NgbAOS.AOSBrowser.check("msie 8") },

        firefox     : function() { return NgbAOS.AOSBrowser.check("firefox") },
        firefox15   : function() { return NgbAOS.AOSBrowser.check("firefox/1.5") },
        firefox2    : function() { return NgbAOS.AOSBrowser.check("firefox/2") },
        firefox3    : function() { return NgbAOS.AOSBrowser.check("firefox/3") },
        firefox35   : function() { return NgbAOS.AOSBrowser.check("firefox/3.5") },

        netscape    : function() { return NgbAOS.AOSBrowser.check("netscape") },

        safari      : function() { return NgbAOS.AOSBrowser.check("safari") },
        opera       : function() { return NgbAOS.AOSBrowser.check("opera") },
        chrome      : function() { return NgbAOS.AOSBrowser.check("chrome") },

        gecko       : function() { return NgbAOS.AOSBrowser.check("gecko") },
        khtml       : function() { return NgbAOS.AOSBrowser.check("khtml") },

        windows     : function() { return NgbAOS.AOSBrowser.check("windows") },
        mac         : function() { return NgbAOS.AOSBrowser.check("mac") },
        linux       : function() { return NgbAOS.AOSBrowser.check("linux") }
    },
	this.RaiseError = function()
	{
	    NgbAOS.Util.SetKeyDefenseSetUp( false );
	    NgbAOS.Util.SetFireWallSetUp( false );
	},
	this.isSetupPage =
	{
	    KeySetupPage : function()
	    {
	        var strKeyDefenseURL = NgbAOS.strKeyDefenseURL.toLowerCase();
	        
	        if( strKeyDefenseURL.indexOf( "../../" ) != -1 )
		        strKeyDefenseURL = strKeyDefenseURL.replace("../../","/");
		    	
		    if( location.href.toLowerCase().indexOf( strKeyDefenseURL ) != -1 )
		        return true;
		    else
		        return false;
	    },
	    FirewallSetupPage : function()
	    {
	        var strFireWallURL = NgbAOS.strFireWallURL.toLowerCase();
	        
	        if( strFireWallURL.indexOf( "../../" ) != -1 )
		        strFireWallURL = strFireWallURL.replace("../../","/");
		        
		    if( location.href.toLowerCase().indexOf( strFireWallURL ) != -1 )
		        return true;
		    else
		        return false;
	    }
	},
	this.Execute = function()
	{
	    if( NgbAOS.AOSBrowser.isUseNgbAOS() )
	    {
	        var isWriteObject = false;
	        
	        if( NgbAOS.isSetupPage.KeySetupPage() && NgbAOS.Util.GetKeyDefense() == "1" )
			{
				NgbAOS.Util.SetKeyDefense( true );
		        isWriteObject = true;
			}
	        else if( NgbAOS.isSetupPage.FirewallSetupPage() && NgbAOS.Util.GetFireWall() == "1" )
			{
				NgbAOS.Util.SetFireWall( true );
		        isWriteObject = true;
			}
		    else if( NgbAOS.isAutoRunning )
		    {
		        if( !NgbAOS.CheckInstalled() )
		            isWriteObject = true;
		            
		        NgbAOS.Util.SetKeyDefense( true );
                NgbAOS.Util.SetFireWall( true );
		    }
        	
	        if( isWriteObject && NgbAOS.AOSBrowser.isUseNgbAOS() && !NgbAOS.CheckInstalled() )
	        {
	            if( location.href.toLowerCase().indexOf( "https://" ) == 0 )
	            {
	                if (NgbAOS.AOSBrowser.msie())
	                    aos_set_ssl_codebase( _g_aos_ssl_codebase );
	                else
	                    aos_set_ssl_xpi_installer( _g_aos_ff_ssl_installer_row );
	            }
		        else
		        {
		            if ( NgbAOS.AOSBrowser.msie() )
                        aos_set_codebase( _g_aos_codebase );
                    else
                        aos_set_xpi_installer( _g_aos_ff_installer_row );
		        }
		        
		        aos_set_option( "obj_style", "hideout" );
		        aos_write_object();
		        NgbAOS.isWriteObject = true;
		    
		        if( NgbAOS.isAutoRunning || NgbAOS.isSetupPage.KeySetupPage() || NgbAOS.isSetupPage.FirewallSetupPage() )
				{
			        window.setTimeout( NgbAOS.LoadingCheck, 500 );
				}
			}
            else
                NgbAOS.LoadingCheck();
        }
        else
        {
            NgbAOS.Util.SetKeyDefenseSetUp( false );
	        NgbAOS.Util.SetFireWallSetUp( false );
        }
	},
	this.CheckInstalled = function( pd )
	{
	    var pd = String( pd ).toLowerCase();
        var isInstalled = false;

        if( pd == null || pd == "" || pd == "undefined" )
        {
            isInstalled = aos_is_new();
            isInstalled = ( isInstalled || isInstalled == 1 ) ? true : false;
        }
        else if( pd == NgbAOS.ProductCode.KEYDEFENDER || pd == NgbAOS.ProductCode.FIREWALL )
        {
            isInstalled = aos_isinstalled( pd );
            isInstalled = ( isInstalled || isInstalled == 1 ) ? true : false;
        }
        return isInstalled;
	},
	this.isRunning = function(pd) 
	{
	    var pd = String( pd ).toLowerCase();
	    if( ( pd != null && pd != "undefined" ) && ( pd == NgbAOS.ProductCode.FIREWALL || pd == NgbAOS.ProductCode.KEYDEFENDER ) )
	    {
	        var isRunning = aos_isrunning( pd );
	        if( isRunning || isRunning == 1 )
	            return true;
	    }
	    return false;
	},
	this.LoadingCheck = function()
	{
		if( !NgbAOS.isAutoRunning && NgbAOS.isSetupPage.KeySetupPage() && NgbAOS.Util.GetKeyDefense() == "1"  )
		{
			if( NgbAOS.CheckInstalled() )
			{
				NgbAOS.isKeyDefenseUse = true;
				NgbAOS.Util.SetKeyDefense( true );
				NgbAOS.MKD20Event( "update_complete", NgbAOS.ProductCode.KEYDEFENDER, "" );
				return;
			}
			else
	            window.setTimeout( NgbAOS.LoadingCheck, 500 ); 
	    }
		else if( !NgbAOS.isAutoRunning && NgbAOS.isSetupPage.FirewallSetupPage() && NgbAOS.Util.GetFireWall() == "1" )
		{
			if( NgbAOS.CheckInstalled() )
			{
				NgbAOS.isFireWallUse = true;
				NgbAOS.Util.SetFireWall( true );
				NgbAOS.MKD20Event( "update_complete", NgbAOS.ProductCode.FIREWALL, "" );
				return;
			}
			else
	            window.setTimeout( NgbAOS.LoadingCheck, 500 ); 
		}
	    else
	    {
			NgbAOS.Run();	
	    }
	},
	this.Run = function()
	{
	    if( NgbAOS.AOSBrowser.isUseNgbAOS() && NgbAOS.CheckInstalled() )
        {
			aos_set_subclsid( "40","59B0298B-A7B5-4045-A34E-377EDF7BCB8E" );
	        aos_set_authinfo( "aosmgr_nexon.html" );
			aos_set_option( "uimode", true );
			aos_set_option( "asyncmode", false );
			aos_set_option( "obj_style", "hideout" );
            aos_set_submimetype( "40","application/ahnlab/asp/npmkd25aos" );
            aos_set_option( "mkd_protect_level", "default" );
            aos_set_option( "aos_event_handler", NgbAOS.MKD20Event );
            aos_set_option( "mkd_inertinit", true );
            
	        if( !NgbAOS.isWriteObject )
	        {
	            aos_write_object();
	            NgbAOS.isWriteObject = true;
	        }
	        
	        if( NgbAOS.isAutoRunning || ( NgbAOS.Util.GetKeyDefense() == "1" && NgbAOS.Util.GetFireWall() == "1" ) )
	        {
		        NgbAOS.isKeyDefenseUse = true;
		        NgbAOS.isFireWallUse = true;
		        aos_start( '40|e5' );
	        }
	        else
	        {
				if( NgbAOS.Util.GetKeyDefense() == "1" )
	            {
					NgbAOS.isKeyDefenseUse = true;
					aos_start( NgbAOS.ProductCode.KEYDEFENDER );
	            }
	            else if( NgbAOS.Util.GetFireWall() == "1" )
	            {
					NgbAOS.isFireWallUse = true;
					aos_start( NgbAOS.ProductCode.FIREWALL );
	            }
	        }
			NgbAOS.SetCheckBox();
	        
        }
	},
	this.SetUseKeyDefense = function( isUse )
	{
	    NgbAOS.Util.SetKeyDefense( isUse );
	    location.reload();
	},
	this.SetUseFireWall = function( isUse )
	{
	    NgbAOS.Util.SetFireWall( isUse );
	    location.reload();
	},
	this.SetUpKeyDefense = function( isCheckBox, strWiseLogParam )
	{
	    if( typeof( strWiseLogParam ) == 'undefined' )
		    strWiseLogParam = "";

		if( NgbAOS.AOSBrowser.isUseNgbAOS() )
	    {
		    if( typeof( document.forms == "object" ) && ( document.forms.length > 0 ) && typeof( document.forms[1].NxCheckKeyDefense ) == "object" )
		    {
		        var isChecked = isCheckBox ? document.forms[1].NxCheckKeyDefense.checked : !document.forms[1].NxCheckKeyDefense.checked;
			    if( isChecked )
			    {
				    if( !NgbAOS.CheckInstalled( NgbAOS.ProductCode.KEYDEFENDER ) || NgbAOS.Util.GetKeyDefenseSetUp() != "1" )
				    {
				        if( NgbAOS.isAOSKeydefenceSetPopUp )
					        window.open( NgbAOS.strKeyDefenseURL + strWiseLogParam, 'SetupKeyDefense', NgbAOS.strKeyDefenseWindowType );
					    else
					        document.location.href = NgbAOS.strKeyDefenseURL + strWiseLogParam;
					}
				    else
					    NgbAOS.SetUseKeyDefense( true );
			    }
			    else
				    NgbAOS.SetUseKeyDefense( false );
		    }
	    }
	    else
	    {
		    alert( 'Å°º¸µåº¸¾ÈÀ» »ç¿ëÇÒ ¼ö ¾ø´Â ºê¶ó¿ìÀú ÀÔ´Ï´Ù.' );
		    return false;
	    }
	    return false;
	},
	
	this.SetUpFireWall = function( isCheckBox, strWiseLogParam )
	{
	
	    if( typeof( strWiseLogParam ) == 'undefined' )
		    strWiseLogParam = "";
		    
		    
		    
		if ( NgbAOS.AOSBrowser.isUseNgbAOS() )
	    {
		    if( typeof( document.forms == "object" ) && ( document.forms.length > 0 ) && typeof( document.forms[1].NxCheckFireWall ) == "object" )
		    {
			    var isChecked = isCheckBox ? document.forms[1].NxCheckFireWall.checked : !document.forms[1].NxCheckFireWall.checked;
			    if( isChecked )
			    {
				    if( !NgbAOS.CheckInstalled( NgbAOS.ProductCode.FIREWALL ) || NgbAOS.Util.GetFireWallSetUp() != "1" )
				    {
				        if( NgbAOS.isAOSFireWallSetPopUp )
					        window.open( NgbAOS.strFireWallURL + strWiseLogParam, 'SetupFireWall', NgbAOS.strFireWallWindowType ); 
					    else
					        document.location.href = NgbAOS.strFireWallURL + strWiseLogParam;
				    }
				    else
					    NgbAOS.SetUseFireWall( true );
			    }
			    else
				    NgbAOS.SetUseFireWall( false );
		    }
	    }
	    else
	    {
		    alert( '°³ÀÎ¹æÈ­º®À» »ç¿ëÇÒ ¼ö ¾ø´Â ºê¶ó¿ìÀú ÀÔ´Ï´Ù.' );
		    return false;
	    }
    	
	    return false;
	},
	this.Util =
	{
	    GetKeyDefense : function()
	    {
	        var _use_KeyDefense = NgbCookie.GetCookie( "isUseMKDPlus" );
	        return _use_KeyDefense.substring( 0, 1 );
	    },
	    GetKeyDefenseSetUp : function()
	    {
	        var _use_KeyDefense = NgbCookie.GetCookie( "isUseMKDPlus" );
	        return _use_KeyDefense.substring( 2, 3 );
	    },
	    GetFireWall : function()
	    {
	        var _use_myfirewall = NgbCookie.GetCookie( "isUseMKDPlus" );
	        return _use_myfirewall.substring( 4, 5 );
	    },
	    GetFireWallSetUp : function()
	    {
	        var _use_myfirewall = NgbCookie.GetCookie( "isUseMKDPlus" );
	        return _use_myfirewall.substring( 6, 7 );
	    },
	    SetKeyDefense : function( isUse )
	    {
	        if( !isUse && NgbAOS.isRunning( NgbAOS.ProductCode.KEYDEFENDER ) )
	        {
	            if( NgbAOS.isAutoRunning )
	            {
	                alert( 'Å°º¸µåº¸¾È ÇØÁ¦¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.' );
	            }
	            else
	            {
	                if( !NgbAOS.isUseCloseAOSPopup )
			            alert( 'º¸¾È¼³Á¤À» ÇØÁ¦ÇÏ½Ã±â À§ÇØ¼­´Â\rÀÎÅÍ³Ý Ã¢À» ¸ðµÎ ´Ý°í ´Ù½Ã Á¢¼ÓÇØÁÖ½Ã±â ¹Ù¶ø´Ï´Ù.' );
		            else
		            {
			            var windowOpen = window.open( NgbAOS.strCloseInfoURL + strWiseLogParam, 'CloseInfo', NgbAOS.strCLoseInfoWindowType );
			            windowOpen.focus();
			        }
			    }
	        }
	        
	        var _use_KeyDefense = NgbCookie.GetCookie( "isUseMKDPlus" );
	        if( _use_KeyDefense.length != 7 )
		        _use_KeyDefense = "0_0_0_0";
        		
	        _use_KeyDefense = ( isUse ? "1_" : "0_" ) + _use_KeyDefense.substring( 2, 7 );
	        NgbCookie.setCookie_Permanent( "isUseMKDPlus", _use_KeyDefense );
	    },
	    SetKeyDefenseSetUp : function( isUse )
	    {
	        var _use_KeyDefense = NgbCookie.GetCookie( "isUseMKDPlus" );
	        if( _use_KeyDefense.length != 7 )
		        _use_KeyDefense = "0_0_0_0";
        		
	        _use_KeyDefense = _use_KeyDefense.substring( 0, 1 ) + ( isUse ? "_1" : "_0" ) + _use_KeyDefense.substring( 3, 7 );
	        NgbCookie.setCookie_Permanent( "isUseMKDPlus", _use_KeyDefense );
	    },
	    SetFireWall : function( isUse )
	    {
	        if ( !isUse && NgbAOS.isRunning( NgbAOS.ProductCode.FIREWALL ) )
	        {
	            if( NgbAOS.isAutoRunning )
	            {
	                alert( '°³ÀÎ¹æÈ­º® ÇØÁ¦¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.' );
	                return;
	            }
	            else
	            {
	                if( !NgbAOS.isUseCloseAOSPopup )
			            alert( 'º¸¾È¼³Á¤À» ÇØÁ¦ÇÏ½Ã±â À§ÇØ¼­´Â\rÀÎÅÍ³Ý Ã¢À» ¸ðµÎ ´Ý°í ´Ù½Ã Á¢¼ÓÇØÁÖ½Ã±â ¹Ù¶ø´Ï´Ù.' );
		            else
		            {
			            var windowOpen = window.open( NgbAOS.strCloseInfoURL + strWiseLogParam, 'CloseInfo', NgbAOS.strCLoseInfoWindowType );
			            windowOpen.focus();
			        }
			    }
	        }
	        
	        var _use_myfirewall = NgbCookie.GetCookie( "isUseMKDPlus" );
	        if( _use_myfirewall.length != 7 )
		        _use_myfirewall = "0_0_0_0";
        		
	        _use_myfirewall = _use_myfirewall.substring( 0, 4 ) + ( isUse ? "1_" : "0_" ) + _use_myfirewall.substring( 6, 7 );
	        NgbCookie.setCookie_Permanent( "isUseMKDPlus", _use_myfirewall );
	    },
	    SetFireWallSetUp : function( isUse )
	    {
	        var _use_myfirewall = NgbCookie.GetCookie( "isUseMKDPlus" );
	        if( _use_myfirewall.length != 7 )
		        _use_myfirewall = "0_0_0_0";
        		
	        _use_myfirewall = _use_myfirewall.substring( 0, 5 ) + ( isUse ? "_1" : "_0" );
	        NgbCookie.setCookie_Permanent( "isUseMKDPlus", _use_myfirewall );
	    }
	},
	this.MKD20Event = function( event, param1, param2 )
	{
		if( event == "update_complete" )
	    {
		    if( NgbAOS.isKeyDefenseUse )
			    NgbAOS.Util.SetKeyDefenseSetUp( true );
    		
		    if( NgbAOS.isFireWallUse )
			    NgbAOS.Util.SetFireWallSetUp( true );
			
			if( NgbAOS.AOSBrowser.firefox() )
			    NgbAOS.SetCheckBox();
			
		    if( NgbAOS.isSetupPage.KeySetupPage() )
		    {
		        if( NgbAOS.isKeyDefenseUse )
		        {
		            if( typeof( opener ) == 'object' )
		            {
		           
			            opener.location.replace(opener.location.href);
			            NgbAOS.CloseWindow();
			         
			        }
			        else
			            document.location.href = NgbAOS.strSetUpCompleteURL;    
		        }
		    }
		    else if( NgbAOS.isSetupPage.FirewallSetupPage() )
		    {
		        if( NgbAOS.isFireWallUse )
		        {
		            if( typeof( opener ) == 'object' )
		            {
			            opener.location.replace(opener.location.href);
			            NgbAOS.CloseWindow();
			        }
			        else
			            document.location.href = NgbAOS.strSetUpCompleteURL;    
		        }
		    }
			
			return;
	    }
	},
	this.CloseWindow = function()
	{
		window.close();
		if( !window.closed )
		{
			window.setTimeout( NgbAOS.CloseWindow, 500 );
		}
	},
	this.SetCheckBox = function()
	{
        if( NgbAOS.Util.GetKeyDefense() == "1" && typeof( document.forms == "object" ) && ( document.forms.length > 0 ) && typeof( document.forms[1].NxCheckKeyDefense ) == "object" )
		{
            document.forms[1].NxCheckKeyDefense.checked = true;
		}
    	
        if( NgbAOS.Util.GetFireWall() == "1" && typeof( document.forms == "object" ) && ( document.forms.length > 0 ) && typeof( document.forms[1].NxCheckFireWall ) == "object" )
		{
            document.forms[1].NxCheckFireWall.checked = true;
		}
	}
	this.GetText = function( inputObject )
	{
		try
		{
			if( NgbAOS.isKeyDefenseUse )
			{
				if( inputObject.value.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == "" )
					return inputObject.value
				else	
					return aos_get_text2( inputObject );
			}
			else
				return inputObject.value;
		}
		catch( e )
		{
			return inputObject.value;
		}
	}
}
var NgbAOS = new __NgbAOS();