function RoundedCheck()
{
	if(!document.getElementById || !document.createElement)
		return(false);
	isXHTML=/html\:/.test(document.getElementsByTagName('body')[0].nodeName);
	if(Array.prototype.push==null)
	{
		Array.prototype.push=function(){
			this[this.length]=arguments[0]; return(this.length);}
	}
	return(true);
}

function Rounded(selector, corners, containerBgColor, tabColor, options)
{
	var i, preTop, preBottom, cornerName="r", tabBgColor,
			edgeColor="", isEdges=false, edgeClass="", bottom=false, top=false,
			arElements
	
	corners = corners.toLowerCase();
	containerBgColor = containerBgColor.toLowerCase();
	tabColor = tabColor.toLowerCase();
	options = options.toLowerCase();
	
	if(options && options.indexOf("border")>=0)
	{
		var arOptions = options.split(" ");
		for(i = 0; i < arOptions.length; i++)
			if(arOptions[i].indexOf("#") >= 0)
				edgeColor=arOptions[i];
		if(edgeColor == "")
			edgeColor = "#C0C0C0";
		cornerName += "e";
		isEdges = true;
	}
	else if(options && options.indexOf("smooth") >= 0)
	{
		cornerName += "a";
	}
	if(options && options.indexOf("small") >= 0)
		cornerName += "s";
	preTop = cornerName;
	preBottom = cornerName;
	if(corners.indexOf("all") >= 0)
	{
		top = true;
		bottom = true
	}
	else if(corners.indexOf("top") >= 0)
		top = true;
	else if(corners.indexOf("tl") >= 0)
	{
		top = true;
		if(corners.indexOf("tr") < 0)
			preTop += "l";
	}
	else if(corners.indexOf("tr") >= 0)
	{
		top = true;
		preTop += "r";
	}
	if(corners.indexOf("bottom") >= 0)
		bottom = true;
	else if(corners.indexOf("bl") >= 0)
	{
		bottom = true;
		if(corners.indexOf("br") < 0)
			preBottom += "l";
	}
	else if(corners.indexOf("br") >= 0)
	{
		bottom = true;
		preBottom += "r";
	}
	arElements = getElementsBySelector(selector);
	for(i = 0; i < arElements.length; i++)
	{
		tabBgColor = arElements[i].currentStyle.backgroundColor;
		if(isEdges)
			AddBorder(arElements[i], edgeColor);
		else
			edgeColor = Mix(containerBgColor, tabBgColor);
		if(top)
			AddTop(arElements[i], containerBgColor, tabBgColor, edgeColor, preTop);
		if(bottom)
			AddBottom(arElements[i], containerBgColor, tabBgColor, edgeColor, preBottom);
	}
}

function AddBorder(element, edgeColor)
{
	var i;
	if(!element.passed)
	{
		if(element.childNodes.length == 1 && element.childNodes[0].nodeType == 3)
		{
			var t = element.firstChild.nodeValue;
			element.removeChild(element.lastChild);
			var d = CreateEl("span");
			d.style.display = "block";
			d.appendChild(document.createTextNode(t));
			element.appendChild(d);
		}
		for(i = 0; i < element.childNodes.length; i++)
		{
			if(element.childNodes[i].nodeType == 1)
			{
				element.childNodes[i].style.borderLeft = "1px solid " + edgeColor;
				element.childNodes[i].style.borderRight = "1px solid " + edgeColor;
			}
		}
	}
	element.passed = true;
}
    
function AddTop(node, containerBgColor, tabBgColor, edgeColor, cornerName)
{
	var i, lim = 4, d;

	if(cornerName.indexOf("s") >= 0)
		lim = 2;
	if(edgeColor)
	{
		if(node.firstChild != null
				&& node.firstChild.nodeName.toLowerCase() == "b"
				&& node.firstChild.className.toLowerCase() == "artop")
			d = node.firstChild;
		else
		{
			d = CreateEl("b");
			d.className = "artop";
		}
	}
	else
	{
		if(node.firstChild != null
				&& node.firstChild.nodeName.toLowerCase() == "b"
				&& node.firstChild.className.toLowerCase() == "rtop")
			d = node.firstChild;
		else
		{
			d = CreateEl("b");
			d.className = "rtop";
		}
	}
	d.style.backgroundColor = containerBgColor;
	if(d.childNodes.length == 0)
	{
		for(i = 1; i <= lim; i++)
		{
			var x = CreateEl("b" + i);
			x.className = cornerName + i;
			x.style.backgroundColor = tabBgColor;
			if(edgeColor)
				x.style.borderColor = edgeColor;
			d.appendChild(x);
		}
		node.style.paddingTop = 0;
		node.insertBefore(d, node.firstChild);
	}
	else
	{
		for(i = 1; i <= lim; i++)
		{
			var x = d.childNodes[i - 1];
			x.className = cornerName + i;
			x.style.backgroundColor = tabBgColor;
			if(edgeColor)
				x.style.borderColor = edgeColor;
		}
		node.style.paddingTop = 0;
	}
}

function AddBottom(node, containerBgColor, tabBgColor, edgeColor, cornerName)
{
	var i, lim = 4, d = CreateEl("b");

	if(cornerName.indexOf("s") >= 0)
		lim = 2;
	if(edgeColor)
	{
		if(node.lastChild != null
				&& node.lastChild.nodeName.toLowerCase() == "b"
				&& node.lastChild.className.toLowerCase() == "artop")
			d = node.lastChild;
		else
		{
			d = CreateEl("b");
			d.className = "artop";
		}
	}
	else
	{
		if(node.lastChild != null
				&& node.lastChild.nodeName.toLowerCase() == "b"
				&& node.lastChild.className.toLowerCase() == "rtop")
			d = node.lastChild;
		else
		{
			d = CreateEl("b");
			d.className = "rtop";
		}
	}
	d.style.backgroundColor = containerBgColor;
	if(d.childNodes.length == 0)
	{
		for(i = lim; i > 0; i--)
		{
			var x = CreateEl("b" + i);
			x.className = cornerName + i;
			x.style.backgroundColor = tabBgColor;
			if(edgeColor)
				x.style.borderColor = edgeColor;
			d.appendChild(x);
		}
		node.style.paddingBottom = 0;
		node.appendChild(d);
	}
	else
	{
		for(i = lim; i > 0; i--)
		{
			var x = d.childNodes[lim - i];
			x.className = cornerName + i;
			x.style.backgroundColor = tabBgColor;
			if(edgeColor)
				x.style.borderColor = edgeColor;
		}
		node.style.paddingBottom = 0;
	}
}

function CreateEl(x)
{
	if(isXHTML)
		return(document.createElementNS('http://www.w3.org/1999/xhtml',x));
	else
		return(document.createElement(x));
}

function getElementsBySelector(selector)
{
	var i,selid="",selclass="",tag="",f,s=[],objlist=[];

	tag = selector;
	
	if(selector.indexOf(" ")>0)  //descendant selector like "tag#id tag"
	{
		s=selector.split(" ");
		var fs=s[0].split("#");
		if(fs.length==1)
			return(objlist);
		f=document.getElementById(fs[1]);
		if(f)
			return(f.getElementsByTagName(s[1]));
		return(objlist);
	}
	if(selector.indexOf("#")>0) //id selector like "tag#id"
	{
		s=selector.split("#");
		tag=s[0];
		selid=s[1];
	}
	if(selid!="")
	{
		f=document.getElementById(selid);
		if(f)
			objlist.push(f);
		return(objlist);
	}
	if(selector.indexOf(".")>0)  //class selector like "tag.class"
	{
		s=selector.split(".");
		tag=s[0];
		selclass=s[1];
	}
	var v=document.getElementsByTagName(tag);  // tag selector like "tag"
	if(selclass=="")
		return(v);
	for(i=0;i<v.length;i++)
	{
		if(v[i].className==selclass)
			objlist.push(v[i]);
	}
	return(objlist);
}

function Mix(c1,c2)
{
	var i,step1,step2,x,y,r=new Array(3);
	if(c1.length==4)
		step1=1;
	else
		step1=2;
	if(c2.length==4)
		step2=1;
	else
		step2=2;
	for(i=0;i<3;i++)
	{
		x=parseInt(c1.substr(1+step1*i,step1),16);
		if(step1==1)
			x=16*x+x;
		y=parseInt(c2.substr(1+step2*i,step2),16);
		if(step2==1)
			y=16*y+y;
		r[i]=Math.floor((x*50+y*50)/100);
	}
	return("#"+r[0].toString(16)+r[1].toString(16)+r[2].toString(16));
} 