var swanmaps_map;

function swanmaps_page_load()
{
    if (!GBrowserIsCompatible())
        return;

    if (document.getElementById("swanmaps_mapcontainer"))
    {
        swanmaps_init();
    }
    else if (document.getElementById("swanmaps_mapcontainer_admin"))
    {
        swanmaps_init_admin();
    }
}

function swanmaps_init()
{
    swanmaps_map = new GMap2(document.getElementById("swanmaps_mapcontainer"));

    swanmaps_map.setCenter(new GLatLng(53.342, -6.263), 13); // TODO use a better default

    swanmaps_map.addControl(new GSmallMapControl());
    swanmaps_map.addControl(new GMapTypeControl());

    swanmaps_showcat(-1); // show all points
}

function swanmaps_init_admin()
{
    swanmaps_map = new GMap2(document.getElementById("swanmaps_mapcontainer_admin"));

    swanmaps_map.addControl(new GSmallMapControl());
    swanmaps_map.addControl(new GMapTypeControl());

    var lat = document.getElementById("swanmaps_lat");
    var lng = document.getElementById("swanmaps_lng");

    var point;

    if (lat && lat.getAttribute("value") != "")
    {
        point = new GLatLng(lat.getAttribute("value"), lng.getAttribute("value"));
    }
    else
    {
        point = new GLatLng(53.342, -6.263); // TODO use a better default
    }

    swanmaps_map.setCenter(point, 10);

    var marker = new GMarker(point, {draggable: true});
    GEvent.addListener(marker, "dragend", function()
    {
        lat.setAttribute("value", marker.getLatLng().lat());
        lng.setAttribute("value", marker.getLatLng().lng());

        document.getElementById("swanmaps_lat_text").firstChild.nodeValue = marker.getLatLng().lat().toFixed(3);
        document.getElementById("swanmaps_lng_text").firstChild.nodeValue = marker.getLatLng().lng().toFixed(3);
    });

    swanmaps_map.addOverlay(marker);
}

// Only show points that are in this category
function swanmaps_showcat(cat_id)
{
    swanmaps_map.clearOverlays();

    var coords = document.getElementById("swanmaps_coords").getElementsByTagName("li");
    var bounds = new GLatLngBounds();

    for (var i=0; i<coords.length; i++)
    {
        var cats = coords[i].getAttribute("categories").split(",");

        for (var j=0; j<cats.length; j++)
        {
            if (cat_id == cats[j] || cat_id == -1)
            {
                var point = new GLatLng(coords[i].getAttribute("lat"), coords[i].getAttribute("lng"));
                var marker = new GMarker(point);

                marker.html = coords[i].innerHTML;

                GEvent.addListener(marker, "click", function(point)
                {
                    swanmaps_map.openInfoWindowHtml(point,this.html,{maxWidth:300});
					
				
                });

                swanmaps_map.addOverlay(marker);

                bounds.extend(point);

                break;
            }
        }
    }

    swanmaps_map.setCenter(bounds.getCenter(), swanmaps_map.getBoundsZoomLevel(bounds)-1);

    return false;
}

if (window.addEventListener)
{
      window.addEventListener('load', swanmaps_page_load, false); 
}
else if (window.attachEvent)
{
      window.attachEvent('onload', swanmaps_page_load);
}


