﻿mergeInto(LibraryManager.library,
{
    IdnetAutoLogin: function(_appId, _url)
    {
        try
        {
            var appId = Pointer_stringify(_appId);
            var url = Pointer_stringify(_url);
            window.idnet_autologin = function(object)
            {
                SendMessage('IDNET(Idnet.cs)', 'AutoLoginResult', JSON.stringify(object));
            }
            var js = document.createElement('script');
            js.src = url + appId;
            var first = document.getElementsByTagName('script')[0];
            first.parentNode.insertBefore(js, first);
        }
        catch (error)
        {}
    },
    IdnetSetSessionCookie: function(_appId, _url, _sessionCookie)
    {
        try
        {
            var appId = Pointer_stringify(_appId);
            var url = Pointer_stringify(_url);
            var sessionCookie = Pointer_stringify(_sessionCookie);
            var js = document.createElement('script');
            js.src = url + appId + '&sessionCookie=' + sessionCookie;
            var first = document.getElementsByTagName('script')[0];
            first.parentNode.insertBefore(js, first);
        }
        catch (error)
        {}
    },
    IdnetInitExternEval: function(_appId)
    {
        try
        {
            var appId = Pointer_stringify(_appId);
            InitExternEval(appId);
        }
        catch (error)
        {
            SendUnityMessage('ForceToShowRealAd', 'false');
        }

        function SendUnityMessage(functionName, message)
        {
            SendMessage('IDNET(Idnet.cs)', functionName, message);
        }
    },
    IdnetGetY8ToIDnetBannerStatus: function()
    {
        try
        {
            GetY8ToIDnetBannerStatus();
        }
        catch (error)
        {}
    },
    IdnetGetUserAgent: function()
    {
        try
        {
            function idnetGetUseragent()
            {
                var useragent;
                try
                {
                    useragent = window.navigator.userAgent;
                }
                catch (error)
                {
                    useragent = navigator.userAgent;
                }
                if (!useragent)
                {
                    useragent = window.navigator.userAgent;
                }
                return useragent;
            }
            SendUnityMessage('UserAgentCallback', idnetGetUseragent());

            function SendUnityMessage(functionName, message)
            {
                SendMessage('IDNET(Idnet.cs)', functionName, message);
            }
        }
        catch (error)
        {}
    },
    IdnetGetRefererDomain: function()
    {
        try
        {
            function idnetGetWindowUrl()
            {
                var url;
                try
                {
                    url = window.top.location.href;
                }
                catch (error)
                {
                    url = document.referrer;
                }
                if (!url)
                {
                    url = window.location.href;
                }
                return url;
            }
            SendUnityMessage('RefererDomainCallback', idnetGetWindowUrl());

            function SendUnityMessage(functionName, message)
            {
                SendMessage('IDNET(Idnet.cs)', functionName, message);
            }
        }
        catch (error)
        {}
    },
    IdnetGetOSDetails: function()
    {
        try
        {
            var osDetails;
            var os64bit = new function()
            {
                var self = {
                    footprints: [
                        'x86_64',
                        'x86-64',
                        'Win64',
                        'x64;',
                        'amd64',
                        'AMD64',
                        'WOW64',
                        'x64_64',
                        'OS X 10(.|_)[6-9]',
                        'OS X 10(.|_)(10|11|12)'
                    ],

                    detect: function()
                    {
                        var re = new RegExp(this.footprints.join('|'), 'i');
                        return (this.userAgent().match(re) != null);
                    },

                    userAgent: function()
                    {
                        return window.navigator.userAgent;
                    },
                };

                return self;
            };

            if (os64bit.detect())
            {
                osDetails = '64BitOS';
            }
            else
            {
                osDetails = '32BitOS';
            }

            SendUnityMessage('OSDetailsCallback', osDetails);

            function SendUnityMessage(functionName, message)
            {
                SendMessage('IDNET(Idnet.cs)', functionName, message);
            }
        }
        catch (error)
        {}
    },
    IdnetSilentSponserLogin: function()
    {
        try
        {
            window.parent.postMessage('idnetSilentLogin', '*');
        }
        catch (error)
        {}
    },
    IdnetY8ExternEval: function(_allowGamePause)
    {
        try
        {
            var allowGamePause = Pointer_stringify(_allowGamePause);
            window.Y8ExternEval(allowGamePause);
        }
        catch (error)
        {}
    },
    IdnetLogs: function(_log)
    {
        try
        {
            var logs = Pointer_stringify(_log);
            console.log(logs);
        }
        catch (error)
        {}
    }
});