function PatchHover3(elements, overClass)
{
	if (is_ie && is_major <= 6)
	{
		for(i=0; i<elements.length; i++)
		{
			lis = elements[i].getElementsByTagName("LI");
			
			if (lis == undefined || lis.length == 0)
				continue;
		
			for (j=0; j<lis.length; j++)
			{
				node = lis[j];
				
				node.onmouseover = function() { this.className += " " + overClass; }
				node.onmouseout = function() { this.className=this.className.replace(" " + overClass, ""); }
			}
		}
	}
}

function CompatibleGetElementById(id)
{
	if (document.getElementById)
		return document.getElementById(id);
		
	if (document.all)
		return document.all(id);
		
	return null;
}

function CompatibleAddEvent(target, eventName, handler)
{
	if (target.addEventListener)
	{ 
		target.addEventListener(eventName, handler, false);
		return;
	}
	
	var ename = "on" + eventName;
	
	if (target.attachEvent)
	{
		target.attachEvent(ename, handler);
	}
	else 
	{ 
		var backupHandler = target[ename]; 
		if (backupHandler)
		{ 
			target[ename] = function(e)
				{
					backupHandler(e);
					handler(e);
				};
		}
		else
		{
			target[ename] = handler;
		} 
	} 
}

function DynamicShowById(id)
{
	var o = CompatibleGetElementById(id);
	if (typeof(o) == "undefined")
		return;
		
	o.style.display = "";
	o.disabled = false;
}

function DynamicHideById(id)
{
	var o = CompatibleGetElementById(id);
	if (typeof(o) == "undefined")
		return;
		
	o.style.display = "none";
	o.disabled = true;
}

function ValidateTextArea(area, maxLength)
{
	s = area.value
	
	// stupid browsers
	if (s == null || s == undefined)
		return;
		
	if(s.length > maxLength)
		area.value = s.substring(0, maxLength);
}

