function removeChildren(n)
{
	if(typeof(n)=="string") n = $(n);
	var len = n.childNodes.length;
	for(var i=len-1; i>=0; i--)
	{
		n.removeChild(n.childNodes[i]);
	}
}

function $(e) {
	return document.getElementById(e);
}

function appendTextNode(appendTo,txt)
{
	var s = txt.indexOf("<");
	var left, mid, right;
	if(s==-1)
	{
		left = txt;
		if(left.length>0) appendTo.appendChild(document.createTextNode(left));
	}
	else
	{
		var e = txt.indexOf(">",s);
		if(e==-1)
		{
			left = txt;
			if(left.length>0) appendTo.appendChild(document.createTextNode(left));
		}
		else
		{
			left = txt.substring(0,s);
			if(left.length>0) appendTo.appendChild(document.createTextNode(left));
			mid = txt.substring(s+1,e);
			right = txt.substring(e+1);
			
			var z = mid.split(" ");
			var type = z[0];
			var nodeclass="";
			var nodeid="";
			var fields="";
			var textnode="";
			for(var j=1; j<z.length; j++)
			{
				//var field = z[j].split("=");
				var q = z[j].indexOf("=");
				if(q!=-1)
				{
					var f = z[j].substr(0,q);
					var v = z[j].substr(q+1);
					if((v.substr(0,1)=="'" || v.substr(0,1)=='"')  && (v.substr(v.length-1,1)!="'" && v.substr(v.length-1,1)!='"'))
					{
						for(j=j+1; j<z.length; j++)
						{
							v += " "+z[j];
							if((v.substr(v.length-1,1)=="'" || v.substr(v.length-1,1)=='"')) break;
						}
					}
					if((v.substr(0,1)=="'" || v.substr(0,1)=='"')  && (v.substr(v.length-1,1)=="'" || v.substr(v.length-1,1)=='"')) v = v.substr(1,v.length-2);
					f = f.replace(/'/g,"\\'");
					v = v.replace(/'/g,"\\'");
					if(f=="class") nodeclass=v;
					else if(f=="id") nodeid=v;
					else fields +=",'"+f+"','"+v+"'";
				}
			}
			var f = new Function("appendTo","return createElement('"+type+"','"+nodeclass+"','"+nodeid+"','',appendTo"+fields+")");
			var el = f(appendTo);
			var str = "</"+type+">";
			var e = right.indexOf(str)
			if(e!=-1)
			{
				left = right.substring(0,e);
				if(left.length>0) appendTextNode(el,left);
				right = right.substring(e+str.length);
				if(right.length>0) appendTextNode(appendTo,right);
			}
			else
			{
				if(right.length>0) appendTextNode(appendTo,right);
			}
		}
	}
}

function createElement(type,cl,id,childTextNode,appendTo)
{
	if(typeof(appendTo)=="string") appendTo = $(appendTo);

	var e = document.createElement(type);
	if(cl) e.setAttribute("class",cl);
	if(cl) e.setAttribute("className",cl);
	if(id) e.setAttribute("id",id);
	if(childTextNode) (typeof(childTextNode)=="string"||typeof(childTextNode)=="number"?appendTextNode(e,childTextNode):e.appendChild(childTextNode));
	for(var i=5; i<arguments.length; i+=2)
	{
		if(arguments[i] && arguments[i+1])
		{
			if(arguments[i]=="onclick")
			{
				e.onclick = new Function("this.blur(); "+arguments[i+1]);
			}
			else e.setAttribute(arguments[i],arguments[i+1]);
		}
	}
	if(appendTo) appendTo.appendChild(e);
	return e;
}

function setClass(el, classAdd, classRemove)
{
	if(typeof(el)=="string") el = $(el);
	if(el)
	{
		var cl = el.className;
		cl = cl.split(" ");
		var cl2 = "";
		for(var i=0; i<cl.length; i++)
		{
			if(cl[i]!=classRemove) cl2+=cl[i]+" ";
			if(cl[i]==classAdd) classAdd = "";
		}
		if(classAdd!="") cl2+=classAdd;
		el.className = cl2;
		if(cl=="visibletab") // IE bug
		{
			el.style.visibility = 'visible';
		}
	}
}
