var isIE = navigator.userAgent.toLowerCase().indexOf("msie") > -1;
var isMoz = document.implementation && document.implementation.createDocument;
var isSafari = ((navigator.userAgent.toLowerCase().indexOf("safari") != -1) && (navigator.userAgent.toLowerCase().indexOf("mac") != -1)) ? true: false;
function curvyCorners() {
    if (typeof(arguments[0]) != "object") {
        throw newCurvyError("First parameter of curvyCorners() must be an object.")
    }
    if (typeof(arguments[1]) != "object" && typeof(arguments[1]) != "string") {
        throw newCurvyError("Second parameter of curvyCorners() must be an object or a class name.")
    }
    if (typeof(arguments[1]) == "string") {
        var G = 0;
        var A = getElementsByClass(arguments[1])
    } else {
        var G = 1;
        var A = arguments
    }
    var D = new Array();
    if (arguments[0].validTags) {
        var F = arguments[0].validTags
    } else {
        var F = ["div"]
    }
    for (var C = G,
    B = A.length; C < B; C++) {
        var E = A[C].tagName.toLowerCase();
        if (inArray(F, E) !== false) {
            D[D.length] = new curvyObject(arguments[0], A[C])
        }
    }
    this.objects = D;
    this.applyCornersToAll = function() {
        for (var H = 0,
        I = this.objects.length; H < I; H++) {
            this.objects[H].applyCorners()
        }
    }
}
function curvyObject() {
    this.box = arguments[1];
    this.settings = arguments[0];
    this.topContainer = null;
    this.bottomContainer = null;
    this.masterCorners = new Array();
    this.contentDIV = null;
    var G = get_style(this.box, "height", "height");
    var D = get_style(this.box, "width", "width");
    var A = get_style(this.box, "borderTopWidth", "border-top-width");
    var H = get_style(this.box, "borderTopColor", "border-top-color");
    var C = get_style(this.box, "backgroundColor", "background-color");
    var E = get_style(this.box, "backgroundImage", "background-image");
    var B = get_style(this.box, "position", "position");
    var F = get_style(this.box, "paddingTop", "padding-top");
    this.boxHeight = parseInt(((G != "" && G != "auto" && G.indexOf("%") == -1) ? G.substring(0, G.indexOf("px")) : this.box.scrollHeight));
    this.boxWidth = parseInt(((D != "" && D != "auto" && D.indexOf("%") == -1) ? D.substring(0, D.indexOf("px")) : this.box.scrollWidth));
    this.borderWidth = parseInt(((A != "" && A.indexOf("px") !== -1) ? A.slice(0, A.indexOf("px")) : 0));
    this.boxColour = format_colour(C);
    this.boxPadding = parseInt(((F != "" && F.indexOf("px") !== -1) ? F.slice(0, F.indexOf("px")) : 0));
    this.borderColour = format_colour(H);
    this.borderString = this.borderWidth + "px solid " + this.borderColour;
    this.backgroundImage = ((E != "none") ? E: "");
    this.boxContent = this.box.innerHTML;
    if (B != "absolute") {
        this.box.style.position = "relative"
    }
    this.box.style.padding = "0px";
    if (isIE && D == "auto" && G == "auto") {
        this.box.style.width = "100%"
    }
    if (this.settings.autoPad == true && this.boxPadding > 0) {
        this.box.innerHTML = ""
    }
    this.applyCorners = function() {
        for (var Z = 0; Z < 2; Z++) {
            switch (Z) {
            case 0:
                if (this.settings.tl || this.settings.tr) {
                    var W = document.createElement("DIV");
                    W.style.width = "100%";
                    W.style.fontSize = "1px";
                    W.style.overflow = "hidden";
                    W.style.position = "absolute";
                    W.style.paddingLeft = this.borderWidth + "px";
                    W.style.paddingRight = this.borderWidth + "px";
                    var R = Math.max(this.settings.tl ? this.settings.tl.radius: 0, this.settings.tr ? this.settings.tr.radius: 0);
                    W.style.height = R + "px";
                    W.style.top = 0 - R + "px";
                    W.style.left = 0 - this.borderWidth + "px";
                    this.topContainer = this.box.appendChild(W)
                }
                break;
            case 1:
                if (this.settings.bl || this.settings.br) {
                    var W = document.createElement("DIV");
                    W.style.width = "100%";
                    W.style.fontSize = "1px";
                    W.style.overflow = "hidden";
                    W.style.position = "absolute";
                    W.style.paddingLeft = this.borderWidth + "px";
                    W.style.paddingRight = this.borderWidth + "px";
                    var X = Math.max(this.settings.bl ? this.settings.bl.radius: 0, this.settings.br ? this.settings.br.radius: 0);
                    W.style.height = X + "px";
                    W.style.bottom = 0 - X + "px";
                    W.style.left = 0 - this.borderWidth + "px";
                    this.bottomContainer = this.box.appendChild(W)
                }
                break
            }
        }
        if (this.topContainer) {
            this.box.style.borderTopWidth = "0px"
        }
        if (this.bottomContainer) {
            this.box.style.borderBottomWidth = "0px"
        }
        var d = ["tr", "tl", "br", "bl"];
        for (var h in d) {
            if (h > -1 < 4) {
                var c = d[h];
                if (!this.settings[c]) {
                    if (((c == "tr" || c == "tl") && this.topContainer != null) || ((c == "br" || c == "bl") && this.bottomContainer != null)) {
                        var V = document.createElement("DIV");
                        V.style.position = "relative";
                        V.style.fontSize = "1px";
                        V.style.overflow = "hidden";
                        if (this.backgroundImage == "") {
                            V.style.backgroundColor = this.boxColour
                        } else {
                            V.style.backgroundImage = this.backgroundImage
                        }
                        switch (c) {
                        case "tl":
                            V.style.height = R - this.borderWidth + "px";
                            V.style.marginRight = this.settings.tr.radius - (this.borderWidth * 2) + "px";
                            V.style.borderLeft = this.borderString;
                            V.style.borderTop = this.borderString;
                            V.style.left = -this.borderWidth + "px";
                            break;
                        case "tr":
                            V.style.height = R - this.borderWidth + "px";
                            V.style.marginLeft = this.settings.tl.radius - (this.borderWidth * 2) + "px";
                            V.style.borderRight = this.borderString;
                            V.style.borderTop = this.borderString;
                            V.style.backgroundPosition = "-" + (R + this.borderWidth) + "px 0px";
                            V.style.left = this.borderWidth + "px";
                            break;
                        case "bl":
                            V.style.height = X - this.borderWidth + "px";
                            V.style.marginRight = this.settings.br.radius - (this.borderWidth * 2) + "px";
                            V.style.borderLeft = this.borderString;
                            V.style.borderBottom = this.borderString;
                            V.style.left = -this.borderWidth + "px";
                            V.style.backgroundPosition = "-" + (this.borderWidth) + "px -" + (this.boxHeight + (X + this.borderWidth)) + "px";
                            break;
                        case "br":
                            V.style.height = X - this.borderWidth + "px";
                            V.style.marginLeft = this.settings.bl.radius - (this.borderWidth * 2) + "px";
                            V.style.borderRight = this.borderString;
                            V.style.borderBottom = this.borderString;
                            V.style.left = this.borderWidth + "px";
                            V.style.backgroundPosition = "-" + (X + this.borderWidth) + "px -" + (this.boxHeight + (X + this.borderWidth)) + "px";
                            break
                        }
                    }
                } else {
                    if (this.masterCorners[this.settings[c].radius]) {
                        var V = this.masterCorners[this.settings[c].radius].cloneNode(true)
                    } else {
                        var V = document.createElement("DIV");
                        V.style.height = this.settings[c].radius + "px";
                        V.style.width = this.settings[c].radius + "px";
                        V.style.position = "absolute";
                        V.style.fontSize = "1px";
                        V.style.overflow = "hidden";
                        var M = parseInt(this.settings[c].radius - this.borderWidth);
                        for (var T = 0,
                        g = this.settings[c].radius; T < g; T++) {
                            if ((T + 1) >= M) {
                                var O = -1
                            } else {
                                var O = (Math.floor(Math.sqrt(Math.pow(M, 2) - Math.pow((T + 1), 2))) - 1)
                            }
                            if (M != g) {
                                if ((T) >= M) {
                                    var L = -1
                                } else {
                                    var L = Math.ceil(Math.sqrt(Math.pow(M, 2) - Math.pow(T, 2)))
                                }
                                if ((T + 1) >= g) {
                                    var J = -1
                                } else {
                                    var J = (Math.floor(Math.sqrt(Math.pow(g, 2) - Math.pow((T + 1), 2))) - 1)
                                }
                            }
                            if ((T) >= g) {
                                var I = -1
                            } else {
                                var I = Math.ceil(Math.sqrt(Math.pow(g, 2) - Math.pow(T, 2)))
                            }
                            if (O > -1) {
                                this.drawPixel(T, 0, this.boxColour, 100, (O + 1), V, -1, this.settings[c].radius)
                            }
                            if (M != g) {
                                for (var S = (O + 1); S < L; S++) {
                                    if (this.settings.antiAlias) {
                                        if (this.backgroundImage != "") {
                                            var K = (pixelFraction(T, S, M) * 100);
                                            if (K < 30) {
                                                this.drawPixel(T, S, this.borderColour, 100, 1, V, 0, this.settings[c].radius)
                                            } else {
                                                this.drawPixel(T, S, this.borderColour, 100, 1, V, -1, this.settings[c].radius)
                                            }
                                        } else {
                                            var b = BlendColour(this.boxColour, this.borderColour, pixelFraction(T, S, M));
                                            this.drawPixel(T, S, b, 100, 1, V, 0, this.settings[c].radius, c)
                                        }
                                    }
                                }
                                if (this.settings.antiAlias) {
                                    if (J >= L) {
                                        if (L == -1) {
                                            L = 0
                                        }
                                        this.drawPixel(T, L, this.borderColour, 100, (J - L + 1), V, 0, 0)
                                    }
                                } else {
                                    if (J >= O) {
                                        this.drawPixel(T, (O + 1), this.borderColour, 100, (J - O), V, 0, 0)
                                    }
                                }
                                var Q = this.borderColour
                            } else {
                                var Q = this.boxColour;
                                var J = O
                            }
                            if (this.settings.antiAlias) {
                                for (var S = (J + 1); S < I; S++) {
                                    this.drawPixel(T, S, Q, (pixelFraction(T, S, g) * 100), 1, V, ((this.borderWidth > 0) ? 0 : -1), this.settings[c].radius)
                                }
                            }
                        }
                        this.masterCorners[this.settings[c].radius] = V.cloneNode(true)
                    }
                    if (c != "br") {
                        for (var Z = 0,
                        f = V.childNodes.length; Z < f; Z++) {
                            var U = V.childNodes[Z];
                            var e = parseInt(U.style.top.substring(0, U.style.top.indexOf("px")));
                            var m = parseInt(U.style.left.substring(0, U.style.left.indexOf("px")));
                            var o = parseInt(U.style.height.substring(0, U.style.height.indexOf("px")));
                            if (c == "tl" || c == "bl") {
                                U.style.left = this.settings[c].radius - m - 1 + "px"
                            }
                            if (c == "tr" || c == "tl") {
                                U.style.top = this.settings[c].radius - o - e + "px"
                            }
                            switch (c) {
                            case "tr":
                                U.style.backgroundPosition = "-" + Math.abs((this.boxWidth - this.settings[c].radius + this.borderWidth) + m) + "px -" + Math.abs(this.settings[c].radius - o - e - this.borderWidth) + "px";
                                break;
                            case "tl":
                                U.style.backgroundPosition = "-" + Math.abs((this.settings[c].radius - m - 1) - this.borderWidth) + "px -" + Math.abs(this.settings[c].radius - o - e - this.borderWidth) + "px";
                                break;
                            case "bl":
                                U.style.backgroundPosition = "-" + Math.abs((this.settings[c].radius - m - 1) - this.borderWidth) + "px -" + Math.abs((this.boxHeight + this.settings[c].radius + e) - this.borderWidth) + "px";
                                break
                            }
                        }
                    }
                }
                if (V) {
                    switch (c) {
                    case "tl":
                        if (V.style.position == "absolute") {
                            V.style.top = "0px"
                        }
                        if (V.style.position == "absolute") {
                            V.style.left = "0px"
                        }
                        if (this.topContainer) {
                            this.topContainer.appendChild(V)
                        }
                        break;
                    case "tr":
                        if (V.style.position == "absolute") {
                            V.style.top = "0px"
                        }
                        if (V.style.position == "absolute") {
                            V.style.right = "0px"
                        }
                        if (this.topContainer) {
                            this.topContainer.appendChild(V)
                        }
                        break;
                    case "bl":
                        if (V.style.position == "absolute") {
                            V.style.bottom = "0px"
                        }
                        if (V.style.position == "absolute") {
                            V.style.left = "0px"
                        }
                        if (this.bottomContainer) {
                            this.bottomContainer.appendChild(V)
                        }
                        break;
                    case "br":
                        if (V.style.position == "absolute") {
                            V.style.bottom = "0px"
                        }
                        if (V.style.position == "absolute") {
                            V.style.right = "0px"
                        }
                        if (this.bottomContainer) {
                            this.bottomContainer.appendChild(V)
                        }
                        break
                    }
                }
            }
        }
        var Y = new Array();
        Y.t = Math.abs(this.settings.tl.radius - this.settings.tr.radius);
        Y.b = Math.abs(this.settings.bl.radius - this.settings.br.radius);
        for (z in Y) {
            if (z == "t" || z == "b") {
                if (Y[z]) {
                    var l = ((this.settings[z + "l"].radius < this.settings[z + "r"].radius) ? z + "l": z + "r");
                    var N = document.createElement("DIV");
                    N.style.height = Y[z] + "px";
                    N.style.width = this.settings[l].radius + "px";
                    N.style.position = "absolute";
                    N.style.fontSize = "1px";
                    N.style.overflow = "hidden";
                    N.style.backgroundColor = this.boxColour;
                    switch (l) {
                    case "tl":
                        N.style.bottom = "0px";
                        N.style.left = "0px";
                        N.style.borderLeft = this.borderString;
                        this.topContainer.appendChild(N);
                        break;
                    case "tr":
                        N.style.bottom = "0px";
                        N.style.right = "0px";
                        N.style.borderRight = this.borderString;
                        this.topContainer.appendChild(N);
                        break;
                    case "bl":
                        N.style.top = "0px";
                        N.style.left = "0px";
                        N.style.borderLeft = this.borderString;
                        this.bottomContainer.appendChild(N);
                        break;
                    case "br":
                        N.style.top = "0px";
                        N.style.right = "0px";
                        N.style.borderRight = this.borderString;
                        this.bottomContainer.appendChild(N);
                        break
                    }
                }
                var P = document.createElement("DIV");
                P.style.position = "relative";
                P.style.fontSize = "1px";
                P.style.overflow = "hidden";
                P.style.backgroundColor = this.boxColour;
                P.style.backgroundImage = this.backgroundImage;
                switch (z) {
                case "t":
                    if (this.topContainer) {
                        if (this.settings.tl.radius && this.settings.tr.radius) {
                            P.style.height = R - this.borderWidth + "px";
                            P.style.marginLeft = this.settings.tl.radius - this.borderWidth + "px";
                            P.style.marginRight = this.settings.tr.radius - this.borderWidth + "px";
                            P.style.borderTop = this.borderString;
                            if (this.backgroundImage != "") {
                                P.style.backgroundPosition = "-" + (R - this.borderWidth) + "px 0px"
                            }
                            this.topContainer.appendChild(P)
                        }
                        this.box.style.backgroundPosition = "0px -" + (R - this.borderWidth) + "px"
                    }
                    break;
                case "b":
                    if (this.bottomContainer) {
                        if (this.settings.bl.radius && this.settings.br.radius) {
                            P.style.height = X - this.borderWidth + "px";
                            P.style.marginLeft = this.settings.bl.radius - this.borderWidth + "px";
                            P.style.marginRight = this.settings.br.radius - this.borderWidth + "px";
                            P.style.borderBottom = this.borderString;
                            if (this.backgroundImage != "") {
                                P.style.backgroundPosition = "-" + (X - this.borderWidth) + "px -" + (this.boxHeight + (R - this.borderWidth)) + "px"
                            }
                            this.bottomContainer.appendChild(P)
                        }
                    }
                    break
                }
            }
        }
        if (this.settings.autoPad == true && this.boxPadding > 0) {
            var a = document.createElement("DIV");
            a.style.position = "relative";
            a.innerHTML = this.boxContent;
            a.className = "autoPadDiv";
            var n = Math.abs(R - this.boxPadding);
            var p = Math.abs(X - this.boxPadding);
            if (R < this.boxPadding) {
                a.style.paddingTop = n + "px"
            }
            if (X < this.boxPadding) {
                a.style.paddingBottom = X + "px"
            }
            a.style.paddingLeft = this.boxPadding + "px";
            a.style.paddingRight = this.boxPadding + "px";
            this.contentDIV = this.box.appendChild(a)
        }
    };
    this.drawPixel = function(R, O, I, N, P, Q, K, M) {
        var J = document.createElement("DIV");
        J.style.height = P + "px";
        J.style.width = "1px";
        J.style.position = "absolute";
        J.style.fontSize = "1px";
        J.style.overflow = "hidden";
        var L = Math.max(this.settings.tr.radius, this.settings.tl.radius);
        if (K == -1 && this.backgroundImage != "") {
            J.style.backgroundImage = this.backgroundImage;
            J.style.backgroundPosition = "-" + (this.boxWidth - (M - R) + this.borderWidth) + "px -" + ((this.boxHeight + L + O) - this.borderWidth) + "px"
        } else {
            J.style.backgroundColor = I
        }
        if (N != 100) {
            setOpacity(J, N)
        }
        J.style.top = O + "px";
        J.style.left = R + "px";
        Q.appendChild(J)
    }
}
function insertAfter(B, C, A) {
    B.insertBefore(C, A.nextSibling)
}
function BlendColour(L, J, G) {
    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 "#" + IntToHex(H) + IntToHex(B) + IntToHex(A)
}
function IntToHex(A) {
    base = A / 16;
    rem = A % 16;
    base = base - (rem / 16);
    baseS = MakeHex(base);
    remS = MakeHex(rem);
    return baseS + "" + remS
}
function MakeHex(A) {
    if ((A >= 0) && (A <= 9)) {
        return A
    } else {
        switch (A) {
        case 10:
            return "A";
        case 11:
            return "B";
        case 12:
            return "C";
        case 13:
            return "D";
        case 14:
            return "E";
        case 15:
            return "F"
        }
    }
}
function pixelFraction(H, G, A) {
    var C = 0;
    var B = new Array(1);
    var F = new Array(1);
    var I = 0;
    var D = "";
    var E = Math.sqrt((Math.pow(A, 2) - Math.pow(H, 2)));
    if ((E >= G) && (E < (G + 1))) {
        D = "Left";
        B[I] = 0;
        F[I] = E - G;
        I = I + 1
    }
    var E = Math.sqrt((Math.pow(A, 2) - Math.pow(G + 1, 2)));
    if ((E >= H) && (E < (H + 1))) {
        D = D + "Top";
        B[I] = E - H;
        F[I] = 1;
        I = I + 1
    }
    var E = Math.sqrt((Math.pow(A, 2) - Math.pow(H + 1, 2)));
    if ((E >= G) && (E < (G + 1))) {
        D = D + "Right";
        B[I] = 1;
        F[I] = E - G;
        I = I + 1
    }
    var E = Math.sqrt((Math.pow(A, 2) - Math.pow(G, 2)));
    if ((E >= H) && (E < (H + 1))) {
        D = D + "Bottom";
        B[I] = E - H;
        F[I] = 0
    }
    switch (D) {
    case "LeftRight":
        C = Math.min(F[0], F[1]) + ((Math.max(F[0], F[1]) - Math.min(F[0], F[1])) / 2);
        break;
    case "TopRight":
        C = 1 - (((1 - B[0]) * (1 - F[1])) / 2);
        break;
    case "TopBottom":
        C = Math.min(B[0], B[1]) + ((Math.max(B[0], B[1]) - Math.min(B[0], B[1])) / 2);
        break;
    case "LeftBottom":
        C = (F[0] * B[1]) / 2;
        break;
    default:
        C = 1
    }
    return C
}
function rgb2Hex(B) {
    try {
        var C = rgb2Array(B);
        var G = parseInt(C[0]);
        var E = parseInt(C[1]);
        var A = parseInt(C[2]);
        var D = "#" + IntToHex(G) + IntToHex(E) + IntToHex(A)
    } catch(F) {
        alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex")
    }
    return D
}
function rgb2Array(A) {
    var C = A.substring(4, A.indexOf(")"));
    var B = C.split(", ");
    return B
}
function setOpacity(F, C) {
    C = (C == 100) ? 99.999 : C;
    if (isSafari && F.tagName != "IFRAME") {
        var B = 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 inArray(C, B) {
    for (var A = 0; A < C.length; A++) {
        if (C[A] === B) {
            return A
        }
    }
    return false
}
function inArrayKey(B, A) {
    for (key in B) {
        if (key === A) {
            return true
        }
    }
    return false
}
function addEvent(E, D, B, A) {
    if (E.addEventListener) {
        E.addEventListener(D, B, A);
        return true
    } else {
        if (E.attachEvent) {
            var C = E.attachEvent("on" + D, B);
            return C
        } else {
            E["on" + D] = B
        }
    }
}
function removeEvent(E, D, B, A) {
    if (E.removeEventListener) {
        E.removeEventListener(D, B, A);
        return true
    } else {
        if (E.detachEvent) {
            var C = E.detachEvent("on" + D, B);
            return C
        } else {
            alert("Handler could not be removed")
        }
    }
}
function format_colour(B) {
    var A = "#ffffff";
    if (B != "" && B != "transparent") {
        if (B.substr(0, 3) == "rgb") {
            A = rgb2Hex(B)
        } else {
            if (B.length == 4) {
                A = "#" + B.substring(1, 2) + B.substring(1, 2) + B.substring(2, 3) + B.substring(2, 3) + B.substring(3, 4) + B.substring(3, 4)
            } else {
                A = B
            }
        }
    }
    return A
}
function get_style(obj, property, propertyNS) {
    try {
        if (obj.currentStyle) {
            var returnVal = eval("obj.currentStyle." + property)
        } else {
            if (isSafari && obj.style.display == "none") {
                obj.style.display = "";
                var wasHidden = true
            }
            var returnVal = document.defaultView.getComputedStyle(obj, "").getPropertyValue(propertyNS);
            if (isSafari && wasHidden) {
                obj.style.display = "none"
            }
        }
    } catch(e) {}
    return returnVal
}
function getElementsByClass(G, E, A) {
    var D = new Array();
    if (E == null) {
        E = document
    }
    if (A == null) {
        A = "*"
    }
    var C = E.getElementsByTagName(A);
    var B = C.length;
    var F = new RegExp("(^|s)" + G + "(s|$)");
    for (i = 0, j = 0; i < B; i++) {
        if (F.test(C[i].className)) {
            D[j] = C[i];
            j++
        }
    }
    return D
}
function newCurvyError(A) {
    return new Error("curvyCorners Error:\n" + A)
};