﻿(
    function()
    {
        // object that holds the deferred reload call
        /* number */var reloadTimeout = null;

        // amount of time in milliseconds between reloads
        /* number */var reloadInterval;

        /**
         * Handler for the reload timeout's expiry. Refreshes the page.
         */
        /* void */var reloadTimeout_timeout = function()
        {
            if (reloadTimeout != null)
            {
                clearTimeout(reloadTimeout);
                reloadTimeout = null;
            }

            document.location.reload();
        }
        
        // attach to window load event
        dojo.addOnLoad
        (
            /* void */function()
            {
                if (typeof(listRefreshInterval) == "number")
                {
                    reloadInterval = Math.round(listRefreshInterval) * 1000;
                }
                else
                {
                    reloadInterval = 60000;
                }

                if (reloadTimeout != null)
                {
                    clearTimeout(reloadTimeout);
                    reloadTimeout = null;
                }

                reloadTimeout = setTimeout(reloadTimeout_timeout, reloadInterval);
            }
        );
        
        // attach to window unload event
        dojo.addOnUnload
        (
            /* void */function()
            {
                if (reloadTimeout != null)
                {
                    clearTimeout(reloadTimeout);
                    reloadTimeout = null;
                }
            }
        );
    }
)();
