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);
	    var C = new RegExp("/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{
		// this is annoying and stupid!
		//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);
    }
};

