function browserdetect() {
	var b = navigator.userAgent.toLowerCase();
	this.isIE = b.indexOf("msie") > -1;
	if (this.isIE) {
		this.ieVer = /msie\s(\d\.\d)/.exec(b)[1];
		this.quirksMode = !document.compatMode || document.compatMode.indexOf("BackCompat") > -1;
		this.get_style = function(f, h) {
			if (!(h in f.currentStyle)) {
				return""
			}
			var d = /^([\d.]+)(\w*)/.exec(f.currentStyle[h]);
			if (!d) {
				return f.currentStyle[h]
			}
			if (d[1] == 0) {
				return"0"
			}
			if (d[2] && d[2] !== "px") {
				var c = f.style.left;
				var g = f.runtimeStyle.left;
				f.runtimeStyle.left = f.currentStyle.left;
				f.style.left = d[1] + d[2];
				d[0] = f.style.pixelLeft;
				f.style.left = c;
				f.runtimeStyle.left = g
			}
			return d[0]
		};
		this.supportsCorners = false
	} else {
		this.ieVer = this.quirksMode = 0;
		this.get_style = function(c, d) {
			d = d.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
			return document.defaultView.getComputedStyle(c, "").getPropertyValue(d)
		};
		this.isSafari = b.indexOf("safari") != -1;
		this.isWebKit = b.indexOf("webkit") != -1;
		this.isOp = "opera" in window;
		if (this.isOp) {
			this.supportsCorners = (this.isOp = window.opera.version()) >= 10.5
		} else {
			if (!this.isWebkit) {
				if (!(this.isMoz = b.indexOf("firefox") !== -1)) {
					for (var a = document.childNodes.length; --a >= 0;) {
						if ("style" in document.childNodes[a]) {
							this.isMoz = "MozBorderRadius" in document.childNodes[a].style;
							break
						}
					}
				}
			}
			this.supportsCorners = this.isWebKit || this.isMoz
		}
	}
}
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 {
		var f = b.charAt(0) + c.charAt(0);
		this[f + "R"] = parseInt(a);
		this[f + "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(f) {
	var j = ["tl","tr","bl","br"];
	var k = 0;
	var d,g;
	for (d in j) {
		if (!isNaN(d)) {
			g = this[j[d] + "u"];
			if (g !== "" && g !== "px") {
				k = new curvyCnrSpec;
				break
			}
		}
	}
	if (!k) {
		k = this
	} else {
		var c,b,h = curvyBrowser.get_style(f, "left");
		for (d in j) {
			if (!isNaN(d)) {
				c = j[d];
				g = this[c + "u"];
				b = this[c + "R"];
				if (g !== "px") {
					var a = f.style.left;
					f.style.left = b + g;
					b = f.style.pixelLeft;
					f.style.left = a
				}
				k[c + "R"] = b;
				k[c + "u"] = "px"
			}
		}
		f.style.left = h
	}
	return k
};
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 h;
	this.rules = [];
	while ((h = d.exec(a)) !== null) {
		var g = new RegExp("(..)border-((top|bottom)-(left|right)-)?radius:\\s*([\\d.]+)(in|em|px|ex|pt)", "g");
		var f,b = new curvyCnrSpec(h[1]);
		while ((f = g.exec(h[2])) !== null) {
			if (f[1] !== "z-") {
				b.setcorner(f[3], f[4], f[5], f[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,c,d,b,l;
	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.")
		}
		c = arguments[1];
		if (typeof c !== "string") {
			c = ""
		}
		if (c !== "" && c.charAt(0) !== "." && "autoPad" in arguments[0]) {
			c = "." + c
		}
		b = new curvyCnrSpec(c);
		b.setfrom(arguments[0])
	}
	if (b.selectorText) {
		l = 0;
		var h = b.selectorText.replace(/\s+$/, "").split(/,\s*/);
		d = new Array;
		for (g = 0; g < h.length; ++g) {
			if ((c = h[g].lastIndexOf("#")) !== -1) {
				h[g] = h[g].substr(c)
			}
			d = d.concat(curvyCorners.getElementsBySelector(h[g].split(/\s+/)))
		}
	} else {
		l = 1;
		d = arguments
	}
	for (g = l,c = d.length; g < c; ++g) {
		var k = d[g];
		var a = false;
		if (!k.className) {
			k.className = "curvyIgnore"
		} else {
			a = k.className.indexOf("curvyIgnore") !== -1;
			if (!a) {
				k.className += " curvyIgnore"
			}
		}
		if (!a) {
			if (k.className.indexOf("curvyRedraw") !== -1) {
				if (typeof curvyCorners.redrawList === "undefined") {
					curvyCorners.redrawList = new Array
				}
				curvyCorners.redrawList.push({node:k,spec:b,copy:k.cloneNode(false)})
			}
			var f = new curvyObject(b, k);
			f.applyCorners()
		}
	}
}
curvyCorners.prototype.applyCornersToAll = function() {
	throw curvyCorners.newError("This function is now redundant. Just call curvyCorners(). See documentation.")
};
curvyCorners.redraw = function() {
	if (curvyBrowser.supportsCorners) {
		return
	}
	if (!curvyCorners.redrawList) {
		throw curvyCorners.newError("curvyCorners.redraw() has nothing to redraw.")
	}
	var h = curvyCorners.block_redraw;
	curvyCorners.block_redraw = true;
	for (var c in curvyCorners.redrawList) {
		if (isNaN(c)) {
			continue
		}
		var g = curvyCorners.redrawList[c];
		if (!g.node.clientWidth) {
			continue
		}
		var d = g.copy.cloneNode(false);
		for (var f = g.node.firstChild; f !== null; f = f.nextSibling) {
			if (f.className.indexOf("autoPadDiv") !== -1) {
				break
			}
		}
		if (!f) {
			curvyCorners.alert("Couldn't find autoPad DIV");
			break
		}
		g.node.parentNode.replaceChild(d, g.node);
		var a = f.getElementsByTagName("script");
		for (var b = a.length - 1; b >= 0; --b) {
			a[b].parentNode.removeChild(a[b])
		}
		while (f.firstChild) {
			d.appendChild(f.removeChild(f.firstChild))
		}
		g = new curvyObject(g.spec, g.node = d);
		g.applyCorners()
	}
	curvyCorners.block_redraw = h
};
curvyCorners.adjust = function(obj, prop, newval) {
	if (!curvyBrowser.supportsCorners) {
		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 B;
	this.box = arguments[1];
	this.settings = arguments[0];
	this.topContainer = this.bottomContainer = this.shell = B = null;
	var p = this.box.clientWidth;
	if (("canHaveChildren" in this.box && !this.box.canHaveChildren) || this.box.tagName === "TABLE") {
		throw new Error(this.errmsg("You cannot apply corners to " + this.box.tagName + " elements.", "Error"))
	}
	if (!p && curvyBrowser.isIE) {
		this.box.style.zoom = 1;
		p = this.box.clientWidth
	}
	if (!p && curvyBrowser.get_style(this.box, "display") === "inline") {
		this.box.style.display = "inline-block";
		//curvyCorners.alert(this.errmsg("Converting inline element to inline-block", "warning"));
		p = this.box.clientWidth
	}
	if (!p) {
		if (!this.box.parentNode) {
			throw this.newError("box has no parent!")
		}
		for (B = this.box; ; B = B.parentNode) {
			if (!B || B.tagName === "BODY") {
				this.applyCorners = function() {
				};
				//curvyCorners.alert(this.errmsg("zero-width box with no accountable parent", "warning"));
				return
			}
			if (curvyBrowser.get_style(B, "display") === "none") {
				break
			}
		}
		var u = B.style.display;
		B.style.display = "block";
		p = this.box.clientWidth
	}
	if (!p) {
		curvyCorners.alert(this.errmsg("zero-width box, cannot display", "error"));
		this.applyCorners = function() {
		};
		return
	}
	if (arguments[0] instanceof curvyCnrSpec) {
		this.spec = arguments[0].cloneOn(this.box)
	} else {
		this.spec = new curvyCnrSpec("");
		this.spec.setfrom(this.settings)
	}
	var J = curvyBrowser.get_style(this.box, "borderTopWidth");
	var o = curvyBrowser.get_style(this.box, "borderBottomWidth");
	var h = curvyBrowser.get_style(this.box, "borderLeftWidth");
	var c = curvyBrowser.get_style(this.box, "borderRightWidth");
	var n = curvyBrowser.get_style(this.box, "borderTopColor");
	var k = curvyBrowser.get_style(this.box, "borderBottomColor");
	var b = curvyBrowser.get_style(this.box, "borderLeftColor");
	var I = curvyBrowser.get_style(this.box, "borderRightColor");
	var d = curvyBrowser.get_style(this.box, "borderTopStyle");
	var m = curvyBrowser.get_style(this.box, "borderBottomStyle");
	var g = curvyBrowser.get_style(this.box, "borderLeftStyle");
	var a = curvyBrowser.get_style(this.box, "borderRightStyle");
	var i = curvyBrowser.get_style(this.box, "backgroundColor");
	var f = curvyBrowser.get_style(this.box, "backgroundImage");
	var F = curvyBrowser.get_style(this.box, "backgroundRepeat");
	var z,x;
	if (this.box.currentStyle && this.box.currentStyle.backgroundPositionX) {
		z = curvyBrowser.get_style(this.box, "backgroundPositionX");
		x = curvyBrowser.get_style(this.box, "backgroundPositionY")
	} else {
		z = curvyBrowser.get_style(this.box, "backgroundPosition");
		z = z.split(" ");
		x = z.length === 2 ? z[1] : 0;
		z = z[0]
	}
	var w = curvyBrowser.get_style(this.box, "position");
	var G = curvyBrowser.get_style(this.box, "paddingTop");
	var K = curvyBrowser.get_style(this.box, "paddingBottom");
	var y = curvyBrowser.get_style(this.box, "paddingLeft");
	var H = curvyBrowser.get_style(this.box, "paddingRight");
	var s = curvyBrowser.ieVer > 7 ? curvyBrowser.get_style(this.box, "filter") : null;
	var l = this.spec.get("tR");
	var r = this.spec.get("bR");
	var D = function(L) {
		if (typeof L === "number") {
			return L
		}
		if (typeof L !== "string") {
			throw new Error("unexpected styleToNPx type " + typeof L)
		}
		var t = /^[-\d.]([a-z]+)$/.exec(L);
		if (t && t[1] != "px") {
			throw new Error("Unexpected unit " + t[1])
		}
		if (isNaN(L = parseInt(L))) {
			L = 0
		}
		return L
	};
	var A = function(t) {
		return t <= 0 ? "0" : t + "px"
	};
	try {
		this.borderWidth = D(J);
		this.borderWidthB = D(o);
		this.borderWidthL = D(h);
		this.borderWidthR = D(c);
		this.boxColour = curvyObject.format_colour(i);
		this.topPadding = D(G);
		this.bottomPadding = D(K);
		this.leftPadding = D(y);
		this.rightPadding = D(H);
		this.boxWidth = p;
		this.boxHeight = this.box.clientHeight;
		this.borderColour = curvyObject.format_colour(n);
		this.borderColourB = curvyObject.format_colour(k);
		this.borderColourL = curvyObject.format_colour(b);
		this.borderColourR = curvyObject.format_colour(I);
		this.borderString = this.borderWidth + "px " + d + " " + this.borderColour;
		this.borderStringB = this.borderWidthB + "px " + m + " " + this.borderColourB;
		this.borderStringL = this.borderWidthL + "px " + g + " " + this.borderColourL;
		this.borderStringR = this.borderWidthR + "px " + a + " " + this.borderColourR;
		this.backgroundImage = ((f != "none") ? f : "");
		this.backgroundRepeat = F
	} catch(E) {
		throw this.newError(E.message)
	}
	var j = this.boxHeight;
	var C = p;
	if (curvyBrowser.isOp) {
		var v;
		z = D(z);
		x = D(x);
		if (z) {
			v = C + this.borderWidthL + this.borderWidthR;
			if (z > v) {
				z = v
			}
			z = (v / z * 100) + "%"
		}
		if (x) {
			v = j + this.borderWidth + this.borderWidthB;
			if (x > v) {
				x = v
			}
			x = (v / x * 100) + "%"
		}
	}
	if (curvyBrowser.quirksMode) {
	} else {
		this.boxWidth -= this.leftPadding + this.rightPadding;
		this.boxHeight -= this.topPadding + this.bottomPadding
	}
	this.contentContainer = document.createElement("div");
	if (s) {
		this.contentContainer.style.filter = s
	}
	while (this.box.firstChild) {
		this.contentContainer.appendChild(this.box.removeChild(this.box.firstChild))
	}
	if (w != "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 = (C + this.borderWidthL + this.borderWidthR) + "px";
	this.box.style.height = (j + this.borderWidth + this.borderWidthB) + "px";
	var q = document.createElement("div");
	q.style.position = "absolute";
	if (s) {
		q.style.filter = s
	}
	if (curvyBrowser.quirksMode) {
		q.style.width = (C + this.borderWidthL + this.borderWidthR) + "px"
	} else {
		q.style.width = C + "px"
	}
	q.style.height = A(j + this.borderWidth + this.borderWidthB - l - r);
	q.style.padding = "0";
	q.style.top = l + "px";
	q.style.left = "0";
	if (this.borderWidthL) {
		q.style.borderLeft = this.borderStringL
	}
	if (this.borderWidth && !l) {
		q.style.borderTop = this.borderString
	}
	if (this.borderWidthR) {
		q.style.borderRight = this.borderStringR
	}
	if (this.borderWidthB && !r) {
		q.style.borderBottom = this.borderStringB
	}
	q.style.backgroundColor = i;
	q.style.backgroundImage = this.backgroundImage;
	q.style.backgroundRepeat = this.backgroundRepeat;
	q.style.direction = "ltr";
	this.shell = this.box.appendChild(q);
	p = curvyBrowser.get_style(this.shell, "width");
	if (p === "" || p === "auto" || p.indexOf("%") !== -1) {
		throw this.newError("Shell width is " + p)
	}
	this.boxWidth = (p !== "" && p != "auto" && p.indexOf("%") == -1) ? parseInt(p) : this.shell.clientWidth;
	this.applyCorners = function() {
		this.backgroundPosX = this.backgroundPosY = 0;
		if (this.backgroundObject) {
			var Z = function(ar, ap, aq) {
				if (ar === 0) {
					return 0
				}
				if (ar === "right" || ar === "bottom") {
					return aq - ap
				}
				if (ar === "center") {
					return(aq - ap) / 2
				}
				if (ar.indexOf("%") > 0) {
					return(aq - ap) * 100 / parseInt(ar)
				}
				return D(ar)
			};
			this.backgroundPosX = Z(z, this.backgroundObject.width, C);
			this.backgroundPosY = Z(x, this.backgroundObject.height, j)
		} else {
			if (this.backgroundImage) {
				this.backgroundPosX = D(z);
				this.backgroundPosY = D(x)
			}
		}
		if (l) {
			q = document.createElement("div");
			q.style.width = this.boxWidth + "px";
			q.style.fontSize = "1px";
			q.style.overflow = "hidden";
			q.style.position = "absolute";
			q.style.paddingLeft = this.borderWidth + "px";
			q.style.paddingRight = this.borderWidth + "px";
			q.style.height = l + "px";
			q.style.top = -l + "px";
			q.style.left = -this.borderWidthL + "px";
			this.topContainer = this.shell.appendChild(q)
		}
		if (r) {
			q = document.createElement("div");
			q.style.width = this.boxWidth + "px";
			q.style.fontSize = "1px";
			q.style.overflow = "hidden";
			q.style.position = "absolute";
			q.style.paddingLeft = this.borderWidthB + "px";
			q.style.paddingRight = this.borderWidthB + "px";
			q.style.height = r + "px";
			q.style.bottom = -r + "px";
			q.style.left = -this.borderWidthL + "px";
			this.bottomContainer = this.shell.appendChild(q)
		}
		var ah = this.spec.cornerNames();
		for (var al in ah) {
			if (!isNaN(al)) {
				var ad = ah[al];
				var ae = this.spec[ad + "R"];
				var af,ai,O,ag;
				if (ad == "tr" || ad == "tl") {
					af = this.borderWidth;
					ai = this.borderColour;
					ag = this.borderWidth
				} else {
					af = this.borderWidthB;
					ai = this.borderColourB;
					ag = this.borderWidthB
				}
				O = ae - ag;
				var Y = document.createElement("div");
				Y.style.height = this.spec.get(ad + "Ru");
				Y.style.width = this.spec.get(ad + "Ru");
				Y.style.position = "absolute";
				Y.style.fontSize = "1px";
				Y.style.overflow = "hidden";
				var W,V,T;
				var R = s ? parseInt(/alpha\(opacity.(\d+)\)/.exec(s)[1]) : 100;
				for (W = 0; W < ae; ++W) {
					var Q = (W + 1 >= O) ? -1 : Math.floor(Math.sqrt(Math.pow(O, 2) - Math.pow(W + 1, 2))) - 1;
					if (O != ae) {
						var N = (W >= O) ? -1 : Math.ceil(Math.sqrt(Math.pow(O, 2) - Math.pow(W, 2)));
						var L = (W + 1 >= ae) ? -1 : Math.floor(Math.sqrt(Math.pow(ae, 2) - Math.pow((W + 1), 2))) - 1
					}
					var t = (W >= ae) ? -1 : Math.ceil(Math.sqrt(Math.pow(ae, 2) - Math.pow(W, 2)));
					if (Q > -1) {
						this.drawPixel(W, 0, this.boxColour, R, (Q + 1), Y, true, ae)
					}
					if (O != ae) {
						if (this.spec.antiAlias) {
							for (V = Q + 1; V < N; ++V) {
								if (this.backgroundImage !== "") {
									var M = curvyObject.pixelFraction(W, V, O) * 100;
									this.drawPixel(W, V, ai, R, 1, Y, M >= 30, ae)
								} else {
									if (this.boxColour !== "transparent") {
										var ac = curvyObject.BlendColour(this.boxColour, ai, curvyObject.pixelFraction(W, V, O));
										this.drawPixel(W, V, ac, R, 1, Y, false, ae)
									} else {
										this.drawPixel(W, V, ai, R >> 1, 1, Y, false, ae)
									}
								}
							}
							if (L >= N) {
								if (N == -1) {
									N = 0
								}
								this.drawPixel(W, N, ai, R, (L - N + 1), Y, false, 0)
							}
							T = ai;
							V = L
						} else {
							if (L > Q) {
								this.drawPixel(W, (Q + 1), ai, R, (L - Q), Y, false, 0)
							}
						}
					} else {
						T = this.boxColour;
						V = Q
					}
					if (this.spec.antiAlias && this.boxColour !== "transparent") {
						while (++V < t) {
							this.drawPixel(W, V, T, (curvyObject.pixelFraction(W, V, ae) * R), 1, Y, ag <= 0, ae)
						}
					}
				}
				var ak;
				for (v = 0,ak = Y.childNodes.length; v < ak; ++v) {
					var X = Y.childNodes[v];
					var aj = parseInt(X.style.top);
					var an = parseInt(X.style.left);
					var ao = parseInt(X.style.height);
					if (ad == "tl" || ad == "bl") {
						X.style.left = (ae - an - 1) + "px"
					}
					if (ad == "tr" || ad == "tl") {
						X.style.top = (ae - ao - aj) + "px"
					}
					X.style.backgroundRepeat = this.backgroundRepeat;
					if (this.backgroundImage) {
						switch (ad) {
							case"tr":
								X.style.backgroundPosition = (this.backgroundPosX - this.borderWidthL + ae - C - an) + "px " + (this.backgroundPosY + ao + aj + this.borderWidth - ae) + "px";
								break;
							case"tl":
								X.style.backgroundPosition = (this.backgroundPosX - ae + an + 1 + this.borderWidthL) + "px " + (this.backgroundPosY - ae + ao + aj + this.borderWidth) + "px";
								break;
							case"bl":
								X.style.backgroundPosition = (this.backgroundPosX - ae + an + 1 + this.borderWidthL) + "px " + (this.backgroundPosY - j - this.borderWidth + (curvyBrowser.quirksMode ? aj : -aj) + ae) + "px";
								break;
							case"br":
								if (curvyBrowser.quirksMode) {
									X.style.backgroundPosition = (this.backgroundPosX - this.borderWidthL - C + ae - an) + "px " + (this.backgroundPosY - j - this.borderWidth + aj + ae) + "px"
								} else {
									X.style.backgroundPosition = (this.backgroundPosX - this.borderWidthL - C + ae - an) + "px " + (this.backgroundPosY - j - this.borderWidth + ae - aj) + "px"
								}
						}
					}
				}
				switch (ad) {
					case"tl":
						Y.style.top = Y.style.left = "0";
						this.topContainer.appendChild(Y);
						break;
					case"tr":
						Y.style.top = Y.style.right = "0";
						this.topContainer.appendChild(Y);
						break;
					case"bl":
						Y.style.bottom = Y.style.left = "0";
						this.bottomContainer.appendChild(Y);
						break;
					case"br":
						Y.style.bottom = Y.style.right = "0";
						this.bottomContainer.appendChild(Y)
				}
			}
		}
		var aa = {t:this.spec.radiusdiff("t"),b:this.spec.radiusdiff("b")};
		for (var U in aa) {
			if (typeof U === "function") {
				continue
			}
			if (!this.spec.get(U + "R")) {
				continue
			}
			if (aa[U]) {
				var am = (this.spec[U + "lR"] < this.spec[U + "rR"]) ? U + "l" : U + "r";
				var P = document.createElement("div");
				P.style.height = aa[U] + "px";
				P.style.width = this.spec.get(am + "Ru");
				P.style.position = "absolute";
				P.style.fontSize = "1px";
				P.style.overflow = "hidden";
				P.style.backgroundColor = this.boxColour;
				if (s) {
					P.style.filter = s
				}
				P.style.backgroundImage = this.backgroundImage;
				P.style.backgroundRepeat = this.backgroundRepeat;
				switch (am) {
					case"tl":
						P.style.bottom = P.style.left = "0";
						P.style.borderLeft = this.borderStringL;
						P.style.backgroundPosition = this.backgroundPosX + "px " + (this.borderWidth + this.backgroundPosY - this.spec.tlR) + "px";
						this.topContainer.appendChild(P);
						break;
					case"tr":
						P.style.bottom = P.style.right = "0";
						P.style.borderRight = this.borderStringR;
						P.style.backgroundPosition = (this.backgroundPosX - this.boxWidth + this.spec.trR) + "px " + (this.borderWidth + this.backgroundPosY - this.spec.trR) + "px";
						this.topContainer.appendChild(P);
						break;
					case"bl":
						P.style.top = P.style.left = "0";
						P.style.borderLeft = this.borderStringL;
						P.style.backgroundPosition = this.backgroundPosX + "px " + (this.backgroundPosY - this.borderWidth - this.boxHeight + aa[U] + this.spec.blR) + "px";
						this.bottomContainer.appendChild(P);
						break;
					case"br":
						P.style.top = P.style.right = "0";
						P.style.borderRight = this.borderStringR;
						P.style.backgroundPosition = (this.borderWidthL + this.backgroundPosX - this.boxWidth + this.spec.brR) + "px " + (this.backgroundPosY - this.borderWidth - this.boxHeight + aa[U] + this.spec.brR) + "px";
						this.bottomContainer.appendChild(P)
				}
			}
			var S = document.createElement("div");
			if (s) {
				S.style.filter = s
			}
			S.style.position = "relative";
			S.style.fontSize = "1px";
			S.style.overflow = "hidden";
			S.style.width = this.fillerWidth(U);
			S.style.backgroundColor = this.boxColour;
			S.style.backgroundImage = this.backgroundImage;
			S.style.backgroundRepeat = this.backgroundRepeat;
			switch (U) {
				case"t":
					if (this.topContainer) {
						if (curvyBrowser.quirksMode) {
							S.style.height = 100 + l + "px"
						} else {
							S.style.height = 100 + l - this.borderWidth + "px"
						}
						S.style.marginLeft = this.spec.tlR ? (this.spec.tlR - this.borderWidthL) + "px" : "0";
						S.style.borderTop = this.borderString;
						if (this.backgroundImage) {
							var ab = this.spec.tlR ? (this.borderWidthL + this.backgroundPosX - this.spec.tlR) + "px " : this.backgroundPosX + "px ";
							S.style.backgroundPosition = ab + this.backgroundPosY + "px";
							this.shell.style.backgroundPosition = this.backgroundPosX + "px " + (this.backgroundPosY - l + this.borderWidthL) + "px"
						}
						this.topContainer.appendChild(S)
					}
					break;
				case"b":
					if (this.bottomContainer) {
						if (curvyBrowser.quirksMode) {
							S.style.height = r + "px"
						} else {
							S.style.height = r - this.borderWidthB + "px"
						}
						S.style.marginLeft = this.spec.blR ? (this.spec.blR - this.borderWidthL) + "px" : "0";
						S.style.borderBottom = this.borderStringB;
						if (this.backgroundImage) {
							var ab = this.spec.blR ? (this.backgroundPosX + this.borderWidthL - this.spec.blR) + "px " : this.backgroundPosX + "px ";
							S.style.backgroundPosition = ab + (this.backgroundPosY - j - this.borderWidth + r) + "px"
						}
						this.bottomContainer.appendChild(S)
					}
			}
		}
		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";
		U = C;
		if (!curvyBrowser.quirksMode) {
			U -= this.leftPadding + this.rightPadding
		}
		this.contentContainer.style.width = U + "px";
		this.contentContainer.style.textAlign = curvyBrowser.get_style(this.box, "textAlign");
		this.box.style.textAlign = "left";
		this.box.appendChild(this.contentContainer);
		if (B) {
			B.style.display = u
		}
	};
	if (this.backgroundImage) {
		z = this.backgroundCheck(z);
		x = this.backgroundCheck(x);
		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(k, h, a, g, i, j, c, f) {
	var b = document.createElement("div");
	b.style.height = i + "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 - (f - k) + this.borderWidth) + "px -" + ((this.boxHeight + d + h) - this.borderWidth) + "px"
	}
	if (g != 100) {
		curvyObject.setOpacity(b, g)
	}
	b.style.top = h + "px";
	b.style.left = k + "px";
	j.appendChild(b)
};
curvyObject.prototype.fillerWidth = function(b) {
	var a,c;
	a = curvyBrowser.quirksMode ? 0 : this.spec.radiusCount(b) * this.borderWidthL;
	if ((c = this.boxWidth - this.spec.radiusSum(b) + a) < 0) {
		throw this.newError("Radius exceeds box width")
	}
	return c + "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(m, k, h) {
	if (m === "transparent" || k === "transparent") {
		throw this.newError("Cannot blend with transparent")
	}
	if (m.charAt(0) !== "#") {
		m = curvyObject.format_colour(m)
	}
	if (k.charAt(0) !== "#") {
		k = curvyObject.format_colour(k)
	}
	var d = parseInt(m.substr(1, 2), 16);
	var l = parseInt(m.substr(3, 2), 16);
	var g = parseInt(m.substr(5, 2), 16);
	var c = parseInt(k.substr(1, 2), 16);
	var j = parseInt(k.substr(3, 2), 16);
	var f = parseInt(k.substr(5, 2), 16);
	if (h > 1 || h < 0) {
		h = 1
	}
	var i = Math.round((d * h) + (c * (1 - h)));
	if (i > 255) {
		i = 255
	}
	if (i < 0) {
		i = 0
	}
	var b = Math.round((l * h) + (j * (1 - h)));
	if (b > 255) {
		b = 255
	}
	if (b < 0) {
		b = 0
	}
	var a = Math.round((g * h) + (f * (1 - h)));
	if (a > 255) {
		a = 255
	}
	if (a < 0) {
		a = 0
	}
	return"#" + curvyObject.IntToHex(i) + curvyObject.IntToHex(b) + curvyObject.IntToHex(a)
};
curvyObject.pixelFraction = function(i, h, a) {
	var k;
	var f = a * a;
	var b = new Array(2);
	var g = new Array(2);
	var j = 0;
	var c = "";
	var d = Math.sqrt(f - Math.pow(i, 2));
	if (d >= h && d < (h + 1)) {
		c = "Left";
		b[j] = 0;
		g[j] = d - h;
		++j
	}
	d = Math.sqrt(f - Math.pow(h + 1, 2));
	if (d >= i && d < (i + 1)) {
		c += "Top";
		b[j] = d - i;
		g[j] = 1;
		++j
	}
	d = Math.sqrt(f - Math.pow(i + 1, 2));
	if (d >= h && d < (h + 1)) {
		c += "Right";
		b[j] = 1;
		g[j] = d - h;
		++j
	}
	d = Math.sqrt(f - Math.pow(h, 2));
	if (d >= i && d < (i + 1)) {
		c += "Bottom";
		b[j] = d - i;
		g[j] = 0
	}
	switch (c) {
		case"LeftRight":
			k = Math.min(g[0], g[1]) + ((Math.max(g[0], g[1]) - Math.min(g[0], g[1])) / 2);
			break;
		case"TopRight":
			k = 1 - (((1 - b[0]) * (1 - g[1])) / 2);
			break;
		case"TopBottom":
			k = Math.min(b[0], b[1]) + ((Math.max(b[0], b[1]) - Math.min(b[0], b[1])) / 2);
			break;
		case"LeftBottom":
			k = g[0] * b[1] / 2;
			break;
		default:
			k = 1
	}
	return k
};
curvyObject.rgb2Array = function(a) {
	var b = a.substring(4, a.indexOf(")"));
	return b.split(/,\s*/)
};
curvyObject.rgb2Hex = function(b) {
	try {
		var c = curvyObject.rgb2Array(b);
		var h = parseInt(c[0]);
		var f = parseInt(c[1]);
		var a = parseInt(c[2]);
		var d = "#" + curvyObject.IntToHex(h) + curvyObject.IntToHex(f) + curvyObject.IntToHex(a)
	} catch(g) {
		var i = "getMessage" in g ? g.getMessage() : g.message;
		throw new Error("Error (" + i + ") converting RGB value to Hex in rgb2Hex")
	}
	return d
};
curvyObject.setOpacity = function(g, c) {
	c = (c == 100) ? 99.999 : c;
	if (curvyBrowser.isSafari && g.tagName != "IFRAME") {
		var b = curvyObject.rgb2Array(g.style.backgroundColor);
		var f = parseInt(b[0]);
		var d = parseInt(b[1]);
		var a = parseInt(b[2]);
		g.style.backgroundColor = "rgba(" + f + ", " + d + ", " + a + ", " + c / 100 + ")"
	} else {
		if (typeof g.style.opacity !== "undefined") {
			g.style.opacity = c / 100
		} else {
			if (typeof g.style.MozOpacity !== "undefined") {
				g.style.MozOpacity = c / 100
			} else {
				if (typeof g.style.filter !== "undefined") {
					g.style.filter = "alpha(opacity=" + c + ")"
				} else {
					if (typeof g.style.KHTMLOpacity !== "undefined") {
						g.style.KHTMLOpacity = c / 100
					}
				}
			}
		}
	}
};
curvyCorners.addEvent = function(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
};
if (typeof addEvent === "undefined") {
	addEvent = curvyCorners.addEvent
}
curvyObject.getComputedColour = function(g) {
	var h = document.createElement("DIV");
	h.style.backgroundColor = g;
	document.body.appendChild(h);
	if (window.getComputedStyle) {
		var f = document.defaultView.getComputedStyle(h, null).getPropertyValue("background-color");
		h.parentNode.removeChild(h);
		if (f.substr(0, 3) === "rgb") {
			f = curvyObject.rgb2Hex(f)
		}
		return f
	} else {
		var a = document.body.createTextRange();
		a.moveToElementText(h);
		a.execCommand("ForeColor", false, g);
		var b = a.queryCommandValue("ForeColor");
		var c = "rgb(" + (b & 255) + ", " + ((b & 65280) >> 8) + ", " + ((b & 16711680) >> 16) + ")";
		h.parentNode.removeChild(h);
		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(j, g) {
	var f = new Array;
	if (g === undefined) {
		g = document
	}
	j = j.split(".");
	var a = "*";
	if (j.length === 1) {
		a = j[0];
		j = false
	} else {
		if (j[0]) {
			a = j[0]
		}
		j = j[1]
	}
	var d,c,b;
	if (a.charAt(0) === "#") {
		c = document.getElementById(a.substr(1));
		if (c) {
			f.push(c)
		}
	} else {
		c = g.getElementsByTagName(a);
		b = c.length;
		if (j) {
			var h = new RegExp("(^|\\s)" + j + "(\\s|$)");
			for (d = 0; d < b; ++d) {
				if (h.test(c[d].className)) {
					f.push(c[d])
				}
			}
		} else {
			for (d = 0; d < b; ++d) {
				f.push(c[d])
			}
		}
	}
	return f
};
curvyCorners.getElementsBySelector = function(f, g) {
	var b;
	var h = f[0];
	if (g === undefined) {
		g = document
	}
	if (h.indexOf("#") === -1) {
		b = curvyCorners.getElementsByClass(h, g)
	} else {
		var d = g.getElementById(h.substr(1));
		if (!d) {
			return[]
		}
		b = [d]
	}
	if (f.length > 1) {
		var a = [];
		for (var c = b.length; --c >= 0;) {
			a = a.concat(curvyCorners.getElementsBySelector(f.slice(1), b[c]))
		}
		b = a
	}
	return b
};
if (curvyBrowser.supportsCorners) {
	var curvyCornersNoAutoScan = true;
	curvyCorners.init = function() {
	}
} else {
	curvyCorners.scanStyles = function() {
		function b(h) {
			if (!parseInt(h)) {
				return"px"
			}
			var i = /^[\d.]+(\w+)$/.exec(h);
			return i[1]
		}

		var f,d,c;
		if (curvyBrowser.isIE) {
			function a(o) {
				var j = o.style,h,i,m,l,n;
				if (curvyBrowser.ieVer > 6) {
					h = j["-moz-border-radius"] || 0;
					i = j["-moz-border-radius-topright"] || 0;
					m = j["-moz-border-radius-topleft"] || 0;
					l = j["-moz-border-radius-bottomright"] || 0;
					n = j["-moz-border-radius-bottomleft"] || 0
				} else {
					h = j["moz-border-radius"] || 0;
					i = j["moz-border-radius-topright"] || 0;
					m = j["moz-border-radius-topleft"] || 0;
					l = j["moz-border-radius-bottomright"] || 0;
					n = j["moz-border-radius-bottomleft"] || 0
				}
				if (h) {
					var p = h.split("/");
					p = p[0].split(/\s+/);
					if (p[p.length - 1] === "") {
						p.pop()
					}
					switch (p.length) {
						case 3:
							m = p[0];
							i = n = p[1];
							l = p[2];
							h = false;
							break;
						case 2:
							m = l = p[0];
							i = n = p[1];
							h = false;
						case 1:
							break;
						case 4:
							m = p[0];
							i = p[1];
							l = p[2];
							n = p[3];
							h = false;
							break;
						default:
							curvyCorners.alert("Illegal corners specification: " + h)
					}
				}
				if (h || m || i || l || n) {
					var k = new curvyCnrSpec(o.selectorText);
					if (h) {
						k.setcorner(null, null, parseInt(h), b(h))
					} else {
						if (i) {
							k.setcorner("t", "r", parseInt(i), b(i))
						}
						if (m) {
							k.setcorner("t", "l", parseInt(m), b(m))
						}
						if (n) {
							k.setcorner("b", "l", parseInt(n), b(n))
						}
						if (l) {
							k.setcorner("b", "r", parseInt(l), b(l))
						}
					}
					curvyCorners(k)
				}
			}

			for (f = 0; f < document.styleSheets.length; ++f) {
				try {
					if (document.styleSheets[f].imports) {
						for (d = 0; d < document.styleSheets[f].imports.length; ++d) {
							for (c = 0; c < document.styleSheets[f].imports[d].rules.length; ++c) {
								a(document.styleSheets[f].imports[d].rules[c])
							}
						}
					}
					for (d = 0; d < document.styleSheets[f].rules.length; ++d) {
						a(document.styleSheets[f].rules[d])
					}
				} catch(g) {
					if (typeof curvyCornersVerbose !== "undefined" && curvyCornersVerbose) {
						alert(g.message + " - ignored")
					}
				}
			}
		} else {
			if (curvyBrowser.isOp) {
				for (f = 0; f < document.styleSheets.length; ++f) {
					if (operasheet.contains_border_radius(f)) {
						c = new operasheet(f);
						for (d in c.rules) {
							if (!isNaN(d)) {
								curvyCorners(c.rules[d])
							}
						}
					}
				}
			} else {
				curvyCorners.alert("Scanstyles does nothing in Webkit/Firefox/Opera")
			}
		}
	};
	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 {
		curvyCorners.addEvent(window, "load", curvyCorners.init, false)
	}
}
;
