/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject = function () {
        var D = "undefined",
            r = "object",
            S = "Shockwave Flash",
            W = "ShockwaveFlash.ShockwaveFlash",
            q = "application/x-shockwave-flash",
            R = "SWFObjectExprInst",
            x = "onreadystatechange",
            O = window,
            j = document,
            t = navigator,
            T = false,
            U = [h],
            o = [],
            N = [],
            I = [],
            l, Q, E, B, J = false,
            a = false,
            n, G, m = true,
            M = function () {
                var aa = typeof j.getElementById != D && typeof j.getElementsByTagName != D && typeof j.createElement != D,
                    ah = t.userAgent.toLowerCase(),
                    Y = t.platform.toLowerCase(),
                    ae = Y ? /win/.test(Y) : /win/.test(ah),
                    ac = Y ? /mac/.test(Y) : /mac/.test(ah),
                    af = /webkit/.test(ah) ? parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false,
                    X = !+"\v1",
                    ag = [0, 0, 0],
                    ab = null;
                if (typeof t.plugins != D && typeof t.plugins[S] == r) {
                    ab = t.plugins[S].description;
                    if (ab && !(typeof t.mimeTypes != D && t.mimeTypes[q] && !t.mimeTypes[q].enabledPlugin)) {
                        T = true;
                        X = false;
                        ab = ab.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
                        ag[0] = parseInt(ab.replace(/^(.*)\..*$/, "$1"), 10);
                        ag[1] = parseInt(ab.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
                        ag[2] = /[a-zA-Z]/.test(ab) ? parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0
                    }
                } else {
                    if (typeof O.ActiveXObject != D) {
                        try {
                            var ad = new ActiveXObject(W);
                            if (ad) {
                                ab = ad.GetVariable("$version");
                                if (ab) {
                                    X = true;
                                    ab = ab.split(" ")[1].split(",");
                                    ag = [parseInt(ab[0], 10), parseInt(ab[1], 10), parseInt(ab[2], 10)]
                                }
                            }
                        } catch (Z) {}
                    }
                }
                return {
                    w3: aa,
                    pv: ag,
                    wk: af,
                    ie: X,
                    win: ae,
                    mac: ac
                }
            }(),
            k = function () {
                if (!M.w3) {
                    return
                }
                if ((typeof j.readyState != D && j.readyState == "complete") || (typeof j.readyState == D && (j.getElementsByTagName("body")[0] || j.body))) {
                    f()
                }
                if (!J) {
                    if (typeof j.addEventListener != D) {
                        j.addEventListener("DOMContentLoaded", f, false)
                    }
                    if (M.ie && M.win) {
                        j.attachEvent(x, function () {
                            if (j.readyState == "complete") {
                                j.detachEvent(x, arguments.callee);
                                f()
                            }
                        });
                        if (O == top) {
                            (function () {
                                if (J) {
                                    return
                                }
                                try {
                                    j.documentElement.doScroll("left")
                                } catch (X) {
                                    setTimeout(arguments.callee, 0);
                                    return
                                }
                                f()
                            })()
                        }
                    }
                    if (M.wk) {
                        (function () {
                            if (J) {
                                return
                            }
                            if (!/loaded|complete/.test(j.readyState)) {
                                setTimeout(arguments.callee, 0);
                                return
                            }
                            f()
                        })()
                    }
                    s(f)
                }
            }();

        function f() {
            if (J) {
                return
            }
            try {
                var Z = j.getElementsByTagName("body")[0].appendChild(C("span"));
                Z.parentNode.removeChild(Z)
            } catch (aa) {
                return
            }
            J = true;
            var X = U.length;
            for (var Y = 0; Y < X; Y++) {
                U[Y]()
            }
        }
        function K(X) {
            if (J) {
                X()
            } else {
                U[U.length] = X
            }
        }
        function s(Y) {
            if (typeof O.addEventListener != D) {
                O.addEventListener("load", Y, false)
            } else {
                if (typeof j.addEventListener != D) {
                    j.addEventListener("load", Y, false)
                } else {
                    if (typeof O.attachEvent != D) {
                        i(O, "onload", Y)
                    } else {
                        if (typeof O.onload == "function") {
                            var X = O.onload;
                            O.onload = function () {
                                X();
                                Y()
                            }
                        } else {
                            O.onload = Y
                        }
                    }
                }
            }
        }
        function h() {
            if (T) {
                V()
            } else {
                H()
            }
        }
        function V() {
            var X = j.getElementsByTagName("body")[0];
            var aa = C(r);
            aa.setAttribute("type", q);
            var Z = X.appendChild(aa);
            if (Z) {
                var Y = 0;
                (function () {
                    if (typeof Z.GetVariable != D) {
                        var ab = Z.GetVariable("$version");
                        if (ab) {
                            ab = ab.split(" ")[1].split(",");
                            M.pv = [parseInt(ab[0], 10), parseInt(ab[1], 10), parseInt(ab[2], 10)]
                        }
                    } else {
                        if (Y < 10) {
                            Y++;
                            setTimeout(arguments.callee, 10);
                            return
                        }
                    }
                    X.removeChild(aa);
                    Z = null;
                    H()
                })()
            } else {
                H()
            }
        }
        function H() {
            var ag = o.length;
            if (ag > 0) {
                for (var af = 0; af < ag; af++) {
                    var Y = o[af].id;
                    var ab = o[af].callbackFn;
                    var aa = {
                        success: false,
                        id: Y
                    };
                    if (M.pv[0] > 0) {
                        var ae = c(Y);
                        if (ae) {
                            if (F(o[af].swfVersion) && !(M.wk && M.wk < 312)) {
                                w(Y, true);
                                if (ab) {
                                    aa.success = true;
                                    aa.ref = z(Y);
                                    ab(aa)
                                }
                            } else {
                                if (o[af].expressInstall && A()) {
                                    var ai = {};
                                    ai.data = o[af].expressInstall;
                                    ai.width = ae.getAttribute("width") || "0";
                                    ai.height = ae.getAttribute("height") || "0";
                                    if (ae.getAttribute("class")) {
                                        ai.styleclass = ae.getAttribute("class")
                                    }
                                    if (ae.getAttribute("align")) {
                                        ai.align = ae.getAttribute("align")
                                    }
                                    var ah = {};
                                    var X = ae.getElementsByTagName("param");
                                    var ac = X.length;
                                    for (var ad = 0; ad < ac; ad++) {
                                        if (X[ad].getAttribute("name").toLowerCase() != "movie") {
                                            ah[X[ad].getAttribute("name")] = X[ad].getAttribute("value")
                                        }
                                    }
                                    P(ai, ah, Y, ab)
                                } else {
                                    p(ae);
                                    if (ab) {
                                        ab(aa)
                                    }
                                }
                            }
                        }
                    } else {
                        w(Y, true);
                        if (ab) {
                            var Z = z(Y);
                            if (Z && typeof Z.SetVariable != D) {
                                aa.success = true;
                                aa.ref = Z
                            }
                            ab(aa)
                        }
                    }
                }
            }
        }
        function z(aa) {
            var X = null;
            var Y = c(aa);
            if (Y && Y.nodeName == "OBJECT") {
                if (typeof Y.SetVariable != D) {
                    X = Y
                } else {
                    var Z = Y.getElementsByTagName(r)[0];
                    if (Z) {
                        X = Z
                    }
                }
            }
            return X
        }
        function A() {
            return !a && F("6.0.65") && (M.win || M.mac) && !(M.wk && M.wk < 312)
        }
        function P(aa, ab, X, Z) {
            a = true;
            E = Z || null;
            B = {
                success: false,
                id: X
            };
            var ae = c(X);
            if (ae) {
                if (ae.nodeName == "OBJECT") {
                    l = g(ae);
                    Q = null
                } else {
                    l = ae;
                    Q = X
                }
                aa.id = R;
                if (typeof aa.width == D || (!/%$/.test(aa.width) && parseInt(aa.width, 10) < 310)) {
                    aa.width = "310"
                }
                if (typeof aa.height == D || (!/%$/.test(aa.height) && parseInt(aa.height, 10) < 137)) {
                    aa.height = "137"
                }
                j.title = j.title.slice(0, 47) + " - Flash Player Installation";
                var ad = M.ie && M.win ? "ActiveX" : "PlugIn",
                    ac = "MMredirectURL=" + O.location.toString().replace(/&/g, "%26") + "&MMplayerType=" + ad + "&MMdoctitle=" + j.title;
                if (typeof ab.flashvars != D) {
                    ab.flashvars += "&" + ac
                } else {
                    ab.flashvars = ac
                }
                if (M.ie && M.win && ae.readyState != 4) {
                    var Y = C("div");
                    X += "SWFObjectNew";
                    Y.setAttribute("id", X);
                    ae.parentNode.insertBefore(Y, ae);
                    ae.style.display = "none";
                    (function () {
                        if (ae.readyState == 4) {
                            ae.parentNode.removeChild(ae)
                        } else {
                            setTimeout(arguments.callee, 10)
                        }
                    })()
                }
                u(aa, ab, X)
            }
        }
        function p(Y) {
            if (M.ie && M.win && Y.readyState != 4) {
                var X = C("div");
                Y.parentNode.insertBefore(X, Y);
                X.parentNode.replaceChild(g(Y), X);
                Y.style.display = "none";
                (function () {
                    if (Y.readyState == 4) {
                        Y.parentNode.removeChild(Y)
                    } else {
                        setTimeout(arguments.callee, 10)
                    }
                })()
            } else {
                Y.parentNode.replaceChild(g(Y), Y)
            }
        }
        function g(ab) {
            var aa = C("div");
            if (M.win && M.ie) {
                aa.innerHTML = ab.innerHTML
            } else {
                var Y = ab.getElementsByTagName(r)[0];
                if (Y) {
                    var ad = Y.childNodes;
                    if (ad) {
                        var X = ad.length;
                        for (var Z = 0; Z < X; Z++) {
                            if (!(ad[Z].nodeType == 1 && ad[Z].nodeName == "PARAM") && !(ad[Z].nodeType == 8)) {
                                aa.appendChild(ad[Z].cloneNode(true))
                            }
                        }
                    }
                }
            }
            return aa
        }
        function u(ai, ag, Y) {
            var X, aa = c(Y);
            if (M.wk && M.wk < 312) {
                return X
            }
            if (aa) {
                if (typeof ai.id == D) {
                    ai.id = Y
                }
                if (M.ie && M.win) {
                    var ah = "";
                    for (var ae in ai) {
                        if (ai[ae] != Object.prototype[ae]) {
                            if (ae.toLowerCase() == "data") {
                                ag.movie = ai[ae]
                            } else {
                                if (ae.toLowerCase() == "styleclass") {
                                    ah += ' class="' + ai[ae] + '"'
                                } else {
                                    if (ae.toLowerCase() != "classid") {
                                        ah += " " + ae + '="' + ai[ae] + '"'
                                    }
                                }
                            }
                        }
                    }
                    var af = "";
                    for (var ad in ag) {
                        if (ag[ad] != Object.prototype[ad]) {
                            af += '<param name="' + ad + '" value="' + ag[ad] + '" />'
                        }
                    }
                    aa.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + ah + ">" + af + "</object>";
                    N[N.length] = ai.id;
                    X = c(ai.id)
                } else {
                    var Z = C(r);
                    Z.setAttribute("type", q);
                    for (var ac in ai) {
                        if (ai[ac] != Object.prototype[ac]) {
                            if (ac.toLowerCase() == "styleclass") {
                                Z.setAttribute("class", ai[ac])
                            } else {
                                if (ac.toLowerCase() != "classid") {
                                    Z.setAttribute(ac, ai[ac])
                                }
                            }
                        }
                    }
                    for (var ab in ag) {
                        if (ag[ab] != Object.prototype[ab] && ab.toLowerCase() != "movie") {
                            e(Z, ab, ag[ab])
                        }
                    }
                    aa.parentNode.replaceChild(Z, aa);
                    X = Z
                }
            }
            return X
        }
        function e(Z, X, Y) {
            var aa = C("param");
            aa.setAttribute("name", X);
            aa.setAttribute("value", Y);
            Z.appendChild(aa)
        }
        function y(Y) {
            var X = c(Y);
            if (X && X.nodeName == "OBJECT") {
                if (M.ie && M.win) {
                    X.style.display = "none";
                    (function () {
                        if (X.readyState == 4) {
                            b(Y)
                        } else {
                            setTimeout(arguments.callee, 10)
                        }
                    })()
                } else {
                    X.parentNode.removeChild(X)
                }
            }
        }
        function b(Z) {
            var Y = c(Z);
            if (Y) {
                for (var X in Y) {
                    if (typeof Y[X] == "function") {
                        Y[X] = null
                    }
                }
                Y.parentNode.removeChild(Y)
            }
        }
        function c(Z) {
            var X = null;
            try {
                X = j.getElementById(Z)
            } catch (Y) {}
            return X
        }
        function C(X) {
            return j.createElement(X)
        }
        function i(Z, X, Y) {
            Z.attachEvent(X, Y);
            I[I.length] = [Z, X, Y]
        }
        function F(Z) {
            var Y = M.pv,
                X = Z.split(".");
            X[0] = parseInt(X[0], 10);
            X[1] = parseInt(X[1], 10) || 0;
            X[2] = parseInt(X[2], 10) || 0;
            return (Y[0] > X[0] || (Y[0] == X[0] && Y[1] > X[1]) || (Y[0] == X[0] && Y[1] == X[1] && Y[2] >= X[2])) ? true : false
        }
        function v(ac, Y, ad, ab) {
            if (M.ie && M.mac) {
                return
            }
            var aa = j.getElementsByTagName("head")[0];
            if (!aa) {
                return
            }
            var X = (ad && typeof ad == "string") ? ad : "screen";
            if (ab) {
                n = null;
                G = null
            }
            if (!n || G != X) {
                var Z = C("style");
                Z.setAttribute("type", "text/css");
                Z.setAttribute("media", X);
                n = aa.appendChild(Z);
                if (M.ie && M.win && typeof j.styleSheets != D && j.styleSheets.length > 0) {
                    n = j.styleSheets[j.styleSheets.length - 1]
                }
                G = X
            }
            if (M.ie && M.win) {
                if (n && typeof n.addRule == r) {
                    n.addRule(ac, Y)
                }
            } else {
                if (n && typeof j.createTextNode != D) {
                    n.appendChild(j.createTextNode(ac + " {" + Y + "}"))
                }
            }
        }
        function w(Z, X) {
            if (!m) {
                return
            }
            var Y = X ? "visible" : "hidden";
            if (J && c(Z)) {
                c(Z).style.visibility = Y
            } else {
                v("#" + Z, "visibility:" + Y)
            }
        }
        function L(Y) {
            var Z = /[\\\"<>\.;]/;
            var X = Z.exec(Y) != null;
            return X && typeof encodeURIComponent != D ? encodeURIComponent(Y) : Y
        }
        var d = function () {
                if (M.ie && M.win) {
                    window.attachEvent("onunload", function () {
                        var ac = I.length;
                        for (var ab = 0; ab < ac; ab++) {
                            I[ab][0].detachEvent(I[ab][1], I[ab][2])
                        }
                        var Z = N.length;
                        for (var aa = 0; aa < Z; aa++) {
                            y(N[aa])
                        }
                        for (var Y in M) {
                            M[Y] = null
                        }
                        M = null;
                        for (var X in swfobject) {
                            swfobject[X] = null
                        }
                        swfobject = null
                    })
                }
            }();
        return {
            registerObject: function (ab, X, aa, Z) {
                if (M.w3 && ab && X) {
                    var Y = {};
                    Y.id = ab;
                    Y.swfVersion = X;
                    Y.expressInstall = aa;
                    Y.callbackFn = Z;
                    o[o.length] = Y;
                    w(ab, false)
                } else {
                    if (Z) {
                        Z({
                            success: false,
                            id: ab
                        })
                    }
                }
            },
            getObjectById: function (X) {
                if (M.w3) {
                    return z(X)
                }
            },
            embedSWF: function (ab, ah, ae, ag, Y, aa, Z, ad, af, ac) {
                var X = {
                    success: false,
                    id: ah
                };
                if (M.w3 && !(M.wk && M.wk < 312) && ab && ah && ae && ag && Y) {
                    w(ah, false);
                    K(function () {
                        ae += "";
                        ag += "";
                        var aj = {};
                        if (af && typeof af === r) {
                            for (var al in af) {
                                aj[al] = af[al]
                            }
                        }
                        aj.data = ab;
                        aj.width = ae;
                        aj.height = ag;
                        var am = {};
                        if (ad && typeof ad === r) {
                            for (var ak in ad) {
                                am[ak] = ad[ak]
                            }
                        }
                        if (Z && typeof Z === r) {
                            for (var ai in Z) {
                                if (typeof am.flashvars != D) {
                                    am.flashvars += "&" + ai + "=" + Z[ai]
                                } else {
                                    am.flashvars = ai + "=" + Z[ai]
                                }
                            }
                        }
                        if (F(Y)) {
                            var an = u(aj, am, ah);
                            if (aj.id == ah) {
                                w(ah, true)
                            }
                            X.success = true;
                            X.ref = an
                        } else {
                            if (aa && A()) {
                                aj.data = aa;
                                P(aj, am, ah, ac);
                                return
                            } else {
                                w(ah, true)
                            }
                        }
                        if (ac) {
                            ac(X)
                        }
                    })
                } else {
                    if (ac) {
                        ac(X)
                    }
                }
            },
            switchOffAutoHideShow: function () {
                m = false
            },
            ua: M,
            getFlashPlayerVersion: function () {
                return {
                    major: M.pv[0],
                    minor: M.pv[1],
                    release: M.pv[2]
                }
            },
            hasFlashPlayerVersion: F,
            createSWF: function (Z, Y, X) {
                if (M.w3) {
                    return u(Z, Y, X)
                } else {
                    return undefined
                }
            },
            showExpressInstall: function (Z, aa, X, Y) {
                if (M.w3 && A()) {
                    P(Z, aa, X, Y)
                }
            },
            removeSWF: function (X) {
                if (M.w3) {
                    y(X)
                }
            },
            createCSS: function (aa, Z, Y, X) {
                if (M.w3) {
                    v(aa, Z, Y, X)
                }
            },
            addDomLoadEvent: K,
            addLoadEvent: s,
            getQueryParamValue: function (aa) {
                var Z = j.location.search || j.location.hash;
                if (Z) {
                    if (/\?/.test(Z)) {
                        Z = Z.split("?")[1]
                    }
                    if (aa == null) {
                        return L(Z)
                    }
                    var Y = Z.split("&");
                    for (var X = 0; X < Y.length; X++) {
                        if (Y[X].substring(0, Y[X].indexOf("=")) == aa) {
                            return L(Y[X].substring((Y[X].indexOf("=") + 1)))
                        }
                    }
                }
                return ""
            },
            expressInstallCallback: function () {
                if (a) {
                    var X = c(R);
                    if (X && l) {
                        X.parentNode.replaceChild(l, X);
                        if (Q) {
                            w(Q, true);
                            if (M.ie && M.win) {
                                l.style.display = "block"
                            }
                        }
                        if (E) {
                            E(B)
                        }
                    }
                    a = false
                }
            }
        }
    }();
if (typeof SkypeDetection == "undefined") {
    SkypeDetection = function () {
        var _detectionSwfUrl = "http://api.skype.com/detection/detection_as3.swf";
        var _detectionSwfID = "skypedetectionswf";
        var _containerID = "skypedetectioncontainer";
        var _verbose = false;
        var _flashCreated = false;
        var _initalizing = false;
        var _successCallbacks = [];
        var _failureCallbacks = [];
        var _failureTimeout = 5000;
        var createContainer = function () {
                var container = document.createElement("div");
                container.id = _containerID;
                container.style.position = "absolute";
                container.style.width = "0px";
                container.style.height = "0px";
                container.style.top = "0px";
                container.style.left = "0px";
                var div = document.body && document.body.appendChild(container);
                if (!div) {
                    log("Seems like container creating failed.");
                    return;
                }
                window.setTimeout(createFlash, 10);
            };
        var createFlash = function () {
                if (typeof YAHOO != "undefined" && YAHOO.widget && YAHOO.widget.SWF) {
                    log("Using YUI SWF module to embed Flash content");
                    var yuiswf = new YAHOO.widget.SWF(_containerID, _detectionSwfUrl, {
                        version: 9,
                        fixedAttributes: {
                            allowScriptAccess: "always",
                            width: 0,
                            height: 0
                        }
                    });
                    _flashCreated = true;
                    _detectionSwfID = yuiswf._id;
                } else {
                    if (window.jQuery && $ && $.flash && typeof $.flash.create == "function") {
                        log("Using jquery-swfobject to embed Flash content");
                        $("#" + _containerID).flash({
                            swf: _detectionSwfUrl,
                            id: _detectionSwfID,
                            width: 0,
                            height: 0,
                            hasVersion: 9,
                            params: {
                                allowscriptaccess: "always"
                            }
                        });
                        _flashCreated = true;
                    } else {
                        if (window.jQuery && $ && $.fn.flash) {
                            log("Using jquery-flash to embed Flash content");
                            $("#" + _containerID).flash({
                                id: _detectionSwfID,
                                src: _detectionSwfUrl,
                                width: 0,
                                height: 0,
                                allowscriptaccess: "always",
                                version: "9.0"
                            });
                            _flashCreated = true;
                        } else {
                            if (typeof swfobject != "undefined" && swfobject.embedSWF) {
                                log("Using SWFObject 2.x to embed Flash content");
                                swfobject.embedSWF(_detectionSwfUrl, _containerID, 0, 0, "9.0", null, null, {
                                    allowScriptAccess: "always"
                                }, {
                                    id: _detectionSwfID
                                }, flashStatusCallback);
                            } else {
                                if (typeof deconcept != "undefined" && deconcept.SWFObject) {
                                    log("Using SWFObject 1.5 to embed Flash content");
                                    var so = new SWFObject(_detectionSwfUrl, _detectionSwfID, 0, 0, "9.0");
                                    so.addParam("allowScriptAccess", "always");
                                    so.write(_containerID);
                                    _flashCreated = true;
                                } else {
                                    log("No supported way of embedding Flash was found");
                                    detectionFail();
                                    return;
                                }
                            }
                        }
                    }
                }
                window.setTimeout(detectionFail, _failureTimeout);
            };
        var flashStatusCallback = function (e) {
                if (e.success == false) {
                    log("Flash embedding via SWFObject embedding failed");
                    detectionFail();
                } else {
                    if (e.success == true) {
                        log("SWFObject callback indicated success");
                        _flashCreated = true;
                    }
                }
            };
        var detectionFail = function () {
                if (!SkypeDetection.ready) {
                    log("Detection seems to have failed, calling failure callbacks");
                    for (var i = 0; i < _failureCallbacks.length; i++) {
                        _failureCallbacks[i]();
                    }
                }
            };
        var detectionSuccess = function () {
                log("Detection succeeded, calling success callbacks");
                for (var i = 0; i < _successCallbacks.length; i++) {
                    _successCallbacks[i]();
                }
            };
        var log = function (msg) {
                if (_verbose && typeof console != "undefined" && console.log) {
                    console.log("[SkypeDetection] " + msg);
                }
            };
        var registerCallback = function (stack, fn) {
                for (var i = 0; i < stack.length; i++) {
                    if (stack[i] === fn) {
                        return;
                    }
                }
                stack.push(fn);
            };
        var readDetectionData = function () {
                var swf = document.getElementById(_detectionSwfID);
                try {
                    var data = swf.getData();
                } catch (e) {
                    log("Getting data with swf.getData() failed, likely reason is browser issue with ExternalInterface setup");
                    detectionFail();
                    return;
                }
                SkypeDetection.installed = swf.isInstalled();
                log("Reading detection data, Skype is " + (SkypeDetection.installed ? "installed" : "not installed"));
                if (SkypeDetection.installed) {
                    SkypeDetection.version = data.version;
                    SkypeDetection.platform = data.platform;
                    SkypeDetection.language = data.language;
                    log("Using Skype version '" + data.version + "' on '" + data.platform + "' platform in language '" + data.language + "'");
                    if (swf.getSharedObjectData) {
                        try {
                            data = swf.getSharedObjectData();
                        } catch (e) {
                            log("Could not read swf.getSharedObjectData()");
                        }
                        if (data.ui_timezone) {
                            SkypeDetection.internal.profileTimezone = data.ui_timezone;
                        }
                        if (data.os_timezone) {
                            SkypeDetection.internal.osTimezone = data.os_timezone;
                        } else {
                            SkypeDetection.internal.osTimezone = parseInt(new Date().getTimezoneOffset() / 60);
                        }
                        if (data.ui_installdate) {
                            if (typeof data.ui_installdate == "string") {
                                data.ui_installdate = parseInt(data.ui_installdate);
                            }
                            if (isNaN(data.ui_installdate) || data.ui_installdate == 0) {
                                SkypeDetection.internal.profileAge = -1;
                            } else {
                                SkypeDetection.internal.profileAge = Math.floor(((new Date()).getTime() / 1000 - data.ui_installdate) / 60 / 60 / 24);
                            }
                        }
                    }
                    if (swf.getSessionData) {
                        try {
                            data = swf.getSessionData();
                        } catch (e) {
                            log("Could not read swf.getSessionData()");
                        }
                        if (data.username) {
                            SkypeDetection.internal.username = data.username;
                            var timeNow = (new Date()).getTime() / 1000;
                            if (typeof data.expires != "undefined" && data.expires < timeNow) {
                                SkypeDetection.internal.username = "";
                                try {
                                    swf.clearSessionData();
                                } catch (e) {}
                            }
                        }
                    }
                }
                detectionSuccess();
            };
        return {
            setVerbose: function (verbose) {
                _verbose = verbose;
                log("Enabled verbose mode");
            },
            setReady: function () {
                log("Flash detection code indicated to JS that it is ready");
                SkypeDetection.ready = true;
                window.setTimeout(readDetectionData, 10);
            },
            detect: function (successFn, failureFn) {
                successFn && registerCallback(_successCallbacks, successFn);
                failureFn && registerCallback(_failureCallbacks, failureFn);
                if (SkypeDetection.ready) {
                    log("Detection has already been run before");
                    window.setTimeout(SkypeDetection.installed ? detectionSuccess : detectionFail, 10);
                } else {
                    if (!_flashCreated && !_initalizing) {
                        _initalizing = true;
                        log("Creating detection Flash helper");
                        window.setTimeout(createContainer, 10);
                    } else {
                        log("Unhandled case, marked not ready and flash somehow created?");
                    }
                }
            },
            isQualifiedVersion: function (reqver) {
                if (!SkypeDetection.ready || !SkypeDetection.installed) {
                    return false;
                }
                var ver = SkypeDetection.version;
                log("Comparing detected version " + ver + " to required version " + reqver);
                ver = ver.split(".");
                reqver = reqver.split(".");
                try {
                    if (parseInt(ver[0]) > parseInt(reqver[0]) || (parseInt(ver[0]) == parseInt(reqver[0]) && parseInt(ver[1]) > parseInt(reqver[1])) || (parseInt(ver[0]) == parseInt(reqver[0]) && parseInt(ver[1]) == parseInt(reqver[1]) && parseInt(ver[3]) >= parseInt(reqver[3]))) {
                        return true;
                    }
                } catch (e) {}
                return false;
            },
            ready: false,
            version: null,
            platform: null,
            language: null,
            installed: null,
            internal: {
                username: null,
                profileTimezone: null,
                osTimezone: null,
                profileAge: null
            }
        };
    }();
}
/*
 * This is the legacy public Skype detection file converted to use new Flash
 * based detection library. It is mainly used for old Skype web buttons, though
 * some 3rd party sites have made use of it as well. This file tries to expose
 * the same API as previous implementation to not break 3rd party sites.
 *
 * Please use detection.js (SkypeDetection object) based library instead of
 * this in all new site developments.
 */
(function () {
    var _verbose = false;
    var _hasSkype = false;
    var _currentURI;
    var _notice;
    var _template = '<div style="width: 540px; height: 305px; background: white url(http://download.skype.com/share/skypebuttons/oops/bg.png) top left no-repeat; position: relative; font: 14px Verdana, sans-serif;"><span style="position: absolute; left: 40px; top: 44px; font: 24px/24px Verdana, sans-serif; color: white; font-weight: 500;">Hello!</span><span style="position: absolute; left: 40px; top: 90px; width: 230px; font: 14px/18px Verdana, sans-serif; color: white;">Skype buttons require that you have the latest version of Skype installed. Don&rsquo;t worry, you only need to do this once.</span><span style="position: absolute; left: 290px; top: 90px; width: 220px; font: 14px/18px Verdana, sans-serif; color: white;">Skype is a little piece of software that lets you make free calls over the internet.<br /><a href="http://www.skype.com/go/features" style="color: white">Learn more about Skype</a></span><span style="position: absolute; left: 40px; top: 200px; font: 14px/18px Verdana, sans-serif; color: black; width: 460px;">Skype is free, easy and quick to download and install.<br /> It works with Windows, Mac OS X, Linux and your mobile device.</span><form action="http://www.skype.com/go/download" method="get" target="_blank" style="position: absolute; margin: 0; padding: 0; left: 40px; top: 255px; width: 460px;"><input type="submit" value="Download Skype" style="float: left;" /><input type="button" name="haveskype" value="Already have Skype" style="float: right;" /></form></div></div>';
    var log = function (msg) {
            if (_verbose && console && console.log) {
                console.log("[skypeCheck.js] " + msg);
            }
        };
    if (typeof SkypeDetection != "object" || typeof swfobject != "object" || !swfobject.addDomLoadEvent) {
        log("Needed dependencies (SkypeDetection, SWFObject 2.x) were not found! Not checking for Skype");
        return;
    }
    var addListener = function (obj, ev, fn) {
            if (obj && typeof obj.addEventListener != "undefined") {
                obj.addEventListener(ev, fn, false);
            } else {
                if (obj && typeof obj.attachEvent != "undefined") {
                    obj.attachEvent("on" + ev, fn);
                } else {
                    log("No supported way to add event listener was found");
                }
            }
        };
    var addLinkChecks = function () {
            var links = document.getElementsByTagName("A");
            var l;
            for (var i = 0; i < links.length; i++) {
                l = links[i];
                if (l.href && l.href.indexOf("skype:") == 0) {
                    addListener(l, "click", linkClickCheck);
                    continue;
                }
            }
        };
    var linkClickCheck = function (e) {
            if (!e) {
                var e = window.event;
            }
            var target = e.target || e.srcElement || null;
            if (target) {
                while (target.tagName != "A" && target.parentElement) {
                    target = target.parentElement;
                }
            }
            if (SkypeDetection.installed || _hasSkype) {
                log("Skype was detected, passing link through to Skype");
                return;
            } else {
                log("Skype seems not to be installed");
                target && target.href && (_currentURI = target.href);
                showNotice();
                e.preventDefault && e.preventDefault();
                e.stopPropagation && e.stopPropagation();
                e.returnValue && (e.returnValue = false);
                return false;
            }
        };
    var showNotice = function () {
            var clientWidth = 0,
                clientHeight = 0;
            if (!_notice) {
                if (document && document.documentElement && document.documentElement.clientWidth) {
                    clientWidth = document.documentElement.clientWidth;
                    clientHeight = document.documentElement.clientHeight;
                } else {
                    if (document && document.body && document.body.clientWidth) {
                        clientWidth = document.body.clientWidth;
                        clientHeight = document.body.clientHeight;
                    }
                }
                log("Creating notice element");
                _notice = document.createElement("DIV");
                _notice.id = "skypeCheckNotice";
                _notice.style.position = "absolute";
                _notice.style.zIndex = "10000";
/*@cc_on
            @if (@_jscript_version == 5.6)
            _notice.style.position = "absolute";
            @end
            @*/
                _notice.style.top = Math.max(0, Math.floor(clientHeight / 2 - 152)) + "px";
                _notice.style.left = Math.max(0, Math.floor(clientWidth / 2 - 270)) + "px";
                _notice.innerHTML = _template;
                document.body.appendChild(_notice);
                var f = _notice.getElementsByTagName("input");
                (f.length == 2) && addListener(f[1], "click", hasSkype);
                f.length && addListener(f[0].parentElement, "submit", onDownloading) && f[0].focus();
            }
            log("Showing notice element");
            _notice.style.visibility = "visible";
        };
    var hasSkype = function () {
            log("User indicated having Skype, hiding notice, opening Skype URI " + _currentURI);
            _hasSkype = true;
            _notice.style.visibility = "hidden";
            _currentURI && location.replace(_currentURI);
            _currentURI = null;
        };
    var onDownloading = function () {
            var i = _notice.getElementsByTagName("input");
            if (i.length > 1) {
                i[1].style["float"] = "";
                i[1].value = "I have Skype installed now";
                i[0].style.display = "none";
            }
        };
    var skypeCheck = function () {
            return SkypeDetection.ready && SkypeDetection.installed;
        };
    swfobject.addDomLoadEvent(addLinkChecks);
    swfobject.addDomLoadEvent(SkypeDetection.detect);
    window.skypeCheck = skypeCheck;
})();
