﻿current_event = "";

function centerDiv() {
    // body div
    document.getElementById("body_div").style.left = ((new getBrowserSize().pageWidth - 802) / 2) + "px";
}

function buildEventPopup(event_id, title, description, address) {
    var template = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"372\" class=\"event_popup_table\">" +
        "<tr><td><img src=\"images/event_top.png\" border=\"0\" /></td></tr>" +
        "<tr><td class=\"content\">" + 
        "<div style=\"padding-bottom: 3px; font-weight: bold\">$title$</div>" +
        "<div style=\"padding-bottom: 3px;\">$description$</div>" +
        "<div style=\"padding-bottom: 3px;\">$address$</div>" +
        "<div>[<a href=\"javascript:hideEvent();\">Close Event</a>]</div>" +
        "</td></tr>" +
        "<tr><td><img src=\"images/event_bottom.png\" border=\"0\" /></td></tr>" +
        "</table>";

    var event_div = document.createElement("div");
    event_div.className = "event_popup_div";
    event_div.id = "event_" + event_id + "_popup";

    template = template.replace("\$title\$", title);
    template = template.replace("\$description\$", replaceURLWithHTMLLinks(replaceEmailwithMailto(description)));
    template = template.replace("\$address\$", address);

    event_div.innerHTML = template;

    document.body.appendChild(event_div);
}

function showEvent(event_id) {
    if (current_event != "") {
        document.getElementById(current_event).style.display = "none";
    }

    current_event = "event_" + event_id + "_popup";

    var event_popup = document.getElementById("event_" + event_id + "_popup")
    var event_positioner = "event_" + event_id + "_positioner";

    // position event
    var x = new getAbsPos(event_positioner).X;
    var y = new getAbsPos(event_positioner).Y;

    event_popup.style.left = (x - 372 - 9) + "px";
    event_popup.style.top = (y - 12) + "px";
    
    // show event
    event_popup.style.display = "block";
}

function hideEvent() {
    var event_popup = document.getElementById(current_event)
    current_event = "";
    event_popup.style.display = "none";
}

function getBrowserSize() {

    this.browserWidth = 0;
    this.browserHeight = 0;
    this.pageWidth = 0;
    this.pageHeight = 0;

    // get browser dimensions
    if (typeof window.innerWidth != "undefined") {
        this.browserWidth = window.innerWidth;
        this.browserHeight = window.innerHeight;
    }
    else if (typeof document.documentElement != "undefined" &&
		typeof document.documentElement.clientWidth != "undefined" &&
		document.documentElement.clientWidth != 0) {
        this.browserWidth = document.documentElement.clientWidth;
        this.browserHeight = document.documentElement.clientHeight;
    }
    else {
        this.browserWidth = document.getElementsByTagName("body")[0].clientWidth;
        this.browserHeight = document.getElementsByTagName("body")[0].clientHeight;
    }

    // get page dimensions
    if (window.innerHeight && window.scrollMaxY) {// Firefox
        this.pageHeight = window.innerHeight + window.scrollMaxY;
        this.pageWidth = window.innerWidth + window.scrollMaxX;
    } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
        this.pageHeight = document.body.scrollHeight;
        this.pageWidth = document.body.scrollWidth;
    } else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
        this.pageHeight = document.body.offsetHeight;
        this.pageWidth = document.body.offsetWidth;
    }
}


function getAbsPos(id) {
    var el = document.all ? document.all(id) : document.getElementById ? document.getElementById(id) : null;

    this.X = 0;
    this.Y = 0;

    if (el) {

        yPos = el.offsetTop;
        tempEl = el.offsetParent;

        while (tempEl != null) {
            yPos += tempEl.offsetTop;
            tempEl = tempEl.offsetParent;
        }

        this.Y = yPos;
        
        xPos = el.offsetLeft;
        tempEl = el.offsetParent;
        
        while (tempEl != null) {
            xPos += tempEl.offsetLeft;
            tempEl = tempEl.offsetParent;
        }
        
        this.X = xPos;
    }
}

function replaceURLWithHTMLLinks(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi;
    return text.replace(exp, "<a href='$1' target='_blank' style='font-size: 8pt'>$1</a>");
}

function replaceEmailwithMailto(text) {
    var exp = /(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)/gi;
    return text.replace(exp, "<a href='mailto:$1' target='_blank' style='font-size: 8pt'>$1</a>");
}

// set event handlers
window.onresize = centerDiv;