/*******************************************************************************
 * * curvyCorners * ------------ * * This script generates rounded corners for
 * your divs. * * Version 1.2.9 * Copyright (c) 2006 Cameron Cooke * By: Cameron
 * Cooke and Tim Hutchison. * * * Website: http://www.curvycorners.net * Email:
 * info@totalinfinity.com * Forum: http://www.curvycorners.net/forum/ * * * This
 * library is free software; you can redistribute * it and/or modify it under
 * the terms of the GNU * Lesser General Public License as published by the *
 * Free Software Foundation; either version 2.1 of the * License, or (at your
 * option) any later version. * * This library is distributed in the hope that
 * it will * be useful, but WITHOUT ANY WARRANTY; without even the * implied
 * warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the
 * GNU Lesser General Public * License for more details. * * You should have
 * received a copy of the GNU Lesser * General Public License along with this
 * library; * Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * *
 ******************************************************************************/

var isIE = navigator.userAgent.toLowerCase().indexOf("msie") > -1;
var isMoz = document.implementation && document.implementation.createDocument;
var isSafari = ((navigator.userAgent.toLowerCase().indexOf('safari') != -1) && (navigator.userAgent
		.toLowerCase().indexOf('mac') != -1)) ? true : false;
function curvyCorners() {
	if (typeof (arguments[0]) != "object")
		throw newCurvyError("First parameter of curvyCorners() must be an object.");
	if (typeof (arguments[1]) != "object" && typeof (arguments[1]) != "string")
		throw newCurvyError("Second parameter of curvyCorners() must be an object or a class name.");
	if (typeof (arguments[1]) == "string") {
		var startIndex = 0;
		if(typeof $ == "function")
			var boxCol = $(document).getElements(arguments[1]);
		else
			var boxCol = document.getElementsByClassName(arguments[1]);
	} else if(typeof (arguments[1].length) != 'undefined') {
		var startIndex= 0;
		var boxCol = arguments[1];
	} else {
		var startIndex = 1;
		var boxCol = arguments;
	}
	var curvyCornersCol = new Array();
	if (arguments[0].validTags)
		var validElements = arguments[0].validTags;
	else
		var validElements = [ "div" ];
	for ( var i = startIndex, j = boxCol.length; i < j; i++) {
		var currentTag = boxCol[i].tagName.toLowerCase();
		if (inArray(validElements, currentTag) !== false) {
			curvyCornersCol[curvyCornersCol.length] = new curvyObject(
					arguments[0], boxCol[i]);
		}
	}
	this.objects = curvyCornersCol;
	this.applyCornersToAll = function() {
		for ( var x = 0, k = this.objects.length; x < k; x++) {
			this.objects[x].applyCorners();
		}
	}
}
function curvyObject() {
	this.box = arguments[1];
	this.settings = arguments[0];
	this.topContainer = null;
	this.bottomContainer = null;
	this.masterCorners = new Array();
	this.contentDIV = null;
	var boxHeight = get_style(this.box, "height", "height");
	var boxWidth = get_style(this.box, "width", "width");
	if (typeof boxHeight == "undefined")
		boxHeight = "auto";
	if (typeof boxWidth == "undefined")
		boxWidth = "auto";
	var borderWidth = get_style(this.box, "borderTopWidth", "border-top-width");
	var borderColour = get_style(this.box, "borderTopColor", "border-top-color");
	var boxColour = get_style(this.box, "backgroundColor", "background-color");
	var backgroundImage = get_style(this.box, "backgroundImage",
			"background-image");
	var boxPosition = get_style(this.box, "position", "position");
	var boxPadding = get_style(this.box, "paddingTop", "padding-top");
	this.boxHeight = parseInt(((boxHeight != "" && boxHeight != "auto" && boxHeight
			.indexOf("%") == -1) ? boxHeight.substring(0, boxHeight
			.indexOf("px")) : this.box.scrollHeight));
	this.boxWidth = parseInt(((boxWidth != "" && boxWidth != "auto" && boxWidth
			.indexOf("%") == -1) ? boxWidth
			.substring(0, boxWidth.indexOf("px")) : this.box.scrollWidth));
	this.borderWidth = parseInt(((borderWidth != "" && borderWidth
			.indexOf("px") !== -1) ? borderWidth.slice(0, borderWidth
			.indexOf("px")) : 0));
	this.boxColour = format_colour(boxColour);
	this.boxPadding = parseInt(((boxPadding != "" && boxPadding.indexOf("px") !== -1) ? boxPadding
			.slice(0, boxPadding.indexOf("px"))
			: 0));
	this.borderColour = format_colour(borderColour);
	this.borderString = this.borderWidth + "px" + " solid " + this.borderColour;
	this.backgroundImage = ((backgroundImage != "none") ? backgroundImage : "");
	this.boxContent = this.box.innerHTML;
	if (boxPosition != "absolute")
		this.box.style.position = "relative";
	this.box.style.padding = "0px";
	if (isIE && boxWidth == "auto" && boxHeight == "auto")
		this.box.style.width = "100%";
	if (this.settings.autoPad == true && this.boxPadding > 0)
		this.box.innerHTML = "";
	this.applyCorners = function() {
		for ( var t = 0; t < 2; t++) {
			switch (t) {
			case 0:
				if (this.settings.tl || this.settings.tr) {
					var newMainContainer = document.createElement("DIV");
					newMainContainer.style.width = "100%";
					newMainContainer.style.fontSize = "1px";
					newMainContainer.style.overflow = "hidden";
					newMainContainer.style.position = "absolute";
					newMainContainer.style.paddingLeft = this.borderWidth
							+ "px";
					newMainContainer.style.paddingRight = this.borderWidth
							+ "px";
					var topMaxRadius = Math.max(
							this.settings.tl ? this.settings.tl.radius : 0,
							this.settings.tr ? this.settings.tr.radius : 0);
					newMainContainer.style.height = topMaxRadius + "px";
					newMainContainer.style.top = 0 - topMaxRadius + "px";
					newMainContainer.style.left = 0 - this.borderWidth + "px";
					this.topContainer = this.box.appendChild(newMainContainer);
				}
				break;
			case 1:
				if (this.settings.bl || this.settings.br) {
					var newMainContainer = document.createElement("DIV");
					newMainContainer.style.width = "100%";
					newMainContainer.style.fontSize = "1px";
					newMainContainer.style.overflow = "hidden";
					newMainContainer.style.position = "absolute";
					newMainContainer.style.paddingLeft = this.borderWidth
							+ "px";
					newMainContainer.style.paddingRight = this.borderWidth
							+ "px";
					var botMaxRadius = Math.max(
							this.settings.bl ? this.settings.bl.radius : 0,
							this.settings.br ? this.settings.br.radius : 0);
					newMainContainer.style.height = botMaxRadius + "px";
					newMainContainer.style.bottom = 0 - botMaxRadius + "px";
					newMainContainer.style.left = 0 - this.borderWidth + "px";
					this.bottomContainer = this.box
							.appendChild(newMainContainer);
				}
				break;
			}
		}
		if (this.topContainer)
			this.box.style.borderTopWidth = "0px";
		if (this.bottomContainer)
			this.box.style.borderBottomWidth = "0px";
		var corners = [ "tr", "tl", "br", "bl" ];
		for ( var i in corners) {
			if (i > -1 < 4) {
				var cc = corners[i];
				if (!this.settings[cc]) {
					if (((cc == "tr" || cc == "tl") && this.topContainer != null)
							|| ((cc == "br" || cc == "bl") && this.bottomContainer != null)) {
						var newCorner = document.createElement("DIV");
						newCorner.style.position = "relative";
						newCorner.style.fontSize = "1px";
						newCorner.style.overflow = "hidden";
						if (this.backgroundImage == "")
							newCorner.style.backgroundColor = this.boxColour;
						else
							newCorner.style.backgroundImage = this.backgroundImage;
						switch (cc) {
						case "tl":
							newCorner.style.height = topMaxRadius
									- this.borderWidth + "px";
							newCorner.style.marginRight = this.settings.tr.radius
									- (this.borderWidth * 2) + "px";
							newCorner.style.borderLeft = this.borderString;
							newCorner.style.borderTop = this.borderString;
							newCorner.style.left = -this.borderWidth + "px";
							break;
						case "tr":
							newCorner.style.height = topMaxRadius
									- this.borderWidth + "px";
							newCorner.style.marginLeft = this.settings.tl.radius
									- (this.borderWidth * 2) + "px";
							newCorner.style.borderRight = this.borderString;
							newCorner.style.borderTop = this.borderString;
							newCorner.style.backgroundPosition = "-"
									+ (topMaxRadius + this.borderWidth)
									+ "px 0px";
							newCorner.style.left = this.borderWidth + "px";
							break;
						case "bl":
							newCorner.style.height = botMaxRadius
									- this.borderWidth + "px";
							newCorner.style.marginRight = this.settings.br.radius
									- (this.borderWidth * 2) + "px";
							newCorner.style.borderLeft = this.borderString;
							newCorner.style.borderBottom = this.borderString;
							newCorner.style.left = -this.borderWidth + "px";
							newCorner.style.backgroundPosition = "-"
									+ (this.borderWidth)
									+ "px -"
									+ (this.boxHeight + (botMaxRadius + this.borderWidth))
									+ "px";
							break;
						case "br":
							newCorner.style.height = botMaxRadius
									- this.borderWidth + "px";
							newCorner.style.marginLeft = this.settings.bl.radius
									- (this.borderWidth * 2) + "px";
							newCorner.style.borderRight = this.borderString;
							newCorner.style.borderBottom = this.borderString;
							newCorner.style.left = this.borderWidth + "px"
							newCorner.style.backgroundPosition = "-"
									+ (botMaxRadius + this.borderWidth)
									+ "px -"
									+ (this.boxHeight + (botMaxRadius + this.borderWidth))
									+ "px";
							break;
						}
					}
				} else {
					if (this.masterCorners[this.settings[cc].radius]) {
						var newCorner = this.masterCorners[this.settings[cc].radius]
								.cloneNode(true);
					} else {
						var newCorner = document.createElement("DIV");
						newCorner.style.height = this.settings[cc].radius
								+ "px";
						newCorner.style.width = this.settings[cc].radius + "px";
						newCorner.style.position = "absolute";
						newCorner.style.fontSize = "1px";
						newCorner.style.overflow = "hidden";
						var borderRadius = parseInt(this.settings[cc].radius
								- this.borderWidth);
						for ( var intx = 0, j = this.settings[cc].radius; intx < j; intx++) {
							if ((intx + 1) >= borderRadius)
								var y1 = -1;
							else
								var y1 = (Math.floor(Math.sqrt(Math.pow(
										borderRadius, 2)
										- Math.pow((intx + 1), 2))) - 1);
							if (borderRadius != j) {
								if ((intx) >= borderRadius)
									var y2 = -1;
								else
									var y2 = Math.ceil(Math.sqrt(Math.pow(
											borderRadius, 2)
											- Math.pow(intx, 2)));
								if ((intx + 1) >= j)
									var y3 = -1;
								else
									var y3 = (Math.floor(Math.sqrt(Math.pow(j,
											2)
											- Math.pow((intx + 1), 2))) - 1);
							}
							if ((intx) >= j)
								var y4 = -1;
							else
								var y4 = Math.ceil(Math.sqrt(Math.pow(j, 2)
										- Math.pow(intx, 2)));
							if (y1 > -1)
								this.drawPixel(intx, 0, this.boxColour, 100,
										(y1 + 1), newCorner, -1,
										this.settings[cc].radius);
							if (borderRadius != j) {
								for ( var inty = (y1 + 1); inty < y2; inty++) {
									if (this.settings.antiAlias) {
										if (this.backgroundImage != "") {
											var borderFract = (pixelFraction(
													intx, inty, borderRadius) * 100);
											if (borderFract < 30) {
												this
														.drawPixel(
																intx,
																inty,
																this.borderColour,
																100,
																1,
																newCorner,
																0,
																this.settings[cc].radius);
											} else {
												this
														.drawPixel(
																intx,
																inty,
																this.borderColour,
																100,
																1,
																newCorner,
																-1,
																this.settings[cc].radius);
											}
										} else {
											var pixelcolour = BlendColour(
													this.boxColour,
													this.borderColour,
													pixelFraction(intx, inty,
															borderRadius));
											this.drawPixel(intx, inty,
													pixelcolour, 100, 1,
													newCorner, 0,
													this.settings[cc].radius,
													cc);
										}
									}
								}
								if (this.settings.antiAlias) {
									if (y3 >= y2) {
										if (y2 == -1)
											y2 = 0;
										this.drawPixel(intx, y2,
												this.borderColour, 100, (y3
														- y2 + 1), newCorner,
												0, 0);
									}
								} else {
									if (y3 >= y1) {
										this.drawPixel(intx, (y1 + 1),
												this.borderColour, 100,
												(y3 - y1), newCorner, 0, 0);
									}
								}
								var outsideColour = this.borderColour;
							} else {
								var outsideColour = this.boxColour;
								var y3 = y1;
							}
							if (this.settings.antiAlias) {
								for ( var inty = (y3 + 1); inty < y4; inty++) {
									this
											.drawPixel(intx, inty,
													outsideColour,
													(pixelFraction(intx, inty,
															j) * 100), 1,
													newCorner,
													((this.borderWidth > 0) ? 0
															: -1),
													this.settings[cc].radius);
								}
							}
						}
						this.masterCorners[this.settings[cc].radius] = newCorner
								.cloneNode(true);
					}
					if (cc != "br") {
						for ( var t = 0, k = newCorner.childNodes.length; t < k; t++) {
							var pixelBar = newCorner.childNodes[t];
							var pixelBarTop = parseInt(pixelBar.style.top
									.substring(0, pixelBar.style.top
											.indexOf("px")));
							var pixelBarLeft = parseInt(pixelBar.style.left
									.substring(0, pixelBar.style.left
											.indexOf("px")));
							var pixelBarHeight = parseInt(pixelBar.style.height
									.substring(0, pixelBar.style.height
											.indexOf("px")));
							if (cc == "tl" || cc == "bl") {
								pixelBar.style.left = this.settings[cc].radius
										- pixelBarLeft - 1 + "px";
							}
							if (cc == "tr" || cc == "tl") {
								pixelBar.style.top = this.settings[cc].radius
										- pixelBarHeight - pixelBarTop + "px";
							}
							switch (cc) {
							case "tr":
								pixelBar.style.backgroundPosition = "-"
										+ Math
												.abs((this.boxWidth
														- this.settings[cc].radius + this.borderWidth)
														+ pixelBarLeft)
										+ "px -"
										+ Math.abs(this.settings[cc].radius
												- pixelBarHeight - pixelBarTop
												- this.borderWidth) + "px";
								break;
							case "tl":
								pixelBar.style.backgroundPosition = "-"
										+ Math.abs((this.settings[cc].radius
												- pixelBarLeft - 1)
												- this.borderWidth)
										+ "px -"
										+ Math.abs(this.settings[cc].radius
												- pixelBarHeight - pixelBarTop
												- this.borderWidth) + "px";
								break;
							case "bl":
								pixelBar.style.backgroundPosition = "-"
										+ Math.abs((this.settings[cc].radius
												- pixelBarLeft - 1)
												- this.borderWidth)
										+ "px -"
										+ Math
												.abs((this.boxHeight
														+ this.settings[cc].radius + pixelBarTop)
														- this.borderWidth)
										+ "px";
								break;
							}
						}
					}
				}
				if (newCorner) {
					switch (cc) {
					case "tl":
						if (newCorner.style.position == "absolute")
							newCorner.style.top = "0px";
						if (newCorner.style.position == "absolute")
							newCorner.style.left = "0px";
						if (this.topContainer)
							this.topContainer.appendChild(newCorner);
						break;
					case "tr":
						if (newCorner.style.position == "absolute")
							newCorner.style.top = "0px";
						if (newCorner.style.position == "absolute")
							newCorner.style.right = "0px";
						if (this.topContainer)
							this.topContainer.appendChild(newCorner);
						break;
					case "bl":
						if (newCorner.style.position == "absolute")
							newCorner.style.bottom = "0px";
						if (newCorner.style.position == "absolute")
							newCorner.style.left = "0px";
						if (this.bottomContainer)
							this.bottomContainer.appendChild(newCorner);
						break;
					case "br":
						if (newCorner.style.position == "absolute")
							newCorner.style.bottom = "0px";
						if (newCorner.style.position == "absolute")
							newCorner.style.right = "0px";
						if (this.bottomContainer)
							this.bottomContainer.appendChild(newCorner);
						break;
					}
				}
			}
		}
		var radiusDiff = new Array();
		radiusDiff["t"] = Math.abs(this.settings.tl.radius
				- this.settings.tr.radius)
		radiusDiff["b"] = Math.abs(this.settings.bl.radius
				- this.settings.br.radius);
		for (z in radiusDiff) {
			if (z == "t" || z == "b") {
				if (radiusDiff[z]) {
					var smallerCornerType = ((this.settings[z + "l"].radius < this.settings[z
							+ "r"].radius) ? z + "l" : z + "r");
					var newFiller = document.createElement("DIV");
					newFiller.style.height = radiusDiff[z] + "px";
					newFiller.style.width = this.settings[smallerCornerType].radius
							+ "px"
					newFiller.style.position = "absolute";
					newFiller.style.fontSize = "1px";
					newFiller.style.overflow = "hidden";
					newFiller.style.backgroundColor = this.boxColour;
					switch (smallerCornerType) {
					case "tl":
						newFiller.style.bottom = "0px";
						newFiller.style.left = "0px";
						newFiller.style.borderLeft = this.borderString;
						this.topContainer.appendChild(newFiller);
						break;
					case "tr":
						newFiller.style.bottom = "0px";
						newFiller.style.right = "0px";
						newFiller.style.borderRight = this.borderString;
						this.topContainer.appendChild(newFiller);
						break;
					case "bl":
						newFiller.style.top = "0px";
						newFiller.style.left = "0px";
						newFiller.style.borderLeft = this.borderString;
						this.bottomContainer.appendChild(newFiller);
						break;
					case "br":
						newFiller.style.top = "0px";
						newFiller.style.right = "0px";
						newFiller.style.borderRight = this.borderString;
						this.bottomContainer.appendChild(newFiller);
						break;
					}
				}

				var newFillerBar = document.createElement("DIV");
				newFillerBar.style.position = "relative";
				newFillerBar.style.fontSize = "1px";
				newFillerBar.style.overflow = "hidden";
				newFillerBar.style.backgroundColor = this.boxColour;
				newFillerBar.style.backgroundImage = this.backgroundImage;
				switch (z) {
				case "t":
					if (this.topContainer) {
						if (this.settings.tl.radius && this.settings.tr.radius) {
							newFillerBar.style.height = topMaxRadius
									- this.borderWidth + "px";
							newFillerBar.style.marginLeft = this.settings.tl.radius
									- this.borderWidth + "px";
							newFillerBar.style.marginRight = this.settings.tr.radius
									- this.borderWidth + "px";
							newFillerBar.style.borderTop = this.borderString;
							if (this.backgroundImage != "")
								newFillerBar.style.backgroundPosition = "-"
										+ (topMaxRadius + this.borderWidth)
										+ "px 0px";
							this.topContainer.appendChild(newFillerBar);
						}
						this.box.style.backgroundPosition = "0px -"
								+ (topMaxRadius - this.borderWidth) + "px";
					}
					break;
				case "b":
					if (this.bottomContainer) {
						if (this.settings.bl.radius && this.settings.br.radius) {
							newFillerBar.style.height = botMaxRadius
									- this.borderWidth + "px";
							newFillerBar.style.marginLeft = this.settings.bl.radius
									- this.borderWidth + "px";
							newFillerBar.style.marginRight = this.settings.br.radius
									- this.borderWidth + "px";
							newFillerBar.style.borderBottom = this.borderString;
							if (this.backgroundImage != "")
								newFillerBar.style.backgroundPosition = "-"
										+ (botMaxRadius + this.borderWidth)
										+ "px -"
										+ (this.boxHeight + (topMaxRadius + this.borderWidth))
										+ "px";
							this.bottomContainer.appendChild(newFillerBar);
						}
					}
					break;
				}
			}
		}
		if (this.settings.autoPad == true && this.boxPadding > 0) {
			var contentContainer = document.createElement("DIV");
			contentContainer.style.position = "relative";
			contentContainer.innerHTML = this.boxContent;
			contentContainer.className = "autoPadDiv";
			var topPadding = Math.abs(topMaxRadius - this.boxPadding);
			var botPadding = Math.abs(botMaxRadius - this.boxPadding);
			if (topMaxRadius < this.boxPadding)
				contentContainer.style.paddingTop = topPadding + "px";
			if (botMaxRadius < this.boxPadding)
				contentContainer.style.paddingBottom = botMaxRadius + "px";
			contentContainer.style.paddingLeft = this.boxPadding + "px";
			contentContainer.style.paddingRight = this.boxPadding + "px";
			this.contentDIV = this.box.appendChild(contentContainer);
		}
	}
	this.drawPixel = function(intx, inty, colour, transAmount, height,
			newCorner, image, cornerRadius) {
		var pixel = document.createElement("DIV");
		pixel.style.height = height + "px";
		pixel.style.width = "1px";
		pixel.style.position = "absolute";
		pixel.style.fontSize = "1px";
		pixel.style.overflow = "hidden";
		var topMaxRadius = Math.max(this.settings["tr"].radius,
				this.settings["tl"].radius);
		if (image == -1 && this.backgroundImage != "") {
			pixel.style.backgroundImage = this.backgroundImage;
			pixel.style.backgroundPosition = ""
				+ (0 - (this.boxWidth - (cornerRadius - intx) + this.borderWidth))
				+ "px "
				+ (0 - ((this.boxHeight + topMaxRadius + inty) - this.borderWidth))
				+ "px";
		} else {
			pixel.style.backgroundColor = colour;
		}
		if (transAmount != 100)
			setOpacity(pixel, transAmount);
		pixel.style.top = inty + "px";
		pixel.style.left = intx + "px";
		newCorner.appendChild(pixel);
	}
}
function insertAfter(parent, node, referenceNode) {
	parent.insertBefore(node, referenceNode.nextSibling);
}
function BlendColour(Col1, Col2, Col1Fraction) {
	var red1 = parseInt(Col1.substr(1, 2), 16);
	var green1 = parseInt(Col1.substr(3, 2), 16);
	var blue1 = parseInt(Col1.substr(5, 2), 16);
	var red2 = parseInt(Col2.substr(1, 2), 16);
	var green2 = parseInt(Col2.substr(3, 2), 16);
	var blue2 = parseInt(Col2.substr(5, 2), 16);
	if (Col1Fraction > 1 || Col1Fraction < 0)
		Col1Fraction = 1;
	var endRed = Math
			.round((red1 * Col1Fraction) + (red2 * (1 - Col1Fraction)));
	if (endRed > 255)
		endRed = 255;
	if (endRed < 0)
		endRed = 0;
	var endGreen = Math.round((green1 * Col1Fraction)
			+ (green2 * (1 - Col1Fraction)));
	if (endGreen > 255)
		endGreen = 255;
	if (endGreen < 0)
		endGreen = 0;
	var endBlue = Math.round((blue1 * Col1Fraction)
			+ (blue2 * (1 - Col1Fraction)));
	if (endBlue > 255)
		endBlue = 255;
	if (endBlue < 0)
		endBlue = 0;
	return "#" + IntToHex(endRed) + IntToHex(endGreen) + IntToHex(endBlue);
}
function IntToHex(strNum) {
	var base = strNum / 16;
	var rem = strNum % 16;
	base = base - (rem / 16);
	var baseS = MakeHex(base);
	var remS = MakeHex(rem);
	return baseS + '' + remS;
}
function MakeHex(x) {
	if ((x >= 0) && (x <= 9)) {
		return x;
	} else {
		switch (x) {
		case 10:
			return "A";
		case 11:
			return "B";
		case 12:
			return "C";
		case 13:
			return "D";
		case 14:
			return "E";
		case 15:
			return "F";
		}
	}
}
function pixelFraction(x, y, r) {
	var pixelfraction = 0;
	var xvalues = new Array(1);
	var yvalues = new Array(1);
	var point = 0;
	var whatsides = "";
	var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x, 2)));
	if ((intersect >= y) && (intersect < (y + 1))) {
		whatsides = "Left";
		xvalues[point] = 0;
		yvalues[point] = intersect - y;
		point = point + 1;
	}
	var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y + 1, 2)));
	if ((intersect >= x) && (intersect < (x + 1))) {
		whatsides = whatsides + "Top";
		xvalues[point] = intersect - x;
		yvalues[point] = 1;
		point = point + 1;
	}
	var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x + 1, 2)));
	if ((intersect >= y) && (intersect < (y + 1))) {
		whatsides = whatsides + "Right";
		xvalues[point] = 1;
		yvalues[point] = intersect - y;
		point = point + 1;
	}
	var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y, 2)));
	if ((intersect >= x) && (intersect < (x + 1))) {
		whatsides = whatsides + "Bottom";
		xvalues[point] = intersect - x;
		yvalues[point] = 0;
	}
	switch (whatsides) {
	case "LeftRight":
		pixelfraction = Math.min(yvalues[0], yvalues[1])
				+ ((Math.max(yvalues[0], yvalues[1]) - Math.min(yvalues[0],
						yvalues[1])) / 2);
		break;
	case "TopRight":
		pixelfraction = 1 - (((1 - xvalues[0]) * (1 - yvalues[1])) / 2);
		break;
	case "TopBottom":
		pixelfraction = Math.min(xvalues[0], xvalues[1])
				+ ((Math.max(xvalues[0], xvalues[1]) - Math.min(xvalues[0],
						xvalues[1])) / 2);
		break;
	case "LeftBottom":
		pixelfraction = (yvalues[0] * xvalues[1]) / 2;
		break;
	default:
		pixelfraction = 1;
	}
	return pixelfraction;
}
function rgb2Hex(rgbColour) {
	try {
		var rgbArray = rgb2Array(rgbColour);
		var red = parseInt(rgbArray[0]);
		var green = parseInt(rgbArray[1]);
		var blue = parseInt(rgbArray[2]);
		var hexColour = "#" + IntToHex(red) + IntToHex(green) + IntToHex(blue);
	} catch (e) {
		alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex");
	}
	return hexColour;
}
function rgb2Array(rgbColour) {
	var rgbValues = rgbColour.substring(4, rgbColour.indexOf(")"));
	var rgbArray = rgbValues.split(", ");
	return rgbArray;
}
function setOpacity(obj, opacity) {
	opacity = (opacity == 100) ? 99.999 : opacity;
	if (isSafari && obj.tagName != "IFRAME") {
		var rgbArray = rgb2Array(obj.style.backgroundColor);
		var red = parseInt(rgbArray[0]);
		var green = parseInt(rgbArray[1]);
		var blue = parseInt(rgbArray[2]);
		obj.style.backgroundColor = "rgba(" + red + ", " + green + ", " + blue
				+ ", " + opacity / 100 + ")";
	} else if (typeof (obj.style.opacity) != "undefined") {
		obj.style.opacity = opacity / 100;
	} else if (typeof (obj.style.MozOpacity) != "undefined") {
		obj.style.MozOpacity = opacity / 100;
	} else if (typeof (obj.style.filter) != "undefined") {
		obj.style.filter = "alpha(opacity:" + opacity + ")";
	} else if (typeof (obj.style.KHTMLOpacity) != "undefined") {
		obj.style.KHTMLOpacity = opacity / 100;
	}
}
function inArray(array, value) {
	for ( var i = 0; i < array.length; i++) {
		if (array[i] === value)
			return i;
	}
	return false;
}
function inArrayKey(array, value) {
	for (key in array) {
		if (key === value)
			return true;
	}
	return false;
}
function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	} else {
		elm['on' + evType] = fn;
	}
}
function removeEvent(obj, evType, fn, useCapture) {
	if (obj.removeEventListener) {
		obj.removeEventListener(evType, fn, useCapture);
		return true;
	} else if (obj.detachEvent) {
		var r = obj.detachEvent("on" + evType, fn);
		return r;
	} else {
		alert("Handler could not be removed");
	}
}
function format_colour(colour) {
	var returnColour = "#ffffff";
	if (colour != "" && colour != "transparent") {
		if (colour.substr(0, 3) == "rgb") {
			returnColour = rgb2Hex(colour);
		} else if (colour.length == 4) {
			returnColour = "#" + colour.substring(1, 2)
					+ colour.substring(1, 2) + colour.substring(2, 3)
					+ colour.substring(2, 3) + colour.substring(3, 4)
					+ colour.substring(3, 4);
		} else {
			returnColour = colour;
		}
	}
	return returnColour;
}
function get_style(obj, property, propertyNS) {
	try {
		if (obj.currentStyle) {
			var returnVal = eval("obj.currentStyle." + property);
		} else {
			if (isSafari && obj.style.display == "none") {
				obj.style.display = "";
				var wasHidden = true;
			}
			var returnVal = document.defaultView.getComputedStyle(obj, '')
					.getPropertyValue(propertyNS);
			if (isSafari && wasHidden) {
				obj.style.display = "none";
			}
		}
	} catch (e) {
		var returnVal = "auto";
	}
	return returnVal;
}
function getElementsByClass(searchClass, node, tag) {
	var classElements = new Array();
	if (node == null)
		node = document;
	if (tag == null)
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\s)" + searchClass + "(\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if (pattern.test(els[i].className)) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
function newCurvyError(errorMessage) {
	return new Error("curvyCorners Error:\n" + errorMessage)
}
