// Note on this function:
// - very high overhead in IE due to having to concatinate the whole code of a function ('e'+type+fn) to use as hash.
//   (Function.prototype.toString())
function toddAddEvent(obj, type, fn)
{
  if (obj.addEventListener)
  {
    obj.addEventListener(type, fn, false);
  }
  else
  {
    obj['e' + type + fn] = fn;
    obj[type + fn] = function()
    {
      obj['e'+type+fn](window.event);
    }
    obj.attachEvent('on'+type, obj[type+fn]);
  }
}

function toddRemoveEvent(obj, type, fn)
{
  if (obj.removeEventListener)
  {
    obj.removeEventListener(type, fn, false);
  }
  else
  {
    obj.detachEvent('on'+type, obj[type+fn]);
    obj[type+fn]=null;
  }
}

function toddGetEventTarget(e)
{
  if (!e)
    return null;
  if (e.target)
    return e.target;
  else if (e.srcElement)
    return e.srcElement;
}

function hasClass(ele,cls) {
        return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls) {
        if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls) {
//      if (hasClass(ele,cls)) {
                var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
                ele.className=ele.className.replace(reg,' ');
//      }
}

function toddGetElementsByClass(node,searchClass,tagName)
{
  /* ADDME: als beschikbaar de native implementatie getElementsByClass gebruiken
            (ingebouwd in Firefox 3, Safari 3 en Opera 9.50)
       zie: http://crisp.tweakblogs.net/blog/getelementsbyclassname-re-re-re-visited.html */
  var classElements = new Array();
  var els = node.getElementsByTagName(tagName); // use "*" for all elements
  var pattern = new RegExp("\\b"+searchClass+"\\b");

  for (var i = 0; i < els.length; ++i)
    if (pattern.test(els[i].className))
      classElements.push(els[i]);

  return classElements;
}

