
var Util = {};

function addHandler(target, eventName, handlerFunction)
{
  if (target.addEventListener)
  {
    target.addEventListener(eventName, handlerFunction, false);
  }
  else if (target.attachEvent)
  {
    target.attachEvent("on" + eventName, handlerFunction);
  }
  else
  {
    //alert("Browser not supported!");
  }
}


var requiredScripts = [];

function requireScript(scripturi)
{
	if (!requiredScripts[scripturi])
	{
		var script = document.createElement("SCRIPT");
		script.src = scripturi;
		document.getElementsByTagName("HEAD")[0].appendChild(script);
		requiredScripts[scripturi] = true;
	}
}

function getElementsByClassName(oElm, strTagName, strClassName)
{
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

function debug(str)
{
	if (!window.debugwindow)
	{
		if (document.body)
		{
			var w = document.createElement("DIV");
			w.style.position = "absolute";
			w.style.left = "0px";
			w.style.top = "0px";
			w.style.width = "400px";
			w.style.height = "200px";
			document.body.appendChild(w);
			window.debugwindow = w;
		}
		else
		{
			alert(str);
			return;
		}
		
		//var w = window.open("about:blank", "debugwindow", "menubar=no,location=no,resizable=yes,status=no,titlebar=no,toolbar=no");
		
	}
	if (typeof str == "object")
	{
		var dump;
		
		dump = "<blockquote>";
		for(var key in str)
		{
			dump += key + ": " + str[key] + "<br>";
		}
		dump += "</blockquote>";
		str = dump;
	}
	window.debugwindow.innerHTML += str + "<br>";
}

Util.addClassName = function(target, name)
{
	var re = new RegExp(name, "g");
	if (!target.className.match(re))
	{
		target.className += " " + name;
	}
}

Util.removeClassName = function(target, name)
{
	var re = new RegExp("( )?" + name, "g");
	if (target.className.match(re))
	{
		target.className = target.className.replace(re, "");
	}
}

