/* .... TYPIC OBJECT ... */
if (!Typic)
	var Typic = new Object();
Typic.elementExistsInStringList = function(element, stringList, separator)
{
	// separator might need regexp escaping first...
	return stringList.match(new RegExp("(^|"+separator+")" + element + "("+separator+"|$)", "i"));
}
Typic.hasClassName = function(elem, className)
{
	return elem.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)", "i"));
}
Typic.addClassName = function(elem, className)
{
	elem.className = elem.className + " " + className;
}
Typic.removeClassName = function(elem, className)
{
	//var bak = elem.className;
	elem.className = elem.className.replace(new RegExp("(^|\\s)(" + className + ")(\\s|$)", "gi"), "$1$3");
	//alert("Removing: " + className + "\nOld: " + bak + "\nNew: " + elem.className);
}

Typic.toggleClassName = function(elem, className)
{
	if (Typic.hasClassName(elem, className))
		Typic.removeClassName(elem, className);
	else
		Typic.addClassName(elem, className);
}

Typic.addMethods = function(elem)
{
	elem.addClassName = function()
	{
		Typic.addClassName(this, arguments[0]);
	}
	elem.removeClassName = function()
	{
		Typic.removeClassName(this, arguments[0]);
	}
	elem.hasClassName = function()
	{
		return Typic.hasClassName(this, arguments[0]);
	}
}

Typic.mouseover_init = function(elem)
{
	if(!/MSIE (5|6)/.test(navigator.userAgent)) 
	// No need to add mouseover events. Browser probably already understands :hover
	{
		elem.onmouseover = null;
		return;
	}

	elem.onmouseover = function() {Typic.addClassName(this, 'mouseover');}
	elem.onmouseout = function() {Typic.removeClassName(this, 'mouseover');}
}
