window.onunload = GUnload

/*
 * -----------------------------------------------------------------------------
 * (c) 2007-2010 by Pascal Rapaz
 * -----------------------------------------------------------------------------
 *
 * gmaps.js
 *
 * -----------------------------------------------------------------------------
 * WHEN             WHO                 VERSION   DESCRIPTION
 * 17.08.2007       Pascal Rapaz        1.0       Creation
 * 05.09.2007       Pascal Rapaz        1.0.1     Change icon for new set
 * 14.07.2008       Pascal Rapaz        2.0       Added kml support
 * 23.03.2009       Pascal Rapaz        2.0.1     Update gmaps api call
 * 14.04.2010       Pascal Rapaz        2.0.2     Adaptation for Wordpress integration
 * -----------------------------------------------------------------------------
 */

var icons = ["http://www.rapazp.ch/rapazp/themes/icons/gmaps/green.png",
             "http://www.rapazp.ch/rapazp/themes/icons/gmaps/yellow.png",
             "http://www.rapazp.ch/rapazp/themes/icons/gmaps/red.png",
             "http://www.rapazp.ch/rapazp/themes/icons/gmaps/shadow.png"]

var defXmlFile = "gmarkers.xml"

var preload = [];
for(var i = 0; i < icons.length; i++){
    preload.push(new Image);
    preload[i].src = icons[i];
}//end for

var baseIcon = new GIcon();
baseIcon.shadow = preload[3].src;
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);

/**
 * Load google maps
 *
 * @param kmlFile: kml file to load. If not set, load the gmarker file.
 * @param zoom: map zoom factor (default: 9) (optional)
 */
function loadMaps(kmlFile, zoom) {

    var center = new GLatLng(46.252000, 6.946905); // monthey

    var zm = 9;
    if (undefined != zoom) {
        zm = zoom;
    }//end if

    if (GBrowserIsCompatible()) {

        var map;
        var ctrl;

        map = new GMap2(document.getElementById("map"));
        map.setCenter(center, zm);
        map.setUIToDefault();

        if (undefined == kmlFile) {

            map.setMapType(G_SATELLITE_MAP);

            GDownloadUrl(defXmlFile, function(data, responseCode) {
                var xml = GXml.parse(data);
                var markers = xml.documentElement.getElementsByTagName("marker");

                for (var i = 0; i < markers.length; i++) {
                    var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                            parseFloat(markers[i].getAttribute("lng")));

                    var info = prepareInfo(markers[i])

                    map.addOverlay(createMarker(map, point, info, markers[i].getAttribute("isNew")));
                }//end for
            });//end GDownloadUrl
        } else {

            var geoXml;
            var geoCallback = function() {
              geoXml.gotoDefaultViewport(map);
            }//end function

            geoXml = new GGeoXml(kmlFile, geoCallback);

            map.setMapType(G_PHYSICAL_MAP);
            map.addOverlay(geoXml);
        }//end if
    }//end if
}//end function

function createMarker(map, point, info, isNew) {
    var icon = new GIcon(baseIcon);

    if (isNew == "true") {
        icon.image = preload[0].src;
    } else {
        icon.image = preload[2].src;
    } //end if

    var marker = new GMarker(point, icon);

    GEvent.addListener(marker, "mouseover", function() {

        marker.setImage(preload[1].src);
    });//end mouseover

    GEvent.addListener(marker, "mouseout", function() {

        if (isNew == "true") {
            marker.setImage(preload[0].src);
        } else {
            marker.setImage(preload[2].src);
        } //end if
    });//end mouseout

/*
    GEvent.bind(marker, ”click”, marker, function() {
	    map.openInfoWindowHtml(info, {onOpenFn:function(){
		    infoWindow.reset(this.getPoint(),infoWindow.getTabs(),new GSize(200,200),null,null);
	    }});
    });
*/

    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(info);
    });//end click

    return marker;
}//end function

function prepareInfo(marker){
    var gals = marker.getElementsByTagName("galery")
    var info = '<div id="map_location">'

    info += '<div id="map_location_name">' + marker.getAttribute("name") + "</div>"

    info += '<div id="map_marker">'
    info += '<table id="map_info">'

    for (var i = 0; i < gals.length; i++) {
        info += "<tr><td><div>"
        info += "<a href=" + gals[i].getAttribute("url") + ">"
        info += '<img src="' + gals[i].getAttribute("img") + '"/>'
        info += '<div id="map_date">' + gals[i].getAttribute("date") + "</div>"
        info += '<div id="map_title">' + gals[i].getAttribute("title") + "</div>"
        info += "</a></div></td></tr>"

    }//end for

    info += "</table></div></div>"

    return info
}//end function
