
    window.saveNavigator = window.navigator;

    function noop() {}

    function noerror() { return true; }


    // Need to be customized for each site
    function defaultOnError(msg, url, line) {
        if (top.location.href.indexOf('error') == -1)
            top.location = 'error?src=js&msg=' + escape(msg) + '&url=' + escape(url) +
                '&line=' + escape(line);
    }


    // Need to be customized for each site
    function reportError(message) {
        if (top.location.href.indexOf('error') == -1)
            top.location = 'error?src=js&msg=' + escape(message);
    }


    function pageRequires(cond, msg, redirectTo) {
        if (!cond) {
            msg = 'Эта страница требует ' + msg;
            top.location = redirectTo + '?msg=' + escape(msg);
        }
        return cond;
    }


    function detectBrowser() {
        var i = 0;
        var platform;
        var element = null;
        var oldOnError = window.onerror;

        window.onerror = defaultOnError;

        navigator.OS = "";
        navigator.org = "";
        navigator.family = "";
        navigator.version = 0;

        var ua = window.navigator.userAgent.toLowerCase();

        if (typeof(window.navigator.platform) != "undefined") {
            platform = window.navigator.platform.toLowerCase();
            if (platform.indexOf("win") != -1) navigator.OS = "win";
            else if (platform.indexOf("mac") != -1) navigator.OS = "mac";
            else if (platform.indexOf("unix") != -1 || platform.indexOf("linux") != -1 ||
                platform.indexOf("sun") != -1) navigator.OS = "nix";
        }

        if (ua.indexOf("opera") != -1) {
            i = ua.indexOf("opera");
            navigator.org = "opera";
            navigator.family = "opera";
            navigator.version = parseFloat("0" + ua.substr(i + 6), 10);
        } else if ((i = ua.indexOf("msie")) != -1) {
            navigator.org = "microsoft";
            navigator.version = parseFloat("0" + ua.substr(i + 5), 10);
            if (navigator.version < 4) navigator.family = "ie3";
            else navigator.family = "ie4";
        } else if (typeof(window.controllers) != "undefined" &&
            typeof(window.locationbar) != "undefined") {
            i = ua.lastIndexOf("/");
            navigator.family = "gecko";
            navigator.version = parseFloat("0" + ua.substr(i + 1), 10);
            if (ua.indexOf("netscape") != -1) navigator.org = "netscape";
            else if (ua.indexOf("compuserve") != -1) navigator.org = "compuserve";
            else navigator.org = "mozilla";
        } else if ((ua.indexOf("mozilla") !=-1) && (ua.indexOf("spoofer") == -1) &&
            (ua.indexOf("compatible") == -1) && (ua.indexOf("opera") == -1) &&
            (ua.indexOf("webtv") == -1) && (ua.indexOf("hotjava") == -1)) {
            var is_major = parseFloat(navigator.appVersion);
            if (is_major < 4) navigator.version = is_major;
            else {
                i = ua.lastIndexOf("/");
                navigator.version = parseFloat("0" + ua.substr(i + 1), 10);
            }
            navigator.org = "netscape";
            navigator.family = "nn" + parseInt(navigator.appVersion);
        } else if ((i = ua.indexOf("aol")) != -1 ) {
            navigator.org = "aol";
            navigator.family  = "aol";
            navigator.version = parseFloat("0" + ua.substr(i + 4), 10);
        }

        navigator.DOMCORE1 = (typeof(document.getElementsByTagName) != "undefined" &&
                              typeof(document.createElement) != "undefined");
        navigator.DOMCORE2 = (navigator.DOMCORE1 && typeof(document.getElementById) != "undefined" &&
                              typeof(document.createElementNS) != "undefined");
        navigator.DOMHTML = (navigator.DOMCORE1 && typeof(document.getElementById) != "undefined");
        navigator.DOMCSS1 = ((navigator.family == "gecko") || (navigator.family == "ie4"));
        navigator.DOMCSS2 = false;

        if (navigator.DOMCORE1) {
            element = document.createElement("p");
            navigator.DOMCSS2 = (typeof(element.style) == "object");
        }
        navigator.DOMEVENTS = (typeof(document.createEvent) != "undefined");
        window.onerror = oldOnError;
    }

    detectBrowser();


