/**
 * Verschachtelt Element-Events.
 */
function stackEvent(element, name, new_event) {
    element = $(element);
    var old_event = element[name];
    element[name] = function(evt) {
        evt = evt || window.event;
        if (old_event instanceof Function) old_event.call(element, evt);
        new_event.call(element, evt);
    }   
}

/**
 * IE :hover bugfix
 *
 * Weist allen Elementen bei "mouseenter" (versteht nur der IE)
 * die angegebene CSS-Klasse zu. 
 *
 * @param parent          ID oder Referenz des Eltern-Elements
 * @param class_name      Name der Klasse, die bei Mouse-Enter
 *                        zugewiesen werden soll (optional, default: "hover")
 */
function ieHoverBugfix(elements, class_name) {
  if (document.all && document.getElementById) { // if IE
    var fix = function(child_elem) {
      stackEvent(child_elem, "onmouseenter", function(evt) {
        $(this).addClassName(class_name);
      });
      stackEvent(child_elem, "onmouseleave", function(evt) {
        $(this).removeClassName(class_name);
      });
    };
    $A(elements).each(fix);
  }
}
