var eventActive = true;
var eventMarkers;
var eventTabActive = true;
var panningToEvent = false;
var mapOnly = false;

function setEventMarkers(events, selectedEvents) {
    //"On load"
    if(!events && !eventMarkers) {
        events = eventDefaults
    //"Main" tab change -> use old events
    } else if(!events) {
        for(var j = 0; j < eventMarkers.length; j++) {
            map.addOverlay(eventMarkers[j]);
        }
        return;
    }
    if(selectedEvents) {
        var selectedEvent = selectedEvents.pop();
        if(selectedEvent) {
            events.push(selectedEvent);
        }
    }
    var marker;
    var desc;
    var label;
    var url;
    eventMarkers = new Array();
    for(var i = 0; i < events.length; i++) {
        var temp = events[i];
        //                        alert("reading temp:" + temp);
        label = temp.substring(0, temp.indexOf("¨"));
        temp = temp.substring(temp.indexOf("¨") + 1);
        url = temp.substring(0, temp.indexOf("¨"));
        temp = temp.substring(temp.indexOf("¨") + 1);
        desc = temp.substring(0, temp.indexOf("¨"));
        temp = temp.substring(temp.indexOf("¨") + 1);
        var lat = temp.substring(0, temp.indexOf("¨"));
        temp = temp.substring(temp.indexOf("¨") + 1);
        var lon = temp.substring(0, temp.indexOf("¨")); // start parsing icon data
        temp = temp.substring(temp.indexOf("¨") + 1);
        var icn = temp.substring(0, temp.indexOf("!")); //Icon url
        temp = temp.substring(temp.indexOf("!") + 1);
        var width = temp.substring(0, temp.indexOf("!"));
        temp = temp.substring(temp.indexOf("!") + 1);
        var height = temp.substring(0, temp.indexOf("!"));
        temp = temp.substring(temp.indexOf("!") + 1);
        var x = temp.substring(0, temp.indexOf("!"));
        temp = temp.substring(temp.indexOf("!") + 1);
        var y = temp.substring(0, temp.indexOf("!"));
        var sel = temp.substring(temp.indexOf("!") + 1);
        //                        alert("reading done. label=" + label +
        //                        " url=" + url +
        //                        " desc=" + desc +
        //                        " lat=" + lat + "=>" + parseFloat(lat) +
        //                        " lon=" + lon + "=>" + parseFloat(lon) +
        //                        " icn=" + icn +
        //                        " width=" + width +
        //                        " height=" + height +
        //                        " x=" + x +
        //                        " y=" + y
        //                        );
        //TODO: transparent for the non-compliant browser
        //Imagemap for the supported browser

        var point = new GLatLng(parseFloat(lat), parseFloat(lon));
        var icon = new GIcon();
        icon.image = icn;
        icon.iconSize = new GSize(width, height);
        icon.iconAnchor = new GPoint(parseInt(x),parseInt(y));
        icon.infoWindowAnchor = new GPoint(parseInt(x),parseInt(y));
        marker = new GMarker(point, {
            icon: icon,
            title: label
        });
        var found = false;
        var infos = new Array();
        var info = "<div style=\"width: 100%;\" class=\"eventPopUp\">"
        + "<div class=\"eventPopUpInner\">"
        + "<h3><a href=\"#\" onclick=\"goweb('" + url + "');toggleWebButton();\">" + label +"</a></h3>"
        + desc + "</div></div>";
        for(var j = 0; j < eventMarkers.length; j++) {
            var other = eventMarkers[j];
            if(other.getLatLng().equals(point) && !sel) {
                if(!found) {
                    found = other;
                }
                infos.push(new GInfoWindowTab(j+1, other.getInfo()));
            }
        }
        eventMarkers.push(marker);
        //addListener(marker, info);

        //mgeorss prototype
        marker.setInfo(info);
        infos.push(new GInfoWindowTab(eventMarkers.length, info));

        var infoWidth = 230;
        if(infos.length > 2) {
            infoWidth = 88*infos.length;
        }

        if(!found) {
            marker.bindInfoWindowHtml(info, {
                maxWidth: infoWidth
            });
            map.addOverlay(marker);
        } else {
            found.bindInfoWindowHtml(null);
            found.bindInfoWindowTabsHtml(null);
            found.bindInfoWindowTabsHtml(infos, {
                maxWidth: infoWidth
            });
        }
    }
}

function removeEventMarkers() {
    //       while((marker = eventMarkers.pop()) != null) {
    //FIX?
    for(var i = 0; i < eventMarkers.length; i++) {
        map.removeOverlay(eventMarkers[i]);
    }
}

function resetEventMarkers(events, selectedEvents) {
    removeEventMarkers();
    if (selectedEvents != null) {
        setEventMarkers(events, selectedEvents);
    }
}
function setMapOnly(b) {
    mapOnly = !b;
}
