var cE = {

    addEvent: function(elm, evType, fn, useCapture) {
        // addEvent cross-browser event handling for IE5+, NS6 and Mozilla
        // By Scott Andrew
        if (elm.addEventListener) {
            elm.addEventListener(evType, fn, useCapture);
            return true;
        } else if (elm.attachEvent) {
            var r = elm.attachEvent('on' + evType, fn);
            return r;
        } else {
            elm['on' + evType] = fn;
        }
    },

    init: function() {
        // get the header links
        if (!document.getElementsByTagName || !document.getElementById) { return; }
        if (!Sarissa || !document.getElementsByTagName) return;

        cE.Note = document.getElementById('event_info');

        // Add click event listener to close eventnote if user clicks elsewhere.
        cE.addEvent(document, 'click', cE.hideEventInfo, false);

        if (!document.getElementById('cal')) { return; }
        var navList = document.getElementById('cal');
        cE.links = navList.getElementsByTagName('a');

        for (var i = 0; i < cE.links.length; i++) {
            if (cE.links[i].className == 'event') {
                cE.addEvent(cE.links[i], 'click', cE.showEventInfo, false);
                cE.links[i].onclick = function() { return false; }; // Safari
            }
        }
    },

    geturl: function(u, fn) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open('GET', u, true);
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4) { fn(xmlhttp.responseText); }
        };
        xmlhttp.send(null);
    },

    showEventInfo: function(e) {
        var target = window.event ? window.event.srcElement : e ? e.target : null;
        if (!target) return;

        var evt = window.event ? window.event : e;
        var t   = evt.target ? evt.target : evt.srcElement;
        var isIE = !window.opera && navigator.userAgent.indexOf('MSIE') != -1;

        xPos = evt.clientX;
        yPos = evt.clientY + 25;
        if (xPos + cE.Note.offsetWidth > document.body.clientWidth) xPos = xPos - cE.Note.offsetWidth;
		if (yPos + cE.Note.offsetHeight > document.body.clientHeight) yPos = yPos - cE.Note.offsetHeight;
		if (isIE) {
		    xPos += document.body.scrollLeft;
		    yPos += document.body.scrollTop;
		}
		cE.Note.style.left = xPos + 'px';
		cE.Note.style.top = yPos + 'px';
        cE.Note.style.visibility = 'visible';
        cE.EventOn = 1;

        // For some reason Safari does not recognize target.id when clicking on text, only on box.
        var ID = target.id ? target.id : target.parentNode.id;
        cE.getEventInfo(ID);

        if (window.event) {
            window.event.cancelBubble = true;
            window.event.returnValue = false;
            return;
        }
        if (e) {
            e.stopPropagation();
            e.preventDefault();
        }
    },

    hideEventInfo: function() {
        if (cE.EventOn == 1) {
            cE.Note.style.visibility = 'hidden';
            cE.EventOn = 0;
        }
    },

    getEventInfo: function(eventid) {
        //cE.geturl('/XMLHTTPFuncs.php?obj=Calendar&func=getEvent&EventID=' + eventid, cE.eventInfo);

        cE.geturl('/XMLHTTPFuncs.php?obj=Calendar&t=S&f=Popup&l=' + __ScriptName + '&e=' + eventid, cE.eventInfo);
    },

    eventInfo: function(info) {
        var text = cE.Note;
        text.innerHTML = info;
        text.style.display = '';
    },

    EventOn: 0,
    Note: ''
};

cE.addEvent(window, 'load', cE.init, false);
