try {
    var blogID = 0;

    var scripts = document.getElementsByTagName("script");
    for (var b = 0; b < scripts.length; b++) {
        var a = scripts[b].src;
        if (a.search(/bw_share/) >= 0) {
            var regex = new RegExp("[\\?&]t=([^&#]*)", "g");
            var match = regex.exec(a);
            if (null !== match && null !== match[1]) {
                if (null == window['BW_initializer_' + match[1]]) {
                    blogID = match[1];
                    continue;
                }
            }
        }
    }
} catch (err) {
}

window['BW_initializer_' + blogID] = function() {
    var parameters = [];
    var bwJS = null;
    var firstTime = true;
    var isIE = (navigator.userAgent.toUpperCase().indexOf("MSIE") >= 0);
    var ROOT = '';

    function getDomain(thestring) {
        var urlpattern = new RegExp("(http|ftp|https)://(.*?)/.*$");
        var parsedurl = thestring.match(urlpattern);
        return parsedurl[1] + "://" + parsedurl[2];
    }

    var keyString = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

    var uTF8Encode = function(string) {
        string = string.replace(/\x0d\x0a/g, "\x0a");
        var output = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                output += String.fromCharCode(c);
            }
            else if ((c > 127) && (c < 2048)) {
                output += String.fromCharCode((c >> 6) | 192);
                output += String.fromCharCode((c & 63) | 128);
            } else {
                output += String.fromCharCode((c >> 12) | 224);
                output += String.fromCharCode(((c >> 6) & 63) | 128);
                output += String.fromCharCode((c & 63) | 128);
            }
        }
        return output;
    };

    var base64Encode = function(input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;
        input = uTF8Encode(input);
        while (i < input.length) {
            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);
            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;
            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }
            output = output + keyString.charAt(enc1) + keyString.charAt(enc2) + keyString.charAt(enc3) + keyString.charAt(enc4);
        }
        return output;
    };

    var getParamsString = function() {
        var parametersString = [];
        var t = "";
        for (var key in parameters) {
            if (key == "t")
                t = parameters[key]
            else
                parametersString.push('"' + key + '":"' + parameters[key] + '"');
        }
        return base64Encode("{" + parametersString.join(",") + "}");
    }

    var self = {
        init: function(blogWidgetID) {
            var bwScript = self.getScriptObject(blogWidgetID);
            parameters = self.parseQueryString(bwScript.src);
            if (null === parameters["t"]) return;
            if (null === document.getElementById("aytm_" + parameters.t)) return;
            ROOT = getDomain(bwScript.src);
            self.initMainLibraries();
        },

        initMainLibraries: function () {
            var jqueryExist = false;
            var scripts = document.getElementsByTagName("script");
            for (var i = 0; i < scripts.length; i++) {
                if (scripts[i].src.toLowerCase().indexOf("jquery") > -1)
                    jqueryExist = true;
            }

            if (!jqueryExist && typeof jQuery == "undefined") {
                self.addJSLibraryToHead(ROOT + '/javascripts/_addons/jquery/jquery-1.3.2.min.js');
            }

            self.initSubLibraries();
        },

        initSubLibraries: function() {
            if (typeof jQuery == "undefined") {
                setTimeout(self.initSubLibraries, 100);
                return;
            }

            var highchartsExist = false;
            var excanvasExist = false;
            var scripts = document.getElementsByTagName("script");
            for (var i = 0; i < scripts.length; i++) {
                if (scripts[i].src.toLowerCase().indexOf("highcharts") > -1)
                    highchartsExist = true;
                if (scripts[i].src.toLowerCase().indexOf("excanvas") > -1)
                    excanvasExist = true;
            }

            var guiExist = false;
            var links = document.getElementsByTagName("link");
            for (i = 0; i < links.length; i++) {
                if (links[i].href.toLowerCase().indexOf("statistic_widget") > -1)
                    guiExist = true;
            }

            if (!guiExist) {
                self.addCSSLibraryToHead(ROOT + '/stylesheets/_ui/statistic_widget/gui.css');
            }

            if (!highchartsExist && typeof Highcharts == "undefined") {
                self.addJSLibraryToHead(ROOT + '/javascripts/_hc/highcharts.js');
            }

            if (isIE && !excanvasExist && typeof G_vmlCanvasManager == "undefined") {
                self.addJSLibraryToHead(ROOT + '/javascripts/_hc/excanvas.compiled.js');
            }

            self.initBWLibraries();
        },

        initBWLibraries: function () {
            if (typeof Highcharts != "undefined" && ((isIE && typeof G_vmlCanvasManager != "undefined") || !isIE)) {
                setTimeout(self.initBWLibraries, 100);
                return;
            }

            var t_id = parameters.t.toString().substring(0, 14);
            var auth_id = parameters.t.toString().substring(14, 20);
            bwJS = self.addJSLibraryToHead(ROOT + '/sw/' + t_id + '/' + auth_id + '/' + getParamsString() + ".js");

            self.initWidget();
        },

        addJSLibraryToHead: function(src_url) {
            var headID = document.getElementsByTagName("head")[0];
            var newScript = document.createElement('script');
            newScript.type = 'text/javascript';
            newScript.src = src_url + "?r=" + Math.random();
            headID.appendChild(newScript);
            return newScript;
        },

        addCSSLibraryToHead: function(src_url) {
            var headID = document.getElementsByTagName("head")[0];
            var cssNode = document.createElement('link');
            cssNode.type = 'text/css';
            cssNode.rel = 'stylesheet';
            cssNode.href = src_url;
            cssNode.media = 'screen';
            headID.appendChild(cssNode);
        },

        getScriptObject: function(searchWord) {
            var d = document.getElementsByTagName("script");
            var c = null;
            for (var b = 0; b < d.length; b++) {
                var a = d[b].src;
                if (a.search(/bw_share/) >= 0 && a.search(searchWord) >= 0) {
                    c = d[b];
                }
            }
            return c;
        },

        parseQueryString: function(b) {
            var d = {};
            if (b == undefined) {
                b = location.search ? location.search : "";
            }
            if (b.charAt(0) == "?") {
                b = b.substring(1);
            }
            var f = b.indexOf("?");
            if (f) {
                b = b.substring(f + 1);
            }
            f = b.indexOf("#");
            if (f) {
                b = b.substring(f + 1);
            }
            b = b.replace("+", " ");
            var g = b.split(/[&;]/g);
            for (f = 0; f < g.length; f++) {
                var c = g[f].split("=");
                var a = decodeURIComponent(c[0]);
                var e = decodeURIComponent(c[1]);
                if (!d[a]) {
                    d[a] = [];
                }
                d[a].push((c.length == 1) ? "" : e);
            }
            return d;
        },

        initWidget: function() {
            if (typeof window['BlogWidget_' + parameters.t] != "undefined" && null != window['BlogWidget_' + parameters.t]) {
                setTimeout(function() {
                    window['BlogWidget_' + parameters.t].init();
                }, 50);
            }
            else {
                setTimeout(self.initWidget, 100);
            }
        }
    }

    return self;
}();

try {
    window.onload = function() {
        window['BW_initializer_' + blogID].init(blogID);
    }
} catch (err) {
}

