
var map;var draggedMarker;var draggedRoute;var geocoder;var isLoading=false;var lock=false;var mode=0;var CtrlKeyPressedFF;var gRoutes=new Array();var idWithFocus="mapcontainer";var defaultColor="#0000FF";var nrActiveRoute=0;var panAlong=false;var clickMarkerMode=0;var mgrKnooppunten;var drawElevationChart=false;var routeElevationChart=-1;var showKnooppunten=false;var showTextWithMarker=false;var addPointInBetween=false;var prevClickedMarker=new Array(-1,0);var directions;var planRoute=false;var searchMarkers=new Array();var saveAction;function load(m,routeId,key,kmStep,filename,knooppunten,toggleMapAfterLoading,color)
{mode=m;if(!GBrowserIsCompatible()){alert("Sorry, your browser is not compatible with Google Maps!!");}
else{if(mode!==4){map=new GMap2(document.getElementById("map"),{draggableCursor:'crosshair'});map.setUIToDefault();geocoder=new GClientGeocoder();map.enableContinuousZoom();var ovMap=new GOverviewMapControl();map.addControl(ovMap);}
else{map=new GMap2(document.getElementById("map"),{draggableCursor:'pointer'});map.enableContinuousZoom();map.addControl(new GMapTypeControl());map.enableScrollWheelZoom();}
new GKeyboardHandler(map);var center=new GLatLng(52.0,5.1);centerMapToPoint(center,7);var browserName=navigator.appName;var isIE6=(navigator.appVersion.toLowerCase().indexOf('msie 6.')!=-1);if(browserName==="Microsoft Internet Explorer"&&isIE6===true&&mode!==4){resizeMap();if(window.attachEvent){window.attachEvent("onresize",function(){resizeMap();});}}
if(typeof(routeId)!=="undefined"&&mode!==1){if(mode===0){loadRoute(routeId,0,kmStep,true,undefined,key);}
else if(mode===2){loadRoute(routeId,1,kmStep,undefined,color,key);}
else if(mode===3){loadRouteFromFile(filename);}
else if(mode===4){loadEmbeddedRouteEncoded(routeId,kmStep,true,undefined,key);}}
else if(mode===1){loadSearchRoutes();}
mgrKnooppunten=new MarkerManager(map);if(typeof(knooppunten)!=="undefined"&&knooppunten===1){setupKnooppuntenMarkers(true);}
if(mode!=4){directions=new GDirections(null,document.getElementById("dummy"));GEvent.addListener(directions,"error",function(){GLog.write("Error in retrieving directions: "+directions.getStatus().code);});GEvent.addListener(directions,"load",function(){var nr_points=directions.getPolyline().getVertexCount();if(nr_points>50){alert("De berekende route bestaat uit teveel punten ("+nr_points+", max 50)");}
else{var pos_start=gRoutes[nrActiveRoute].activePoint+1;var added_positions=0;isLoading=true;for(var i=0;i<nr_points;i++){var vertex=directions.getPolyline().getVertex(i);if(i>0||vertex.distanceFrom(getPosActivePoint(nrActiveRoute))>0.001){insertOrUpdatePosition(nrActiveRoute,vertex,pos_start+added_positions);added_positions++;}}
isLoading=false;drawAll(nrActiveRoute,pos_start,Math.min(pos_start+added_positions+1,gRoutes[nrActiveRoute].positions.length));setActivePoint(nrActiveRoute,pos_start+added_positions-1,true);}});}
if(mode!==4){GEvent.addListener(map,"click",function(marker,point){if(gRoutes.length===0){gRoutes.push(new createRoute(defaultColor));}
if(!marker&&mode===0){if(document.getElementById("pointtype_point").checked){var length=gRoutes[nrActiveRoute].positions.length;if(planRoute===true&&length>0){var points=Array();var curpoint=getPosActivePoint(nrActiveRoute);points.push(curpoint);points.push(point);directions.loadFromWaypoints(points,{getPolyline:true,travelMode:G_TRAVEL_MODE_WALKING,avoidHighways:true});}
else{insertOrUpdatePosition(nrActiveRoute,point,gRoutes[nrActiveRoute].activePoint+1);}}
else{var type=getCustomPositionType();addCustomPosition(nrActiveRoute,point,type,true,undefined,false);}
if(panAlong===true){map.panTo(point);}}});GEvent.addListener(map,"mousemove",function(point){showCoord(point);});}
else{}}
if(toggleMapAfterLoading){toggleLayer("text");}}
function unload()
{clearPoints();GUnload();}
function createRoute(color)
{this.positions=new Array();this.customPositions=new Array();this.kiloMarkerArray=new Array();this.encodedPolyLine=null;this.distance=0.0;this.time=-1;this.color=color;this.id=-1;this.activePoint=-1;}
function createPosition(point,polyLine,distance,marker,description,time)
{if(time===""){time=-1;}
this.point=point;this.polyLine=polyLine;this.marker=marker;this.distance=distance;this.description=description;this.time=time;this.textOverlay=null;}
function insertOrUpdatePosition(route_nr,point,index,add,time,description)
{if(typeof(time)==="undefined"){time=-1;}
if(typeof(description)==="undefined"){description="";}
if(typeof(add)==="undefined"){add=true;}
var latLng=new GLatLng(point.lat(),point.lng());var distance=0.0;var polyLine=null;var marker=null;var setActive=(gRoutes[route_nr].activePoint+1===index||(gRoutes[route_nr].activePoint===index&&add===false));setActive&=(isLoading===false);if(gRoutes[route_nr].positions.length===0||index===0){marker=createMarker(point,"START",true,"marker");}
else if(time>0||(add===false&&gRoutes[route_nr].positions[index].time>0)){marker=createMarker(point,"POINT_DESCR",true,"marker");}
else{marker=createMarker(point,(setActive)?"POINT_ACTIVE":"POINT",true,"marker");}
if(typeof(index)==="undefined"){index=gRoutes[route_nr].positions.length;}
if(typeof(add)!=="undefined"&&add===false){map.removeOverlay(gRoutes[route_nr].positions[index].marker);gRoutes[route_nr].positions[index].point=point;gRoutes[route_nr].positions[index].marker=marker;}
else{var pos=new createPosition(latLng,polyLine,distance,marker,description,time);gRoutes[route_nr].positions.splice(index,0,pos);if(gRoutes[route_nr].activePoint>index){setActivePoint(route_nr,gRoutes[route_nr].activePoint+1,true);}}
if(setActive){setActivePoint(route_nr,index,false);}
if(isLoading===false){map.addOverlay(gRoutes[route_nr].positions[index].marker);if(showTextWithMarker==true){geocoder.getLocations(point,function(addresses){if(addresses.Status.code!=200){alert("reverse geocoder failed to find an address for "+latlng.toUrlValue());}else{var result=addresses.Placemark[0];if(gRoutes[route_nr].positions[index].textOverlay!=null){map.removeOverlay(gRoutes[route_nr].positions[index].textOverlay);}
map.openInfoWindowHtml(marker.getPoint(),"<textarea type='text' id=\"add\">"+result.address+"</textarea><br /><input type='button' value='Pas aan' onclick='processUpdatedAddress("+route_nr+","+index+")'>",{onCloseFn:function(){if(gRoutes[route_nr].positions[index].textOverlay==null){gRoutes[route_nr].positions[index].textOverlay=new Rectangle(marker.getPoint(),result.address);}
map.addOverlay(gRoutes[route_nr].positions[index].textOverlay);}});}});}}
setDistance(route_nr,index);setPolyLine(route_nr,index);setDistance(route_nr,index+1);setPolyLine(route_nr,index+1);if(isLoading===false){showDistance();manageKiloMarkers(route_nr,index);}}
function processUpdatedAddress(route_nr,index)
{gRoutes[route_nr].positions[index].textOverlay=new Rectangle(gRoutes[route_nr].positions[index].marker.getPoint(),document.getElementById("add").value);map.closeInfoWindow();}
function updateMarkerIcon(route_nr,index,type)
{var point=gRoutes[route_nr].positions[index].point;if(gRoutes[route_nr].positions[index].marker){map.removeOverlay(gRoutes[route_nr].positions[index].marker);}
gRoutes[route_nr].positions[index].marker=createMarker(point,type,true,"marker");if(isLoading===false){map.addOverlay(gRoutes[route_nr].positions[index].marker);}}
function setActivePoint(route_nr,index,update_active)
{var curactive=gRoutes[route_nr].activePoint;if(index!==curactive)
{if(curactive>0&&curactive<gRoutes[route_nr].positions.length){var pointtype=(gRoutes[route_nr].positions[curactive].time>0?"POINT_DESCR":"POINT");updateMarkerIcon(route_nr,curactive,pointtype);}
if(update_active&&index>0){updateMarkerIcon(route_nr,index,"POINT_ACTIVE");}
gRoutes[route_nr].activePoint=index;}}
function deletePosition(route_nr,index)
{if(index>=gRoutes[route_nr].length){return;}
if(gRoutes[route_nr].positions[index].marker){map.removeOverlay(gRoutes[route_nr].positions[index].marker);}
if(gRoutes[route_nr].positions[index].textOverlay){map.removeOverlay(gRoutes[route_nr].positions[index].textOverlay);}
if(index>0&&gRoutes[route_nr].positions[index].polyLine){map.removeOverlay(gRoutes[route_nr].positions[index].polyLine);}
gRoutes[route_nr].distance-=gRoutes[route_nr].positions[index].distance;delete gRoutes[route_nr].positions[index].polyLine;delete gRoutes[route_nr].positions[index].marker;delete gRoutes[route_nr].positions[index].point;gRoutes[route_nr].positions.splice(index,1);setDistance(route_nr,index);setPolyLine(route_nr,index);if(index===0&&gRoutes[route_nr].positions.length>0){if(gRoutes[route_nr].positions[index].polyLine){map.removeOverlay(gRoutes[route_nr].positions[index].polyLine);}
gRoutes[route_nr].positions[index].polyLine=null;gRoutes[route_nr].distance-=gRoutes[route_nr].positions[index].distance;gRoutes[route_nr].positions[index].distance=0.0;insertOrUpdatePosition(route_nr,gRoutes[route_nr].positions[index].point,0,false);}
if(index<=gRoutes[route_nr].activePoint){setActivePoint(route_nr,gRoutes[route_nr].activePoint-1,true);}
if(isLoading===false){showDistance();manageKiloMarkers(route_nr,index);}}
function addPositionsFromTo(route_nr,indexFrom,indexTo)
{if(indexFrom<indexTo){for(var i=indexFrom;i<=indexTo;i++){insertOrUpdatePosition(route_nr,gRoutes[route_nr].positions[i].point);}}
else{for(var j=indexFrom;j>=indexTo;j--){insertOrUpdatePosition(route_nr,gRoutes[route_nr].positions[j].point);}}}
function deletePositionsFromTo(route_nr,indexFrom,indexTo,offset)
{if(indexFrom>indexTo){var tmp=indexFrom;indexFrom=indexTo;indexTo=tmp;}
for(var i=indexTo-offset;i>=indexFrom+offset;i--){deletePosition(route_nr,i);}}
function removeFinalPoint(route_nr)
{if(typeof(route_nr)==="undefined"){route_nr=nrActiveRoute;}
if(route_nr>=gRoutes.length){return;}
var point=gRoutes[route_nr].positions.length-1;if(point>=0){deletePosition(route_nr,point);}}
function removeActivePoint(route_nr)
{if(typeof(route_nr)==="undefined"){route_nr=nrActiveRoute;}
if(route_nr>=gRoutes.length){return;}
var activePoint=gRoutes[route_nr].activePoint;if(activePoint<gRoutes[route_nr].positions.length&&activePoint>=0){deletePosition(route_nr,activePoint);}}
function clearPoints(confirm)
{if(typeof(confirm)!=="undefined"){var result=deleteOkCancel("Weet je zeker dat je alle punten wilt wissen?");if(result===false){return false;}}
idRouteLoaded=-1;isLoading=true;while(gRoutes.length>0){clearRoute(0);}
map.clearOverlays();isLoading=false;return true;}
function clearRoute(nrRoute)
{manageKiloMarkersWithKmStep(nrRoute,0,0);var tmpIsLoading=isLoading;isLoading=true;if(gRoutes[nrRoute].encodedPolyLine!==null){map.removeOverlay(gRoutes[nrRoute].encodedPolyLine);}
while(gRoutes[nrRoute].positions.length>0){removeFinalPoint(nrRoute);}
while(gRoutes[nrRoute].customPositions.length>0){deleteCustomPosition(nrRoute,0);}
gRoutes.splice(nrRoute,1);if(nrActiveRoute>=nrRoute&&mode!==1){setActiveRoute(Math.max(0,nrActiveRoute-1));}
isLoading=tmpIsLoading;reloadRouteSelection();}
function reverseRoute(route_nr,confirm)
{if(typeof(route_nr)==="undefined"){route_nr=nrActiveRoute;}
if(typeof(confirm)!=="undefined"){var result=deleteOkCancel("Weet je zeker dat je de route wilt omdraaien?");if(result===false){return false;}}
if(mode===2){isLoading=true;}
if(route_nr>=gRoutes.length){return false;}
var length=gRoutes[route_nr].positions.length;if(length>1){swapMarker(route_nr,0,length-1);redrawMarker(route_nr,0);redrawMarker(route_nr,length-1);}
if(length>0){gRoutes[route_nr].positions.reverse();}
if(length>0){map.removeOverlay(gRoutes[route_nr].positions[0].polyLine);gRoutes[route_nr].distance-=gRoutes[route_nr].positions[0].distance;gRoutes[route_nr].positions[0].distance=0.0;}
for(var i=0;i<gRoutes[route_nr].positions.length;i++){setPolyLine(route_nr,i);setDistance(route_nr,i);}
isLoading=false;manageAllKiloMarkers();return true;}
function redrawMarker(route_nr,index)
{map.removeOverlay(gRoutes[route_nr].positions[index].marker);map.addOverlay(gRoutes[route_nr].positions[index].marker);}
function swapMarker(route_nr,index1,index2)
{var marker=gRoutes[route_nr].positions[index1].marker;gRoutes[route_nr].positions[index1].marker=gRoutes[route_nr].positions[index2].marker;gRoutes[route_nr].positions[index2].marker=marker;gRoutes[route_nr].positions[index1].marker.setLatLng(gRoutes[route_nr].positions[index1].point);gRoutes[route_nr].positions[index2].marker.setLatLng(gRoutes[route_nr].positions[index2].point);}
function setDistance(route_nr,index)
{if(index>0&&index<gRoutes[route_nr].positions.length){var prevpoint=gRoutes[route_nr].positions[index-1].point;var curpoint=gRoutes[route_nr].positions[index].point;var distance=prevpoint.distanceFrom(curpoint);gRoutes[route_nr].distance-=gRoutes[route_nr].positions[index].distance;gRoutes[route_nr].positions[index].distance=distance;gRoutes[route_nr].distance+=distance;}}
function setPolyLine(route_nr,index)
{if(index>0&&index<gRoutes[route_nr].positions.length){var prevpoint=gRoutes[route_nr].positions[index-1].point;var curpoint=gRoutes[route_nr].positions[index].point;var polyLine=new GPolyline([prevpoint,curpoint],gRoutes[route_nr].color,5);if(gRoutes[route_nr].positions[index].polyLine!==null){map.removeOverlay(gRoutes[route_nr].positions[index].polyLine);}
gRoutes[route_nr].positions[index].polyLine=polyLine;if(isLoading===false){map.addOverlay(gRoutes[route_nr].positions[index].polyLine);}}}
function drawAll(draw_route_nr,draw_pos_start,draw_pos_end,draw_custom)
{if(typeof(draw_route_nr)==="undefined"){draw_route_nr=-1;}
if(typeof(draw_pos_start)==="undefined"){draw_pos_start=1;}
if(typeof(draw_custom)==="undefined"){draw_custom=true;}
for(var route_nr=0;route_nr<gRoutes.length;route_nr++)
{if(draw_route_nr!==-1&&route_nr!==draw_route_nr){continue;}
var pos_end=gRoutes[route_nr].positions.length;if(typeof(draw_pos_end)!=="undefined"){pos_end=draw_pos_end;}
if(draw_pos_start===1&&gRoutes[route_nr].positions.length>0){if(gRoutes[route_nr].positions[0].marker===null){alert("Marker bestaat niet voor positie 0");}
else{map.addOverlay(gRoutes[route_nr].positions[0].marker);}}
for(i=draw_pos_start;i<pos_end;i++){if(gRoutes[route_nr].positions[i].polyLine===null){alert("PolyLine bestaat niet voor positie "+i);}
else{map.addOverlay(gRoutes[route_nr].positions[i].polyLine);}
if(gRoutes[route_nr].positions[i].marker===null){alert("Marker bestaat niet voor positie "+i);}
map.removeOverlay(gRoutes[route_nr].positions[i].marker);map.addOverlay(gRoutes[route_nr].positions[i].marker);}
if(draw_custom){for(i=0;i<gRoutes[route_nr].customPositions.length;i++){map.addOverlay(gRoutes[route_nr].customPositions[i].marker);}}
manageKiloMarkers(route_nr,Math.max(0,draw_pos_start-1));}
showDistance();}
function createCustomPosition(marker,type,type_url,large)
{this.marker=marker;this.type=type;this.type_url=type_url;this.large=large;}
function getCustomPositionType()
{if(document.getElementById("pointtype_water").checked){return"WATER";}
else if(document.getElementById("pointtype_toilets").checked){return"TOILETS";}
else if(document.getElementById("pointtype_info").checked){return"INFO";}
else if(document.getElementById("pointtype_bus").checked){return"BUS";}
else if(document.getElementById("pointtype_parking").checked){return"PARKINGLOT";}
else if(document.getElementById("pointtype_medicalaid").checked){return"MEDICALAID";}
else if(document.getElementById("pointtype_url").checked){return"URL";}}
function markerImportance(marker,b)
{return marker.importance;}
function addCustomPosition(route_nr,point,type,drag,type_url,large)
{if(type=="URL"&&typeof(type_url)==="undefined"){type_url=prompt("Je kan nu een willekeurige plaatje van een andere website toevoegen. Vul hieronder de URL van de foto/plaatje in:");if(type_url===""||type_url===null){return;}}
var marker=createCustomMarker(point,type,drag,type_url,large);map.addOverlay(marker);gRoutes[route_nr].customPositions.push(new createCustomPosition(marker,type,type_url,large));}
function deleteCustomPosition(route_nr,index)
{if(gRoutes[route_nr].customPositions[index].marker){map.removeOverlay(gRoutes[route_nr].customPositions[index].marker);}
delete gRoutes[route_nr].customPositions[index].marker;gRoutes[route_nr].customPositions.splice(index,1);}
function createCustomMarker(point,type,drag,type_url,large)
{if(typeof(drag)==="undefined"){drag=true;}
if(typeof(large)==="undefined"){large=false;}
var f=new GIcon();if(large===false){f.iconSize=new GSize(32,32);f.iconAnchor=new GPoint(16,16);f.shadowSize=new GSize(59,32);}
else{f.iconSize=new GSize(200,200);f.iconAnchor=new GPoint(100,100);}
switch(type){case"WATER":f.image="images/icons/water.png";f.shadow="images/icons/water.shadow.png";break;case"TOILETS":f.image="images/icons/toilets.png";f.shadow="images/icons/toilets.shadow.png";break;case"INFO":f.image="images/icons/info.png";f.shadow="images/icons/info.shadow.png";break;case"BUS":f.image="images/icons/bus.png";f.shadow="images/icons/bus.shadow.png";break;case"PARKINGLOT":f.image="images/icons/parkinglot.png";f.shadow="images/icons/parkinglot.shadow.png";break;case"MEDICALAID":f.image="images/icons/medicalaid.png";f.shadow="images/icons/medicalaid.shadow.png";break;case"URL":f.image=type_url;break;default:alert("Unknown custom marker type: "+type);break;}
var marker=new GMarker(point,{icon:f,draggable:true,bouncy:false,zIndexProcess:markerImportance});if(large===true)
marker.importance=20000;else
marker.importance=10000;if(drag===false)
marker.disableDragging();if(true){GEvent.addListener(marker,"click",function(){if(mode===0){var result=getClosestCustomPosition(marker.getPoint());deleteCustomPosition(result[0],result[1]);}
else if(mode==2)
{var result=getClosestCustomPosition(marker.getPoint());var route_nr=result[0];var index=result[1];var type_url=gRoutes[route_nr].customPositions[index].type_url;if(type_url!=="")
{var point=marker.getPoint();var large=gRoutes[route_nr].customPositions[index].large;map.removeOverlay(gRoutes[route_nr].customPositions[index].marker);var newmarker=createCustomMarker(point,"URL",false,type_url,!large);map.addOverlay(newmarker);gRoutes[route_nr].customPositions[index].marker=newmarker;gRoutes[route_nr].customPositions[index].large=!large;}}});GEvent.addListener(marker,"dragstart",function(){var result=getClosestCustomPosition(marker.getPoint());draggedRoute=result[0];draggedMarker=result[1];});GEvent.addListener(marker,"dragend",function(){gRoutes[draggedRoute].customPositions[draggedMarker].point=marker.getPoint();});}
return marker;}
function parseTime(time,format)
{if(typeof(format)==="undefined"){format=false;}
var hours=Math.max(0,parseInt(time/3600,10));var mins=Math.max(0,parseInt((time%3600)/60,10));var secs=Math.max(0,time%60);if(format===true){if(hours>0&&mins<10&&mins>0){mins="0"+mins;}
if(mins>0&&secs<10){secs="0"+secs;}}
return[hours,mins,secs];}
function newSelect(id,onchange2)
{var result=document.createElement('select');result.setAttribute('id',id);result.setAttribute('name',id);if(typeof(onchange2)!=="undefined"){result.onchange=function(){showDistance();};}
return result;}
function newOption(val,name,selected)
{var result=document.createElement('option');result.setAttribute('value',val);if(selected===true){result.setAttribute('selected','selected');}
result.appendChild(document.createTextNode(name));return result;}
function createTimeSelect(name,max_nr,selected,onchange)
{var result=newSelect(name,onchange);var ind;for(var i=0;i<max_nr;i++){ind=(i<10?"0":"")+i;result.appendChild(newOption(ind,ind,((i===selected)?true:false)));}
return result;}
function addTimeSelect(parent,name,time,onchange)
{var times=parseTime(time,false);parent.appendChild(createTimeSelect(name+"_Hour",24,times[0],onchange));parent.appendChild(createTimeSelect(name+"_Minute",60,times[1],onchange));parent.appendChild(createTimeSelect(name+"_Second",60,times[2],onchange));}
function createTimeInput(name,time,onchange)
{var selectTime=parseTime(time,true);var startStr='<input size="2" maxlength="2" type="text" value="';var strReturn=startStr+selectTime[0]+'" id="'+name+'_Hour"   onchange="'+onchange+'"/> :\n';strReturn+=startStr+selectTime[1]+'" id="'+name+'_Minute" onchange="'+onchange+'"/> :\n';strReturn+=startStr+selectTime[2]+'" id="'+name+'_Second" onchange="'+onchange+'"/>\n';return strReturn;}
function setValueTimeInput(name,time)
{var times=parseTime(time,true);document.getElementById(name+"_Hour").value=times[0];document.getElementById(name+"_Minute").value=times[1];document.getElementById(name+"_Second").value=times[2];}
function setValueTimeSelect(name,time)
{var times=parseTime(time,true);document.getElementById(name+"_Hour").options[parseInt(times[0])].selected=true;document.getElementById(name+"_Minute").options[parseInt(times[1])].selected=true;document.getElementById(name+"_Second").options[parseInt(times[2])].selected=true;}
function updateMarkerDescSpeed(dist,distLap,timePrevLap,totaltime)
{if(timePrevLap<0){timePrevLap=0;}
var seconds_total;var seconds_lap;if(totaltime===true){seconds_total=getTimeInSeconds("tussentijd");seconds_lap=seconds_total-timePrevLap;}
else{seconds_lap=getTimeInSeconds("tussentijd_lap");seconds_total=timePrevLap+seconds_lap;}
if(seconds_total>0&&seconds_lap>0){setInnerHtmlAndExec("markerDescrSpeedTotal","("+formatSpeed(dist,seconds_total)+")");setInnerHtmlAndExec("markerDescrSpeedLap","("+formatSpeed(distLap,seconds_lap)+")");setValueTimeInput("tussentijd_lap",seconds_lap);setValueTimeInput("tussentijd",seconds_total);}}
function deleteMarkerDetails(route_id,index_id)
{gRoutes[route_id].positions[index_id].marker.closeInfoWindow();gRoutes[route_id].positions[index_id].time=-1;gRoutes[route_id].positions[index_id].description="";map.removeOverlay(gRoutes[route_id].positions[index_id].marker);gRoutes[route_id].positions[index_id].marker=createMarker(gRoutes[route_id].positions[index_id].marker.getPoint(),"POINT",true,"marker");map.addOverlay(gRoutes[route_id].positions[index_id].marker);}
function processMarkerDetails(route_id,index_id)
{updateDescriptionPosition(route_id,index_id);gRoutes[route_id].positions[index_id].marker.closeInfoWindow();if(gRoutes[route_id].positions[index_id].time>0){map.removeOverlay(gRoutes[route_id].positions[index_id].marker);gRoutes[route_id].positions[index_id].marker=createMarker(gRoutes[route_id].positions[index_id].marker.getPoint(),"POINT_DESCR",true,"marker");map.addOverlay(gRoutes[route_id].positions[index_id].marker);}}
function updateDescriptionPosition(route_id,index_id)
{var time=gRoutes[route_id].positions[index_id].time=getTimeInSeconds("tussentijd");if(time>0){gRoutes[route_id].positions[index_id].description=document.getElementById("beschrijvingMarker").value;gRoutes[route_id].positions[index_id].time=getTimeInSeconds("tussentijd");}}
function loadFullPage(load,str)
{var display=(load===true)?"block":"none";document.getElementById('fullPageTop').style.display=display;document.getElementById('fullPageContent').style.display=display;document.getElementById('fullPageBottom').style.display=display;if(load===true&&typeof(str)!=="undefined"){setInnerHtmlAndExec('fullPageText',str);}}
function getLapTimes(route_id,lapTimes,lapDist)
{var prev_lap=0,dist=0.0,distTotal=0.0,time,timePrev=0.0;for(var i=0;i<gRoutes[route_id].positions.length;i++){time=gRoutes[route_id].positions[i].time;if(time>0){dist=getDistanceFromTo(route_id,prev_lap,i);timeLap=time-timePrev;lapTimes.push(timeLap);lapDist.push(dist);prev_lap=i;timePrev=time;}}}
function showLapTimes(route_id)
{var str="<h1>Tussentijden</h1>\n";str+="<table align='center' cellspacing='7px';><tr><th>&nbsp;</th><th colspan='3'>lap</th><th colspan='3'>totaal</th></tr>\n";str+="<tr><th>#</th><th>afstand</th><th>tijd</th><th>km/u</th><th>afstand</th><th>tijd</th><th>km/u</th></tr>";var lapTimes=new Array();var lapDist=new Array();var distLap,distTotal=0.0,timeLap,timeTotal=0.0;getLapTimes(route_id,lapTimes,lapDist);for(var i=0;i<lapTimes.length;i++){distLap=lapDist[i];distTotal+=distLap;timeLap=lapTimes[i];timeTotal+=timeLap;str+="<tr><td>"+(i.toString())+"</td>";str+="<td>"+formatDistance(distLap)+"</td>";str+="<td>"+formatTime(timeLap)+"</td>";str+="<td>"+formatSpeed(distLap,timeLap)+"</td>";str+="<td>"+formatDistance(distTotal)+"</td>";str+="<td>"+formatTime(timeTotal)+"</td>";str+="<td>"+formatSpeed(distTotal,timeTotal)+"</td>";str+="</tr>\n";}
str+="</table>";loadFullPage(true,str);}
function createMarker(point,markertype,drag,titel)
{if(typeof(drag)==="undefined"){drag=true;}
var f=new GIcon();if(markertype==="START"){f.image="images/markers/mm_20_green.png";f.shadow="images/markers/mm_20_shadow.png";f.iconSize=new GSize(12,20);f.shadowSize=new GSize(22,20);f.iconAnchor=new GPoint(6,20);f.infoWindowAnchor=new GPoint(6,1);f.infoShadowAnchor=new GPoint(13,13);}
else if(markertype==="FINISH"){f.image="images/markers/mm_20_red.png";f.shadow="images/markers/mm_20_shadow.png";f.iconSize=new GSize(12,20);f.shadowSize=new GSize(22,20);f.iconAnchor=new GPoint(6,20);f.infoWindowAnchor=new GPoint(6,1);f.infoShadowAnchor=new GPoint(13,13);}
else if(markertype==="POINT"){f.infoWindowAnchor=new GPoint(4,4);f.iconAnchor=new GPoint(4,4);f.iconSize=new GSize(9,9);f.shadowSize=new GSize(1,1);f.image="images/markers/point.png";}
else if(markertype==="POINT_DESCR"){f.infoWindowAnchor=new GPoint(4,4);f.iconAnchor=new GPoint(4,4);f.iconSize=new GSize(9,9);f.shadowSize=new GSize(1,1);f.image="images/markers/point_descr.png";}
else if(markertype==="POINT_ACTIVE"){f.infoWindowAnchor=new GPoint(4,4);f.iconAnchor=new GPoint(4,4);f.iconSize=new GSize(9,9);f.shadowSize=new GSize(1,1);f.image="images/markers/point_active.png";}
var marker=new GMarker(point,{icon:f,draggable:drag,bouncy:false,title:titel});GEvent.addListener(marker,"click",function(){var result=getClosestPosition(marker.getPoint());if((clickMarkerMode===3||mode===2)&&(window.event?event.ctrlKey:CtrlKeyPressedFF)===false){if(result[1]===0){return;}
var dist=getDistanceFromTo(result[0],0,result[1]);var distAndTimeLap;distAndTimeLap=getDistanceAndTimeLap(result[0],result[1]);marker.openInfoWindowHtml("<h2>Tussentijd</h2><table><tr><td><b>Afstand:</b></td><td>"+formatDistance(dist)+"&nbsp;<span id=\"markerDescrSpeedTotal\"></span></td></tr>"+"<tr><td><b>Afstand lap:</b></td><td>"+formatDistance(distAndTimeLap[0])+"&nbsp;<span id=\"markerDescrSpeedLap\"></span></td></tr>"+"<tr><td><b>Tussentijd:</b></td><td>"+createTimeInput("tussentijd",gRoutes[result[0]].positions[result[1]].time,"updateMarkerDescSpeed("+dist+","+distAndTimeLap[0]+","+distAndTimeLap[1]+", true)")+"</td></tr>"+"<tr><td><b>Tussentijd lap:</b></td><td>"+createTimeInput("tussentijd_lap",gRoutes[result[0]].positions[result[1]].time-distAndTimeLap[1],"updateMarkerDescSpeed("+dist+","+distAndTimeLap[0]+","+distAndTimeLap[1]+", false)")+"</td></tr>"+"<tr><td valign=\"top\"><b>Beschrijving:</b></td><td><textarea type=\"text\" id=\"beschrijvingMarker\">"+gRoutes[result[0]].positions[result[1]].description+"</textarea></td></tr>"+"<tr><td align=\"center\"><input type=\"button\" value=\"Wis\" onclick=\"deleteMarkerDetails("+result[0]+","+result[1]+"); return false;\" /></td><td align=\"center\"><input type=\"button\" value=\"Sla op\" onclick=\"processMarkerDetails("+result[0]+","+result[1]+"); return false;\" /></td></tr></table>"+'<p>Laat alle <a href="#" onclick="showLapTimes('+result[0]+'); return false;">tussentijden</a> zien.');updateMarkerDescSpeed(dist,distAndTimeLap[0],distAndTimeLap[1],true);}
else if(clickMarkerMode===0||(window.event?event.ctrlKey:CtrlKeyPressedFF)){if(gRoutes[result[0]].positions[result[1]].time>0){var check=deleteOkCancel("Weet je zeker dat je een punt met tussentijden wilt verwijderen?");if(check===false){return;}}
deletePosition(result[0],result[1]);}
else if(clickMarkerMode===1){if(prevClickedMarker[0]===result[0]){deletePositionsFromTo(result[0],prevClickedMarker[1],result[1],1);prevClickedMarker[0]=-1;}
else{prevClickedMarker=result;}}
else if(clickMarkerMode===2){if(prevClickedMarker[0]===result[0]){addPositionsFromTo(result[0],prevClickedMarker[1],result[1]);prevClickedMarker[0]=-1;}
else{prevClickedMarker=result;}}
else if(clickMarkerMode===4){setActivePoint(result[0],result[1],true);setActiveRoute(result[0]);}});if(drag===true){GEvent.addListener(marker,"dragstart",function(){var result=getClosestPosition(marker.getPoint());draggedRoute=result[0];draggedMarker=result[1];});GEvent.addListener(marker,"dragend",function(){if(addPointInBetween||(window.event?event.ctrlKey:CtrlKeyPressedFF)){insertOrUpdatePosition(draggedRoute,gRoutes[draggedRoute].positions[draggedMarker].point,draggedMarker);insertOrUpdatePosition(draggedRoute,marker.getPoint(),draggedMarker+1,false);}
else{insertOrUpdatePosition(draggedRoute,marker.getPoint(),draggedMarker,false);}});if(panAlong===true){map.panTo(marker.getPoint());}}
return marker;}
function getClosestPosition(point)
{var closestPoint=0;var minDist=100.0;var dist=0.0;var route=-1;for(route_nr=0;route_nr<gRoutes.length;route_nr++){for(i=gRoutes[route_nr].positions.length-1;i>=0;i--){dist=point.distanceFrom(gRoutes[route_nr].positions[i].point);if(dist<minDist){route=route_nr;minDist=dist;closestPoint=i;}}}
return[route,closestPoint];}
function getClosestCustomPosition(point)
{var closestMarker=0;var minDist=100.0;var dist=0.0;var route=-1;for(route_nr=0;route_nr<gRoutes.length;route_nr++){for(i=0;i<gRoutes[route_nr].customPositions.length;i++){dist=point.distanceFrom(gRoutes[route_nr].customPositions[i].marker.getPoint());if(dist<minDist){route=route_nr;minDist=dist;closestMarker=i;}}}
return[route,closestMarker];}
function centerMapToPlace(place,level)
{var point=new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);centerMapToPoint(point,level);}
function centerMapToPoint(point,level)
{map.setCenter(point,level);showCoord(point);}
function addAddressToMap(response)
{if(!response||response.Status.code!==200){alert("Sorry, we were unable to geocode that address "+
((response)?"(code "+response.Status.code+")":""));}
else{var place=response.Placemark[0];centerMapToPlace(place,15);}}
function addAddressToMapNoError(response)
{if(!response||response.Status.code!==200){return;}
else{var place=response.Placemark[0];centerMapToPlace(place,15);}}
function goToHomeAddress()
{var address=document.getElementById("woonplaatsId").value+", "+document.getElementById("landId").value;geocoder.getLocations(address,addAddressToMapNoError);}
function showLocation()
{var address=document.getElementById("qId").value;geocoder.getLocations(address,addAddressToMap);}
function showCoord(point)
{if(document.getElementById("coordId")){setInnerHtmlAndExec("coordId",printDoubleWithDecimals(point.lat(),1000000)+", "+
printDoubleWithDecimals(point.lng(),1000000));}}
function showInfo(text)
{setInnerHtmlAndExec("infoId",text);}
function getPreviousPositionWithDetails(route_id,marker_id)
{var found=false;if(marker_id<=0){return marker_id;}
while(found===false&&marker_id>0){if(gRoutes[route_id].positions[marker_id].time>0){found=true;}
else{marker_id--;}}
return marker_id;}
function getDistanceAndTimeLap(route_id,marker_id)
{var distAndTime=new Array();if(route_id<gRoutes.length){var prev_marker_id=getPreviousPositionWithDetails(route_id,marker_id-1);distAndTime.push(getDistanceFromTo(route_id,prev_marker_id,marker_id));distAndTime.push(gRoutes[route_id].positions[prev_marker_id].time);}
return distAndTime;}
function getDistanceFromTo(route_id,marker_start_id,marker_id)
{var dist=0.0;if(route_id<gRoutes.length){for(var i=marker_start_id+1;i<=marker_id;i++){dist+=gRoutes[route_id].positions[i].distance;}
return dist;}
return dist;}
function formatDistance(distance)
{if(distance>1000){return printDoubleWithDecimals(Math.round(distance)/1000,100)+"km";}
else{return printDoubleWithDecimals(distance,100)+"m";}}
function formatTime(time)
{var times=parseTime(time,true);return times[0]+":"+times[1]+":"+times[2];}
function formatSpeed(distance,timeInSeconds)
{return printDoubleWithDecimals(Math.round((distance/10)/(timeInSeconds/3600))/100,100)+"km/u";}
function showDistance()
{if(mode===1||!document.getElementById("afstandId")){return;}
var distance=gRoutes[nrActiveRoute].distance;setInnerHtmlAndExec("afstandId","<b>"+formatDistance(distance)+"</b>");var time=getTimeInSeconds("tijd");gRoutes[nrActiveRoute].time=time;if(time>0){setInnerHtmlAndExec("speedId","("+formatSpeed(distance,time)+")");}
else{setInnerHtmlAndExec("speedId","");}}
function getTimeInSeconds(name)
{if(typeof(name)==="undefined"){name="tijd";}
var tijd=0;if(document.getElementById(name+"_Hour")===null){return tijd;}
if(document.getElementById(name+"_Hour").value!==""){tijd+=(parseFloat(document.getElementById(name+"_Hour").value))*3600;}
if(document.getElementById(name+"_Minute").value!==""){tijd+=(parseFloat(document.getElementById(name+"_Minute").value))*60;}
if(document.getElementById(name+"_Second").value!==""){tijd+=parseFloat(document.getElementById(name+"_Second").value);}
return tijd;}
function openSaveRouteFormWithDetails(response)
{var land="";var provincie="";var stad="";var lat=gRoutes[nrActiveRoute].positions[0].point.lat();var lng=gRoutes[nrActiveRoute].positions[0].point.lng();if(!response||response.Status.code!==200){land=provincie=stad="????";}
else
{var place=response.Placemark[0];provincie=place["AddressDetails"]["Country"]["AdministrativeArea"]["AdministrativeAreaName"];land=place["AddressDetails"]["Country"]["CountryName"];stad=place["AddressDetails"]["Country"]["AdministrativeArea"]["Locality"]["LocalityName"];if(provincie===""){provincie="????";}
if(land===""){land="????";}
if(stad===""){stad="????";}}
var time=getTimeInSeconds();loadPage('saverouteform',saveAction+'&tijd='+time+"&land="+land+"&stad="+stad+"&provincie="+provincie+"&lat="+lat+"&lng="+lng);}
function loadTrainingPage(options)
{loadPage("trainingshow",options);}
function openSaveRouteForm(action)
{if(!gRoutes[nrActiveRoute]){return showAlert("Geen route beschikbaar!");}
if(gRoutes[nrActiveRoute].positions.length===0){return showAlert("Geen punten geselecteerd");}
saveAction=action;openSaveRouteFormWithDetails();return true;}
function loadPage(page,options)
{clearElevationChart();var request=GXmlHttp.create();request.open("POST",page+".php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){if(request.readyState===4){setInnerHtmlAndExec("text",request.responseText);loginUser("update");}};request.send(options);toggleLayer("text");}
function loginUser(update)
{var request=GXmlHttp.create();request.open("POST","login.php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){if(request.readyState===4){var prevLogin=(document.getElementById("loginId")===null);setInnerHtmlAndExec("sidebarleft",request.responseText);var newLogin=(document.getElementById("loginId")===null);if(prevLogin===true&&newLogin===false&&idRouteLoaded<0&&gRoutes.length===0){goToHomeAddress();}}};if(typeof(update)!=="undefined"){request.send("id="+idRouteLoaded+"&mode="+mode+"&focus="+idWithFocus);}
else{request.send("login="+escape(document.getElementById("login").value)+"&password="+escape(document.getElementById("password").value)+"&id="+idRouteLoaded+"&mode="+mode+"&focus="+idWithFocus);}}
function searchUser(id)
{var request=GXmlHttp.create();var name=document.getElementById(id).value;request.open("POST","searchUser.php",false);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.send("name="+name);if(request.responseText.substr(0,1)!=="#"){loadFullPage(true,request.responseText);}
else
alert("Error: "+request.responseText);}
function addChallenger(challenger_id)
{var request=GXmlHttp.create();request.open("POST","addChallenger.php",false);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.send("challenger_id="+challenger_id);if(request.responseText.substr(0,1)==="#"){alert("Error: "+request.responseText);}}
function deleteChallenger(challenger_id)
{var request=GXmlHttp.create();request.open("POST","deleteChallenger.php",false);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.send("challenger_id="+challenger_id);if(request.responseText.substr(0,1)==="#"){alert("Error: "+request.responseText);}}
function logoutUser()
{var request=GXmlHttp.create();request.open("POST","logout.php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){if(request.readyState===4){setInnerHtmlAndExec("sidebarleft",request.responseText);if(false&&idWithFocus==="text"){loadPage('browse');}}};request.send(idRouteLoaded);}
function processSelectedRoutes(action)
{var selectedRoutes="";var objCheckBoxes=document.forms["browse"].elements["routeSelection"];var countCheckBoxes=objCheckBoxes.length;var nrChecked=0;for(var i=0;i<countCheckBoxes;i++)
{if(objCheckBoxes[i].checked){nrChecked=nrChecked+1;if(selectedRoutes==""){selectedRoutes+=objCheckBoxes[i].value;}
else{selectedRoutes+=","+objCheckBoxes[i].value;}}}
if(nrChecked==0){alert("Er zijn geen routes geselecteerd.");return;}
switch(action){case"show":loadRoute(selectedRoutes,1);break;case"delete_routes":deleteRoutes(selectedRoutes);break;case"delete_favorites":deleteFavorites(selectedRoutes);break;case"favorites":addFavorites(selectedRoutes);break;case"clipboard":document.getElementById("urlRoutes").value="http://www.afstandmeten.nl/index.php?id="+selectedRoutes;document.getElementById("urlRoutes").style.display="inline";break;case"merge":if(nrChecked==1)
alert("Selecteer meer dan een route om samen te voegen");loadRoute(selectedRoutes,1,undefined,undefined,undefined,undefined,"&action=merge")
break;default:alert("Actie "+action+" niet beschikbaar");break;}}
function getLoadedRouteColors()
{var str="";for(route_nr=0;route_nr<gRoutes.length;route_nr++){if(str===""){str=gRoutes[route_nr].color;}
else{str+=(","+gRoutes[route_nr].color);}}
return str;}
function getLoadedRouteIds()
{var str="";for(route_nr=0;route_nr<gRoutes.length;route_nr++){if(str===""){str=gRoutes[route_nr].id;}
else{str+=(","+gRoutes[route_nr].id);}}
return str;}
function reloadRouteSelection()
{if(isLoading===true||mode===1){return;}
var request=GXmlHttp.create();request.open("POST","routeselection.php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){if(request.readyState===4){if(request.responseText.substr(0,1)==="#"){alert(request.responseText.substr(1));idRouteLoaded=-1;return false;}
setInnerHtmlAndExec("routeselection",request.responseText);}
return true;};var ids=getLoadedRouteIds();var colors=getLoadedRouteColors();request.send("id="+ids+"&colors="+colors+"&activeRoute="+nrActiveRoute);}
function setActiveRoute(nr)
{if(nr>=0&&nr<gRoutes.length){idRouteLoaded=gRoutes[nr].id;nrActiveRoute=nr;if(gRoutes[nr].time>=0){setValueTimeSelect("tijd",gRoutes[nr].time);}
loginUser("update");showDistance();}}
function createLoadRouteString()
{var s;if(idWithFocus==="mapcontainer"){s=getFormValues("mapbrowse");var routeOptionCenterLat=escape(map.getCenter().lat());var routeOptionCenterLng=escape(map.getCenter().lng());s+="&centerlat="+routeOptionCenterLat;s+="&centerlng="+routeOptionCenterLng;}
else{s=getFormValues("browse");}
return s;}
function addRouteMarker(point,titel,route_id,distance,transport,color,html)
{var f=new GIcon();f.image="images/markers/mm_20_"+color+".png";f.shadow="images/markers/mm_20_shadow.png";var scale=Math.min(Math.floor(distance/10),13);var height=12+scale;var width=Math.floor(height*(5/3));f.iconSize=new GSize(height,width);f.shadowSize=new GSize(22,20);f.iconAnchor=new GPoint(height/2,width);f.infoWindowAnchor=new GPoint(height/2+6,width-6);f.infoShadowAnchor=new GPoint(13,13);var marker=new GMarker(point,{icon:f,draggable:false,title:titel});GEvent.addListener(marker,"click",function(){marker.openInfoWindowHtml(html);sortMarkersOnDistanceTo(searchMarkers,marker.getPoint());setInnerHtmlAndExec("routelist_full",createSearchMarkersHTML());loadRoute(route_id,1,undefined,false);});return marker;}
function deleteRoutes(ids)
{if(ids===""){alert("Geen routes geselecteerd");return false;}
var result=deleteOkCancel("Weet je zeker dat je routes "+ids+" wilt verwijderen?");if(result===false){return false;}
var request=GXmlHttp.create();request.open("POST","deleteRoute.php",false);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.send("route_ids="+ids);if(request.responseText.length>2){alert("Melding: "+request.responseText);}
idRouteLoaded=-1;loadPage('browse');return true;}
function deleteCurrentRoute(titel)
{if(idRouteLoaded===-1){alert("Geen route geladen");return false;}
var result=deleteOkCancel("Weet je zeker dat je route '"+unescape(titel)+"' wilt verwijderen?");if(result===false){return false;}
var request=GXmlHttp.create();request.open("POST","deleteRoute.php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){if(request.readyState===4){if(request.responseText.length>2){alert(request.responseText.length);}
clearPoints();changeMode(0);loginUser("update");}
showInfo(request.responseText);};request.send("route_ids="+idRouteLoaded);return true;}
function showAlert(msg)
{alert(msg);return false;}
function saveRoute(route_nr)
{if(lock===true){alert("Al bezig met opslaan route.");return false;}
if(typeof(route_nr)==="undefined"){route_nr=nrActiveRoute;}
if(document.getElementById("titelId").value===""){return showAlert("Vul eerst een titel in!");}
if(gRoutes[route_nr].positions.length===0){return showAlert("Geen punten geselecteerd");}
lock=true;var request=GXmlHttp.create();request.open("POST","saverouteform.php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){var msg="Leeg";if(request.readyState===4){lock=false;var a=request.responseText.split("|");idRouteLoaded=a[0];setInnerHtmlAndExec("text",a[1]);loginUser("update");}};var options=createSaveRouteString(route_nr);setInnerHtmlAndExec("text","De route wordt nu opgeslagen...");request.send(options);return true;}
function getFormValues(formName)
{var values='';for(var i=0;i<document.forms[formName].elements.length;i++){var formInput=document.forms[formName].elements[i];if(formInput.type==="submit"){continue;}
if(formInput.type==="radio"&&!formInput.checked){continue;}
if(values!==''){values+="&";}
values+=formInput.name;values+="=";values+=escape(formInput.value);}
return values;}
function printDoubleWithDecimals(value,decimals)
{var s=""+Math.round(value*decimals)/decimals;var index=s.indexOf(".");if(index===-1){s+=".";index=s.length+1;}
for(i=s.length-s.indexOf(".")-1;i<String(decimals).length-1;i++){s+="0";}
return s;}
function deleteOkCancel(message)
{return confirm(message);}
function getMapType(name)
{if(name==="Map"||name==="Kaart"){return G_NORMAL_MAP;}
else if(name==="Satellite"||name==="Satelliet"){return G_SATELLITE_MAP;}
else if(name==="Hybrid"||name==="Beide"){return G_HYBRID_MAP;}}
function loadMapHeader(page,options,asynchronous)
{if(typeof(asynchronous)==="undefined"){asynchronous=true;}
var request=GXmlHttp.create();if(asynchronous===true){request.open("POST",page+".php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){if(request.readyState===4){setInnerHtmlAndExec("mapheader",request.responseText);loginUser("update");}};request.send(options);}
else{request.open("POST",page+".php",false);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.send(options);if(request.readyState===4){setInnerHtmlAndExec("mapheader",request.responseText);loginUser("update");}}}
function createNewRoute()
{changeMode(0);clearPoints();loadMapHeader("showroute");clickMarkerMode=0;}
function loadRouteFromFile(filename)
{changeMode(0);clearPoints();idRouteLoaded=-1;loadMapHeader('showroute',"id=-1",false);GDownloadUrl(filename+"?t="+Math.random(),function(data,responseCode){if(responseCode===200){isLoading=true;var xml=GXml.parse(data);var center=xml.documentElement.getElementsByTagName("center");var cpoint=new GLatLng(parseFloat(center[0].getAttribute("lat")),parseFloat(center[0].getAttribute("lng")));xml=GXml.parse(data);var type=xml.documentElement.getElementsByTagName("type");var name=type[0].getAttribute("name");map.setMapType(getMapType(name));var markers=xml.documentElement.getElementsByTagName("marker");route_nr=gRoutes.length;gRoutes.push(new createRoute(defaultColor));for(var i=0;i<markers.length;i++){var point=new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));insertOrUpdatePosition(route_nr,point);}
setActivePoint(route_nr,markers.length-1,true)
markers=xml.documentElement.getElementsByTagName("custommarker");for(i=0;i<markers.length;i++){point=new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));type=markers[i].getAttribute("type");var type_url=markers[i].getAttribute("type_url");addCustomPosition(nr_route,point,type,true,type_url,false);}
isLoading=false;drawAll();autoZoomAndCenter();}
else{showInfo("Error loading xml file (code="+responseCode+")");}});}
function getPosActivePoint(route_nr)
{return gRoutes[route_nr].positions[gRoutes[route_nr].activePoint].point;}
function sortMarkersOnDistanceTo(markers,point)
{markers.sort(function(a,b){return a.getPoint().distanceFrom(point)-
b.getPoint().distanceFrom(point);});}
function createSearchMarkersHTML()
{var strHtml="<fieldset><table width='195px'><tr><th>naam</th><th>afstand</th></tr>\n";var minLength=Math.min(20,searchMarkers.length);for(i=0;i<minLength;++i){var titleAndDist=searchMarkers[i].getTitle().split("|");strHtml+="<tr><td><a href=\"#\" onclick=\"javascript:openInfoWindowSearchMarker("+i+"); return false;\">"+
titleAndDist[0]+"</a></td><td align='right'>"+titleAndDist[1]+"</td></tr>\n";}
return strHtml+"</table></fieldset>";}
function openInfoWindowSearchMarker(marker_id)
{GEvent.trigger(searchMarkers[marker_id],"click");}
function loadSearchRoutes()
{var routeOptiones="";if(mode===1){routeOptions=createLoadRouteString();}
changeMode(1);map.clearOverlays();var request=GXmlHttp.create();request.open("POST","searchRoutes.php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){if(request.readyState===4){var data=eval('('+request.responseText+')');var strHtml="<fieldset><table width='195px'><tr><th>naam</th><th>afstand</th></tr>\n";searchMarkers=new Array();for(var i=0;i<data.routes.length;i++)
{var html="<table>"+"<tr><td><b>Datum:</b></td><td>"+data.routes[i].route.datum+'</td></tr>'+'<tr><td><b>Titel:</b></td><td>'+data.routes[i].route.titel+'</td></tr>'+'<tr><td><b>Naam:</b></td><td>'+data.routes[i].route.naam+"</td></tr>"+'<tr><td><b>Afstand:</b></td><td>'+
data.routes[i].route.afstand+"km</td></tr>"+'<tr><td><b>Manier:</b></td><td>'+
data.routes[i].route.transport_naam+"</td></tr>"+'<tr><td><b>Plaats:</b></td><td>'+data.routes[i].route.plaats+","+data.routes[i].route.provincie+"</td></tr>"+"<tr><td><b>Land:</b></td><td>"+data.routes[i].route.land+"</td></tr>"+"<tr><td><b>Gezien:</b></td><td>"+
data.routes[i].route.gezien+"</td></tr></table><p />"+'<a href="#" onclick="javascript:loadRoute('+
data.routes[i].route.id+',0)">>Bewerk route</a><br>'+'<a href="#" onclick="javascript:loadPage(\'trainingform\',\'id='+
data.routes[i].route.id+'\');">>Voeg als training toe</a><br />';if(data.routes[i].route.gebruiker_id!==""){html+='<a href="#" onclick="javascript:loadPage(\'usershow\',\'userid='+
data.routes[i].route.gebruiker_id+'\');">>Ga naar profiel gebruiker</a><br>';}
var marker=addRouteMarker(new GLatLng(data.routes[i].route.lat,data.routes[i].route.lng),data.routes[i].route.titel+"|"+data.routes[i].route.afstand,data.routes[i].route.id,data.routes[i].route.afstand,data.routes[i].route.transport,data.routes[i].route.transport_kleur,html);map.addOverlay(marker);searchMarkers.push(marker);}
if(data.routes.length===1){showInfo(data.routes.length+" route geladen");}
else{showInfo(data.routes.length+" routes geladen");}
setInnerHtmlAndExec("routelist_full",createSearchMarkersHTML());}
else{showInfo("Bezig met inladen.");}};request.send(routeOptions);loadMapHeader("mapsearch",routeOptions);}
function drawRouteOnMap(data)
{isLoading=true;gRoutes.push(new createRoute(gRoutes[gRoutes.length]));var route_nr=gRoutes.length-1;gRoutes[route_nr].id=data.id;for(var i=0;i<data.points.length;i++){var point=new GLatLng(parseFloat(data.points[i].point.lat),parseFloat(data.points[i].point.lng));insertOrUpdatePosition(route_nr,point);}
for(i=0;i<data.custommarkers.length;i++){point=new GLatLng(parseFloat(data.custommarkers[i].custommarker.lat),parseFloat(data.custommarkers[i].custommarker.lng));var type=data.custommarkers[i].custommarker.type;var type_url=data.custommarkers[i].custommarker.type_url;addCustomPosition(route_nr,point,type,true,type_url,false);}
if(mode!==1){map.setMapType(getMapType(data.maptype));}
isLoading=false;return true;}
function drawEncodedRouteOnMap(data)
{isLoading=true;gRoutes.push(new createRoute(data.color));var route_nr=gRoutes.length-1;gRoutes[route_nr].id=data.id;gRoutes[route_nr].time=data.time;gRoutes[route_nr].encodedPolyLine=new GPolyline.fromEncoded({color:data.color,weight:5,opacity:0.55,points:data.encodedRoute,levels:data.levels,zoomFactor:2,numLevels:18});map.addOverlay(gRoutes[route_nr].encodedPolyLine);if(mode!==1){map.setMapType(getMapType(data.maptype));}
var length=data.points.length;for(var i=0;i<length;i++)
{var point=new GLatLng(parseFloat(data.points[i].point.lat),parseFloat(data.points[i].point.lng));insertOrUpdatePosition(route_nr,point,undefined,undefined,data.points[i].point.time,data.points[i].point.descr);if(data.points[i].point.time>0&&mode!==1){map.addOverlay(createMarker(point,"POINT_DESCR",true,"marker"));}}
if(length>0){gRoutes[route_nr].positions[0].marker=createMarker(gRoutes[route_nr].positions[0].point,"START",false,"Start");redrawMarker(route_nr,0);gRoutes[route_nr].positions[length-1].marker=createMarker(point,"FINISH",false,"Finish");redrawMarker(route_nr,data.points.length-1);}
for(i=0;i<data.custommarkers.length;i++)
{point=new GLatLng(parseFloat(data.custommarkers[i].custommarker.lat),parseFloat(data.custommarkers[i].custommarker.lng));var type=data.custommarkers[i].custommarker.type;var type_url=data.custommarkers[i].custommarker.type_url;addCustomPosition(route_nr,point,type,false,type_url,false);}
isLoading=false;return true;}
function getBounds()
{var bounds=new GLatLngBounds();for(var i=0;i<gRoutes.length;i++){for(j=0;j<gRoutes[i].positions.length;j++){bounds.extend(gRoutes[i].positions[j].point);}
for(j=0;j<gRoutes[i].customPositions.length;j++){bounds.extend(gRoutes[i].customPositions[j].marker.getPoint());}}
return bounds;}
function autoZoomAndCenter(){var bounds=getBounds();if(bounds.isEmpty()){return;}
var level=map.getBoundsZoomLevel(bounds);centerMapToPoint(bounds.getCenter(),level);}
function loadRoute(id,encoded,kmStep,zoomAndCenter,color,key,extra_param)
{if(extra_param==undefined)
extra_param="";if(encoded===0&&mode===2)
{map.clearOverlays();for(var i=0;i<gRoutes.length;i++){var length=gRoutes[i].positions.length;if(length>1){gRoutes[i].positions[0].marker=createMarker(gRoutes[i].positions[0].point,"START",true,"marker");var type=(gRoutes[i].positions[length-1].time>0)?"POINT_DESCR":"POINT";gRoutes[i].positions[length-1].marker=createMarker(gRoutes[i].positions[length-1].point,type,true,"marker");}
setActivePoint(i,gRoutes[i].positions.length-1,true);var length=gRoutes[i].customPositions.length;for(j=0;j<length;j++){gRoutes[i].customPositions[j].marker.enableDragging();}}
drawAll();mode=0;toggleLayer("mapcontainer");changeMode(0,false);loginUser("update");return true;}
if(typeof(zoomAndCenter)==="undefined"||zoomAndCenter===true){if(encoded===1){changeMode(2);}
else{changeMode(0);}
loadMapHeader('showroute',"id="+id,false);clearPoints();}
else{while(gRoutes.length>0){clearRoute(0);}}
idRouteLoaded=id;var request=GXmlHttp.create();request.open("POST","loadRoute.php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){if(request.readyState===4){if(request.responseText.substr(0,1)==="#"){alert(request.responseText.substr(1));idRouteLoaded=-1;var center=new GLatLng(52.0,5.1);map.setCenter(center,7);return false;}
var data=eval('('+request.responseText+')');for(i=0;i<data.routes.length;i++){if(i==0&&typeof(color)!="undefined"){data.routes[i].route.color=color;}
if(encoded===1){drawEncodedRouteOnMap(data.routes[i].route);}
else{drawRouteOnMap(data.routes[i].route);}}
if(encoded!==1){drawAll();}
else if(typeof(kmStep)==="undefined"){setDefaultKmSpaceValue(gRoutes[0].distance);}
if(typeof(zoomAndCenter)==="undefined"||zoomAndCenter===true){autoZoomAndCenter();}
loginUser("update");reloadRouteSelection();showDistance();manageAllKiloMarkers(kmStep);if(encoded===1){var url='<a href="index.php?cat=infoembed&id='+idRouteLoaded+'" onclick="loadPage(\'infoembed\',\'id='+idRouteLoaded+'\'); return false;">'+'Link naar deze route</a>';showInfo(url);}}
return true;};request.send("id="+id+"&encoded="+encoded+"&key="+key+extra_param);return true;}
function setDefaultKmSpaceValue(dist)
{var index=1;if(document.getElementById("kmSpace")){if(dist>200000){index=3;}
else if(gRoutes[0].distance>50000){index=2;}
else{index=1;}
document.getElementById("kmSpace").selectedIndex=index;}}
function loadEmbeddedRouteEncoded(id,kmStep)
{changeMode(4);clearPoints();idRouteLoaded=id;var request=GXmlHttp.create();request.open("POST","loadRoute.php",false);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.send("id="+id+"&encoded=1");if(request.readyState===4){if(request.responseText.substr(0,1)==="#"){alert(request.responseText.substr(1));idRouteLoaded=-1;var center=new GLatLng(routeOptionCenterLat,routeOptionCenterLng);map.setCenter(center,7);return false;}
var data=eval('('+request.responseText+')');for(i=0;i<data.routes.length;i++){drawEncodedRouteOnMap(data.routes[i].route);}
if(typeof(kmStep)==="undefined"){kmStep=1;}
autoZoomAndCenter();manageAllKiloMarkers(kmStep);}
return true;}
function createSaveRouteString(route_nr)
{if(gRoutes[route_nr].positions.length===0){alert("Maak eerst een route!");return"";}
var result='';result=getFormValues("routeform");for(i=0;i<gRoutes[route_nr].positions.length;i++){if(i===0){result+="&coordinates=";}
else{result+=';';}
result+=gRoutes[route_nr].positions[i].point.lat()+','+gRoutes[route_nr].positions[i].point.lng();result+=','+gRoutes[route_nr].positions[i].time+','+gRoutes[route_nr].positions[i].description;}
for(i=0;i<gRoutes[route_nr].customPositions.length;i++){if(i===0){result+="&custommarkers=";}
else{result+=';';}
result+=gRoutes[route_nr].customPositions[i].type+','+
gRoutes[route_nr].customPositions[i].marker.getPoint().lat()+','+
gRoutes[route_nr].customPositions[i].marker.getPoint().lng()+','+
gRoutes[route_nr].customPositions[i].type_url;}
result+="&zoom="+String(map.getZoom());result+="&center=";result+=escape(gRoutes[route_nr].positions[0].point.lat())+","+escape(gRoutes[route_nr].positions[0].point.lng());result+="&type="+map.getCurrentMapType().getName();result+="&afstand="+(gRoutes[route_nr].distance/1000);return result;}
function addOrUpdateTraining()
{loadPage('trainingform',getFormValues("trainingform"));}
function deleteTraining(id,titel)
{var result=deleteOkCancel("Weet je zeker dat je training '"+unescape(titel)+"' wilt verwijderen?");if(result===false){return false;}
var request=GXmlHttp.create();request.open("POST","deleteTraining.php",false);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.send("id="+id);if(request.responseText.length>2){alert(request.responseText);}
loadPage('trainingshow',getFormValues("trainingshow"));return true;}
function addFavorites(ids)
{var request=GXmlHttp.create();request.open("POST","addFavorite.php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){if(request.readyState===4){alert(request.responseText);}};request.send("ids="+ids);}
function deleteFavorites(ids)
{var result=deleteOkCancel("Weet je zeker dat je route(s) "+ids+" als favoriet wilt verwijderen?");if(result===false){return false;}
var request=GXmlHttp.create();request.open("POST","deleteFavorite.php",false);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.send("route_ids="+ids+"&login="+document.getElementById("loginId").value);if(request.responseText.length>2){alert(request.responseText);}
loadPage('browse',createLoadRouteString());return true;}
function resizeMap(){if(window.attachEvent){var hght=document.documentElement.clientHeight-160;var width=document.documentElement.clientWidth-230;document.getElementById("map").style.height=hght+"px";document.getElementById("map").style.width=(width-37)+"px";document.getElementById("mapheader").style.width=(width-45)+"px";document.getElementById("text").style.width=(width-71)+"px";}}
function changeMode(newmode,clear)
{clearElevationChart();if(typeof(clear)==="undefined"){clear=true;}
toggleLayer("mapcontainer");if(newmode!==mode&&clear===true){clearPoints();mode=newmode;}
var div=document.getElementById("pointtypes");if(div){div.style.display=(mode!==0)?'none':'block';}
div=document.getElementById("routelist");if(div){div.style.display=(mode!==1)?'none':'block';}}
function toggleDiv(divid,textid,nonetext,blockedtext)
{var div=document.getElementById(divid);var blocked=(div.style.display=='block');div.style.display=(blocked)?'none':'block';if(typeof(textid)!=="undefined"){setInnerHtmlAndExec(textid,(blocked)?blockedtext:nonetext);}}
function toggleLayer(layer)
{if(layer===idWithFocus){return;}
if(document.getElementById){document.getElementById(idWithFocus).style.display="none";document.getElementById(layer).style.display="block";idWithFocus=layer;}
else if(document.all){document.all["map"].style.visibility="hidden";document.all["mapheader"].style.visibility="hidden";document.all["text"].style.visibility="visible";idWithFocus=layer;}
else if(document.layers){document.layers["map"].style.visibility="hidden";document.layers["mapheader"].style.visibility="hidden";document.layers["text"].style.visibility="visible";idWithFocus=layer;}}
function initMapSearch()
{}
function initTextSearch()
{}
function createSendPasswordString()
{return getFormValues("formSendPassword");}
function deleteKiloMarkersFromIndex(route_nr,index)
{for(i=gRoutes[route_nr].kiloMarkerArray.length-1;i>=index;i--){map.removeOverlay(gRoutes[route_nr].kiloMarkerArray[i]);delete gRoutes[route_nr].kiloMarkerArray[i];gRoutes[route_nr].kiloMarkerArray.pop();}}
function manageKiloMarkers(route_nr,startindex){if(document.getElementById("kmSpace")===null){return;}
var kmStep=eval(document.getElementById("kmSpace").value);manageKiloMarkersWithKmStep(route_nr,startindex,kmStep);}
function manageAllKiloMarkers(kmStep)
{if(typeof(kmStep)==="undefined"){if(document.getElementById("kmSpace")!==null){kmStep=document.getElementById("kmSpace").value;}
else{kmStep=1;}}
for(var i=0;i<gRoutes.length;i++){manageKiloMarkersWithKmStep(i,0,kmStep);}}
function manageKiloMarkersWithKmStep(route_nr,startindex,kmStep){if(typeof(startindex)==="undefined"){startindex=0;}
var f=new GIcon();f.shadow="images/markers/mm_20_shadow.png";f.iconSize=new GSize(17,17);f.shadowSize=new GSize(22,20);f.iconAnchor=new GPoint(6,20);f.infoWindowAnchor=new GPoint(6,1);f.infoShadowAnchor=new GPoint(13,13);locDist=0;var deletedmarkers=false;if(kmStep==="0"||kmStep===0){deleteKiloMarkersFromIndex(route_nr,0);}
else
{for(index=1;index<gRoutes[route_nr].positions.length;index++){distance=gRoutes[route_nr].positions[index].distance;kilo=Math.floor(locDist/1000);locDist+=distance;if(deletedmarkers===false&&index>=startindex){deleteKiloMarkersFromIndex(route_nr,(kilo/kmStep));deletedmarkers=true;}
for(i=kilo;i<=Math.min(1000,Math.floor(locDist/1000));i++)
{if(parseInt(i/kmStep,10)>gRoutes[route_nr].kiloMarkerArray.length){subdist=i*1000-(locDist-distance);point=gRoutes[route_nr].positions[index].point;prevpoint=gRoutes[route_nr].positions[index-1].point;var lat=prevpoint.lat()+(subdist/distance)*(point.lat()-prevpoint.lat());var lng=prevpoint.lng()+(subdist/distance)*(point.lng()-prevpoint.lng());var point=new GLatLng(lat,lng);f.image="images/markers/mile_"+(i%100)+".png";var marker=new GMarker(point,{icon:f,draggable:false,bouncy:false,title:i+'Km'});map.addOverlay(marker);gRoutes[route_nr].kiloMarkerArray.push(marker);}}}}
if(kmStep>0){deleteKiloMarkersFromIndex(route_nr,(Math.floor(locDist/1000)/kmStep)+1);}}
function exportTraining(values)
{loadPage("exportTraining",values);}
function printMap(id)
{window.open('print.php?id='+id);}
function setClickMarkerMode(mode)
{var src1="images/point_click_multiple_ticked.png";var src2="images/route_add_ticked.png";var src3="images/point_tag_ticked.png";var src4="images/point_active_ticked.png";var title1="Wanneer je twee punten aanklikt, worden alle tussenliggende punten verwijderd.";var title2="Wanneer je twee punten aanklikt, worden alle tussenliggende punten aan het einde van de route toegevoegd (ronde of zelfde weg terug naar huis)";var title3="Bij klikken punt kan je tussentijden toevoegen";var title4="Bij klikken punt, wordt dat punt actief (nieuwe punten worden na dit punt toegevoegd)";if(clickMarkerMode!==0){switch(clickMarkerMode){case 1:setInnerHtmlAndExec("point_click_multiple",createImageHtml(src1.replace("_ticked",""),title1,"setClickMarkerMode(1)"));break;case 2:setInnerHtmlAndExec("route_add",createImageHtml(src2.replace("_ticked",""),title2,"setClickMarkerMode(2)"));break;case 3:setInnerHtmlAndExec("point_tag",createImageHtml(src3.replace("_ticked",""),title3,"setClickMarkerMode(3)"));break;case 4:setInnerHtmlAndExec("point_active",createImageHtml(src4.replace("_ticked",""),title4,"setClickMarkerMode(4)","align=left"));break;default:break;}}
switch(mode)
{case 1:setInnerHtmlAndExec("point_click_multiple",createImageHtml(src1,title1,"setClickMarkerMode(0)"));break;case 2:setInnerHtmlAndExec("route_add",createImageHtml(src2,title2,"setClickMarkerMode(0)"));break;case 3:setInnerHtmlAndExec("point_tag",createImageHtml(src3,title3,"setClickMarkerMode(0)"));break;case 4:setInnerHtmlAndExec("point_active",createImageHtml(src4,title4,"setClickMarkerMode(0)","align=left"));break;default:break;}
clickMarkerMode=mode;prevClickedMarker[0]=-1;}
function createImageHtml(src,title,onclick,extra)
{var extra_s=(typeof(extra)==="undefined"?"":extra);return'<img '+extra_s+' onclick="'+onclick+'" src="'+src+'" title="'+title+'" />';}
function switchPointCenter()
{var title="Bij toevoegen punt wordt kaart gecentreerd op punt";var src="images/point_center_ticked.png";panAlong=(!panAlong);if(panAlong===false){src=src.replace("_ticked","");}
setInnerHtmlAndExec("point_center",createImageHtml(src,title,"switchPointCenter()"));}
function switchShowTextWithMarker(){var title="Toon adresgegevens bij elk nieuw punt";var src="images/point_text_ticked.png";showTextWithMarker=(!showTextWithMarker);if(showTextWithMarker===false){src=src.replace("_ticked","");}
setInnerHtmlAndExec("point_text",createImageHtml(src,title,"switchShowTextWithMarker()"));}
function switchElevationChart(){if(mode!=2){alert("Route profiel alleen beschikbaar voor geladen routes.");return;}
else if(gRoutes.length!=1){alert("Route profiel alleen beschikbaar wanneer 1 route geladen is.");return;}
var title="Laat route profiel zien";var src="images/route_profile_ticked.png";drawElevationChart=!drawElevationChart;if(drawElevationChart==false){src=src.replace("_ticked","");}
setInnerHtmlAndExec("draw_elevation",createImageHtml(src,title,"switchElevationChart()"));setupElevationChart(drawElevationChart);}
function setupElevationChart(drawElevationChart)
{if(drawElevationChart===true){if(routeElevationChart!==getLoadedRouteIds()){createRouteProfile();}
document.getElementById('map').style.bottom="180px";document.getElementById('elevationchart').style.display="block";}
else{document.getElementById('map').style.bottom="20px";document.getElementById('elevationchart').style.display="none";}}
function clearElevationChart()
{if(drawElevationChart===true)
{switchElevationChart();}}
function createRouteProfile()
{var request=GXmlHttp.create();request.open("POST","elevationchart.php",true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.onreadystatechange=function(){if(request.readyState===4){if(request.responseText.substr(0,1)==="#"){alert(request.responseText.substr(1));return false;}
setInnerHtmlAndExec("elevationchart",request.responseText);}
return true;};setInnerHtmlAndExec("elevationchart","<center><br /><br />Laden.....</center>");routeElevationChart=getLoadedRouteIds();request.send("id="+routeElevationChart+"&width="+document.getElementById("map").offsetWidth);}
function switchPlanRoute()
{var title="Wanneer je een punt toevoegt wordt gelijk een route gepland en alle tussenliggende punten toegevoegd";var src="images/route_plan_ticked.png";planRoute=(!planRoute);if(planRoute===false){src=src.replace("_ticked","");}
setInnerHtmlAndExec("route_plan",createImageHtml(src,title,"switchPlanRoute()"));}
function switchAddPointInBetween()
{var title="Bij verplaatsen punt wordt nieuw punt tussengevoegd (CTRL-)";var src="images/point_insert_ticked.png";addPointInBetween=(!addPointInBetween);if(addPointInBetween===false){src=src.replace("_ticked","");}
setInnerHtmlAndExec("point_insert",createImageHtml(src,title,"switchAddPointInBetween()"));}
function switchShowKnooppunten()
{var title="Laat (op laag zoomniveau) fietsknooppunten zien";var src="images/knooppunt_button_ticked.png";showKnooppunten=!showKnooppunten;if(showKnooppunten===false){src=src.replace("_ticked","");}
setInnerHtmlAndExec("show_knooppunten",createImageHtml(src,title,"switchShowKnooppunten()","align=left"));setupKnooppuntenMarkers(showKnooppunten);}
function getKnooppuntIcon(nr){var icon=new GIcon();var istr=nr; if(nr<10 && nr.length < 2){istr="0"+nr;}
if(nr>=10&&nr<100){istr=nr;}
if(nr>=100){istr=nr%100;}
icon.image="images/knooppunten/kn"+istr+".png";icon.iconSize=new GSize(32,32);icon.iconAnchor=new GPoint(16,32);icon.infoWindowAnchor=new GPoint(16,32);return icon;}
function getKnooppuntMarkers(){var request=GXmlHttp.create();request.open("POST","knooppunten.php",false);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.send("");if(request.responseText.length>2){var data=eval('('+request.responseText+')');var batch=[];for(var i=0;i<data.length;i++){batch.push(new GMarker(new GLatLng(data[i].lat,data[i].lng),{icon:getKnooppuntIcon(data[i].nr),title:data[i].naam}));}
return batch;}
alert("Kan knooppunten niet ophalen.");return null;}
function setupKnooppuntenMarkers(activate){mgrKnooppunten.clearMarkers();if(activate===true){mgrKnooppunten.addMarkers(getKnooppuntMarkers(),12);mgrKnooppunten.refresh();}}
function validRegistrationForm()
{var frmFields=("curlogin,naam,email,land,woonplaats,paswoord,paswoord2").split(/,/);var errMsg="";for(i in frmFields)
{if(document.getElementById(frmFields[i]+"Id").value===""){errMsg+="\nNog niet ingevuld : "+frmFields[i];}}
if(errMsg!==""){alert("Een aantal verplichte velden zijn nog niet ingevuld:"+errMsg);return false;}
return true;}
GetMouseUpCtrlKeyFF();function GetMouseUpCtrlKeyFF(){try
{window.addEventListener('mouseup',function(e)
{CtrlKeyPressedFF=e.ctrlKey;},true);}
catch(ie){}}
var timer;function startTimer()
{timer=new Date();}
function getElapsedTime()
{return(new Date()-timer);}
function debugAll(){for(route_nr=0;route_nr<gRoutes.length;route_nr++)
{var msg="route "+route_nr+"\npoints: \n";for(i=0;i<gRoutes[route_nr].positions.length;i++)
{msg+=i+" - "+gRoutes[route_nr].positions[i].point.lat()+" - "+gRoutes[route_nr].positions[i].point.lng()+"\n";}
msg+="\ndistances: \n";for(i=0;i<gRoutes[route_nr].positions.length;i++)
{msg+=i+" - "+gRoutes[route_nr].positions[i].distance+"\n";}
msg+="\ndistance: "+gRoutes[route_nr].distance+"\n";msg+="custom points: \n";for(i=0;i<gRoutes[route_nr].customPositions.length;i++)
{msg+=i+" - "+gRoutes[route_nr].customPositions[i].marker.getPoint().lat()+" - "+
gRoutes[route_nr].customPositions[i].marker.getPoint().lng()+"\n";}
GLog.write(msg);}}
function setInnerHtmlAndExec(divId,innerHTML)
{var div=document.getElementById(divId);if(div){div.innerHTML=innerHTML;var x=div.getElementsByTagName("script");for(var i=0;i<x.length;i++){eval(x[i].text);}}
else{GLog.write("div "+divId+" bestaat niet");}}
if(document.layers){document.captureEvents(Event.MOUSEMOVE);document.onmousemove=captureMousePosition;}else if(document.all){document.onmousemove=captureMousePosition;}else if(document.getElementById){document.onmousemove=captureMousePosition;}
xMousePos=0;yMousePos=0;xMousePosMax=0;yMousePosMax=0;function captureMousePosition(e){if(document.layers){xMousePos=e.pageX;yMousePos=e.pageY;xMousePosMax=window.innerWidth+window.pageXOffset;yMousePosMax=window.innerHeight+window.pageYOffset;}else if(document.all){xMousePos=window.event.x+document.body.scrollLeft;yMousePos=window.event.y+document.body.scrollTop;xMousePosMax=document.body.clientWidth+document.body.scrollLeft;yMousePosMax=document.body.clientHeight+document.body.scrollTop;}else if(document.getElementById){xMousePos=e.pageX;yMousePos=e.pageY;xMousePosMax=window.innerWidth+window.pageXOffset;yMousePosMax=window.innerHeight+window.pageYOffset;}}
function regenerate()
{window.location.reload()}
function regenerate2()
{if(document.layers){appear()
setTimeout("window.onresize=regenerate",450)}}
function changetext(whichcontent){if(document.all||document.getElementById)
{cross_el=document.getElementById?document.getElementById("descriptions"):document.all.descriptions;cross_el.innerHTML=whichcontent;cross_el.style.top=(yMousePos-250)+'px';cross_el.style.left=(xMousePos-500)+'px';}
else if(document.layers){document.d1.document.d2.document.write(whichcontent)
document.d1.document.d2.document.close()}}
function reset()
{if(document.all||document.getElementById){cross_el=document.getElementById?document.getElementById("descriptions"):document.all.descriptions
cross_el.innerHTML=''
cross_el.style.left=(-2000)+'px';}
else if(document.layers){document.d1.document.d2.document.write('')
document.d1.document.d2.document.close()}}
function appear(){document.d1.visibility='show'}
function Rectangle(point,html){this.point_=point;this.html_=html;this.color_="white";}
Rectangle.prototype=new GOverlay();Rectangle.prototype.initialize=function(map){var div=document.createElement("div");div.style.border="1px solid gray";div.style.position="absolute";div.innerHTML=this.html_;var z=GOverlay.getZIndex(this.point_.lat());div.style.zIndex=1;map.getPane(G_MAP_FLOAT_PANE).appendChild(div);this.map_=map;this.div_=div;}
Rectangle.prototype.remove=function(){this.div_.parentNode.removeChild(this.div_);}
Rectangle.prototype.copy=function(){return new Rectangle(this.point_,this.html_,this.color_);}
Rectangle.prototype.redraw=function(force){if(!force)return;var c1=this.map_.fromLatLngToDivPixel(this.point_);this.div_.style.width="200px";this.div_.style.height="30px";this.div_.style.left=(c1.x+10)+"px";this.div_.style.top=(c1.y-40)+"px";this.div_.style.padding="2px";this.div_.style.background=this.color_;}
window.onload=regenerate2