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) };
