var map = null;
var tooltip = null;
var geoXml = null;
//<![CDATA[
function load(mapLat, mapLon, markString, domainName,mapZoom) {
if (google.maps.BrowserIsCompatible()){
map = new google.maps.Map2(document.getElementById("map"), {googleBarOptions:{linkTarget: G_GOOGLEBAR_LINK_TARGET_TOP}});
map.addControl(new google.maps.LargeMapControl());
map.addControl(new google.maps.MapTypeControl());
map.addControl(new google.maps.OverviewMapControl());
map.enableScrollWheelZoom();
map.setCenter(new google.maps.LatLng(mapLat, mapLon), 10);
map.addMapType(G_PHYSICAL_MAP);
map.setMapType(map.getMapTypes()[3]);
//map.addMapType(G_SATELLITE_3D_MAP);
var publisherID = 'ca-pub-1528069228915212';
var adsManagerOptions = {
maxAdsOnMap : 1,
style: G_ADSMANAGER_STYLE_ADUNIT,
channel: '8528438541',
position: new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(0, 125))

};
adsManager = new GAdsManager(map, publisherID, adsManagerOptions);
adsManager.enable();
var markers = new Array();
var markString = markString;
var markArray = markString.split("|");
map.overlays = [];
if (markString.indexOf(".kmz") > 0)
{
GEvent.addListener(map,'addoverlay',function(o){
if (o.name != "Path")
{
        this.overlays.push(o);
GEvent.addListener(o,"mouseover", function()
{
this.openInfoWindowHtml(this.description);
});
}
});
if ((markArray.length % 3) == 1)
{
google.maps.Event.addListener(map, "infowindowopen", function() { 
        var infoWindow = this.getInfoWindow().getContentContainers();
var links = infoWindow[0].getElementsByTagName("a");
for (i=0;i<links.length;i++){
links[i].target = "_self";}
});
if (domainName == 'localhost')
domainName = 'www.sanmarko.nl';
map.setCenter(new google.maps.LatLng(mapLat, mapLon), mapZoom);
geoXml = new google.maps.GeoXml('http://'+domainName+'/gps/'+markArray[markArray.length-1]);
map.addOverlay(geoXml);
geoXmlTracks = new google.maps.GeoXml('http://'+domainName+'/gps/'+markArray[markArray.length-1].replace(".kmz","-tracks.kmz"));
map.addOverlay(geoXmlTracks);
}
}
else
{
tooltip = document.createElement("div");
map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
tooltip.style.visibility="hidden";

markerManager = new GMarkerManager(map);

var t = 0;
var lat = 0;
var lon = 0;
for (i=0; i < markArray.length - 2; i=i+3){
var point = new GLatLng(markArray[i], markArray[i+1]);
markers[t] = new GMarker(point);
markers[t].tooltipText = markArray[i+2];
lat = lat + parseFloat(markArray[i]);
lon = lon + parseFloat(markArray[i+1]);
GEvent.addListener(markers[t],"mouseover", function()
{
showTooltip(this);
});        
GEvent.addListener(markers[t],"mouseout", function() 
{
tooltip.style.visibility="hidden";
});
t++;
}
if (t > 0){
map.setCenter(new GLatLng((lat/t),(lon/t)),mapZoom);
}
if ((markArray.length % 3) == 1){
loadGpx('http://'+domainName+'/gpx/'+markArray[markArray.length-1], true);
}
markerManager.addMarkers(markers,1);
markerManager.refresh();
}
}}
//]]>
function showTooltip(marker) 
{
tooltip.innerHTML = '<div class="gtooltip">'+marker.tooltipText+'</div>';
var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
var anchor=marker.getIcon().iconAnchor;
var width=marker.getIcon().iconSize.width;
var height=tooltip.clientHeight;
var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
pos.apply(tooltip);
tooltip.style.visibility="visible";
}
function hookEvent(element, eventName, callback)
{
if(typeof(element) == "string")
element = document.getElementById(element);
if(element == null)
return;
if(element.addEventListener)
{
if(eventName == 'mousewheel')
element.addEventListener('DOMMouseScroll', callback, false);  
element.addEventListener(eventName, callback, false);
}
else if(element.attachEvent)
element.attachEvent("on" + eventName, callback);
}
function cancelEvent(e)
{
e = e ? e : window.event;
if(e.stopPropagation)
e.stopPropagation();
if(e.preventDefault)
e.preventDefault();
e.cancelBubble = true;
e.cancel = true;
e.returnValue = false;
return false;
}
function printInfo(e)
{
    cancelEvent(e);
}
function chooseLineStyle(name, comment)
{
if (comment == "BB" )
{
return(new Array("#00f0f0",5,.5));
}
return(new Array("#ff2000",6,.7));// Color,Width,Opacity
}
function loadGpx(URL)
{
var request = GXmlHttp.create();
request.open("GET", URL, true);
request.onreadystatechange = function()
{
if (request.readyState == 4)
{
var gpxDoc = request.responseXML;
if( !gpxDoc )
{
alert("Could not load GPX document " + URL);
}
else if( !gpxDoc.documentElement )
{
alert("Document " + URL + "\nwas not recognized by the XML loader");
}
else if( gpxDoc.documentElement.childNodes.length < 3 )
{
alert("The XML loader could not parse document " + URL);
}
else
{
var trkseg;
trkseg = gpxDoc.documentElement.getElementsByTagName("trkseg");
if (trkseg)
{
for (var i = 0; i < trkseg.length; i++)
{
tcolor="#ff2000";
if (i == 0 || i == 3 || i == 7)
tcolor="#ff2000";
if (i == 1 || i == 4 || i == 6)
tcolor="#00ffff";
if (i == 2 || i == 5 || i == 8)
tcolor="#40ff00";
twidth=5;
topacity=.5;
tname = "";
element = trkseg[i].getElementsByTagName("name");
if( element.length ) {
if( element[0].firstChild ) {
tname = element[0].firstChild.nodeValue;
}
}
type = trkseg[i].getElementsByTagName("cmt");
if( type.length ) {
if( type[0].firstChild ) {
array    = chooseLineStyle( tname, type[0].firstChild.nodeValue );
tcolor   = array[0];
twidth   = array[1];
topacity = array[2];
}
}
points = [];
var rtept = trkseg[i].getElementsByTagName("trkpt");
for (var k = 0; k < rtept.length; k++) {
points.push(new GPoint(
parseFloat(rtept[k].getAttribute("lon")),
parseFloat(rtept[k].getAttribute("lat"))));
}
map.addOverlay(new GPolyline(points, tcolor, twidth, topacity));
points = [];
}
trkseg = []
}
}
}
}
request.send(null);
}