// calendar.js

function addListeners(e) {

    var spans = document.getElementsByTagName('span');

    for ( var i = 0; i < spans.length; i++ ) {

        var id = spans[i].id;

        if (id && id.match(/^event_/)) {

            addEvent(spans[i], 'click', popupEvent, false);

        }

    }

    var listen = document.getElementById('right_arrow');
    addEvent(listen, 'mouseover', swapImage, false);
    addEvent(listen, 'mouseout',  swapImage, false);
    addEvent(listen, 'click',     swapImage, false);

    listen = document.getElementById('left_arrow');
    addEvent(listen, 'mouseover', swapImage, false);
    addEvent(listen, 'mouseout',  swapImage, false);
    addEvent(listen, 'click',     swapImage, false);

}

// ----------------------------------------------------------------------------

function swapImage(e) {

    var target = (window.event) ? window.event.srcElement : e.target;

    if ( e.type == 'mouseover' ) {

        target.src = target.src.replace('_red', '_gray');

    }
    else {

        target.src = target.src.replace('_gray', '_red');

    }

    return true;

}
    
// ----------------------------------------------------------------------------

function popupEvent(e) {

    var target = (window.event) ? window.event.srcElement : e.target;

    // find the enclosing element with an id of 'event_.*'

    var re = new RegExp('^event_');

    while (target && ! re.test(target.id)) {

        target = target.parentNode;

    }

    var id     = target.id;

    id = id.replace(/^event_/, '');
    id = id.replace(/_.*/,     '');

    var url = 'calendar.pl' +
        '?run_mode=show_event&event=' + id;

    var info_window = window.open(url,
        'info_window',
        'toolbar=no,location=no,status=yes,menubar=no' +
        ',scrollbars=yes,resizable=yes' +
        ',width=400,height=365'
        //',top=50,left=50'
        );

    info_window.focus();

    return true;

}

// ----------------------------------------------------------------------------

addEvent(window, 'load', addListeners, false);
