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)}};


function findPos(obj) {
	var curleft = curtop = 0;

	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}

	return({
		'x': curleft,
		'y': curtop
	});
}

function oncontentready(classID) {
  if (this.className.match(classID)) { return(false); }

	if (!document.namespaces.v) { document.namespaces.add("v", "urn:schemas-microsoft-com:vml"); }

	this.className = this.className.concat('', classID);
	var arcSize = Math.min(parseInt(this.currentStyle['-moz-border-radius'] ||
	                                this.currentStyle['-webkit-border-radius'] ||
	                                this.currentStyle['border-radius'] ||
	                                this.currentStyle['-khtml-border-radius']) /
	                       Math.min(this.offsetWidth, this.offsetHeight), 1);
	var fillColor = this.currentStyle.backgroundColor;
	var fillSrc = this.currentStyle.backgroundImage.replace(/^url\("(.+)"\)$/, '$1');
	var strokeColor = this.currentStyle.borderColor;
	var strokeWeight = parseInt(this.currentStyle.borderWidth);
	var stroked = 'true';
	if (isNaN(strokeWeight)) {
		strokeWeight = 0;
		strokeColor = fillColor;
		stroked = 'false';
	}

	this.style.background = 'transparent';
	this.style.borderColor = 'transparent';

	// Find which element provides position:relative for the target element (default to BODY)
	var el = this;
	var limit = 100, i = 0;
	while ((typeof(el) != 'unknown') && (el.currentStyle.position != 'relative') && (el.tagName != 'BODY')) {
		el = el.parentElement;
		i++;
		if (i >= limit) { return(false); }
	}
	var el_zindex = parseInt(el.currentStyle.zIndex);
	if (isNaN(el_zindex)) { el_zindex = 0; }
	//alert('got tag '+ el.tagName +' with pos '+ el.currentStyle.position);

	var rect_size = {
		'width': this.offsetWidth - strokeWeight,
		'height': this.offsetHeight - strokeWeight
	};
	var el_pos = findPos(el);
	var this_pos = findPos(this);
	this_pos.y = this_pos.y + (0.5 * strokeWeight) - el_pos.y;
	this_pos.x = this_pos.x + (0.5 * strokeWeight) - el_pos.x;

	var rect = document.createElement('v:roundrect');
	rect.arcsize = arcSize +'px';
	rect.strokecolor = strokeColor;
	rect.strokeWeight = strokeWeight +'px';
	rect.stroked = stroked;
	rect.style.display = 'block';
	rect.style.position = 'absolute';
	rect.style.top = this_pos.y +'px';
	rect.style.left = this_pos.x +'px';
	rect.style.width = rect_size.width +'px';
	rect.style.height = rect_size.height +'px';
	rect.style.antialias = true;
	rect.style.zIndex = el_zindex - 1;

	var fill = document.createElement('v:fill');
	fill.color = fillColor;
	fill.src = fillSrc;
	fill.type = 'tile';

	rect.appendChild(fill);
	el.appendChild(rect);

	var css = el.document.createStyleSheet();
	css.addRule("v\\:roundrect", "behavior: url(#default#VML)");
	css.addRule("v\\:fill", "behavior: url(#default#VML)");

	isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
	// IE6 doesn't support transparent borders, use padding to offset original element
	if (isIE6 && (strokeWeight > 0)) {
		this.style.borderStyle = 'none';
		this.style.paddingTop = parseInt(this.currentStyle.paddingTop || 0) + strokeWeight;
		this.style.paddingBottom = parseInt(this.currentStyle.paddingBottom || 0) + strokeWeight;
	}

	if (typeof(window.rounded_elements) == 'undefined') {
		window.rounded_elements = new Array();

		if (typeof(window.onresize) == 'function') { window.previous_onresize = window.onresize; }
		window.onresize = window_resize;
	}
	this.element.vml = rect;
	window.rounded_elements.push(this.element);
}

function window_resize() {
	if (typeof(window.rounded_elements) == 'undefined') { return(false); }

	for (var i in window.rounded_elements) {
		var el = window.rounded_elements[i];

		var strokeWeight = parseInt(el.currentStyle.borderWidth);
		if (isNaN(strokeWeight)) { strokeWeight = 0; }

		var parent_pos = findPos(el.vml.parentNode);
		var pos = findPos(el);
		pos.y = pos.y + (0.5 * strokeWeight) - parent_pos.y;
		pos.x = pos.x + (0.5 * strokeWeight) - parent_pos.x;

		el.vml.style.top = pos.y +'px';
		el.vml.style.left = pos.x +'px';
	}

	if (typeof(window.previous_onresize) == 'function') { window.previous_onresize(); }
}
