From: Subject: Date: Sat, 19 Aug 2006 19:45:41 +0200 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C6C3C8.0D9D5C90" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C6C3C8.0D9D5C90 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.gpsvisualizer.com/display/1156009273-19871-ip5452c123.speed.planet.nl.html =EF=BB=BF
Tracks: =
- = AM060718=20
Map created by GPSVisualizer.com
------=_NextPart_000_0000_01C6C3C8.0D9D5C90 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.gpsvisualizer.com/misc/google_maps/crosshair.gif R0lGODlhDwAPAJECAAAAAMzMzP///wAAACH5BAEAAAIALAAAAAAPAA8AAAImlB8Qx53b4otSUWcv AzR473wJQJJHWYoQIlKchmTwBAv0LGv3UQAAOw== ------=_NextPart_000_0000_01C6C3C8.0D9D5C90 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://maps.google.com/maps?v=2&file=api&key=ABQIAAAAaG9JDbCe6Ra1Og0hKCn2LRRokW_ItEImBo7ewbVEJAzstSsRWhRJ3RMDAWpL55QacGZ2zQF2kLC_eA var G_INCOMPAT =3D false;function GScript(src) {document.write('<' + = 'script src=3D"' + src + '"' +' type=3D"text/javascript"><' + = '/script>');}function GBrowserIsCompatible() {if (G_INCOMPAT) return = false;if (!window.RegExp) return false;var AGENTS =3D = ["opera","msie","safari","firefox","netscape","mozilla"];var agent =3D = navigator.userAgent.toLowerCase();for (var i =3D 0; i < AGENTS.length; = i++) {var agentStr =3D AGENTS[i];if (agent.indexOf(agentStr) !=3D -1) = {var versionExpr =3D new RegExp(agentStr + "[ = \/]?([0-9]+(\.[0-9]+)?)");var version =3D 0;if (versionExpr.exec(agent) = !=3D null) {version =3D parseFloat(RegExp.$1);}if (agentStr =3D=3D = "opera") return version >=3D 7;if (agentStr =3D=3D "safari") return = version >=3D 125;if (agentStr =3D=3D "msie") return (version >=3D 5.5 = &&agent.indexOf("powerpc") =3D=3D -1);if (agentStr =3D=3D "netscape") = return version > 7;}}return document.getElementById;}function GLoad() = {if (!GValidateKey("68916fc8b44226068edec1b544240cecb52b115a")) = {G_INCOMPAT =3D true;alert("The Google Maps API key used on this web = site was registered for a different web site. You can generate a new key = for this web site at = http://www.google.com/apis/maps/.");return;}GLoadApi(["http://mt0.google.= com/mt?n=3D404&v=3Dap.23&","http://mt1.google.com/mt?n=3D404&v=3Dap.23&",= "http://mt2.google.com/mt?n=3D404&v=3Dap.23&","http://mt3.google.com/mt?n= =3D404&v=3Dap.23&"], = ["http://kh0.google.com/kh?n=3D404&v=3D9&","http://kh1.google.com/kh?n=3D= 404&v=3D9&","http://kh2.google.com/kh?n=3D404&v=3D9&","http://kh3.google.= com/kh?n=3D404&v=3D9&"], = ["http://mt0.google.com/mt?n=3D404&v=3Dapt.24&","http://mt1.google.com/mt= ?n=3D404&v=3Dapt.24&","http://mt2.google.com/mt?n=3D404&v=3Dapt.24&","htt= p://mt3.google.com/mt?n=3D404&v=3Dapt.24&"],"ABQIAAAAaG9JDbCe6Ra1Og0hKCn2= LRRokW_ItEImBo7ewbVEJAzstSsRWhRJ3RMDAWpL55QacGZ2zQF2kLC_eA","");}function= GUnload() {if (window.GUnloadApi) {GUnloadApi();}}var _mFlags =3D = {};var _mHost =3D "http://maps.google.com";var _mUri =3D "/maps";var = _mDomain =3D "google.com";var _mStaticPath =3D = "http://www.google.com/intl/en_ALL/mapfiles/";var _mTermsUrl =3D = "http://www.google.com/intl/en_ALL/help/terms_local.html";var _mTerms = =3D "Terms of Use";var _mMapMode =3D "Map";var _mMapModeShort =3D = "Map";var _mMapError =3D "We are sorry, but we don\'t have maps at this = zoom level for this region.

Try zooming out for a broader = look.

";var _mSatelliteMode =3D "Satellite";var _mSatelliteModeShort = =3D "Sat";var _mSatelliteError =3D "We are sorry, but we don\'t have = imagery at this zoom level for this region.

Try zooming out for a = broader look.

";var _mHybridMode =3D "Hybrid";var _mHybridModeShort = =3D "Hyb";var _mSatelliteToken =3D = "fzwq1CUmlwqKZa8MYwOQYFtqd5McDNQz97cZkA";var _mZoomIn =3D "Zoom In";var = _mZoomOut =3D "Zoom Out";var _mZoomSet =3D "Click to set zoom level";var = _mZoomDrag =3D "Drag to zoom";var _mPanWest =3D "Go left";var _mPanEast = =3D "Go right";var _mPanNorth =3D "Go up";var _mPanSouth =3D "Go = down";var _mLastResult =3D "Return to the last result";var _mMapCopy =3D = "Map data ©2006 ";var _mSatelliteCopy =3D "Imagery ©2006 ";var = _mGoogleCopy =3D "©2006 Google";var _mKilometers =3D "km";var = _mMiles =3D "mi";var _mMeters =3D "m";var _mFeet =3D "ft";var = _mPreferMetric =3D false;var _mUsePrintLink =3D 'To see all the details = that are visible on the screen,use the "Print" link next to the = map.';var _mPrintSorry =3D '';var _mMapPrintUrl =3D = 'http://www.google.com/mapprint';var _mPrint =3D 'Print';var _mOverview = =3D 'Overview';var _mStart =3D 'Start';var _mEnd =3D 'End';var _mStep = =3D 'Step';var _mHideAllMaps =3D 'Hide Maps';var _mShowAllMaps =3D 'Show = All Maps';var _mUnHideMaps =3D 'Show Maps';var _mShowLargeMap =3D 'Show = original map view.';var _mmControlTitle =3D null;var _mAutocompleteFrom = =3D 'from';var _mAutocompleteTo =3D 'to';var _mAutocompleteNearRe =3D = '^(?:(?:.*?)\s+)(?:(?:in|near|around|close to):?\s+)(.+)$';var = _mSvgEnabled =3D true;var _mSvgForced =3D false;var _mLogInfoWinExp =3D = 'false';function GLoadMapsScript() {if (GBrowserIsCompatible()) = {GScript("http://maps.google.com/mapfiles/maps2.60.api.js");}}GLoadMapsSc= ript(); ------=_NextPart_000_0000_01C6C3C8.0D9D5C90 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.gpsvisualizer.com/misc/google_maps/functions.js /* FUNCTIONS FOR DRAWING GOOGLE MAPS WITH GPS VISUALIZER = (http://www.gpsvisualizer.com/) */=0A= =0A= =0A= // Define parameters of different marker types=0A= var gv_icons =3D {=0A= circle: { is:[15,15],ia:[7,7],ss:[15,15],iwa:[12,4],isa:[7,11],im:[5,2, = 9,2, 12,5, 12,9, 9,12, 5,12, 2,9, 2,5],letters:true }=0A= ,pin: { is:[15,26],ia:[7,25],ss:[30,26],iwa:[7,1],isa:[12,16],im:[5,25, = 5,15, 2,13, 1,12, 0,10, 0,5, 1,2, 2,1, 4,0, 10,0, 12,1, 13,2, 14,4, = 14,10, 13,12, 12,13, 9,15, 9,25, 5,25 ],letters:true }=0A= ,square: { = is:[15,15],ia:[7,7],ss:[15,15],iwa:[12,4],isa:[7,11],im:[3,3, 11,3, = 11,11, 3,11, 3,3],letters:true }=0A= ,triangle: { = is:[15,15],ia:[7,7],ss:[15,15],iwa:[12,4],isa:[7,11],im:[1,12, 7,1, = 13,12, 1,12],letters:false }=0A= ,diamond: { = is:[15,15],ia:[7,7],ss:[15,15],iwa:[12,4],isa:[7,11],im:[7,1, 13,7, = 7,13, 1,7, 7,1],letters:false }=0A= ,google: { = is:[20,34],ia:[9,34],ss:[37,34],iwa:[9,2],isa:[18,25],letters:true }=0A= ,googleblank: { = is:[20,34],ia:[9,34],ss:[37,34],iwa:[9,2],isa:[18,25],letters:true }=0A= ,googlemini: { = is:[12,20],ia:[6,20],ss:[22,20],iwa:[5,1],isa:[10,15],letters:true }=0A= }=0A= =0A= // Make sure defaults have been set; if not, things break.=0A= if (!self.gv_marker_icon || !gv_icons[gv_marker_icon]) { gv_marker_icon = =3D (self.default_icon_style) ? default_icon_style : 'pin'; }=0A= if (!self.gv_marker_color) { gv_marker_color =3D = (self.default_icon_color) ? default_icon_color : 'red'; }=0A= if (!self.gv_api_version) { gv_api_version =3D (self.google_api_version) = ? google_api_version : 0; }=0A= if (!self.gv_marker_link_target) { gv_marker_link_target =3D = (self.marker_link_target) ? marker_link_target : '_blank'; }=0A= if (!self.gv_maptypecontrol_style) { gv_maptypecontrol_style =3D = (self.maptypecontrol_style) ? maptypecontrol_style : 'menu'; }=0A= if (self.gv_filter_map_types=3D=3Dnull) { gv_filter_map_types =3D = (self.filter_map_types!=3Dnull) ? filter_map_types : 1; }=0A= =0A= // Create a default icon for all markers=0A= var defaultIcon =3D new GIcon();=0A= defaultIcon.image =3D = 'http://www.gpsvisualizer.com/misc/google_maps/icons/'+gv_marker_icon+'/'= +gv_marker_color+'.png';=0A= defaultIcon.transparent =3D = 'http://www.gpsvisualizer.com/misc/google_maps/icons/'+gv_marker_icon+'/'= +gv_marker_color+'-t.png';=0A= defaultIcon.shadow =3D = 'http://www.gpsvisualizer.com/misc/google_maps/icons/'+gv_marker_icon+'/s= hadow.png';=0A= defaultIcon.iconSize =3D new = GSize(gv_icons[gv_marker_icon]['is'][0],gv_icons[gv_marker_icon]['is'][1]= );=0A= defaultIcon.iconAnchor =3D new = GPoint(gv_icons[gv_marker_icon]['ia'][0],gv_icons[gv_marker_icon]['ia'][1= ]);=0A= defaultIcon.shadowSize =3D new = GSize(gv_icons[gv_marker_icon]['ss'][0],gv_icons[gv_marker_icon]['ss'][1]= );=0A= defaultIcon.infoWindowAnchor =3D new = GPoint(gv_icons[gv_marker_icon]['iwa'][0],gv_icons[gv_marker_icon]['iwa']= [1]);=0A= defaultIcon.infoShadowAnchor =3D new = GPoint(gv_icons[gv_marker_icon]['isa'][0],gv_icons[gv_marker_icon]['isa']= [1]);=0A= defaultIcon.imageMap =3D (gv_icons[gv_marker_icon]['im']) ? = gv_icons[gv_marker_icon]['im'] : [ 0,0, = 0,gv_icons[gv_marker_icon]['is'][1]-1, = gv_icons[gv_marker_icon]['is'][0]-1,gv_icons[gv_marker_icon]['is'][1]-1, = gv_icons[gv_marker_icon]['is'][0]-1,0, 0,0 ];=0A= =0A= // Set up some styles=0A= document.writeln(' ');=0A= document.writeln(' ');=0A= =0A= function = GV_Marker(map,marker_info,lon,name,desc,url,color,style,width,label_id) {=0A= =0A= // The old "GV_Marker" function had everything in a particular order; = this new one uses more user-friendly named parameters.=0A= // If the second argment has a 'lat' item INSIDE of it, then it's the = new version; otherwise that's just the latitude.=0A= var m =3D {};=0A= if (marker_info['lat']) {=0A= m =3D marker_info;=0A= if (m['style'] && !m['icon']) { m['icon'] =3D m['style']; } // this = one changed recently=0A= } else {=0A= m['lat'] =3D marker_info; m['lon'] =3D lon; m['name'] =3D name; = m['desc'] =3D desc; m['url'] =3D url; m['color'] =3D color; m['icon'] = =3D style; m['width'] =3D width; m['label_id'] =3D label_id;=0A= }=0A= =0A= var tempIcon =3D new GIcon(defaultIcon);=0A= if (m['icon'] || m['color'] || m['letter']) {=0A= var icon =3D (m['icon'] && gv_icons[m['icon']]) ? m['icon'] : = gv_marker_icon;=0A= var color =3D (m['color']) ? m['color'] : gv_marker_color;=0A= var transparent_icon =3D color+'-t.png';=0A= tempIcon.image =3D = 'http://www.gpsvisualizer.com/misc/google_maps/icons/'+icon+'/'+color+'.p= ng';=0A= tempIcon.shadow =3D = 'http://www.gpsvisualizer.com/misc/google_maps/icons/'+icon+'/shadow.png'= ;=0A= tempIcon.iconSize =3D new = GSize(gv_icons[icon]['is'][0],gv_icons[icon]['is'][1]);=0A= tempIcon.iconAnchor =3D new = GPoint(gv_icons[icon]['ia'][0],gv_icons[icon]['ia'][1]);=0A= tempIcon.shadowSize =3D new = GSize(gv_icons[icon]['ss'][0],gv_icons[icon]['ss'][1]);=0A= tempIcon.infoWindowAnchor =3D new = GPoint(gv_icons[icon]['iwa'][0],gv_icons[icon]['iwa'][1]);=0A= tempIcon.infoShadowAnchor =3D new = GPoint(gv_icons[icon]['isa'][0],gv_icons[icon]['isa'][1]);=0A= tempIcon.imageMap =3D (gv_icons[icon]['im']) ? gv_icons[icon]['im'] : = [ 0,0, 0,gv_icons[icon]['is'][1]-1, = gv_icons[icon]['is'][0]-1,gv_icons[icon]['is'][1]-1, = gv_icons[icon]['is'][0]-1,0, 0,0 ];=0A= if (m['letter']) {=0A= // tempIcon.label =3D { = url:'http://www.gpsvisualizer.com/misc/google_maps/icons/'+icon+'/transpa= rent-'+m['letter'].toUpperCase()+'.png', anchor:new GPoint(0,0), = size:new GSize(gv_icons[icon]['is'][0],gv_icons[icon]['is'][1]) }; // = makes big gray boxes in IE!=0A= tempIcon.transparent =3D = 'http://www.gpsvisualizer.com/misc/google_maps/icons/'+icon+'/transparent= -'+m['letter'].toUpperCase()+'.png'; // not the most kosher solution, = but it seems to work=0A= } else {=0A= tempIcon.transparent =3D = 'http://www.gpsvisualizer.com/misc/google_maps/icons/'+icon+'/'+color+'-t= .png';=0A= }=0A= }=0A= var marker =3D (gv_api_version > 1) ? new GMarker( new = GLatLng(m['lat'],m['lon']), {icon:tempIcon, draggable:false} ) : new = GMarker( new GPoint(m['lon'],m['lat']), tempIcon );=0A= var text =3D '';=0A= if (m['name']) {=0A= if (m['url'] && m['url'] !=3D null) { text =3D text + ''+m['name']+''; }=0A= else { text =3D text + ''+m['name']+''; }=0A= }=0A= if (m['desc']) {=0A= text =3D text + '
'+m['desc']+'';=0A= }=0A= var max_width =3D (gv_api_version > 1) ? map.getSize().width - 100 : = 600;=0A= var width =3D (eval(m['width']) > 200 && eval(m['width']) <=3D = max_width) ? 'width:'+m['width']+'px;' : ''; // apparently you can't = make it less than 217 (let's leave 17 for the close box though)=0A= var info_html =3D '
'+text+'
';=0A= if (text) { GEvent.addListener(marker, "click", function(){ = marker.openInfoWindowHtml(info_html, {maxWidth:max_width}); }); }=0A= map.addOverlay(marker);=0A= =0A= if (m['name']) {=0A= if (m['label'] || m['label_id']) { // draw a permanent label=0A= var label_text =3D (m['label']) ? m['label'] : m['name'];=0A= var label =3D new ELabel(new = GLatLng(m['lat'],m['lon']),label_text,"gv_label",new = GSize(7,8),100,false,m['label_id']);=0A= map.addOverlay(label);=0A= } else { // do tooltips instead=0A= if (eval(gv_api_version) > 1) {=0A= // v2 tooltips, adapted from = http://www.econym.demon.co.uk/googlemaps/tooltips4.htm=0A= if (!document.getElementById('gv_tooltip')) { tooltip =3D = GV_Initialize_Marker_Tooltip(map); } // initialize it if it hasn't been = done yet=0A= marker.tooltip =3D '
'+m['name']+'
';=0A= GEvent.addListener(marker,'mouseover', function() { = GV_Create_Marker_Tooltip(map,marker); });=0A= GEvent.addListener(marker,'mouseout', function() { = tooltip.style.visibility =3D 'hidden' });=0A= } else {=0A= // v1 tooltips, adapted from = http://www.econym.demon.co.uk/googlemaps1/tooltips.htm=0A= var topElement =3D marker.images[0];=0A= if (marker.iconImage) { topElement =3D marker.iconImage; }=0A= if (marker.transparentIcon) { topElement =3D marker.transparentIcon; = }=0A= if (marker.imageMap) { topElement =3D marker.imageMap; }=0A= topElement.setAttribute("title",m['name']);=0A= }=0A= }=0A= }=0A= marker.name =3D (m['name']) ? m['name'] : '[unnamed]';=0A= marker.desc =3D (m['desc']) ? m['desc'] : '';=0A= marker.html =3D info_html;=0A= marker.color =3D (m['color']) ? m['color'] : gv_marker_color;=0A= marker.image =3D tempIcon.image;=0A= marker.coords =3D new GLatLng(m['lat'],m['lon']);=0A= =0A= if (self.gv_marker_list_options) {=0A= var map_name =3D (gv_marker_list_options['map']) ? = gv_marker_list_options['map'] : 'gmap';=0A= var marker_array_name =3D (gv_marker_list_options['array']) ? = gv_marker_list_options['array'] : 'wpts';=0A= var marker_array =3D eval(marker_array_name);=0A= alert ('marker_array =3D '+marker_array);=0A= gv_marker_list_html +=3D = GV_Marker_List_Link(marker,map_name,marker_array_name+'['+(marker_array.l= ength)+']');=0A= }=0A= return marker;=0A= }=0A= =0A= function GV_Initialize_Marker_Tooltip(map) {=0A= var tt =3D document.createElement('div');=0A= map.getPane(G_MAP_FLOAT_PANE).appendChild(tt);=0A= tt.id =3D 'gv_tooltip';=0A= tt.style.visibility =3D 'hidden';=0A= return (tt);=0A= }=0A= =0A= function GV_Create_Marker_Tooltip(map,marker) {=0A= // copied almost verbatim from = http://www.econym.demon.co.uk/googlemaps/tooltips4.htm=0A= tooltip.innerHTML =3D marker.tooltip;=0A= var = point=3Dmap.getCurrentMapType().getProjection().fromLatLngToPixel(map.fro= mDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());=0A= var = offset=3Dmap.getCurrentMapType().getProjection().fromLatLngToPixel(marker= .getPoint(),map.getZoom());=0A= var anchor=3Dmarker.getIcon().iconAnchor;=0A= var width=3Dmarker.getIcon().iconSize.width;=0A= var height=3Dtooltip.clientHeight;=0A= var pos =3D new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x = - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); =0A= pos.apply(tooltip);=0A= tooltip.style.visibility =3D 'visible';=0A= }=0A= =0A= function GV_Marker_List(div_name) { // the HTML is ALWAYS in a var = called "gv_marker_list_html"=0A= div_name =3D (div_name) ? div_name : 'gv_marker_list';=0A= var marker_list_div;=0A= alert ('gv_marker_list_html =3D '+gv_marker_list_html);=0A= if (document.getElementById(div_name)) {=0A= marker_list_div =3D document.getElementById(div_name);=0A= marker_list_div.innerHTML =3D '';=0A= } else {=0A= return;=0A= }=0A= marker_list_div.innerHTML =3D gv_marker_list_html;=0A= }=0A= function GV_Marker_List_Link(marker,map_name,marker_name) {=0A= var default_color =3D (gv_marker_list_options['default_color']) ? = gv_marker_list_options['default_color'] : '#000000';=0A= var color =3D (gv_marker_list_options['colors']) ? marker['color'] : = default_color;=0A= var color_style =3D 'color:'+color;=0A= var center =3D (gv_marker_list_options['center']) ? = map_name+'.setCenter('+marker_name+'.coords); ' : '';=0A= var zoom_in =3D (gv_marker_list_options['center'] && = gv_marker_list_options['zoom']) ? map_name+'.zoomIn(); ' : '';=0A= var hide_crosshair =3D (gv_marker_list_options['center'] && = document.getElementById('gv_crosshair')) ? = "document.getElementById('gv_crosshair').style.display =3D 'none'; " : = '';=0A= var open_info_window =3D (gv_marker_list_options['info_window']) ? = marker_name+'.openInfoWindowHtml('+marker_name+'.html); ' : '';=0A= var text_click =3D (gv_marker_list_options['toggle']) ? = 'GV_Toggle_Marker('+map_name+','+marker_name+',this,\''+color+'\');"' : = hide_crosshair+center+zoom_in+open_info_window;=0A= var icon_click =3D hide_crosshair+center+zoom_in+open_info_window;=0A= var icon =3D (gv_marker_list_options['icons']) ? ' ' : '';=0A= var text =3D ''+marker['name'] +'<'+'/span>';=0A= return ('
' + = icon + text + '
'+"\n");=0A= }=0A= =0A= function GV_Toggle_Marker(map,marker,link,link_color,dimmed_color) {=0A= if (eval(marker.f)) {=0A= map.removeOverlay(marker);=0A= } else {=0A= map.addOverlay(marker);=0A= }=0A= if (link && link_color) {=0A= link_color =3D Color_Hex2CSS(link_color);=0A= dimmed_color =3D (dimmed_color) ? Color_Hex2CSS(dimmed_color) : = Color_Hex2CSS('#999999');=0A= var current_color =3D Color_Hex2CSS(link.style.color);=0A= if (current_color =3D=3D dimmed_color) {=0A= link.style.color =3D link_color;=0A= } else {=0A= link.style.color =3D dimmed_color;=0A= }=0A= }=0A= }=0A= =0A= function GV_Toggle_Track_And_Label(map,id,color) {=0A= if (!color) { // older versions of this function only had two parameters=0A= color =3D id; id =3D map; map =3D gmap;=0A= } =0A= GV_Toggle_Opacity(map,eval(id)); // this one ("trkX") is stored in a = variable=0A= GV_Toggle_Label_Opacity(document.getElementById(id+'_label'),color); // = this one ("trkX_label") is a page element=0A= }=0A= =0A= function GV_Toggle_Opacity(map,overlay_array) {=0A= if (gv_api_version > 1) {=0A= var msg =3D '';=0A= for (j=3D0; j -1 || = xtext.indexOf('object SVGSVGElement') > -1) { msg =3D msg + x + " (" + = xtype + ") =3D " + eval('item.'+x) + "; "; }=0A= // }=0A= if (eval(item.f) || eval(item.T)) { // first is markers, the second = is polylines=0A= map.removeOverlay(item);=0A= } else {=0A= map.addOverlay(item);=0A= }=0A= // if (msg) { msg + "\n"; }=0A= }=0A= if (msg) { alert(msg); }=0A= } else {=0A= for (j=3D0; j 0) { gmap.zoomOut(); }=0A= } else if (e.wheelDelta) { // IE=0A= if (e.wheelDelta > 0) { gmap.zoomIn(); }=0A= else if (e.wheelDelta < 0) { gmap.zoomOut(); }=0A= }=0A= }=0A= =0A= function Color_Hex2CSS(c) {=0A= if (c =3D=3D null) { return null; }=0A= var rgb =3D new Array(); rgb =3D = c.match(/([A-F0-9]{2})([A-F0-9]{2})([A-F0-9]{2})/i);=0A= if (rgb) {=0A= return = ('rgb('+parseInt(rgb[1],16)+','+parseInt(rgb[2],16)+','+parseInt(rgb[3],1= 6)+')');=0A= } else {=0A= return (c.replace(/ +/g,''));=0A= }=0A= }=0A= =0A= =0A= =0A= /**************************************************=0A= * Custom map layers:=0A= * Adapted from Jef Poskanzer's Acme Mapper=0A= * (http://mapper.acme.com/)=0A= **************************************************/=0A= if (gv_api_version > 1) {=0A= var USGS_TOPO_TILES =3D WMSCreateMap('Topo','Topo maps by USGS via = terraserver-usa.com','Topo maps = unavailable',7,17,400,'http://terraservice.net/ogcmap6.ashx?version=3D1.1= .1&request=3DGetMap&styles=3D&srs=3DEPSG:4326&format=3Dimage/jpeg&bgcolor= =3D0xCCCCCC&exceptions=3DINIMAGE&layers=3DDRG');=0A= var USGS_AERIAL_TILES =3D WMSCreateMap('Aerial','Imagery by USGS via = terraserver-usa.com','USGS aerial imagery = unavailable',7,18,400,'http://terraservice.net/ogcmap6.ashx?version=3D1.1= .1&request=3DGetMap&styles=3D&srs=3DEPSG:4326&format=3Dimage/jpeg&bgcolor= =3D0xCCCCCC&exceptions=3DINIMAGE&layers=3DDOQ');=0A= var NRCAN_TOPO_TILES =3D WMSCreateMap('NRCan topo','Maps by = NRCan.gc.ca','NRCan maps = unavailable',8,18,600,'http://wms.cits.rncan.gc.ca/cgi-bin/cubeserv.cgi?v= ersion=3D1.1.3&request=3DGetMap&format=3Dimage/png&bgcolor=3D0xFFFFFF&exc= eptions=3Dapplication/vnd.ogc.se_inimage&srs=3DEPSG:4326&layers=3DPUB_50K= :CARTES_MATRICIELLES/RASTER_MAPS');=0A= var BLUEMARBLE_TILES =3D WMSCreateMap('Blue Marble','Map by = NASA','OnEarth server = unavailable',3,8,128,'http://onearth.jpl.nasa.gov/wms.cgi?request=3DGetMa= p&styles=3D&srs=3DEPSG:4326&format=3Dimage/jpeg&layers=3Dmodis');=0A= var DAILY_TERRA_TILES =3D WMSCreateMap('Daily "Terra"','Map by = NASA','OnEarth server = unavailable',3,10,256,'http://onearth.jpl.nasa.gov/wms.cgi?request=3DGetM= ap&styles=3D&srs=3DEPSG:4326&format=3Dimage/jpeg&layers=3Ddaily_terra');=0A= var DAILY_AQUA_TILES =3D WMSCreateMap('Daily "Aqua"','Map by = NASA','OnEarth server = unavailable',3,10,256,'http://onearth.jpl.nasa.gov/wms.cgi?request=3DGetM= ap&styles=3D&srs=3DEPSG:4326&format=3Dimage/jpeg&layers=3Ddaily_aqua');=0A= }=0A= =0A= function GV_Add_Custom_Layers(map) {=0A= map.addMapType(USGS_TOPO_TILES);=0A= map.addMapType(USGS_AERIAL_TILES);=0A= map.addMapType(NRCAN_TOPO_TILES);=0A= map.addMapType(BLUEMARBLE_TILES);=0A= map.addMapType(DAILY_TERRA_TILES);=0A= map.addMapType(DAILY_AQUA_TILES);=0A= }=0A= =0A= function = WMSCreateMap(name,copyright,errorMessage,minResolution,maxResolution,tile= Size,baseUrl) {=0A= var tileLayer =3D new GTileLayer(new = GCopyrightCollection(copyright),minResolution,maxResolution);=0A= tileLayer.baseUrl =3D baseUrl;=0A= tileLayer.tileSize =3D tileSize;=0A= tileLayer.getTileUrl =3D WMSGetTileUrl;=0A= tileLayer.getCopyright =3D function() { return { = prefix:'',copyrightTexts:[copyright]}; };=0A= var tileLayers =3D [tileLayer];=0A= return new = GMapType(tileLayers,G_SATELLITE_MAP.getProjection(),name,{errorMessage:er= rorMessage,tileSize:tileSize});=0A= }=0A= function WMSGetTileUrl(tile,zoom) {=0A= var southWestPixel =3D new = GPoint(tile.x*this.tileSize,(tile.y+1)*this.tileSize);=0A= var northEastPixel =3D new = GPoint((tile.x+1)*this.tileSize,tile.y*this.tileSize);=0A= var southWestCoords =3D = G_SATELLITE_MAP.getProjection().fromPixelToLatLng(southWestPixel,zoom);=0A= var northEastCoords =3D = G_SATELLITE_MAP.getProjection().fromPixelToLatLng(northEastPixel,zoom);=0A= var bbox =3D = southWestCoords.lng()+','+southWestCoords.lat()+','+northEastCoords.lng()= +','+northEastCoords.lat();=0A= return = this.baseUrl+'&bbox=3D'+bbox+'&width=3D'+this.tileSize+'&height=3D'+this.= tileSize;=0A= }=0A= =0A= =0A= /**************************************************=0A= * Custom map-type control:=0A= * more or less from Google's own documentation=0A= **************************************************/=0A= function GV_MapTypeControl() {}=0A= if (gv_api_version > 1) {=0A= GV_MapTypeControl.prototype =3D new GControl();=0A= GV_MapTypeControl.prototype.initialize =3D function(map) {=0A= GV_Add_Custom_Layers(map);=0A= var map_types =3D [=0A= { label:'G. map',type:'G_NORMAL_MAP',title:'Google street = map',bounds:[-180,-90,180,90],excluded:[] }=0A= ,{ label:'G. satellite',type:'G_SATELLITE_MAP',title:'Google = satellite map',bounds:[-180,-90,180,90],excluded:[] }=0A= ,{ label:'G. hybrid',type:'G_HYBRID_MAP',title:'Google "hybrid" = map',bounds:[-180,-90,180,90],excluded:[] }=0A= ,{ label:'USGS topo',type:'USGS_TOPO_TILES',title:'USGS topographic = map',bounds:[-169,18,-66,72],excluded:[] }=0A= ,{ label:'USGS aerial',type:'USGS_AERIAL_TILES',title:'USGS aerial = photos (black/white)',bounds:[-152,17,-65,65],excluded:[] }=0A= ,{ label:'Canada topo',type:'NRCAN_TOPO_TILES',title:'NRCan/Toporama = maps with contour = lines',bounds:[-141,41.7,-52,85],excluded:[-141,41.7,-86,48] }=0A= ,{ label:'Blue Marble',type:'BLUEMARBLE_TILES',title:'NASA "Visible = Earth" image',bounds:[-180,-90,180,90],excluded:[] }=0A= ,{ label:'Daily "Terra"',type:'DAILY_TERRA_TILES',title:'Daily = imagery from "Terra" satellite',bounds:[-180,-90,180,90],excluded:[] }=0A= ,{ label:'Daily "Aqua"',type:'DAILY_AQUA_TILES',title:'Daily imagery = from "Aqua" satellite',bounds:[-180,-90,180,90],excluded:[] }=0A= ];=0A= var center_lat =3D map.getCenter().lat();=0A= var center_lng =3D map.getCenter().lng();=0A= =0A= if (gv_maptypecontrol_style =3D=3D 'menu') {=0A= var map_selector =3D document.createElement("select");=0A= map_selector.id =3D 'map_selector';=0A= map_selector.style.font =3D '10px Verdana';=0A= map_selector.style.backgroundColor =3D '#FFFFFF';=0A= for (j=3D0; j=3D = map_types[j]['bounds'][0] && center_lat >=3D map_types[j]['bounds'][1] = && center_lng <=3D map_types[j]['bounds'][2] && center_lat <=3D = map_types[j]['bounds'][3]) && !(center_lng >=3D = map_types[j]['excluded'][0] && center_lat >=3D = map_types[j]['excluded'][1] && center_lng <=3D = map_types[j]['excluded'][2] && center_lat <=3D = map_types[j]['excluded'][3]) ) ) {=0A= var opt =3D document.createElement("option");=0A= opt.value =3D map_types[j]['type'];=0A= opt.appendChild(document.createTextNode(map_types[j]['label']));=0A= map_selector.appendChild(opt);=0A= if (map.getCurrentMapType() =3D=3D eval(opt.value)) { = map_selector.selectedIndex =3D map_selector.length - 1; }=0A= }=0A= }=0A= GEvent.addDomListener(map_selector, "change", = function(){map.setMapType(eval(this.value));} );=0A= map.getContainer().appendChild(map_selector);=0A= return map_selector;=0A= } else {=0A= var map_type_container =3D document.createElement("div");=0A= for (j=3D0; j=3D = map_types[j]['bounds'][0] && center_lat >=3D map_types[j]['bounds'][1] = && center_lng <=3D map_types[j]['bounds'][2] && center_lat <=3D = map_types[j]['bounds'][3]) && !(center_lng >=3D = map_types[j]['excluded'][0] && center_lat >=3D = map_types[j]['excluded'][1] && center_lng <=3D = map_types[j]['excluded'][2] && center_lat <=3D = map_types[j]['excluded'][3]) ) ) {=0A= var maplink =3D document.createElement("div");=0A= maplink.className =3D 'gv_maptypelink';=0A= if (self.gv_maptypecontrol && map.getCurrentMapType() =3D=3D = eval(map_types[j]['type'])) {=0A= maplink.className =3D 'gv_maptypelink gv_maptypelink_selected';=0A= }=0A= maplink.title =3D map_types[j]['title'];=0A= maplink.type =3D map_types[j]['type'];=0A= map_type_container.appendChild(maplink);=0A= maplink.appendChild(document.createTextNode(map_types[j]['label']));=0A= GEvent.addDomListener(maplink, "click", function(){=0A= map.setMapType(eval(this.type));=0A= if (self.gv_maptypecontrol) {=0A= map.removeControl(gv_maptypecontrol);=0A= map.addControl(gv_maptypecontrol);=0A= }=0A= } );=0A= }=0A= }=0A= map.getContainer().appendChild(map_type_container);=0A= return map_type_container;=0A= }=0A= }=0A= GV_MapTypeControl.prototype.getDefaultPosition =3D function() {=0A= return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7,7));=0A= }=0A= }=0A= =0A= // These are here only for backwards compatibilty:=0A= function GPSV_Waypoint(lon,lat,name,desc,url,color,style,width,label_id) = { GV_Marker(gmap,lat,lon,name,desc,url,color,style,width,label_id); }=0A= function GPSV_Toggle_Track_And_Label(id,color) { = GV_Toggle_Track_And_Label(id,color); } // for backwards compatibility=0A= function GPSV_Toggle_Opacity(overlay_array) { = GV_Toggle_Opacity(overlay_array); } // for backwards compatibility=0A= function GPSV_Toggle_Label_Opacity(label,original_color) { = GV_Toggle_Label_Opacity(label,original_color); } // for backwards = compatibility=0A= function GPSV_MapTypeControl() {}=0A= if (gv_api_version > 1) { GPSV_MapTypeControl.prototype =3D = GV_MapTypeControl.prototype; }=0A= =0A= /**************************************************=0A= elabel.js=0A= (adapted from http://www.econym.demon.co.uk/googlemaps/elabel.htm)=0A= (My modification: adding the "label_id" parameter)=0A= **************************************************/=0A= =0A= function ELabel(point, html, classname, pixelOffset, percentOpacity, = overlap, label_id) {=0A= // Mandatory parameters=0A= this.point =3D point;=0A= this.html =3D html;=0A= =0A= // Optional parameters=0A= this.classname =3D classname || "";=0A= this.pixelOffset =3D pixelOffset || new GSize(0,0);=0A= if (percentOpacity) {=0A= if (percentOpacity < 0) { percentOpacity =3D 0; }=0A= if (percentOpacity > 100) { percentOpacity =3D 100; }=0A= }=0A= this.percentOpacity =3D percentOpacity;=0A= this.overlap =3D overlap || false;=0A= this.label_id =3D label_id;=0A= }=0A= =0A= if (gv_api_version > 1) {=0A= ELabel.prototype =3D new GOverlay();=0A= =0A= ELabel.prototype.initialize =3D function (map) {=0A= var div =3D document.createElement("div");=0A= div.style.position =3D "absolute";=0A= div.innerHTML =3D '
' + this.html + '
' ;=0A= map.getPane(G_MAP_FLOAT_SHADOW_PANE).appendChild(div);=0A= this.map_ =3D map;=0A= this.div_ =3D div;=0A= if (this.percentOpacity) {=0A= if (typeof(div.style.filter) =3D=3D 'string') { = div.style.filter=3D'alpha(opacity:'+this.percentOpacity+')'; }=0A= if (typeof(div.style.KHTMLOpacity) =3D=3D 'string') { = div.style.KHTMLOpacity=3Dthis.percentOpacity/100; }=0A= if (typeof(div.style.MozOpacity) =3D=3D 'string') { = div.style.MozOpacity=3Dthis.percentOpacity/100; }=0A= if (typeof(div.style.opacity) =3D=3D 'string') { = div.style.opacity=3Dthis.percentOpacity/100; }=0A= }=0A= if (this.overlap) {=0A= var z =3D GOverlay.getZIndex(this.point.lat());=0A= this.div_.style.zIndex =3D z;=0A= }=0A= }=0A= =0A= ELabel.prototype.remove =3D function() {=0A= this.div_.parentNode.removeChild(this.div_);=0A= }=0A= =0A= ELabel.prototype.copy =3D function() {=0A= return new ELabel(this.point, this.html, this.classname, = this.pixelOffset, this.percentOpacity, this.overlap);=0A= }=0A= =0A= ELabel.prototype.redraw =3D function(force) {=0A= var p =3D this.map_.fromLatLngToDivPixel(this.point);=0A= var h =3D parseInt(this.div_.clientHeight);=0A= this.div_.style.left =3D (p.x + this.pixelOffset.width) + "px";=0A= this.div_.style.top =3D (p.y +this.pixelOffset.height - h) + "px";=0A= }=0A= =0A= ELabel.prototype.show =3D function() {=0A= this.div_.style.display=3D"";=0A= }=0A= =0A= ELabel.prototype.hide =3D function() {=0A= this.div_.style.display=3D"none";=0A= }=0A= =0A= ELabel.prototype.setContents =3D function(html) {=0A= this.html =3D html;=0A= this.div_.innerHTML =3D '
' + this.html + '
' ;=0A= this.redraw(true);=0A= }=0A= =0A= ELabel.prototype.setPoint =3D function(point) {=0A= this.point =3D point;=0A= if (this.overlap) {=0A= var z =3D GOverlay.getZIndex(this.point.lat());=0A= this.div_.style.zIndex =3D z;=0A= }=0A= this.redraw(true);=0A= }=0A= =0A= ELabel.prototype.setOpacity =3D function(percentOpacity) {=0A= if (percentOpacity) {=0A= if (percentOpacity < 0) { percentOpacity=3D0; }=0A= if (percentOpacity > 100) { percentOpacity=3D100; }=0A= }=0A= this.percentOpacity =3D percentOpacity;=0A= if (this.percentOpacity) {=0A= if (typeof(this.div_.style.filter) =3D=3D 'string') { = this.div_.style.filter=3D'alpha(opacity:'+this.percentOpacity+')'; }=0A= if (typeof(this.div_.style.KHTMLOpacity) =3D=3D 'string') { = this.div_.style.KHTMLOpacity=3Dthis.percentOpacity/100; }=0A= if (typeof(this.div_.style.MozOpacity) =3D=3D 'string') { = this.div_.style.MozOpacity=3Dthis.percentOpacity/100; }=0A= if (typeof(this.div_.style.opacity) =3D=3D 'string') { = this.div_.style.opacity=3Dthis.percentOpacity/100; }=0A= }=0A= }=0A= }=0A= =0A= /**************************************************=0A= * dom-drag.js=0A= * 09.25.2001=0A= * www.youngpup.net=0A= * Script featured on Dynamic Drive (http://www.dynamicdrive.com) = 12.08.2005=0A= **************************************************=0A= * 10.28.2001 - fixed minor bug where events=0A= * sometimes fired off the handle, not the root.=0A= **************************************************/=0A= var Drag =3D {=0A= =0A= obj : null,=0A= =0A= init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, = bSwapVertRef, fXMapper, fYMapper) {=0A= o.onmousedown =3D Drag.start;=0A= =0A= o.hmode =3D bSwapHorzRef ? false : true ;=0A= o.vmode =3D bSwapVertRef ? false : true ;=0A= =0A= o.root =3D oRoot && oRoot !=3D null ? oRoot : o ;=0A= =0A= if (o.hmode && isNaN(parseInt(o.root.style.left ))) = o.root.style.left =3D "0px";=0A= if (o.vmode && isNaN(parseInt(o.root.style.top ))) o.root.style.top = =3D "0px";=0A= if (!o.hmode && isNaN(parseInt(o.root.style.right ))) = o.root.style.right =3D "0px";=0A= if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) = o.root.style.bottom =3D "0px";=0A= =0A= o.minX =3D typeof minX !=3D 'undefined' ? minX : null;=0A= o.minY =3D typeof minY !=3D 'undefined' ? minY : null;=0A= o.maxX =3D typeof maxX !=3D 'undefined' ? maxX : null;=0A= o.maxY =3D typeof maxY !=3D 'undefined' ? maxY : null;=0A= =0A= o.xMapper =3D fXMapper ? fXMapper : null;=0A= o.yMapper =3D fYMapper ? fYMapper : null;=0A= =0A= o.root.onDragStart =3D new Function();=0A= o.root.onDragEnd =3D new Function();=0A= o.root.onDrag =3D new Function();=0A= },=0A= =0A= start : function(e) {=0A= var o =3D Drag.obj =3D this;=0A= e =3D Drag.fixE(e);=0A= var y =3D parseInt(o.vmode ? o.root.style.top : o.root.style.bottom);=0A= var x =3D parseInt(o.hmode ? o.root.style.left : o.root.style.right );=0A= o.root.onDragStart(x, y);=0A= =0A= o.lastMouseX =3D e.clientX;=0A= o.lastMouseY =3D e.clientY;=0A= =0A= if (o.hmode) {=0A= if (o.minX !=3D null) o.minMouseX =3D e.clientX - x + o.minX;=0A= if (o.maxX !=3D null) o.maxMouseX =3D o.minMouseX + o.maxX - o.minX;=0A= } else {=0A= if (o.minX !=3D null) o.maxMouseX =3D -o.minX + e.clientX + x;=0A= if (o.maxX !=3D null) o.minMouseX =3D -o.maxX + e.clientX + x;=0A= }=0A= =0A= if (o.vmode) {=0A= if (o.minY !=3D null) o.minMouseY =3D e.clientY - y + o.minY;=0A= if (o.maxY !=3D null) o.maxMouseY =3D o.minMouseY + o.maxY - o.minY;=0A= } else {=0A= if (o.minY !=3D null) o.maxMouseY =3D -o.minY + e.clientY + y;=0A= if (o.maxY !=3D null) o.minMouseY =3D -o.maxY + e.clientY + y;=0A= }=0A= =0A= document.onmousemove =3D Drag.drag;=0A= document.onmouseup =3D Drag.end;=0A= =0A= return false;=0A= },=0A= =0A= drag : function(e) {=0A= e =3D Drag.fixE(e);=0A= var o =3D Drag.obj;=0A= =0A= var ey =3D e.clientY;=0A= var ex =3D e.clientX;=0A= var y =3D parseInt(o.vmode ? o.root.style.top : o.root.style.bottom);=0A= var x =3D parseInt(o.hmode ? o.root.style.left : o.root.style.right );=0A= var nx, ny;=0A= =0A= if (o.minX !=3D null) ex =3D o.hmode ? Math.max(ex, o.minMouseX) : = Math.min(ex, o.maxMouseX);=0A= if (o.maxX !=3D null) ex =3D o.hmode ? Math.min(ex, o.maxMouseX) : = Math.max(ex, o.minMouseX);=0A= if (o.minY !=3D null) ey =3D o.vmode ? Math.max(ey, o.minMouseY) : = Math.min(ey, o.maxMouseY);=0A= if (o.maxY !=3D null) ey =3D o.vmode ? Math.min(ey, o.maxMouseY) : = Math.max(ey, o.minMouseY);=0A= =0A= nx =3D x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));=0A= ny =3D y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));=0A= =0A= if (o.xMapper) nx =3D o.xMapper(y)=0A= else if (o.yMapper) ny =3D o.yMapper(x)=0A= =0A= Drag.obj.root.style[o.hmode ? "left" : "right"] =3D nx + "px";=0A= Drag.obj.root.style[o.vmode ? "top" : "bottom"] =3D ny + "px";=0A= Drag.obj.lastMouseX =3D ex;=0A= Drag.obj.lastMouseY =3D ey;=0A= =0A= Drag.obj.root.onDrag(nx, ny);=0A= return false;=0A= },=0A= =0A= end : function() {=0A= document.onmousemove =3D null;=0A= document.onmouseup =3D null;=0A= Drag.obj.root.onDragEnd( parseInt(Drag.obj.root.style[Drag.obj.hmode ? = "left" : "right"]), =0A= parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : = "bottom"]));=0A= Drag.obj =3D null;=0A= },=0A= =0A= fixE : function(e) {=0A= if (typeof e =3D=3D 'undefined') e =3D window.event;=0A= if (typeof e.layerX =3D=3D 'undefined') e.layerX =3D e.offsetX;=0A= if (typeof e.layerY =3D=3D 'undefined') e.layerY =3D e.offsetY;=0A= return e;=0A= }=0A= };=0A= =0A= =0A= =0A= =0A= function GV_Get_Cached_Addresses(map,opts) {=0A= var SW =3D map.getBounds().getSouthWest(); var NE =3D = map.getBounds().getNorthEast();=0A= var lat_center =3D map.getCenter().lat().toFixed(7);=0A= var lon_center =3D map.getCenter().lng().toFixed(7);=0A= for (var i =3D 0; i < gv_dynamic_markers.length; i++) { = map.removeOverlay(gv_dynamic_markers[i]); }=0A= // gv_dynamic_markers.length =3D 0;=0A= var url =3D = '/misc/google_maps/cached_addresses.cgi?lat_center=3D'+lat_center+'&lon_c= enter=3D'+lon_center+'&lat_min=3D'+SW.lat().toFixed(7)+'&lat_max=3D'+NE.l= at().toFixed(7)+'&lon_min=3D'+SW.lng().toFixed(7)+'&lon_max=3D'+NE.lng().= toFixed(7)+'"a=3D'+gv_dynamic_markers_quota;=0A= GDownloadUrl(url, function(data, responseCode) {=0A= var xml =3D GXml.parse(data);=0A= var marker_tags =3D xml.documentElement.getElementsByTagName("marker");=0A= for (var i =3D 0; i < marker_tags.length; i++) {=0A= var this_color =3D (marker_tags[i].getAttribute("color")) ? = marker_tags[i].getAttribute("color") : '';=0A= var this_label =3D (opts['labels']) ? = marker_tags[i].getAttribute("name") : '';=0A= var m =3D GV_Marker(map,{=0A= lat:marker_tags[i].getAttribute("lat"),=0A= lon:marker_tags[i].getAttribute("lon"),=0A= name:marker_tags[i].getAttribute("name"),=0A= desc:marker_tags[i].getAttribute("desc"),=0A= color:this_color,=0A= label:this_label=0A= });=0A= gv_dynamic_markers.push(m);=0A= }=0A= if (opts['circle']) {=0A= var trackpoints =3D xml.documentElement.getElementsByTagName("trkpt");=0A= if (trackpoints.length) {=0A= var marker_boundary_points =3D new Array();=0A= for (var i =3D 0; i < trackpoints.length; i++) {=0A= marker_boundary_points.push( new = GLatLng(trackpoints[i].getAttribute("lat"),trackpoints[i].getAttribute("l= on")) );=0A= }=0A= var circle_color =3D (gv_marker_color) ? gv_marker_color : 'white';=0A= gv_dynamic_markers.push (new = GPolyline(marker_boundary_points,Color_Name2Hex(circle_color),2,0.2));=0A= map.addOverlay(gv_dynamic_markers[gv_dynamic_markers.length-1]);=0A= }=0A= }=0A= });=0A= }=0A= =0A= =0A= function GV_Get_Dynamic_Markers(map,db,opts) {=0A= var SW =3D map.getBounds().getSouthWest(); var NE =3D = map.getBounds().getNorthEast();=0A= var lat_center =3D map.getCenter().lat().toFixed(7);=0A= var lon_center =3D map.getCenter().lng().toFixed(7);=0A= for (var i =3D 0; i < gv_dynamic_markers.length; i++) { = map.removeOverlay(gv_dynamic_markers[i]); }=0A= // gv_dynamic_markers.length =3D 0;=0A= var url =3D = '/misc/google_maps/dynamic_markers.cgi?db=3D'+db+'&lat_center=3D'+lat_cen= ter+'&lon_center=3D'+lon_center+'&lat_min=3D'+SW.lat().toFixed(7)+'&lat_m= ax=3D'+NE.lat().toFixed(7)+'&lon_min=3D'+SW.lng().toFixed(7)+'&lon_max=3D= '+NE.lng().toFixed(7)+'"a=3D'+gv_dynamic_markers_quota;=0A= GDownloadUrl(url, function(data, responseCode) {=0A= var xml =3D GXml.parse(data);=0A= var marker_tags =3D xml.documentElement.getElementsByTagName("marker");=0A= for (var i =3D 0; i < marker_tags.length; i++) {=0A= var this_color =3D (marker_tags[i].getAttribute("color")) ? = marker_tags[i].getAttribute("color") : '';=0A= var this_label =3D (opts['labels']) ? = marker_tags[i].getAttribute("name") : '';=0A= var m =3D GV_Marker(map,{=0A= lat:marker_tags[i].getAttribute("lat"),=0A= lon:marker_tags[i].getAttribute("lon"),=0A= name:marker_tags[i].getAttribute("name"),=0A= desc:marker_tags[i].getAttribute("desc"),=0A= color:this_color,=0A= label:this_label=0A= });=0A= gv_dynamic_markers.push(m);=0A= }=0A= if (opts['circle']) {=0A= var trackpoints =3D xml.documentElement.getElementsByTagName("trkpt");=0A= if (trackpoints.length) {=0A= var marker_boundary_points =3D new Array();=0A= for (var i =3D 0; i < trackpoints.length; i++) {=0A= marker_boundary_points.push( new = GLatLng(trackpoints[i].getAttribute("lat"),trackpoints[i].getAttribute("l= on")) );=0A= }=0A= var circle_color =3D (gv_marker_color) ? gv_marker_color : 'white';=0A= gv_dynamic_markers.push (new = GPolyline(marker_boundary_points,Color_Name2Hex(circle_color),2,0.2));=0A= map.addOverlay(gv_dynamic_markers[gv_dynamic_markers.length-1]);=0A= }=0A= }=0A= });=0A= if (opts['list']) {=0A= GV_Marker_List(opts['list']);=0A= }=0A= }=0A= =0A= function Color_Name2Hex(color_name) {=0A= var c =3D new Array();=0A= c['aqua'] =3D '#00FFFF'; c['black'] =3D '#000000'; c['blue'] =3D = '#0000FF'; c['brown'] =3D '#7A4328';=0A= c['cyan'] =3D '#00FFFF'; c['default'] =3D '#FF776B'; c['fuchsia'] =3D = '#FF00FF'; c['gray'] =3D '#AAAAAA';=0A= c['green'] =3D '#009900'; c['grey'] =3D '#AAAAAA'; c['lime'] =3D = '#00FF00'; c['magenta'] =3D '#FF00FF';=0A= c['maroon'] =3D '#800000'; c['navy'] =3D '#000080'; c['olive'] =3D = '#808000'; c['orange'] =3D '#FF6600';=0A= c['pink'] =3D '#FF99CC'; c['purple'] =3D '#990099'; c['red'] =3D = '#FF0000'; c['silver'] =3D '#808080';=0A= c['tan'] =3D '#C1945F'; c['teal'] =3D '#008080'; c['violet'] =3D = '#6600FF'; c['white'] =3D '#FFFFFF';=0A= c['yellow'] =3D '#FFFF00';=0A= if (c[color_name]) { return c[color_name]; } else { return ''; }=0A= }=0A= ------=_NextPart_000_0000_01C6C3C8.0D9D5C90--