﻿$(document).ready(function() {
    $("#ButtonUpcoming").click(function(event) { DisplayUpcomingList(); $("#EventsCalendarConatainer").html(""); });
    $("#ButtonPast").click(function(event) { DisplayPastList(); $("#EventsCalendarConatainer").html(""); });
    $("#ButtonCalendar").click(function(event) { DisplayCalendar(); GetEvents("calendar", ""); event.preventDefault(); });
    $("#ButtonMaps").click(function(event) { DisplayMaps(); });
    $("#ForumPager").pager({ pagenumber: 1, pagecount: PageCountUpcoming, buttonClickCallback: PageClickUpcoming });

    switch (parseUri(document.location).anchor) {
        case "calendar":
            DisplayCalendar();
            break;
        case "upcoming":
            DisplayUpcomingList();
            break;
        case "past":
            DisplayPastList();
            break;
        case "maps":
            DisplayMaps();
            break;
    }
    //$.scrollTo(0, 0);
    if (parseUri(document.location).anchor == "past") {
        GetPolls("past");
        $("#ContentSections a").removeClass();
        $("#ButtonPast").addClass("Selected");
    }
});

function DisplayCalendar() {
    //hide list    
    $("#EventsUpcomingContainer").hide();
    $("#ContentSections a").removeClass();
    //hide maps
    $("#ButtonMaps a").removeClass();
    $("#MapsContainer").hide();
    //display calendar
    $("#EventCalendar").show();
    $("#ButtonCalendar").addClass("Selected");
    $("#ForumPager").hide();
}

function DisplayMaps() {
    //hide list    
    $("#EventsUpcomingContainer").hide();
    $("#ContentSections a").removeClass();
    //hide calendar
    $("#EventCalendar").hide();
    $("#ButtonCalendar a").removeClass();
    //show maps
    $("#MapsContainer").show();
    $("#ButtonMaps").addClass("Selected");
    $("#ForumPager").hide();
    load_events_maps();
}

function DisplayUpcomingList() {
    //hide calendar
    $("#EventCalendar").hide();
    $("#ButtonCalendar a").removeClass();
    //hide maps
    $("#ButtonMaps a").removeClass();
    $("#MapsContainer").hide();
    //display list
    $("#EventsUpcomingContainer").show();
    $("#ContentSections").addClass("Selected");

    $("#ForumPager").pager({ pagenumber: 1, pagecount: PageCountUpcoming, buttonClickCallback: PageClickUpcoming });
    $("#ForumPager").show();

    $.get("/ajax/GetEvents.ashx?q=upcoming&s=" + s + "&u=" + u + "&page=" + 1 + "&pageSize=" + PageSize, function(data) {
        $("#EventsUpcomingContainer").html(data);
        statsTracker();
    });
}

function DisplayPastList() {
    //hide calendar
    $("#EventCalendar").hide();
    $("#ButtonCalendar a").removeClass();
    //hide maps
    $("#ButtonMaps a").removeClass();
    $("#MapsContainer").hide();
    //display list
    $("#EventsUpcomingContainer").show();
    $("#ContentSections").addClass("Selected");

    $("#ForumPager").pager({ pagenumber: 1, pagecount: PageCountPast, buttonClickCallback: PageClickPast });
    $("#ForumPager").show();

    $.get("/ajax/GetEvents.ashx?q=past&s=" + s + "&u=" + u + "&page=" + 1 + "&pageSize=" + PageSize, function(data) {
        $("#EventsUpcomingContainer").html(data);
        statsTracker();
    });
}

function GetEvents(m, d) {
    $.get("/ajax/GetEvents.ashx?q=" + m + "&d=" + d + "&u=" + u + "&page=" + PageIndex + "&pageSize=" + PageSize, function(data) {
        switch (m) {
            case "upcoming":
                $("#ForumPager").show();
                break;
            case "day":
                $("#EventsCalendarConatainer").html(data);
                $("#EventsCalendarConatainer").prepend("<div id=\"HeadingEventsDay\">Events on " + d + "</div>");
                break;
            case "maps":
                break;
            default:
                break;
        }
        statsTracker();
    });
}


var geoxml
var startlatlng;
var loaded = false;
var startlatlng;

function load_events_maps() {

    var markers = [];

    if (GBrowserIsCompatible() && !loaded) {

        map = new GMap2(document.getElementById("map_events"));
        map.setCenter(startlatlng, 13);
        map.setUIToDefault();

        GDownloadUrl("/ajax/GetEvents.ashx?q=maps&type=xml", function(data, responseCode) {
            var xml = GXml.parse(data);
            var items = xml.documentElement.getElementsByTagName("event");

            for (var i = 0; i < items.length; i++) {
                if (items[i].getElementsByTagName("lat")[0] && items[i].getElementsByTagName("lng")[0]) {

                    var point = new GLatLng(parseFloat(items[i].getElementsByTagName("lat")[0].childNodes[0].nodeValue),
                                    parseFloat(items[i].getElementsByTagName("lng")[0].childNodes[0].nodeValue));

                    markers.push(createMarker(point, items[i]));
                }
            }

            //check multiple markes same point
            new_markers = processMarkers(markers);

            //display markers
            for (var i = 0; i < new_markers.length; i++) {
                map.addOverlay(new_markers[i]);
            }

        });

        loaded = true;
    }
}

function centerMap(coords) {
    lat = coords.split(",")[0];
    lng = coords.split(",")[1];
    map.setCenter(new GLatLng(lat, lng), 11);
}

function point_exists(array, search) {
    for (var i = 0; i < array.length; i++) {
        if (array[i].lat() == search.lat() && array[i].lng() == search.lng()) return true;
    }
    return false;
}

function geo_exists(array, search) {
    for (var i = 0; i < array.length; i++) {
        if (array[i].getLatLng().lat() == search.lat() && array[i].getLatLng().lng() == search.lng()) return true;
    }
    return false;
}

function processMarkers(markers) {
    var new_markers = [];
    var duplicate_markers = [];
    var duplicate_points = [];
    var markers_to_delete = [];

    // check duplicates
    for (var i = 0; i < markers.length; i++) {
        if (geo_exists(new_markers, markers[i].getLatLng())) 
        {
            duplicate_markers.push(markers[i]);

            if (!point_exists(duplicate_points, markers[i].getLatLng()))
                duplicate_points.push(markers[i].getLatLng());
        }
        else
            new_markers.push(markers[i]);
    }

    for (var i = 0; i < new_markers.length; i++) {
        //select markers to delete
        if (geo_exists(duplicate_markers, new_markers[i].getLatLng()))
            markers_to_delete.push(i);
    }

    //delete markers
    tmp_markers = [];
    for (var i = 0; i < new_markers.length; i++) {
        if (jQuery.inArray(i, markers_to_delete) == -1)
            tmp_markers.push(new_markers[i]);
    }
    new_markers = tmp_markers;

    //create new markers for the same lat & lng
    for (var i = 0; i < duplicate_points.length; i++) {
        new_markers.push(createMultipleMarker(duplicate_points[i]));
    }
    
    //reset arrays
    duplicate_markers = [];
    duplicate_points = [];
    market_to_splice = [];

    return new_markers;
}

function createMultipleMarker(point) {

    var marker = new GMarker(point);

    GEvent.addListener(marker, "click", function() {
        //options
        windowOptions = {
            maxWidth: 480,
            maxHeight: 300,
            autoScroll: true
        };
        map.openInfoWindowHtml(point, '<p style="color: black">Loading...</p>');
        jQuery.get('/ajax/GetEvents.ashx?q=maps&lat=' + point.lat() + '&lng=' + point.lng(), {}, function(data) {
            map.openInfoWindowHtml(point, data, windowOptions);
        });
    });
    return marker;
}

function getGIcon() {
    var icon = new GIcon(G_DEFAULT_ICON);
    return icon;
}

function createMarker(point, item) {

    var id = item.getElementsByTagName("id")[0].childNodes[0].nodeValue;
    var url = item.getElementsByTagName("url")[0].childNodes[0].nodeValue;
    var thumb = item.getElementsByTagName("thumb")[0].childNodes[0].nodeValue;
    var title = item.getElementsByTagName("title")[0].childNodes[0].nodeValue;
    //var summary = item.getElementsByTagName("summary")[0].childNodes[0].nodeValue;
    var summary = "";
    if (item.getElementsByTagName("summary")[0].childNodes.length > 0) {
        summary = item.getElementsByTagName("summary")[0].childNodes[0].nodeValue;
    }

    var marker = new GMarker(point);

    GEvent.addListener(marker, "click", function() {

        var html = "<div class=\"ItemContainer clearfix\" style=\"width:350px;\"><a class=\"article-thumb-wrap\" href=\"" + url + "\"><img class=\"EventThumb\" src=\"" + thumb + "\"/></a>";
        html = html + "<div class=\"article-content\" style=\"width:260px;\"><h2><a href=\"" + url + "\">" + title + "</a></h2><p>" + summary + "</p></div></div>";
        marker.openInfoWindowHtml("<div>" + html + "</div>", { maxWidth: '400' });

    });
    return marker;
}

PageClickUpcoming = function(Pageclickednumber) {
    $("#ForumPager").pager({ pagenumber: Pageclickednumber, pagecount: PageCountUpcoming, buttonClickCallback: PageClickUpcoming });
    PageIndex = Pageclickednumber;
    $.get("/ajax/GetEvents.ashx?q=upcoming&s=" + s + "&u=" + u + "&page=" + PageIndex + "&pageSize=" + PageSize, function(data) {
        $("#EventsUpcomingContainer").html(data);
        statsTracker();
    });
    $.scrollTo(600, 500, { queue: true });
}

PageClickPast = function(Pageclickednumber) {
    $("#ForumPager").pager({ pagenumber: Pageclickednumber, pagecount: PageCountPast, buttonClickCallback: PageClickPast });
    PageIndex = Pageclickednumber;
    $.get("/ajax/GetEvents.ashx?q=past&s=" + s + "&u=" + u + "&page=" + PageIndex + "&pageSize=" + PageSize, function(data) {
        $("#EventsUpcomingContainer").html(data);
        statsTracker();
    });
    $.scrollTo(600, 500, { queue: true });
}

