Function.prototype.setMethod = function(b, a) {
    this.prototype[b] = a;
    return this
};
Function.setMethod("setMethods", function(b) {
    for (var a in b) this.setMethod(a, b[a])
});
Function.setMethod("addMethod", function(a, b) {
    if (!this.prototype[a]) this.prototype[a] = b;
    return this
});
Function.setMethod("addMethods", function(b) {
    for (var a in b) this.addMethod(a, b[a])
});
window.Msn = {};
Msn.Class = function(d, c, b) {
    var a = this;
    a.Wrapper = function() {
        try {
            var a = this;
            a.constructor = arguments.callee;
            if (typeof b === "function") {
                a.constructor.__baseClass = b;
                c.initClass.apply(a, arguments)
            }
            var d = c.apply(a, arguments);
            Msn.Class.Postprocessor.run.apply(a, arguments);
            return d
        } catch(e) {
            throw "Failed to bootstrap class: " + arguments.callee + " - " + e + (e.message || "")
        }
    };
    a.Wrapper.constructor = c;
    if (typeof b == "function") a.Wrapper.constructor.__baseClass = b;
    a.Wrapper.toString = function() {
        return d
    };
    return a.Wrapper
};
Msn.Class.Postprocessor = function() {};
Msn.Class.Postprocessor.run = function() {
    if (!Msn.Class.Postprocessor.prototype) return;
    for (var a in Msn.Class.Postprocessor.prototype) Msn.Class.Postprocessor.prototype[a].apply(this, arguments);
    return 1
};
Function.addMethod("initClass", function() {
    var d = this,
    b = [],
    a = d.constructor.__baseClass;
    do {
        b.push(a);
        d.constructor.addMethods(a.prototype);
        a = a.constructor.__baseClass
    } while ( !! a);
    var c = b.pop();
    do {
        c.apply(d, arguments);
        c = b.pop()
    } while ( !! c);
    return 1
});
Function.addMethod("as", function(h) {
    var b = this,
    e = arguments[1],
    f = arguments[2],
    i = typeof e == "number" ? e: typeof f == "number" ? f: 0,
    j = typeof e == "function" ? e: typeof f == "function" ? f: 0,
    c = h ? h.split(".") : [];
    if (c.length > 0) {
        var a = window;
        for (var g = 0; g < c.length - 1; ++g) {
            var d = c[g];
            if (d) {
                if (!a[d]) a[d] = {};
                a = a[d]
            }
        }
        b = new Msn.Class(h, b, j);
        a[c.last()] = i ? new b: b
    }
    return b
});
Function.addMethod("ns", function(a) {
    this.as(a, 1)
});
String.addMethod("trim", function() {
    return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1")
});
String.addMethod("collapse", function() {
    return this.replace(/\s+/g, " ").trim()
});
String.addMethod("wrap", function(a) {
    var b, c = {
        "(": ")",
        "{": "}",
        "[": "]",
        "<": ">",
        "\u00AB": "\u00BB",
        "\u2039": "\u203A",
        "\u201C": "\u201D",
        "\u2018": "\u2019"
    };
    if (c[a]) b = c[a];
    else {
        var d = /^<(\w+)(\s+\w+\s*=\s*"[^"]*")*\s*>$/.exec(a);
        if (d) b = "</" + d[1] + ">"
    }
    return a + this + (b ? b: a)
});
String.addMethod("format", function() {
    var b = this;
    for (var a = 0; a < arguments.length; ++a) b = b.replace(new RegExp("\\{" + a + "\\}", "g"), arguments[a]);
    return b
});
String.addMethod("ellipsize", function(b) {
    var a = this;
    if (b >= a.length) return a + "";
    var c = a.lastIndexOf(" ", b - 1);
    if (c == -1) c = b;
    return a.substring(0, c) + " ..."
});
String.addMethod("encodeHtml", function() {
    var a = this.replace(/\>/g, "&gt;").replace(/\</g, "&lt;").replace(/\&/g, "&amp;").replace(/\'/g, "&#039;").replace(/\"/g, "&quot;");
    return a
});
String.addMethod("decodeHtml", function() {
    var a = this.replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&amp;/g, "&").replace(/&#039;/g, "'").replace(/&quot;/g, '"');
    return a
});
String.addMethod("encodeURIComponent", function() {
    return !! encodeURIComponent ? encodeURIComponent(this) : escape(this)
});
String.addMethod("decodeURIComponent", function() {
    return !! decodeURIComponent ? decodeURIComponent(this) : unescape(this)
});
Array.addMethod("last", function() {
    return this.length > 0 ? this[this.length - 1] : void 0
});
Array.addMethod("remove", function(b) {
    for (var a = this.length - 1; a >= 0; --a) if (this[a] === b) this.splice(a, 1);
    return this
});
Array.addMethod("contains", function(b) {
    for (var a = 0; a < this.length; ++a) if (this[a] === b) return 1;
    return 0
});
Array.addMethod("map", function(d, c) {
    var b = [];
    for (var a = 0; a < this.length; a++) b.push(d.call(c, this[a], a, this));
    return b
});
Array.addMethod("push", function(a) {
    this[this.length] = a;
    return this.length
});
Array.addMethod("shift", function() {
    return this.splice(0, 1)[0]
});
Array.addMethod("splice", function(c, d) {
    var b, e = arguments.length - 2;
    if (c > this.length) c = this.length;
    if (c + d > this.length) d = this.length - c;
    var f = [];
    for (var a = 0; a < d; ++a) f.push(this[c + a]);
    if (e > d) {
        b = e - d;
        for (a = this.length + b - 1; a >= c + b; --a) this[a] = this[a - b]
    } else if (e < d) {
        b = d - e;
        for (a = c + e; a < this.length - b; ++a) this[a] = this[a + b];
        for (; a < this.length - 1; ++a) delete this[a];
        this.length -= b
    }
    for (a = 0; a < e; ++a) this[c + a] = arguments[2 + a];
    return f
});
(function() {
    var a = this;
    Function.addMethod("hook", function(d, e) {
        if (d) {
            var f = b();
            if (!f && d.addEventListener) d.addEventListener(e, this, false);
            else if (!f && d.attachEvent) d.attachEvent("on" + e, this);
            else {
                var c = d["x" + e];
                if (c && c.constructor == Array) if (c.contains(this)) c = null;
                else c.push(this);
                else c = d["x" + e] = [this];
                if (c) {
                    d["on" + e] = function(e) {
                        var b, g = "undefined";
                        e = a.Event(e);
                        for (var d = 0; d < c.length; ++d) {
                            var f = c[d](e);
                            if (typeof f != g) b = f
                        }
                        if (typeof b != g) return b
                    };
                    d = null
                }
            }
        }
        return this
    });
    Function.addMethod("unhook", function(a, c) {
        if (a) {
            var e = b();
            if (!e && a.removeEventListener) a.removeEventListener(c, this, false);
            else if (!e && a.detachEvent) a.detachEvent("on" + c, this);
            else {
                var d = a["x" + c];
                if (d && d.constructor == Array) d.remove(this);
                else a["on" + c] = null
            }
        }
        return this
    });
    a.CancelEvent = function(b) {
        b = a.Event(b);
        if (b) {
            b.cancelBubble = true;
            if (b.stopPropagation) b.stopPropagation();
            b.returnValue = false;
            if (b.preventDefault) b.preventDefault()
        }
        return false
    };
    a.Event = function(a) {
        return a ? a: window.event
    };
    a.Target = function(c) {
        c = a.Event(c);
        var b = c.target ? c.target: c.srcElement;
        if (b && b.nodeType != 1) b = a.ParentElem(b);
        return b
    };
    a.InnerText = function(b) {
        var d = "",
        c = 0,
        e = -1;
        if (b) if (typeof b.innerText == "string") d = b.innerText;
        else while (++e < b.childNodes.length) {
            c = b.childNodes[e];
            switch (c.nodeType) {
            case 1:
                d += a.InnerText(c);
                break;
            case 3:
            case 4:
                d += c.nodeValue;
                break
            }
        }
        return d
    };
    a.NextElem = function(c, b) {
        var a = c.nextSibling;
        while (a && (a.nodeType != 1 || b && a.nodeName != b)) a = a.nextSibling;
        return a
    };
    a.PrevElem = function(c, b) {
        var a = c.previousSibling;
        while (a && (a.nodeType != 1 || b && a.nodeName != b)) a = a.previousSibling;
        return a
    };
    a.ParentElem = function(c, b) {
        var a = c.parentNode;
        while (a && (a.nodeType != 1 || b && a.nodeName != b)) a = a.parentNode;
        return a
    };
    a.ChildElem = function(e, f, g) {
        var d = null,
        b;
        for (var c = 0; ! d && c < e.childNodes.length; ++c) {
            b = e.childNodes[c];
            if (b.nodeType == 1) if (!f || b.nodeName == f) d = b
        }
        if (!g) for (c = 0; ! d && c < e.childNodes.length; ++c) {
            b = e.childNodes[c];
            if (b.nodeType == 1) d = a.ChildElem(b, f)
        }
        return d
    };
    a.ForEach = function(e, d, c) {
        for (var b = 0; b < d.childNodes.length; ++b) {
            var a = d.childNodes[b];
            if (a.nodeType == 1 && (!c || a.nodeName == c)) if (e(a)) break
        }
    };
    a.ChildCount = function(d, c) {
        var e = 0,
        a, b;
        for (a = 0; a < d.childNodes.length; ++a) {
            b = d.childNodes[a];
            e += b.nodeType == 1 && (!c || b.nodeName == c) ? 1 : 0
        }
        return e
    };
    a.AddClass = function(a, e) {
        var c = a.className;
        if (c) {
            var g = c.collapse().split(" "),
            d = e.collapse().split(" ");
            for (var b = 0; b < d.length; ++b) {
                var f = d[b];
                if (!g.contains(f)) a.className += " " + f
            }
        } else a.className = e;
        return a.className
    };
    a.DelClass = function(b, g) {
        var a = b.className;
        if (a) {
            var f = a.collapse().split(" "),
            d = g.collapse().split(" ");
            for (var c = 0; c < d.length; ++c) f.remove(d[c]);
            var e = f.join(" ");
            if (e != a) b.className = e
        }
        return b.className
    };
    a.HasClass = function(b, a) {
        return b.className.collapse().split(" ").contains(a)
    };
    a.Updated = function() {
        if (a.Access && typeof a.Access.Updated == "function") a.Access.Updated()
    };
    function b() {
        return navigator.userAgent.indexOf("Safari") >= 0
    }
}).ns("Msn.DOM");
(function() {
    var a = this,
    c = [];
    Function.addMethod("msnBind", function(b, h) {
        var d;
        switch (typeof b) {
        case "object":
            d = b.nodeType == 1 || b.nodeType == 9 ? [b] : b.length ? b: null;
            break;
        case "string":
            d = a.Select(b);
            break
        }
        if (d) for (var f = 0; f < d.length; ++f) {
            var e = d[f],
            g = new this(e, h instanceof Array ? h[f] : h);
            if (e.bindings) e.bindings.push(g);
            else e.bindings = [g];
            c.push(g)
        }
        return this
    });
    a.Unbind = function(d, f) {
        var b;
        if (d.bindings && d.bindings.length) {
            for (b = 0; b < d.bindings.length; ++b) {
                var e = d.bindings[b];
                if (e && typeof e.dispose == "function") e.dispose();
                c.remove(e)
            }
            d.bindings = null
        }
        if (f) for (b = 0; b < d.childNodes.length; ++b) {
            var g = d.childNodes[b];
            if (g.nodeType == 1) a.Unbind(g, f)
        }
    };
    a.Select = function(c) {
        function i() {
            var d = null;
            if (c) if (c.charAt(a) == "*") d = "*";
            else while (a < c.length) {
                var b = c.charAt(a);
                if ("a" <= b && b <= "z" || "A" <= b && b <= "Z" || "0" <= b && b <= "9" || b == "-") {
                    d = d ? d + b: b; ++a
                } else break
            }
            return d
        }
        function j() {
            while (a < c.length && c.charAt(a) == " ")++a
        }
        function m() {
            var b = null;
            j();
            switch (c.charAt(a)) {
            case "+":
            case ">":
                b = c.charAt(a); ++a;
                j();
                break
            }
            return b
        }
        function h() {++a;
            return i()
        }
        function g() {
            var b = null,
            d = i();
            if (d !== null) b = new e(d);
            while (c && a < c.length) {
                var f = c.charAt(a);
                if (f == "#") {
                    if (!b) b = new e;
                    b.setID(h())
                } else if (f == ".") {
                    if (!b) b = new e;
                    b.addClass(h())
                } else break
            }
            return b
        }
        function n() {
            var d = [],
            b = g();
            if (b) {
                d.push(b);
                while (a < c.length) {
                    var e = m();
                    b = g();
                    if (b) {
                        if (e) b.setComb(e);
                        d.push(b)
                    } else break
                }
            }
            return d
        }
        function e(a) {
            var g = this,
            e = "",
            f = null,
            d = null;
            g.setID = function(a) {
                e = a
            };
            g.setComb = function(a) {
                f = a
            };
            g.addClass = function(a) {
                if (d) d.push(a);
                else d = [a]
            };
            g.getNodes = function(i) {
                var d, g, j, k = [];
                if (e) {
                    switch (f) {
                    case ">":
                        for (d = 0; d < i.childNodes.length; ++d) if (i.childNodes[d].nodeType == 1 && i.childNodes[d].id == e) {
                            g = i.childNodes[d];
                            break
                        }
                        break;
                    case "+":
                        j = b(i);
                        if (j && j.id == e) g = j;
                        break;
                    default:
                        g = i.getElementById(e);
                        break
                    }
                    if (g && (!a || a == "*" || a.toLowerCase() == g.nodeName.toLowerCase()) && c(g)) k.push(g)
                } else if (a && a != "*") switch (f) {
                case ">":
                    for (d = 0; d < i.childNodes.length; ++d) {
                        g = i.childNodes[d];
                        if (g.nodeType == 1 && g.nodeName.toLowerCase() == a && c(g)) k.push(g)
                    }
                    break;
                case "+":
                    j = b(i);
                    if (j && j.nodeName.toLowerCase() == a && c(j)) k.push(j);
                    break;
                default:
                    var l = i.getElementsByTagName(a);
                    for (d = 0; d < l.length; ++d) if (c(l[d])) k.push(l[d]);
                    break
                } else switch (f) {
                case ">":
                    for (d = 0; d < i.childNodes.length; ++d) {
                        g = i.childNodes[d];
                        if (g.nodeType == 1 && c(g)) k.push(g)
                    }
                    break;
                case "+":
                    j = b(i);
                    if (j && c(j)) k.push(j);
                    break;
                default:
                    h(i, k);
                    break
                }
                return k
            };
            function h(d, e) {
                for (var b = 0; b < d.childNodes.length; ++b) {
                    var a = d.childNodes[b];
                    if (a.nodeType == 1) {
                        if (c(a)) e.push(a);
                        h(a, e)
                    }
                }
            }
            function c(f) {
                var a = 1;
                if (d) {
                    var c = f.className;
                    if (c) {
                        var e = c.collapse().split(" ");
                        for (var b = 0; b < d.length; ++b) if (!e.contains(d[b])) {
                            a = 0;
                            break
                        }
                    } else a = 0
                }
                return a
            }
        }
        function l(c, d) {
            var a = [];
            for (var b = 0; b < c.length; ++b) a = a.concat(d.getNodes(c[b]));
            return a
        }
        var a = 0,
        k = n(),
        d = [document];
        for (var f = 0; f < k.length && d.length > 0; ++f) d = l(d, k[f]);
        return d
    };
    function b(b) {
        var a = b.nextSibling;
        while (a && a.nodeType != 1) a = a.nextSibling;
        return a
    } (function() {
        a.Unbind(document, 1);
        c = []
    }).hook(window, "unload")
}).ns("Msn.Bind");
(function() {
    var a = this;
    b(arguments);
    a.extend = function() {
        b(arguments)
    };
    a.isDefined = function(c) {
        for (var b in a) if (typeof a[b] != "function") if (a[b] === c) return true;
        return false
    };
    function b(c) {
        for (var b = 0; b < c.length; b++) if (typeof a[c[b]] == "undefined") switch (typeof c[b]) {
        case "object":
            if (c[b].constructor == Array && c[b].length > 0) a[c[b][0].toString()] = c[b].length > 1 ? c[b][1] : c[b][0];
            break;
        case "string":
            a[c[b]] = c[b];
            break;
        default:
            break
        }
    }
    return a
}).as("Msn.Enum");
(function() {
    Function.setMethod("iface", function(e) {
        var b = e ? e.split(".") : [];
        if (b.length > 0) {
            var f = this,
            a = window;
            for (var d = 0; d < b.length - 1; ++d) {
                var c = b[d];
                if (c) {
                    if (!a[c]) a[c] = {};
                    a = a[c]
                }
            }
            a[b.last()] = new this;
            a[b.last()].__name = e;
            f.prototype.toString = function() {
                return this.__name
            }
        }
    });
    Function.setMethod("impl", function() {
        var a = this;
        if (!a.__implements) a.__implements = {};
        for (var c = 0, b; b = arguments[c]; c++) if (!a.__implements[b]) a.__implements[b] = b;
        else throw "{0} already implements {1}".format(a, b);
        return a
    });
    Msn.Class.Postprocessor.addMethod("checkImpl", function() {
        var b = this,
        g = '{0} does not implement the property "{1}" of type "{2}"',
        e = b.constructor.__implements;
        for (var f in e) {
            var c = e[f];
            for (var a in c) {
                if (a.match(/^(__|toString)/)) continue;
                switch (typeof b[a]) {
                case "string":
                case "number":
                case "boolean":
                    if (! (b[a].constructor === c[a] || b.prototype && b.prototype[a].constructor === c[a])) d(b.constructor, a, c[a]);
                    break;
                case "undefined":
                    d(b.constructor, a, c[a]);
                    break;
                default:
                    if (! (b[a] && b[a] instanceof c[a] || b.prototype && b.prototype[a] && b.prototype[a] instanceof c[a])) d(b.constructor, a, c[a])
                }
            }
        }
        function d(a, c, b) {
            throw g.format(a.toString(), c, b.toString().replace(/{[\s\S]*}/gi, "{}"))
        }
    })
}).ns("Msn.Interface");
(function() {
    var a = 0,
    b = 0,
    c = 0,
    d = this;
    d.enqueue = function(g, f) {
        f = f >= 0 ? f: 10;
        var d = {
            val: g,
            pri: f,
            next: 0,
            prev: 0
        },
        e = c;
        while (e && e.pri > f) e = e.prev;
        if (e) {
            d.prev = e;
            d.next = e.next;
            e.next = d;
            if (d.next) d.next.prev = d;
            else c = d
        } else {
            d.next = a;
            if (a) a.prev = d;
            else c = d;
            a = d
        }
        return++b
    };
    d.dequeue = function() {
        if (a && b--) {
            var d = a;
            a = a.next;
            if (a) a.prev = 0;
            else c = 0;
            d.next = d.prev = 0;
            return d.val
        }
    };
    d.remove = function(e) {
        var d = a;
        while (b && d) {
            if (d.val === e) {
                if (d.next) d.next.prev = d.prev;
                else c = d.prev;
                if (d.prev) d.prev.next = d.next;
                else a = d.next;
                d.next = d.prev = 0; --b;
                break
            }
            d = d.next
        }
        return b
    };
    d.count = function() {
        return b
    }
}).as("Msn.Queue");
(function() {
    var c = this,
    b = window,
    e = new Msn.Queue,
    d = [],
    a = null;
    c.Throttle = 5;
    Function.addMethod("RQ", function(m, j, a, i, h) {
        var k = this;
        function l() {
            var f = this,
            n = 0,
            c = null;
            f.Pri = a;
            function o() {
                if (n) {
                    b.clearTimeout(n);
                    n = 0
                }
                d.remove(f);
                b.setTimeout(g, 1)
            }
            f.send = function() {
                var e = 0,
                d = 1;
                if (!c) {
                    c = new XMLHttpRequest;
                    if (c && typeof c.open != "undefined") {
                        c.onreadystatechange = function() {
                            if (c && c.readyState == 4 && d) {
                                d = 0;
                                o();
                                l(c);
                                c = null
                            }
                        };
                        if (i) for (var a in i) c.setRequestHeader(a, i[a]);
                        try {
                            c.open(h ? "POST": "GET", m, true);
                            c.send(h ? h: null)
                        } catch(k) {
                            c = null;
                            l(k);
                            b.setTimeout(g, 1)
                        }
                        if (c) {
                            if (j > 0) n = b.setTimeout(function() {
                                f.cancel();
                                l("timeout");
                                c = null
                            },
                            j);
                            e = 1
                        }
                    } else {
                        c = null;
                        l("not supported");
                        b.setTimeout(g, 1)
                    }
                }
                return e
            };
            f.cancel = function() {
                if (!c) e.remove(f);
                else if (c.readyState != 4) {
                    c.abort();
                    c = null;
                    o()
                }
            };
            function l(a) {
                if (!k(a) && Msn.DOM) Msn.DOM.Updated()
            }
        }
        function g() {
            while (e.count() > 0 && (c.Throttle <= 0 || d.length < c.Throttle)) {
                var a = e.dequeue();
                if (a && a.send()) d.push(a)
            }
        }
        a = a >= 0 ? a: 10;
        var f = new l;
        if (f) if (a && c.Enabled()) {
            e.enqueue(f, a);
            b.setTimeout(g, 1)
        } else if (f.send()) d.push(f);
        return f
    });
    c.Enabled = function() {
        if (a === null) {
            var b = new XMLHttpRequest;
            if (a === null) a = b && typeof b.open != "undefined" ? "native": ""
        }
        return a
    };
    if (typeof XMLHttpRequest == "undefined") XMLHttpRequest = function() {
        if (a) return new ActiveXObject(a);
        else if (a === null) {
            var e = navigator.userAgent,
            d = e.indexOf("MSIE");
            if (d >= 0) if (parseFloat(e.substring(d + 4)) < 5.01) {
                a = "";
                return
            }
            var c = ["Microsoft.XMLHTTP", "MSXML2.XMLHTTP"];
            for (var b = 3; b <= 6; ++b) c.push("MSXML2.XMLHTTP.{0}.0".format(b));
            for (b = c.length - 1; b >= 0; --b) {
                a = c[b];
                try {
                    return new ActiveXObject(c[b])
                } catch(f) {
                    a = ""
                }
            }
        }
    }
}).ns("Msn.Ajax");
(function() {
    var e = this,
    b = document,
    f = window,
    c = "acciframe",
    a = "/blank.aspx",
    d;
    e.SetIFrameUrl = function(b) {
        a = b
    };
    e.Updated = function() {
        if (d && a) {
            var e = b.getElementById(c);
            if (!e) {
                e = b.createElement("iframe");
                e.id = e.name = c;
                e.width = e.height = 0;
                b.body.appendChild(e)
            }
            if (e) e.src = a + "?" + (new Date).getTime()
        }
    };
    (function() {
        d = 1
    }).hook(f, "load")
}).ns("Msn.DOM.Access");
(function() {
    var b = this,
    a = null,
    e = document,
    h = Msn.DOM,
    f = h.AddClass;
    b.Build = function(g, c, f, d, h) {
        var a = e.getElementById(h);
        if (a) b.Binding.msnBind(a, {
            ver: parseInt(c),
            width: f,
            height: d,
            url: g
        })
    };
    b.Binding = function(h, a) {
        if (a && a.url) {
            var i = typeof a.ver == "number" ? a.ver: parseInt(a.ver),
            n = a.url,
            k = a.width ? a.width: 363,
            j = a.height ? a.height: 170;
            if (!i || i <= g()) {
                var m = '<object type="application/x-shockwave-flash" width="{1}" height="{2}" data="{0}"><param name="movie" value="{0}"/><param name="quality" value="high"/><param name="wmode" value="transparent"/><embed src="{0}" width="{1}" height="{2}" quality="high" /></object>',
                l = m.format(n, k, j);
                if (h) h.innerHTML = l;
                else e.write(l)
            } else if (h && a.dn) {
                var b = c("img");
                b.width = k;
                b.height = j;
                b.src = a.dn;
                b.alt = a.alt ? a.alt: "";
                if (a.href) {
                    b = c("a", b);
                    b.href = a.href;
                    b = c("div", b);
                    f(b, "linkedimg")
                }
                h.innerHTML = "";
                d(h, b)
            }
        }
        this.dispose = function() {
            h = null
        }
    };
    b.Version = function() {
        return g()
    };
    function g() {
        if (a === null) {
            a = 0;
            var c = window.navigator.plugins,
            b, d, e;
            if (c && c.length) {
                d = c["Shockwave Flash"] || c["Shockwave Flash 2.0"];
                if (d && (e = d.description)) a = parseInt(e.substring(e.indexOf(".") - 2))
            } else if (window.ActiveXObject) for (b = 15; b > 2 && !a; --b) try {
                d = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + b);
                a = b
            } catch(f) {}
        }
        return a
    }
    b.Module = function(e, k) {
        var g = this,
        a, i;
        g.dispose = function() {
            e = a = 0
        };
        g.OnExpand = function() {
            if (!i) {
                b.Binding.msnBind(a, k);
                i = 1
            }
        };
        function j() {
            f(e, "flashmod single1 cf");
            a = c("div");
            a.className = "child c1 first";
            d(e, a);
            if (!h.HasClass(e, "closed")) g.OnExpand()
        }
        j()
    };
    function c(c, a) {
        var b = e.createElement(c);
        if (a) d(b, a);
        return b
    }
    function d(a, b) {
        a.appendChild(b)
    }
}).ns("Msn.Flash");
(function(j, e) {
    if (!e) e = {};
    var g = Msn.DOM,
    d = document,
    k = window,
    c = d.getElementById("more");
    c.style.display = "none";
    var f = d.getElementById("xnav"),
    b = d.createElement("li"),
    a = d.createElement("a");
    a.href = "#";
    a.className = "expand";
    a.innerHTML = h(e.more, "more");
    b.appendChild(a);
    f.appendChild(b);
    i.hook(a, "click");
    function i(f) {
        var d = c.style.display,
        e;
        if (d == "block") {
            d = "none";
            e = "expand";
            b.className = ""
        } else {
            d = "block";
            e = "collapse";
            b.className = "last"
        }
        c.style.display = d;
        a.className = e;
        f = g.Event(f);
        return g.CancelEvent(f)
    }
    this.dispose = function() {
        j = null;
        c = null;
        f = null;
        b = null;
        a = null
    };
    function h(a, b) {
        return typeof a != "undefined" ? a: b
    }
}).as("Msn.Header");
(function(C, d) {
    if (!d) d = {};
    var f = Msn.DOM,
    b = document,
    I = window,
    c = C,
    F = e(d.siteSearchOn, "false"),
    A = e(d.searchUrl, ""),
    G = e(d.searchParam, ""),
    u = e(d.searchParams, ""),
    h = F == "true" ? "site": "web";
    if (h == "site") D();
    var H = e(d.onepxgif, "http://blstc.msn.com/br/gbl/css/8/decoration/t.gif"),
    r = navigator.userAgent,
    q = r.indexOf("MSIE");
    if (q >= 0) if (parseFloat(r.substring(q + 4)) < 7 && parseFloat(r.substring(q + 4)) > 5) {
        g(b.getElementById("ntwseperator"), "bgimage", "image");
        g(b.getElementById("leftcorner"), "bgimage", "image");
        g(b.getElementById("searchform"), "bgimage", "scale");
        g(b.getElementById("ntwlogo"), "bgimage", "scale");
        g(b.getElementById("logoimg"), "img", "image");
        g(b.getElementById("rightcorner"), "bgimage", "image");
        g(n, "bgimage", "image")
    }
    var k, i, j, n, p, z = b.getElementById("spyglass"),
    a = b.getElementById("q"),
    m = "",
    l = h == "web" ? e(d.helpertext, "") : "";
    if (h == "web") a.className = "";
    a.value = l;
    y.hook(z, "click");
    w.hook(a, "focus");
    x.hook(a, "blur");
    var t = c.onsubmit;
    c.onsubmit = function() {
        if (a.value == l) a.value = "";
        return !! t ? t(c) : null
    };
    B.hook(a, "keypress");
    function D() {
        var a = b.getElementById("ntwscopes"),
        g = e(d.sitetext, "Search site"),
        h = e(d.webtext, "Web");
        k = b.createElement("div");
        k.className = "selected";
        i = b.createElement("a");
        i.innerHTML = g;
        i.href = A;
        n = b.createElement("span");
        n.id = "selectedscope";
        k.appendChild(i);
        k.appendChild(n);
        var f = b.createElement("div");
        f.id = "ntwseperator";
        p = b.createElement("div");
        j = b.createElement("a");
        j.innerHTML = h;
        j.href = c.action;
        p.appendChild(j);
        a.appendChild(k);
        a.appendChild(f);
        a.appendChild(p);
        o.hook(i, "click");
        v.hook(j, "click")
    }
    function g(a, c, e) {
        if (!a) return;
        var b;
        if (c == "bgimage") b = a.currentStyle.backgroundImage;
        else if (c == "img") b = a.src;
        if (b == "") return;
        var d = b.search(new RegExp("(http[s]?://.+\\.png)", "i")) === -1 ? "": RegExp.$1;
        if (d.length > 0) {
            if (c == "bgimage") a.style.backgroundImage = "none";
            else if (c == "img") a.src = H;
            a.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizingMethod='" + e + "', src='" + d + "')"
        }
    }
    function B(a) {
        if (a.keyCode == 13) switch (h) {
        case "site":
            o(null);
            a = f.Event(a);
            return f.CancelEvent(a);
            break
        }
    }
    function o(b) {
        var a = A + "?" + G + "=" + s();
        if (u) a = a + "&" + u.replace(/&amp;/g, "&");
        if (b && f.Target(b).tagName.toLowerCase() == "a") f.Target(b).href = a;
        else window.top.location.href = a
    }
    function v(d) {
        if (d && f.Target(d).tagName.toLowerCase() == "a") {
            var e = f.Target(d),
            b = c.action;
            for (var a = 0; a < c.length; a++) {
                if (a == 0) b += "?";
                else b += "&";
                if (c[a].name.toLowerCase() == "q") b += c[a].name + "=" + s();
                else b += c[a].name + "=" + encodeURIComponent(c[a].value)
            }
            e.href = b
        }
    }
    function s() {
        m = a ? a.value: "";
        if (h == "web") m = m == l ? "": m;
        return encodeURIComponent(m)
    }
    function y() {
        switch (h) {
        case "site":
            c.onsubmit = E;
            o(null);
            break
        }
    }
    function E(a) {
        a = f.Event(a);
        return f.CancelEvent(a)
    }
    function w() {
        a.className = "typing";
        if (a.value == l) a.value = ""
    }
    function x() {
        if (a.value.trim() == "") {
            a.className = "";
            a.value = l
        }
    }
    this.dispose = function() {
        if (h = "site") {
            o.unhook(i, "click");
            v.unhook(j, "click")
        }
        y.unhook(z, "click");
        w.unhook(a, "focus");
        x.unhook(a, "blur");
        B.unhook(a, "keypress");
        c.onsubmit = null;
        C = null
    };
    function e(a, b) {
        return typeof a != "undefined" ? a: b
    }
}).as("Msn.SiteSearch");
(function() {
    var a = this,
    f = document;
    if (!a.__resourceFiles) {
        a.__resourceFiles = {};
        var h = f.getElementsByTagName("script");
        for (var e = 0, c; c = h[e]; e++) a.__resourceFiles[c.src.toLowerCase()] = c;
        var g = f.getElementsByTagName("link");
        for (var d = 0, b; b = g[d]; d++) if (b.rel === "stylesheet") a.__resourceFiles[b.href.toLowerCase()] = b
    }
    Function.setMethod("loadFiles", function(v) {
        var h = this,
        d = {},
        r = window,
        f = document,
        q = navigator,
        u = f.getElementsByTagName("head")[0],
        e = 0,
        g = 50,
        l = Math.round(8000 / g);
        function t() {
            this.onreadystatechange = this.onload = this.onerror = null;
            var b = 1;
            d[this.src].complete = 1;
            for (var a in d) if (!d[a].complete) {
                b = 0;
                break
            }
            if ( !! b) h()
        }
        function s(f) {
            var e = 1,
            a = f ? f.split(".") : [],
            c = window;
            if (a.length > 0) for (var d = 0; d < a.length; ++d) {
                var b = a[d];
                if ( !! b && !!c[b]) c = c[b];
                else {
                    e = 0;
                    break
                }
            }
            return e
        }
        var i = function() {
            if ( !! e) {
                clearTimeout(e);
                e = 0
            }
            i.unhook(window, "unload")
        };
        i.hook(window, "unload");
        function m() {
            var a = 0,
            b = 0,
            c = 1;
            for (a in d) {
                a = d[a];
                if (!a.complete) {
                    b = a.objectToVerify;
                    if (!b || !!b && !!s(b)) a.complete = 1;
                    else {
                        c = 0;
                        break
                    }
                }
            }--l;
            if ( !! c || l < 1) {
                h();
                i()
            } else e = setTimeout(m, g)
        }
        var j = 0,
        c = 0,
        k = 0,
        n = 0,
        p = 0;
        for (j = 0; c = v[j]; j++) {
            k = c.split("?");
            c = k[0].toLowerCase();
            n = k[1];
            d[c] = {};
            var b = a.__resourceFiles[c];
            if (!b) {
                var o = c.split(".");
                switch (o[o.length - 1]) {
                case "js":
                    p = 1;
                    d[c].complete = 0;
                    d[c].objectToVerify = n;
                    b = f.createElement("script");
                    b.type = "text/javascript";
                    b.onload = b.onerror = t;
                    b.src = c;
                    break;
                case "css":
                    d[c].complete = 1;
                    b = f.createElement("link");
                    b.rel = "stylesheet";
                    b.type = "text/css";
                    b.href = c;
                    break
                }
                a.__resourceFiles[c] = b;
                u.appendChild(b);
                if (b.type === "text/javascript") if (f.compatMode && f.all && !r.opera || !document.all && !!f.childNodes && !q.taintEnabled && !q.accentColorName && r.XMLHttpRequest !== null && !window.devicePixelRatio) {
                    if ( !! e) {
                        clearTimeout(e);
                        e = 0
                    }
                    e = setTimeout(m, g)
                }
            } else d[c].complete = 1
        }
        if (!p) h()
    })
}).ns("Msn.FileLoader");
(function() {
    var b = this,
    a = {};
    b.addBinding = function(b, c) {
        if (!a[b]) a[b] = [];
        return a[b].push(c)
    };
    b.getBindings = function(b) {
        return a[b] || []
    };
    var c = Function.prototype.msnBind;
    Function.setMethod("msnBind", function(m, d) {
        var i = this,
        g = [];
        i.__arguments = arguments;
        var j = function() {
            c.apply(i, i.__arguments)
        };
        if (d) {
            var h = 0,
            k = 0,
            e = 0,
            a = 0,
            f = 0,
            b = 0,
            l = 0;
            h = d instanceof Array ? d: [d];
            k = h.length;
            for (e = 0; e < k; e++) {
                a = h[e];
                if (typeof a.load === "string") b = a.load.split(",");
                if (a.load instanceof Array) b = a.load;
                l = b.length;
                for (f = 0; f < l; f++) g.push(b[f])
            }
        }
        if (g.length > 0) j.loadFiles(g);
        else j()
    })
}).ns("Msn.PageConfig");
(function() {
    this.addbinding = Msn.PageConfig.addBinding;
    this.getbindings = Msn.PageConfig.getBindings
}).ns("msn.pageconfig");
(function() {
    var b = this,
    e = document,
    f = window,
    c = function(a, b) {
        return a === null ? b: a
    },
    d = function(b, a) {
        return a
    },
    g = {
        string: {
            string: c,
            number: function(a) {
                return a + ""
            },
            "boolean": function(a) {
                return a ? "true": "false"
            },
            object: d,
            undefined: d
        },
        number: {
            number: c,
            string: function(a) {
                return parseFloat(a)
            },
            "boolean": function(a) {
                return a ? 1 : 0
            },
            object: d,
            undefined: d
        },
        "boolean": {
            "boolean": c,
            string: function(a) {
                return a === "true" ? true: false
            },
            number: function(a) {
                return !! a
            },
            object: function(a) {
                return a != {} ? true: false
            },
            undefined: d
        },
        object: {
            "boolean": c,
            string: c,
            number: c,
            object: c,
            undefined: d
        }
    };
    b.ArgWithDefault = function(a, b) {
        return g[typeof b][typeof a](a, b)
    };
    var a = b.ArgWithDefault;
    b.Open = function(b, e, d) {
        b = a(b, "");
        if (b !== "") {
            var c = 0;
            try {
                c = f.open(b, e, d);
                c.focus()
            } catch(g) {}
            return c
        }
    };
    b.EmailThis = function(c, b) {
        c = a(c, e.title);
        b = a(b, "Check out this page on MSN:");
        var d = "mailto:?subject=" + encodeURIComponent(c) + "&body=" + encodeURIComponent(b) + "%0D%0A%0D%0A" + encodeURIComponent(f.location.href);
        f.location.href = d
    };
    b.PrintThis = function(c, e, d) {
        c = a(c, "");
        if (c !== "") {
            c = c.replace(/&amp;/g, "&");
            return b.Open(c, e, d)
        }
    };
    b.IMThis = function(e, d, c) {
        var b = 0;
        e = a(e, "");
        d = a(d, "");
        c = a(c, "Sorry, your configuration doesn't support this feature. The minimum requirements are MSN Messenger 6.0 or higher and Internet Explorer 5.5 or higher.");
        try {
            b = new ActiveXObject("MSNMessenger.P4QuickLaunch")
        } catch(f) {
            b = 0
        }
        if (b !== 0) b.LaunchApp(e, d);
        else alert(c)
    };
    b.BlogThis = function(g, f, d, c) {
        g = a(g, e.title);
        f = a(f, "");
        d = a(d, "");
        c = a(c, "");
        var h = "http://spaces.msn.com/BlogIt.aspx" + "?Title=" + encodeURIComponent(g) + "&SourceURL=" + encodeURIComponent(e.location) + "&description=" + encodeURIComponent(f) + "&&CM=BlogThis&CE=1";
        return b.Open(h, d, c)
    };
    b.GetCookie = function(b) {
        var c = new RegExp("\\b" + b + "\\s*=\\s*([^;]*)", "i"),
        a = c.exec(e.cookie);
        return a && a.length > 1 ? a[1] : ""
    };
    b.SetCookie = function(i, h, c, d, f, g) {
        var a = ["{0}={1}".format(i, h)];
        if (c) {
            var b = new Date;
            b.setTime(b.getTime() + c * 86400000);
            a.push("expires={0}".format(b.toUTCString()))
        }
        if (d) a.push("domain={0}".format(d));
        if (f) a.push("path={0}".format(f));
        if (g) a.push("secure");
        e.cookie = a.join(";")
    }
}).ns("Msn.Util")