﻿function ShowImageWindow(src, title) {
    var wOpen;
    var sOptions;

    sOptions = 'status=yes,menubar=yes,scrollbars=yes,resizable=yes,toolbar=yes';
    sOptions = sOptions + ',width=700';
    sOptions = sOptions + ',height=500';
    sOptions = sOptions + ',screenX=0,screenY=0,left=0,top=0';

    wOpen = window.open('', "_blank", sOptions);
    wOpen.location = src;
    wOpen.focus();
    return wOpen;
}


function browserdetect() {
    var A = navigator.userAgent.toLowerCase();
    this.isIE = A.indexOf("msie") > -1;
    this.ieVer = this.isIE ? /msie\s(\d\.\d)/.exec(A)[1] : 0;
    this.isMoz = A.indexOf("firefox") != -1;
    this.isSafari = A.indexOf("safari") != -1;
    this.quirksMode = this.isIE && (!document.compatMode || document.compatMode.indexOf("BackCompat") > -1);
    this.isOp = "opera" in window;
    this.isWebKit = A.indexOf("webkit") != -1;
    if (this.isIE) {
        this.get_style = function(D, F) {
            if (!(F in D.currentStyle)) {
                return ""
            }
            var C = /^([\d.]+)(\w*)/.exec(D.currentStyle[F]);
            if (!C) {
                return D.currentStyle[F]
            }
            if (C[1] == 0) {
                return "0"
            }
            if (C[2] && C[2] !== "px") {
                var B = D.style.left;
                var E = D.runtimeStyle.left;
                D.runtimeStyle.left = D.currentStyle.left;
                D.style.left = C[1] + C[2];
                C[0] = D.style.pixelLeft;
                D.style.left = B;
                D.runtimeStyle.left = E
            }
            return C[0]
        }
    }
    else {
        this.get_style = function(B, C) {
            C = C.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
            return document.defaultView.getComputedStyle(B, "").getPropertyValue(C)
        }
    }
}
var curvyBrowser = new browserdetect;
if (curvyBrowser.isIE) {
    try {
        document.execCommand("BackgroundImageCache", false, true)
    }
    catch (e) {
    }
}
function curvyCnrSpec(A) {
    this.selectorText = A;
    this.tlR = this.trR = this.blR = this.brR = 0;
    this.tlu = this.tru = this.blu = this.bru = "";
    this.antiAlias = true
}
curvyCnrSpec.prototype.setcorner = function(B, C, A, D) {
    if (!B) {
        this.tlR = this.trR = this.blR = this.brR = parseInt(A);
        this.tlu = this.tru = this.blu = this.bru = D
    }
    else {
        propname = B.charAt(0) + C.charAt(0);
        this[propname + "R"] = parseInt(A);
        this[propname + "u"] = D
    }
};
curvyCnrSpec.prototype.get = function(D) {
    if (/^(t|b)(l|r)(R|u)$/.test(D)) {
        return this[D]
    }
    if (/^(t|b)(l|r)Ru$/.test(D)) {
        var C = D.charAt(0) + D.charAt(1);
        return this[C + "R"] + this[C + "u"]
    } if (/^(t|b)Ru?$/.test(D)) {
        var B = D.charAt(0);
        B += this[B + "lR"] > this[B + "rR"] ? "l" : "r";
        var A = this[B + "R"];
        if (D.length === 3 && D.charAt(2) === "u")
        { A += this[B = "u"] } return A
    }
    throw new Error("Don't recognize property " + D)
};
curvyCnrSpec.prototype.radiusdiff = function(A) {
    if (A !== "t" && A !== "b") {
        throw new Error("Param must be 't' or 'b'")
    }
    return Math.abs(this[A + "lR"] - this[A + "rR"])
};
curvyCnrSpec.prototype.setfrom = function(A) {
    this.tlu = this.tru = this.blu = this.bru = "px";
    if ("tl" in A)
    { this.tlR = A.tl.radius }
    if ("tr" in A)
    { this.trR = A.tr.radius }
    if ("bl" in A)
    { this.blR = A.bl.radius }
    if ("br" in A)
    { this.brR = A.br.radius }
    if ("antiAlias" in A)
    { this.antiAlias = A.antiAlias }
};

curvyCnrSpec.prototype.cloneOn = function(G) {
    var E = ["tl", "tr", "bl", "br"];
    var H = 0; var C, A;
    for (C in E) {
        if (!isNaN(C)) {
            A = this[E[C] + "u"];
            if (A !== "" && A !== "px")
            { H = new curvyCnrSpec; break }
        }
    } if (!H) { H = this }
    else {
        var B, D, F = curvyBrowser.get_style(G, "left");
        for (C in E) {
            if (!isNaN(C)) {
                B = E[C];
                A = this[B + "u"]; D = this[B + "R"];
                if (A !== "px") {
                    var F = G.style.left;
                    G.style.left = D + A;
                    D = G.style.pixelLeft;
                    G.style.left = F
                } H[B + "R"] = D;
                H[B + "u"] = "px"
            }
        }
        G.style.left = F
    }
    return H
};
curvyCnrSpec.prototype.radiusSum = function(A) {
    if (A !== "t" && A !== "b") {
        throw new Error("Param must be 't' or 'b'")
    } return this[A + "lR"] + this[A + "rR"]
};
curvyCnrSpec.prototype.radiusCount = function(A) {
    var B = 0; if (this[A + "lR"])
    { ++B } if (this[A + "rR"]) { ++B }
    return B
};
curvyCnrSpec.prototype.cornerNames = function() {
    var A = []; if (this.tlR) {
        A.push("tl")
    }
    if (this.trR) {
        A.push("tr")
    } if (this.blR)
    { A.push("bl") }
    if (this.brR) {
        A.push("br")
    } return A
}; function operasheet(C) {
    var A = document.styleSheets.item(C).ownerNode.text;
    A = A.replace(/\/\*(\n|\r|.)*?\*\//g, "");
    var D = new RegExp("^s*([\\w.#][-\\w.#, ]+)[\\n\\s]*\\{([^}]+border-((top|bottom)-(left|right)-)?radius[^}]*)\\}", "mg");
    var G;
    this.rules = [];
    while ((G = D.exec(A)) !== null) {
        var F = new RegExp("(..)border-((top|bottom)-(left|right)-)?radius:\\s*([\\d.]+)(in|em|px|ex|pt)", "g");
        var E, B = new curvyCnrSpec(G[1]);
        while ((E = F.exec(G[2])) !== null) { if (E[1] !== "z-") { B.setcorner(E[3], E[4], E[5], E[6]) } } this.rules.push(B)
    }
}
operasheet.contains_border_radius = function(A)
{ return /border-((top|bottom)-(left|right)-)?radius/.test(document.styleSheets.item(A).ownerNode.text) };
function curvyCorners() {
    var G, D, E, B, J;
    if (typeof arguments[0] !== "object")
    { throw curvyCorners.newError("First parameter of curvyCorners() must be an object.") }
    if (arguments[0] instanceof curvyCnrSpec) {
        B = arguments[0]; if (!B.selectorText && typeof arguments[1] === "string") {
            B.selectorText = arguments[1]
        }
    }
    else {
        if (typeof arguments[1] !== "object" && typeof arguments[1] !== "string") {
            throw curvyCorners.newError("Second parameter of curvyCorners() must be an object or a class name.")
        }
        D = arguments[1]; if (typeof D !== "string") { D = "" } if (D !== "" && D.charAt(0) !== "." && "autoPad" in arguments[0])
        { D = "." + D }
        B = new curvyCnrSpec(D); B.setfrom(arguments[0])
    }
    if (B.selectorText) {
        J = 0; var I = B.selectorText.replace(/\s+$/, "").split(/,\s*/);
        E = new Array; function A(M) {
            var L = M.split("#"); return (L.length === 2 ? "#" : "") + L.pop()
        } for (G = 0; G < I.length; ++G) {
            var K = A(I[G]); var H = K.split(" "); switch (K.charAt(0)) {
                case "#": D = H.length === 1 ? K : H[0]; D = document.getElementById(D.substr(1)); if (D === null) {
                        curvyCorners.alert("No object with ID " + K + " exists yet.\nCall curvyCorners(settings, obj) when it is created.")
                    } else {
                        if (H.length === 1) { E.push(D) } else {
                            E = E.concat(curvyCorners.getElementsByClass(H[1], D))
                        }
                    } break; default: if (H.length === 1) { E = E.concat(curvyCorners.getElementsByClass(K)) } else {
                        var C = curvyCorners.getElementsByClass(H[0]); for (D = 0; D < C.length; ++D)
                        { E = E.concat(curvyCorners.getElementsByClass(H[1], C)) }
                    }
            }
        }
    } else {
        J = 1;
        E = arguments
    } for (G = J, D = E.length; G < D; ++G) {
        if (E[G] && (!("IEborderRadius" in E[G].style) || E[G].style.IEborderRadius != "set")) {
            if (E[G].className && E[G].className.indexOf("curvyRedraw") !== -1) {
                if (typeof curvyCorners.redrawList === "undefined")
                { curvyCorners.redrawList = new Array } curvyCorners.redrawList.push({ node: E[G], spec: B, copy: E[G].cloneNode(false)
                })
            } E[G].style.IEborderRadius = "set"; var F = new curvyObject(B, E[G]); F.applyCorners()
        }
    }
} curvyCorners.prototype.applyCornersToAll = function()
{ curvyCorners.alert("This function is now redundant. Just call curvyCorners(). See documentation.") };
curvyCorners.redraw = function() {
    if (!curvyBrowser.isOp && !curvyBrowser.isIE)
    { return } if (!curvyCorners.redrawList) {
        throw curvyCorners.newError("curvyCorners.redraw() has nothing to redraw.")
    }
    var E = curvyCorners.bock_redraw; curvyCorners.block_redraw = true; for (var A in curvyCorners.redrawList) {
        if (isNaN(A)) { continue } var D = curvyCorners.redrawList[A]; if (!D.node.clientWidth)
        { continue } var B = D.copy.cloneNode(false); for (var C = D.node.firstChild; C != null; C = C.nextSibling)
        { if (C.className === "autoPadDiv") { break } } if (!C) {
            curvyCorners.alert("Couldn't find autoPad DIV");
            break
        } D.node.parentNode.replaceChild(B, D.node); while (C.firstChild)
        { B.appendChild(C.removeChild(C.firstChild)) } D = new curvyObject(D.spec, D.node = B);
        D.applyCorners()
    } curvyCorners.block_redraw = E
}; curvyCorners.adjust = function(obj, prop, newval) {
    if (curvyBrowser.isOp || curvyBrowser.isIE) {
        if (!curvyCorners.redrawList)
        { throw curvyCorners.newError("curvyCorners.adjust() has nothing to adjust.") } var i, j = curvyCorners.redrawList.length;
        for (i = 0; i < j; ++i) { if (curvyCorners.redrawList[i].node === obj) { break } }
        if (i === j) { throw curvyCorners.newError("Object not redrawable") } obj = curvyCorners.redrawList[i].copy
    }
    if (prop.indexOf(".") === -1) { obj[prop] = newval } else { eval("obj." + prop + "='" + newval + "'") }
};
curvyCorners.handleWinResize = function() { if (!curvyCorners.block_redraw) { curvyCorners.redraw() } };
curvyCorners.setWinResize = function(A) { curvyCorners.block_redraw = !A };
curvyCorners.newError = function(A) { return new Error("curvyCorners Error:\n" + A) };
curvyCorners.alert = function(A) {
    if (typeof curvyCornersVerbose === "undefined" || curvyCornersVerbose)
    { alert(A) }
}; function curvyObject() {
    var U; this.box = arguments[1]; this.settings = arguments[0]; this.topContainer = this.bottomContainer = this.shell = U = null;
    var K = this.box.clientWidth; if (!K && curvyBrowser.isIE)
    { this.box.style.zoom = 1; K = this.box.clientWidth }
    if (!K) {
        if (!this.box.parentNode) { throw this.newError("box has no parent!") }
        for (U = this.box; ; U = U.parentNode) {
            if (!U || U.tagName === "BODY") {
                this.applyCorners = function() { };
                curvyCorners.alert(this.errmsg("zero-width box with no accountable parent", "warning"));
                return
            } if (U.style.display === "none") { break }
        } U.style.display = "block";
        K = this.box.clientWidth
    } if (arguments[0] instanceof curvyCnrSpec)
    { this.spec = arguments[0].cloneOn(this.box) }
    else {
        this.spec = new curvyCnrSpec(""); this.spec.setfrom(this.settings)
    } var b = curvyBrowser.get_style(this.box, "borderTopWidth");
    var J = curvyBrowser.get_style(this.box, "borderBottomWidth");
    var D = curvyBrowser.get_style(this.box, "borderLeftWidth");
    var B = curvyBrowser.get_style(this.box, "borderRightWidth");
    var I = curvyBrowser.get_style(this.box, "borderTopColor");
    var G = curvyBrowser.get_style(this.box, "borderBottomColor");
    var A = curvyBrowser.get_style(this.box, "borderLeftColor");
    var E = curvyBrowser.get_style(this.box, "backgroundColor");
    var C = curvyBrowser.get_style(this.box, "backgroundImage");
    var Y = curvyBrowser.get_style(this.box, "backgroundRepeat");
    if (this.box.currentStyle && this.box.currentStyle.backgroundPositionX) {
        var R = curvyBrowser.get_style(this.box, "backgroundPositionX");
        var P = curvyBrowser.get_style(this.box, "backgroundPositionY")
    } else {
        var R = curvyBrowser.get_style(this.box, "backgroundPosition");
        R = R.split(" "); var P = R[1]; R = R[0]
    }
    var O = curvyBrowser.get_style(this.box, "position");
    var Z = curvyBrowser.get_style(this.box, "paddingTop");
    var c = curvyBrowser.get_style(this.box, "paddingBottom");
    var Q = curvyBrowser.get_style(this.box, "paddingLeft");
    var a = curvyBrowser.get_style(this.box, "paddingRight");
    var S = curvyBrowser.get_style(this.box, "border");
    filter = curvyBrowser.ieVer > 7 ? curvyBrowser.get_style(this.box, "filter") : null; var H = this.spec.get("tR");
    var M = this.spec.get("bR"); var W = function(f) {
        if (typeof f === "number") { return f } if (typeof f !== "string")
        { throw new Error("unexpected styleToNPx type " + typeof f) } var d = /^[-\d.]([a-z]+)$/.exec(f); if (d && d[1] != "px")
        { throw new Error("Unexpected unit " + d[1]) }
        if (isNaN(f = parseInt(f))) { f = 0 } return f
    };
    var T = function(d) { return d <= 0 ? "0" : d + "px" };
    try {
        this.borderWidth = W(b); this.borderWidthB = W(J);
        this.borderWidthL = W(D); this.borderWidthR = W(B);
        this.boxColour = curvyObject.format_colour(E);
        this.topPadding = W(Z); this.bottomPadding = W(c);
        this.leftPadding = W(Q); this.rightPadding = W(a);
        this.boxWidth = K; this.boxHeight = this.box.clientHeight;
        this.borderColour = curvyObject.format_colour(I);
        this.borderColourB = curvyObject.format_colour(G);
        this.borderColourL = curvyObject.format_colour(A);
        this.borderString = this.borderWidth + "px solid " + this.borderColour;
        this.borderStringB = this.borderWidthB + "px solid " + this.borderColourB;
        this.backgroundImage = ((C != "none") ? C : ""); this.backgroundRepeat = Y
    } catch (X) {
        throw this.newError("getMessage" in X ? X.getMessage() : X.message)
    } var F = this.boxHeight; var V = K; if (curvyBrowser.isOp) {
        R = W(R);
        P = W(P);
        if (R) {
            var N = V + this.borderWidthL + this.borderWidthR;
            if (R > N) { R = N } R = (N / R * 100) + "%"
        } if (P) {
            var N = F + this.borderWidth + this.borderWidthB;
            if (P > N) { P = N } P = (N / P * 100) + "%"
        }
    } if (curvyBrowser.quirksMode) { } else {
        this.boxWidth -= this.leftPadding + this.rightPadding;
        this.boxHeight -= this.topPadding + this.bottomPadding
    } this.contentContainer = document.createElement("div");
    if (filter) {
        this.contentContainer.style.filter = filter
    }
    while (this.box.firstChild) {
        this.contentContainer.appendChild(this.box.removeChild(this.box.firstChild))
    } if (O != "absolute") {
        this.box.style.position = "relative"
    }
    this.box.style.padding = "0";
    this.box.style.border = this.box.style.backgroundImage = "none";
    this.box.style.backgroundColor = "transparent";
    this.box.style.width = (V + this.borderWidthL + this.borderWidthR) + "px";
    this.box.style.height = (F + this.borderWidth + this.borderWidthB) + "px";
    var L = document.createElement("div"); L.style.position = "absolute";
    if (filter)
    { L.style.filter = filter }
    if (curvyBrowser.quirksMode) {
        L.style.width = (V + this.borderWidthL + this.borderWidthR) + "px"
    }
    else
    { L.style.width = V + "px" } L.style.height = T(F + this.borderWidth + this.borderWidthB - H - M);
    L.style.padding = "0";
    L.style.top = H + "px";
    L.style.left = "0";
    if (this.borderWidthL) {
        L.style.borderLeft = this.borderWidthL + "px solid " + this.borderColourL
    } if (this.borderWidth && !H) {
        L.style.borderTop = this.borderWidth + "px solid " + this.borderColour
    } if (this.borderWidthR) {
        L.style.borderRight = this.borderWidthR + "px solid " + this.borderColourL
    }
    if (this.borderWidthB && !M) {
        L.style.borderBottom = this.borderWidthB + "px solid " + this.borderColourB
    } L.style.backgroundColor = E; L.style.backgroundImage = this.backgroundImage;
    L.style.backgroundRepeat = this.backgroundRepeat; this.shell = this.box.appendChild(L);
    K = curvyBrowser.get_style(this.shell, "width"); if (K === "" || K === "auto" || K.indexOf("%") !== -1)
    { throw this.newError("Shell width is " + K) }
    this.boxWidth = (K != "" && K != "auto" && K.indexOf("%") == -1) ? parseInt(K) : this.shell.clientWidth; this.applyCorners = function() {
        if (this.backgroundObject) {
            var w = function(AO, i, t) {
                if (AO === 0) { return 0 } var k; if (AO === "right" || AO === "bottom")
                { return t - i } if (AO === "center") { return (t - i) / 2 } if (AO.indexOf("%") > 0) { return (t - i) * 100 / parseInt(AO) }
                return W(AO)
            }; this.backgroundPosX = w(R, this.backgroundObject.width, V); this.backgroundPosY = w(P, this.backgroundObject.height, F)
        }
        else { if (this.backgroundImage) { this.backgroundPosX = W(R); this.backgroundPosY = W(P) } }
        if (H) {
            v = document.createElement("div");
            v.style.width = this.boxWidth + "px";
            v.style.fontSize = "1px";
            v.style.overflow = "hidden";
            v.style.position = "absolute";
            v.style.paddingLeft = this.borderWidth + "px";
            v.style.paddingRight = this.borderWidth + "px";
            v.style.height = H + "px";
            v.style.top = -H + "px";
            v.style.left = -this.borderWidthL + "px";
            this.topContainer = this.shell.appendChild(v)
        } if (M) {
            var v = document.createElement("div");
            v.style.width = this.boxWidth + "px";
            v.style.fontSize = "1px";
            v.style.overflow = "hidden";
            v.style.position = "absolute";
            v.style.paddingLeft = this.borderWidthB + "px";
            v.style.paddingRight = this.borderWidthB + "px";
            v.style.height = M + "px"; v.style.bottom = -M + "px";
            v.style.left = -this.borderWidthL + "px";
            this.bottomContainer = this.shell.appendChild(v)
        } var AG = this.spec.cornerNames();
        for (var AK in AG) {
            if (!isNaN(AK)) {
                var AC = AG[AK];
                var AD = this.spec[AC + "R"]; var AE, AH, j, AF;
                if (AC == "tr" || AC == "tl") {
                    AE = this.borderWidth; AH = this.borderColour;
                    AF = this.borderWidth
                } else {
                    AE = this.borderWidthB;
                    AH = this.borderColourB; AF = this.borderWidthB
                } j = AD - AF;
                var u = document.createElement("div");
                u.style.height = this.spec.get(AC + "Ru");
                u.style.width = this.spec.get(AC + "Ru");
                u.style.position = "absolute"; u.style.fontSize = "1px";
                u.style.overflow = "hidden"; var r, q, p;
                var n = filter ? parseInt(/alpha\(opacity.(\d+)\)/.exec(filter)[1]) : 100; for (r = 0; r < AD; ++r) {
                    var m = (r + 1 >= j) ? -1 : Math.floor(Math.sqrt(Math.pow(j, 2) - Math.pow(r + 1, 2))) - 1;
                    if (j != AD) {
                        var h = (r >= j) ? -1 : Math.ceil(Math.sqrt(Math.pow(j, 2) - Math.pow(r, 2)));
                        var f = (r + 1 >= AD) ? -1 : Math.floor(Math.sqrt(Math.pow(AD, 2) - Math.pow((r + 1), 2))) - 1
                    } var d = (r >= AD) ? -1 : Math.ceil(Math.sqrt(Math.pow(AD, 2) - Math.pow(r, 2)));
                    if (m > -1) { this.drawPixel(r, 0, this.boxColour, n, (m + 1), u, true, AD) } if (j != AD) {
                        if (this.spec.antiAlias) {
                            for (q = m + 1; q < h; ++q) {
                                if (this.backgroundImage != "") {
                                    var g = curvyObject.pixelFraction(r, q, j) * 100;
                                    this.drawPixel(r, q, AH, n, 1, u, g >= 30, AD)
                                } else {
                                    if (this.boxColour !== "transparent") {
                                        var AB = curvyObject.BlendColour(this.boxColour, AH, curvyObject.pixelFraction(r, q, j));
                                        this.drawPixel(r, q, AB, n, 1, u, false, AD)
                                    } else {
                                        this.drawPixel(r, q, AH, n >> 1, 1, u, false, AD)
                                    }
                                }
                            } if (f >= h) { if (h == -1) { h = 0 } this.drawPixel(r, h, AH, n, (f - h + 1), u, false, 0) }
                            p = AH; q = f
                        } else { if (f > m) { this.drawPixel(r, (m + 1), AH, n, (f - m), u, false, 0) } }
                    }
                    else { p = this.boxColour; q = m } if (this.spec.antiAlias) {
                        while (++q < d)
                        { this.drawPixel(r, q, p, (curvyObject.pixelFraction(r, q, AD) * n), 1, u, AF <= 0, AD) }
                    }
                }
                for (var y = 0, AJ = u.childNodes.length; y < AJ; ++y) {
                    var s = u.childNodes[y];
                    var AI = parseInt(s.style.top); var AM = parseInt(s.style.left);
                    var AN = parseInt(s.style.height); if (AC == "tl" || AC == "bl")
                    { s.style.left = (AD - AM - 1) + "px" } if (AC == "tr" || AC == "tl")
                    { s.style.top = (AD - AN - AI) + "px" } s.style.backgroundRepeat = this.backgroundRepeat;
                    if (this.backgroundImage) {
                        switch (AC) {
                            case "tr": s.style.backgroundPosition = (this.backgroundPosX - this.borderWidthL + AD - V - AM) + "px " + (this.backgroundPosY + AN + AI + this.borderWidth - AD) + "px";
                                break;
                            case "tl": s.style.backgroundPosition = (this.backgroundPosX - AD + AM + this.borderWidthL) + "px " + (this.backgroundPosY - AD + AN + AI + this.borderWidth) + "px";
                                break;
                            case "bl": s.style.backgroundPosition = (this.backgroundPosX - AD + AM + 1 + this.borderWidthL) + "px " + (this.backgroundPosY - F - this.borderWidth + (curvyBrowser.quirksMode ? AI : -AI) + AD) + "px";
                                break;
                            case "br": if (curvyBrowser.quirksMode) {
                                    s.style.backgroundPosition = (this.backgroundPosX + this.borderWidthL - V + AD - AM) + "px " + (this.backgroundPosY - F - this.borderWidth + AI + AD) + "px"
                                }
                                else {
                                    s.style.backgroundPosition = (this.backgroundPosX - this.borderWidthL - V + AD - AM) + "px " + (this.backgroundPosY - F - this.borderWidth + AD - AI) + "px"
                                }
                        }
                    }
                } switch (AC) {
                    case "tl": u.style.top = u.style.left = "0"; this.topContainer.appendChild(u);
                        break;
                    case "tr": u.style.top = u.style.right = "0"; this.topContainer.appendChild(u);
                        break;
                    case "bl": u.style.bottom = u.style.left = "0"; this.bottomContainer.appendChild(u);
                        break;
                    case "br": u.style.bottom = u.style.right = "0"; this.bottomContainer.appendChild(u)
                }
            }
        } var x = { t: this.spec.radiusdiff("t"), b: this.spec.radiusdiff("b") };
        for (z in x) {
            if (typeof z === "function")
            { continue }
            if (!this.spec.get(z + "R"))
            { continue } if (x[z]) {
                if (this.backgroundImage && this.spec.radiusSum(z) !== x[z]) {
                    curvyCorners.alert(this.errmsg("Not supported: unequal non-zero top/bottom radii with background image"))
                } var AL = (this.spec[z + "lR"] < this.spec[z + "rR"]) ? z + "l" : z + "r";
                var l = document.createElement("div"); l.style.height = x[z] + "px";
                l.style.width = this.spec.get(AL + "Ru"); l.style.position = "absolute";
                l.style.fontSize = "1px"; l.style.overflow = "hidden";
                l.style.backgroundColor = this.boxColour; switch (AL) {
                    case "tl": l.style.bottom = l.style.left = "0";
                        l.style.borderLeft = this.borderString; this.topContainer.appendChild(l);
                        break; case "tr": l.style.bottom = l.style.right = "0";
                        l.style.borderRight = this.borderString; this.topContainer.appendChild(l); break; case "bl": l.style.top = l.style.left = "0";
                        l.style.borderLeft = this.borderStringB; this.bottomContainer.appendChild(l); break; case "br": l.style.top = l.style.right = "0";
                        l.style.borderRight = this.borderStringB; this.bottomContainer.appendChild(l)
                }
            } var o = document.createElement("div");
            if (filter) { o.style.filter = filter } o.style.position = "relative"; o.style.fontSize = "1px"; o.style.overflow = "hidden";
            o.style.width = this.fillerWidth(z); o.style.backgroundColor = this.boxColour; o.style.backgroundImage = this.backgroundImage;
            o.style.backgroundRepeat = this.backgroundRepeat; switch (z) {
                case "t": if (this.topContainer) {
                        if (curvyBrowser.quirksMode) { o.style.height = 100 + H + "px" }
                        else { o.style.height = 100 + H - this.borderWidth + "px" }
                        o.style.marginLeft = this.spec.tlR ? (this.spec.tlR - this.borderWidthL) + "px" : "0";
                        o.style.borderTop = this.borderString; if (this.backgroundImage) {
                            var AA = this.spec.tlR ? (this.backgroundPosX - (H - this.borderWidthL)) + "px " : "0 ";
                            o.style.backgroundPosition = AA + this.backgroundPosY + "px";
                            this.shell.style.backgroundPosition = this.backgroundPosX + "px " + (this.backgroundPosY - H + this.borderWidthL) + "px"
                        } this.topContainer.appendChild(o)
                    }
                    break;
                case "b": if (this.bottomContainer) {
                        if (curvyBrowser.quirksMode) {
                            o.style.height = M + "px"
                        }
                        else {
                            o.style.height = M - this.borderWidthB + "px"
                        } o.style.marginLeft = this.spec.blR ? (this.spec.blR - this.borderWidthL) + "px" : "0";
                        o.style.borderBottom = this.borderStringB; if (this.backgroundImage) {
                            var AA = this.spec.blR ? (this.backgroundPosX + this.borderWidthL - M) + "px " : this.backgroundPosX + "px ";
                            o.style.backgroundPosition = AA + (this.backgroundPosY - F - this.borderWidth + M) + "px"
                        }
                        this.bottomContainer.appendChild(o)
                    }
            }
        } this.contentContainer.style.position = "absolute";
        this.contentContainer.className = "autoPadDiv";
        this.contentContainer.style.left = this.borderWidthL + "px";
        this.contentContainer.style.paddingTop = this.topPadding + "px";
        this.contentContainer.style.top = this.borderWidth + "px";
        this.contentContainer.style.paddingLeft = this.leftPadding + "px";
        this.contentContainer.style.paddingRight = this.rightPadding + "px";
        z = V; if (!curvyBrowser.quirksMode) {
            z -= this.leftPadding + this.rightPadding
        } this.contentContainer.style.width = z + "px";
        this.contentContainer.style.textAlign = curvyBrowser.get_style(this.box, "textAlign");
        this.box.style.textAlign = "left"; this.box.appendChild(this.contentContainer);
        if (U) {
            U.style.display = "none"
        }
    };
    if (this.backgroundImage) {
        R = this.backgroundCheck(R);
        P = this.backgroundCheck(P); if (this.backgroundObject) {
            this.backgroundObject.holdingElement = this;
            this.dispatch = this.applyCorners; this.applyCorners = function() {
                if (this.backgroundObject.complete) { this.dispatch() }
                else {
                    this.backgroundObject.onload = new Function("curvyObject.dispatch(this.holdingElement);")
                }
            }
        }
    }
}
curvyObject.prototype.backgroundCheck = function(B) {
    if (B === "top" || B === "left" || parseInt(B) === 0)
    { return 0 } if (!(/^[-\d.]+px$/.test(B)) && !this.backgroundObject) {
        this.backgroundObject = new Image; var A = function(D) {
            var C = /url\("?([^'"]+)"?\)/.exec(D); return (C ? C[1] : D)
        }; this.backgroundObject.src = A(this.backgroundImage)
    } return B
};
curvyObject.dispatch = function(A) {
    if ("dispatch" in A)
    { A.dispatch() } else {
        throw A.newError("No dispatch function")
    }
}; curvyObject.prototype.drawPixel = function(J, G, A, F, H, I, C, E) {
    var B = document.createElement("div"); B.style.height = H + "px";
    B.style.width = "1px"; B.style.position = "absolute"; B.style.fontSize = "1px";
    B.style.overflow = "hidden"; var D = this.spec.get("tR");
    B.style.backgroundColor = A; if (C && this.backgroundImage != "") {
        B.style.backgroundImage = this.backgroundImage; B.style.backgroundPosition = "-" + (this.boxWidth - (E - J) + this.borderWidth) + "px -" + ((this.boxHeight + D + G) - this.borderWidth) + "px"
    }
    if (F != 100) {
        curvyObject.setOpacity(B, F)
    }
    B.style.top = G + "px"; B.style.left = J + "px";
    I.appendChild(B)
}; curvyObject.prototype.fillerWidth = function(A) {
    var B = curvyBrowser.quirksMode ? 0 : this.spec.radiusCount(A) * this.borderWidthL;
    return (this.boxWidth - this.spec.radiusSum(A) + B) + "px"
};
curvyObject.prototype.errmsg = function(C, D) {
    var B = "\ntag: " + this.box.tagName; if (this.box.id) { B += "\nid: " + this.box.id } if (this.box.className)
    { B += "\nclass: " + this.box.className } var A; if ((A = this.box.parentNode) === null) {
        B += "\n(box has no parent)"
    } else {
        B += "\nParent tag: " + A.tagName; if (A.id) { B += "\nParent ID: " + A.id } if (A.className)
        { B += "\nParent class: " + A.className }
    } if (D === undefined)
    { D = "warning" } return "curvyObject " + D + ":\n" + C + B
};
curvyObject.prototype.newError = function(A)
{ return new Error(this.errmsg(A, "exception")) };
curvyObject.IntToHex = function(B) {
    var A = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
    return A[B >>> 4] + "" + A[B & 15]
}; curvyObject.BlendColour = function(L, J, G) {
    if (L === "transparent" || J === "transparent")
    { throw this.newError("Cannot blend with transparent") } if (L.charAt(0) !== "#")
    { L = curvyObject.format_colour(L) } if (J.charAt(0) !== "#") {
        J = curvyObject.format_colour(J)
    } var D = parseInt(L.substr(1, 2), 16); var K = parseInt(L.substr(3, 2), 16);
    var F = parseInt(L.substr(5, 2), 16);
    var C = parseInt(J.substr(1, 2), 16);
    var I = parseInt(J.substr(3, 2), 16);
    var E = parseInt(J.substr(5, 2), 16);
    if (G > 1 || G < 0) { G = 1 }
    var H = Math.round((D * G) + (C * (1 - G)));
    if (H > 255) { H = 255 } if (H < 0) { H = 0 }
    var B = Math.round((K * G) + (I * (1 - G)));
    if (B > 255) { B = 255 } if (B < 0) { B = 0 }
    var A = Math.round((F * G) + (E * (1 - G)));
    if (A > 255) { A = 255 }
    if (A < 0) { A = 0 } return "#" + curvyObject.IntToHex(H) + curvyObject.IntToHex(B) + curvyObject.IntToHex(A)
};
curvyObject.pixelFraction = function(H, G, A) {
    var J; var E = A * A;
    var B = new Array(2);
    var F = new Array(2);
    var I = 0; var C = "";
    var D = Math.sqrt(E - Math.pow(H, 2));
    if (D >= G && D < (G + 1)) {
        C = "Left";
        B[I] = 0; F[I] = D - G; ++I
    }
    D = Math.sqrt(E - Math.pow(G + 1, 2));
    if (D >= H && D < (H + 1)) {
        C += "Top"; B[I] = D - H;
        F[I] = 1; ++I
    } D = Math.sqrt(E - Math.pow(H + 1, 2));
    if (D >= G && D < (G + 1)) {
        C += "Right";
        B[I] = 1; F[I] = D - G; ++I
    } D = Math.sqrt(E - Math.pow(G, 2));
    if (D >= H && D < (H + 1)) {
        C += "Bottom"; B[I] = D - H;
        F[I] = 0
    } switch (C) {
        case "LeftRight": J = Math.min(F[0], F[1]) + ((Math.max(F[0], F[1]) - Math.min(F[0], F[1])) / 2);
            break; case "TopRight": J = 1 - (((1 - B[0]) * (1 - F[1])) / 2);
            break;
        case "TopBottom": J = Math.min(B[0], B[1]) + ((Math.max(B[0], B[1]) - Math.min(B[0], B[1])) / 2);
            break; case "LeftBottom": J = F[0] * B[1] / 2; break; default: J = 1
    } return J
};
curvyObject.rgb2Array = function(A) {
    var B = A.substring(4, A.indexOf(")"));
    return B.split(", ")
};
curvyObject.rgb2Hex = function(B) {
    try {
        var C = curvyObject.rgb2Array(B); var G = parseInt(C[0]);
        var E = parseInt(C[1]);
        var A = parseInt(C[2]);
        var D = "#" + curvyObject.IntToHex(G) + curvyObject.IntToHex(E) + curvyObject.IntToHex(A)
    }
    catch (F) {
        var H = "getMessage" in F ? F.getMessage() : F.message; throw new Error("Error (" + H + ") converting RGB value to Hex in rgb2Hex")
    } return D
};
curvyObject.setOpacity = function(F, C) {
    C = (C == 100) ? 99.999 : C;
    if (curvyBrowser.isSafari && F.tagName != "IFRAME") {
        var B = curvyObject.rgb2Array(F.style.backgroundColor);
        var E = parseInt(B[0]); var D = parseInt(B[1]);
        var A = parseInt(B[2]); F.style.backgroundColor = "rgba(" + E + ", " + D + ", " + A + ", " + C / 100 + ")"
    }
    else {
        if (typeof F.style.opacity !== "undefined") {
            F.style.opacity = C / 100
        }
        else {
            if (typeof F.style.MozOpacity !== "undefined") {
                F.style.MozOpacity = C / 100
            } else {
                if (typeof F.style.filter != "undefined")
                { F.style.filter = "alpha(opacity=" + C + ")" } else {
                    if (typeof F.style.KHTMLOpacity != "undefined")
                    { F.style.KHTMLOpacity = C / 100 }
                }
            }
        }
    }
};

function addEvent(D, C, B, A) {
    if (D.addEventListener) {
        D.addEventListener(C, B, A);
        return true
    }
    if (D.attachEvent) {
        return D.attachEvent("on" + C, B)
    }
    D["on" + C] = B; return false
}
curvyObject.getComputedColour = function(E) {
    var F = document.createElement("DIV");
    F.style.backgroundColor = E;
    document.body.appendChild(F);
    if (window.getComputedStyle) {
        var D = document.defaultView.getComputedStyle(F, null).getPropertyValue("background-color");
        F.parentNode.removeChild(F);
        if (D.substr(0, 3) === "rgb") {
            D = curvyObject.rgb2Hex(D)
        } return D
    }
    else {
        var A = document.body.createTextRange();
        A.moveToElementText(F);
        A.execCommand("ForeColor", false, E);
        var B = A.queryCommandValue("ForeColor");
        var C = "rgb(" + (B & 255) + ", " + ((B & 65280) >> 8) + ", " + ((B & 16711680) >> 16) + ")";
        F.parentNode.removeChild(F); A = null; return curvyObject.rgb2Hex(C)
    }
};
curvyObject.format_colour = function(A) {
    if (A != "" && A != "transparent") {
        if (A.substr(0, 3) === "rgb") {
            A = curvyObject.rgb2Hex(A)
        } else {
            if (A.charAt(0) !== "#")
            { A = curvyObject.getComputedColour(A) } else {
                if (A.length === 4)
                { A = "#" + A.charAt(1) + A.charAt(1) + A.charAt(2) + A.charAt(2) + A.charAt(3) + A.charAt(3) }
            }
        }
    } return A
};
curvyCorners.getElementsByClass = function(H, F) {
    var E = new Array; if (F === undefined) { F = document } H = H.split(".");
    var A = "*"; if (H.length === 1) { A = H[0]; H = false } else { if (H[0]) { A = H[0] } H = H[1] } var D, C, B;
    if (A.charAt(0) === "#") { C = document.getElementById(A.substr(1)); if (C) { E.push(C) } } else {
        C = F.getElementsByTagName(A); B = C.length; if (H) {
            var G = new RegExp("(^|\\s)" + H + "(\\s|$)");
            for (D = 0; D < B; ++D) { if (G.test(C[D].className)) { E.push(C[D]) } }
        } else {
            for (D = 0; D < B; ++D)
            { E.push(C[D]) }
        }
    } return E
}; if (curvyBrowser.isMoz || curvyBrowser.isWebKit)
{ var curvyCornersNoAutoScan = true } else {
    curvyCorners.scanStyles = function() {
        function B(F) { var G = /^[\d.]+(\w+)$/.exec(F); return G[1] } var E, D, C;
        if (curvyBrowser.isIE) {
            function A(L) {
                var J = L.style; if (curvyBrowser.ieVer > 6) {
                    var H = J["-webkit-border-radius"] || 0; var K = J["-webkit-border-top-right-radius"] || 0; var F = J["-webkit-border-top-left-radius"] || 0;
                    var G = J["-webkit-border-bottom-right-radius"] || 0;
                    var M = J["-webkit-border-bottom-left-radius"] || 0
                } else {
                    var H = J["webkit-border-radius"] || 0;
                    var K = J["webkit-border-top-right-radius"] || 0;
                    var F = J["webkit-border-top-left-radius"] || 0;
                    var G = J["webkit-border-bottom-right-radius"] || 0;
                    var M = J["webkit-border-bottom-left-radius"] || 0
                }
                if (H || F || K || G || M) {
                    var I = new curvyCnrSpec(L.selectorText); if (H) {
                        I.setcorner(null, null, parseInt(H), B(H))
                    } else {
                        if (K)
                        { I.setcorner("t", "r", parseInt(K), B(K)) } if (F) {
                            I.setcorner("t", "l", parseInt(F), B(F))
                        } if (M) { I.setcorner("b", "l", parseInt(M), B(M)) } if (G)
                        { I.setcorner("b", "r", parseInt(G), B(G)) }
                    } curvyCorners(I)
                }
            } for (E = 0; E < document.styleSheets.length; ++E) {
                if (document.styleSheets[E].imports) {
                    for (D = 0; D < document.styleSheets[E].imports.length; ++D) {
                        for (C = 0; C < document.styleSheets[E].imports[D].rules.length; ++C)
                        { A(document.styleSheets[E].imports[D].rules[C]) }
                    }
                }
                for (D = 0; D < document.styleSheets[E].rules.length; ++D) {
                    A(document.styleSheets[E].rules[D])
                }
            }
        }
        else {
            if (curvyBrowser.isOp) {
                for (E = 0; E < document.styleSheets.length; ++E) {
                    if (operasheet.contains_border_radius(E)) {
                        C = new operasheet(E); for (D in C.rules)
                        { if (!isNaN(D)) { curvyCorners(C.rules[D]) } }
                    }
                }
            }
            else { curvyCorners.alert("Scanstyles does nothing in Webkit/Firefox") }
        }
    };
    curvyCorners.init = function() {
        if (arguments.callee.done) { return } arguments.callee.done = true;
        if (curvyBrowser.isWebKit && curvyCorners.init.timer)
        { clearInterval(curvyCorners.init.timer); curvyCorners.init.timer = null }
        curvyCorners.scanStyles()
    }
}
if (typeof curvyCornersNoAutoScan === "undefined" || curvyCornersNoAutoScan === false) {
    if (curvyBrowser.isOp) {
        document.addEventListener("DOMContentLoaded", curvyCorners.init, false)
    } else { addEvent(window, "load", curvyCorners.init, false) }
};
