function findParentBar (el, searchedClass) {
    while (!Element.hasClassName(el, searchedClass)) {
        el = el.parentNode;
    }
    return el;
}

function rolloverizeBars () {
    $$('.subject_item').each(function (el) {
        Event.observe(el, 'mouseover', function (eli) {Element.addClassName(findParentBar(Event.element(eli),'subject_item'), 'arr_subject_over')}, true );
        Event.observe(el, 'mouseout', function (eli) {Element.removeClassName(findParentBar(Event.element(eli),'subject_item'), 'arr_subject_over')}, true );
    });
    
    $$('.module_item').each(function (el){
        Event.observe(el, 'mouseover', function (eli) {Element.addClassName(findParentBar(Event.element(eli),'module_item'), 'over')}, true );
        Event.observe(el, 'mouseout', function (eli) {Element.removeClassName(findParentBar(Event.element(eli),'module_item'), 'over')}, true );
    });
    
    $$('.bundle_item').each(function (el){
        Event.observe(el, 'mouseover', function (eli) {Element.addClassName(findParentBar(Event.element(eli),'bundle_item'), 'over')}, true );
        Event.observe(el, 'mouseout', function (eli) {Element.removeClassName(findParentBar(Event.element(eli),'bundle_item'), 'over')}, true );
    });
    
    $$('div.item').each(function (el){
        Event.observe(el, 'mouseover', function (eli) {Element.addClassName(findParentBar(Event.element(eli),'item'), 'over')}, true );
        Event.observe(el, 'mouseout', function (eli) {Element.removeClassName(findParentBar(Event.element(eli),'item'), 'over')}, true );
    });
}

// register onload handler
Event.observe(window, 'load', rolloverizeBars, false);

// register Ajax on complete handler to 
// rolloverize all the loaded bars
Ajax.Responders.register({
  onComplete: function() {
    rolloverizeBars();
  }
});

