Gooby 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. data/README +218 -0
  2. data/bin/forerunner_xml_parser.rb +28 -0
  3. data/bin/forerunner_xml_parser.sh +16 -0
  4. data/bin/forerunner_xml_splitter.rb +60 -0
  5. data/bin/gen_gmap.rb +30 -0
  6. data/bin/gen_gmap.sh +19 -0
  7. data/bin/tests_gen.rb +13 -0
  8. data/data/20041113_richmond_marathon.csv +1036 -0
  9. data/data/20041113_richmond_marathon.xml +8663 -0
  10. data/data/20050305_corporate_cup_hm.csv +251 -0
  11. data/data/20050305_corporate_cup_hm.xml +2208 -0
  12. data/data/20050430_nashville_marathon.csv +1208 -0
  13. data/data/20050430_nashville_marathon.xml +10043 -0
  14. data/data/20051119_dowd_ymca_hm.csv +251 -0
  15. data/data/20051119_dowd_ymca_hm.xml +2210 -0
  16. data/data/20051124_hyatt_turkey_trot_8K.csv +321 -0
  17. data/data/20051124_hyatt_turkey_trot_8K.xml +2651 -0
  18. data/data/forerunner_2005.xml +259620 -0
  19. data/data/forerunner_2006.xml +190853 -0
  20. data/data/forerunner_2007.xml +259014 -0
  21. data/data/geo_data.txt +171 -0
  22. data/data/phx.csv +1280 -0
  23. data/data/phx.xml +10620 -0
  24. data/data/run_2007_01_01_16_38_27.xml +2020 -0
  25. data/data/run_2007_01_06_15_27_31.xml +2020 -0
  26. data/data/run_2007_01_10_12_25_47.xml +820 -0
  27. data/data/run_2007_01_10_22_44_54.csv +112 -0
  28. data/data/run_2007_01_10_22_44_54.xml +908 -0
  29. data/data/run_2007_01_11_10_48_45.xml +1292 -0
  30. data/data/run_2007_01_13_15_37_06.xml +1964 -0
  31. data/data/run_2007_01_14_15_46_02.xml +1368 -0
  32. data/data/run_2007_01_15_14_01_48.xml +1868 -0
  33. data/data/run_2007_01_20_16_22_05.xml +1702 -0
  34. data/data/run_2007_01_27_17_32_13.xml +3626 -0
  35. data/data/run_2007_01_28_19_14_52.xml +2538 -0
  36. data/data/run_2007_02_03_14_30_20.xml +2016 -0
  37. data/data/run_2007_02_04_18_02_30.xml +1476 -0
  38. data/data/run_2007_02_17_16_29_35.xml +1236 -0
  39. data/data/run_2007_02_19_14_44_33.xml +1816 -0
  40. data/data/run_2007_02_23_15_53_55.xml +36 -0
  41. data/data/run_2007_02_23_15_55_20.xml +1296 -0
  42. data/data/run_2007_02_24_15_01_35.csv +484 -0
  43. data/data/run_2007_02_24_15_01_35.xml +3884 -0
  44. data/data/test1.txt +4 -0
  45. data/lib/cls_counter_hash.rb +83 -0
  46. data/lib/cls_delim_line.rb +40 -0
  47. data/lib/cls_dttm.rb +84 -0
  48. data/lib/cls_duration.rb +87 -0
  49. data/lib/cls_forerunner_xml_parser.rb +183 -0
  50. data/lib/cls_forerunner_xml_splitter.rb +113 -0
  51. data/lib/cls_geo_data.rb +186 -0
  52. data/lib/cls_gooby_object.rb +23 -0
  53. data/lib/cls_google_map_generator.rb +368 -0
  54. data/lib/cls_history.rb +38 -0
  55. data/lib/cls_lap.rb +27 -0
  56. data/lib/cls_line.rb +78 -0
  57. data/lib/cls_options.rb +74 -0
  58. data/lib/cls_position.rb +49 -0
  59. data/lib/cls_run.rb +199 -0
  60. data/lib/cls_simple_xml_parser.rb +46 -0
  61. data/lib/cls_test_regen.rb +187 -0
  62. data/lib/cls_track.rb +52 -0
  63. data/lib/cls_trackpoint.rb +205 -0
  64. data/lib/mod_introspect.rb +33 -0
  65. data/lib/mod_io.rb +65 -0
  66. data/lib/mod_project_info.rb +81 -0
  67. data/lib/mod_string.rb +26 -0
  68. data/lib/mod_test_helper.rb +22 -0
  69. data/samples/20041113_richmond_marathon.html +532 -0
  70. data/samples/20050305_corporate_cup_hm.html +448 -0
  71. data/samples/20050430_nashville_marathon.html +530 -0
  72. data/samples/gps_point_capture.html +54 -0
  73. data/samples/phoenix_marathon.html +542 -0
  74. data/samples/run_2007_01_10_22_44_54.html +146 -0
  75. data/samples/run_2007_02_24_15_01_35.html +298 -0
  76. data/tests/tst_cls_counter_hash.rb +105 -0
  77. data/tests/tst_cls_delim_line.rb +72 -0
  78. data/tests/tst_cls_dttm.rb +129 -0
  79. data/tests/tst_cls_duration.rb +49 -0
  80. data/tests/tst_cls_forerunner_xml_parser.rb +68 -0
  81. data/tests/tst_cls_geo_data.rb +69 -0
  82. data/tests/tst_cls_gooby_object.rb +24 -0
  83. data/tests/tst_cls_google_map_generator.rb +107 -0
  84. data/tests/tst_cls_history.rb +44 -0
  85. data/tests/tst_cls_lap.rb +36 -0
  86. data/tests/tst_cls_line.rb +108 -0
  87. data/tests/tst_cls_options.rb +77 -0
  88. data/tests/tst_cls_position.rb +64 -0
  89. data/tests/tst_cls_run.rb +140 -0
  90. data/tests/tst_cls_simple_xml_parser.rb +48 -0
  91. data/tests/tst_cls_track.rb +68 -0
  92. data/tests/tst_cls_trackpoint.rb +143 -0
  93. data/tests/tst_gooby.rb +28 -0
  94. data/tests/tst_mod_introspect.rb +30 -0
  95. data/tests/tst_mod_io.rb +51 -0
  96. data/tests/tst_mod_project_info.rb +77 -0
  97. data/tests/tst_mod_string.rb +56 -0
  98. metadata +142 -0
@@ -0,0 +1,33 @@
1
+ =begin rdoc
2
+
3
+ Gooby - Copyright 2007 by Chris Joakim.
4
+ Gooby is available under GNU General Public License (GPL) license.
5
+
6
+ =end
7
+
8
+ module Gooby
9
+
10
+ module Introspect
11
+
12
+ # Return a String w/instance variable and method info.
13
+ def introspect
14
+ c = self.class
15
+ s = "Class: #{c} "
16
+ iv = self.instance_variables.sort
17
+ s << " ivc=#{iv.size}"
18
+ iv.each { |v| s << " #{v}" }
19
+ meth = self.methods.sort
20
+ s << " mc=#{meth.size}"
21
+ meth.each { |m| s << " #{m}" }
22
+ s << ""
23
+ s
24
+ end
25
+
26
+ # Return 'self.instance_variables'.
27
+ def to_yaml_properties
28
+ self.instance_variables
29
+ end
30
+
31
+ end
32
+
33
+ end
data/lib/mod_io.rb ADDED
@@ -0,0 +1,65 @@
1
+ =begin rdoc
2
+
3
+ Gooby - Copyright 2007 by Chris Joakim.
4
+ Gooby is available under GNU General Public License (GPL) license.
5
+
6
+ =end
7
+
8
+ module Gooby
9
+
10
+ module GoobyIO
11
+
12
+ # Return an Array of lines in file, optionally stripped.
13
+ def read_lines(filename, strip=false)
14
+
15
+ array = IO.readlines(filename)
16
+ if strip
17
+ array = strip_lines(array)
18
+ end
19
+ return array
20
+ end
21
+
22
+ # Return an Array of lines in file per the given delimeter, optionally stripped.
23
+ def read_as_ascii_lines(filename, delim=10, strip=false)
24
+
25
+ array = Array.new
26
+ file = File.new(filename)
27
+ currLine = ''
28
+ bytesRead = 0
29
+ linesRead = 0
30
+
31
+ file.each_byte { |b|
32
+ bytesRead = bytesRead + 1
33
+ if (b == delim) # delim is 13 for quicken, 10 for address book xml
34
+ array << currLine
35
+ currLine = ''
36
+ linesRead = linesRead + 1
37
+ else
38
+ if (b < 127)
39
+ currLine << "#{b.chr}"
40
+ end
41
+ end
42
+ }
43
+
44
+ if currLine.size > 0
45
+ array << currLine
46
+ end
47
+ if strip
48
+ array = strip_lines(array)
49
+ end
50
+ return array
51
+ end
52
+
53
+ # Strip the lines/Strings; return a new Array.
54
+ def strip_lines(array)
55
+
56
+ newArray = Array.new
57
+ if (array != nil)
58
+ array.each { |line| line.strip! ; newArray << line }
59
+ end
60
+ return newArray
61
+ end
62
+
63
+ end
64
+
65
+ end
@@ -0,0 +1,81 @@
1
+ =begin rdoc
2
+
3
+ This module is used to embed information about the Gooby project and
4
+ version into the codebase.
5
+
6
+ Gooby - Copyright 2007 by Chris Joakim.
7
+ Gooby is available under GNU General Public License (GPL) license.
8
+
9
+ =end
10
+
11
+ module Gooby
12
+
13
+ module GoobyProjectInfo
14
+
15
+ # Return a String version number, like '1.0.0'.
16
+ def project_version_number
17
+ '0.9.0'
18
+ end
19
+
20
+ # Return a String date, like '2007/02/25'.
21
+ def project_date
22
+ '2007/02/25'
23
+ end
24
+
25
+ # Return a String year, like '2007'.
26
+ def project_year
27
+ project_date[0...4] # start, length
28
+ end
29
+
30
+ # Return a String containing copyright, year, and author.
31
+ def project_copyright
32
+ "Copyright (C) #{project_year} #{project_author}"
33
+ end
34
+
35
+ # Return a String containing GNU/GPL, and the gpl.html URL.
36
+ def project_license
37
+ 'GNU General Public License (GPL). See http://www.gnu.org/copyleft/gpl.html'
38
+ end
39
+
40
+ # Return a String containing the project author name.
41
+ def project_author
42
+ 'Chris Joakim'
43
+ end
44
+
45
+ def google_maps_api_level
46
+ '2'
47
+ end
48
+
49
+ def some_new_thing
50
+ '2'
51
+ end
52
+
53
+ def tested_files
54
+ array = Array.new
55
+ array << 'cls_counter_hash.rb'
56
+ array << 'cls_delim_line.rb'
57
+ array << 'cls_dttm.rb'
58
+ array << 'cls_duration.rb'
59
+ array << 'cls_forerunner_xml_parser.rb'
60
+ array << 'cls_geo_data.rb'
61
+ array << 'cls_gooby_object.rb'
62
+ array << 'cls_google_map_generator.rb'
63
+ array << 'cls_history.rb'
64
+ array << 'cls_lap.rb'
65
+ array << 'cls_line.rb'
66
+ array << 'cls_options.rb'
67
+ array << 'cls_position.rb'
68
+ array << 'cls_run.rb'
69
+ array << 'cls_simple_xml_parser.rb'
70
+ array << 'cls_track.rb'
71
+ array << 'cls_trackpoint.rb'
72
+ array << 'mod_introspect.rb'
73
+ array << 'mod_io.rb'
74
+ array << 'mod_project_info.rb'
75
+ array << 'mod_string.rb'
76
+ array
77
+ end
78
+
79
+ end
80
+
81
+ end
data/lib/mod_string.rb ADDED
@@ -0,0 +1,26 @@
1
+ =begin rdoc
2
+
3
+ Gooby - Copyright 2007 by Chris Joakim.
4
+ Gooby is available under GNU General Public License (GPL) license.
5
+
6
+ =end
7
+
8
+ module Gooby
9
+
10
+ module GoobyString
11
+
12
+ def tokenize(string, delim, strip=false)
13
+ if string
14
+ tokens = string.split(delim)
15
+ if strip
16
+ tokens.each { |tok| tok.strip! }
17
+ end
18
+ tokens
19
+ else
20
+ Array.new
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,22 @@
1
+ =begin rdoc
2
+
3
+ Gooby - Copyright 2007 by Chris Joakim.
4
+ Gooby is available under GNU General Public License (GPL) license.
5
+
6
+ =end
7
+
8
+ module Gooby
9
+
10
+ module TestHelper
11
+
12
+ def setup
13
+ puts "test: #{name}"
14
+ end
15
+
16
+ def teardown
17
+ @debug = false
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,532 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
6
+ <title> Google Map by Gooby </title>
7
+ <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAdn5SVzjZKZKs1IRkFdx52xQg0TO_bCqGOTsRH2RbuhBZnI0wvRQW0Q92mw1taN1NJCk2cxlQQutfuA" type="text/javascript"></script>
8
+ <script type="text/javascript">
9
+ //<![CDATA[
10
+ function load() {
11
+ if (GBrowserIsCompatible()) {
12
+ var map = new GMap2(document.getElementById("map"));
13
+ map.addControl(new GLargeMapControl());
14
+ map.addControl(new GMapTypeControl());
15
+
16
+ var centerPoint = new GLatLng(37.55524, -77.490175);
17
+ map.setCenter(centerPoint, 12);
18
+
19
+
20
+ var points = new Array();
21
+ points.push(new GLatLng(37.54314,-77.43634)); // 1 (1 of 1035.0) 2004-11-13T13:05:18Z 0 00:00:00 0.0
22
+ points.push(new GLatLng(37.54423,-77.43771)); // 2 (6 of 1035.0) 2004-11-13T13:06:17Z 59 00:00:59 0.106923994397114
23
+ points.push(new GLatLng(37.54593,-77.44025)); // 3 (11 of 1035.0) 2004-11-13T13:07:54Z 156 00:02:36 0.289701376657748
24
+ points.push(new GLatLng(37.5473,-77.44469)); // 4 (16 of 1035.0) 2004-11-13T13:09:39Z 261 00:04:21 0.556906792422468
25
+ points.push(new GLatLng(37.54863,-77.44696)); // 5 (21 of 1035.0) 2004-11-13T13:10:53Z 335 00:05:35 0.71170516069263
26
+ points.push(new GLatLng(37.5497,-77.44857)); // 6 (26 of 1035.0) 2004-11-13T13:11:52Z 394 00:06:34 0.827396844122309
27
+ points.push(new GLatLng(37.5505,-77.44992)); // 7 (31 of 1035.0) 2004-11-13T13:12:39Z 441 00:07:21 0.92004077435076
28
+ points.push(new GLatLng(37.55133,-77.45125)); // 8 (35 of 1035.0) 2004-11-13T13:13:31Z 493 00:08:13 1.01289462376059 1.0 00:08:13
29
+ points.push(new GLatLng(37.55208,-77.45248)); // 9 (40 of 1035.0) 2004-11-13T13:14:15Z 537 00:08:57 1.09839689220024
30
+ points.push(new GLatLng(37.55314,-77.45428)); // 10 (45 of 1035.0) 2004-11-13T13:15:18Z 600 00:10:00 1.22133365581976
31
+ points.push(new GLatLng(37.55393,-77.45561)); // 11 (50 of 1035.0) 2004-11-13T13:16:11Z 653 00:10:53 1.31239485341224
32
+ points.push(new GLatLng(37.55472,-77.45698)); // 12 (55 of 1035.0) 2004-11-13T13:17:03Z 705 00:11:45 1.40525635086182
33
+ points.push(new GLatLng(37.55556,-77.45836)); // 13 (60 of 1035.0) 2004-11-13T13:17:53Z 755 00:12:35 1.50055449539542
34
+ points.push(new GLatLng(37.55638,-77.45975)); // 14 (65 of 1035.0) 2004-11-13T13:18:43Z 805 00:13:25 1.59553097292461
35
+ points.push(new GLatLng(37.55734,-77.46147)); // 15 (70 of 1035.0) 2004-11-13T13:19:42Z 864 00:14:24 1.71080891435601
36
+ points.push(new GLatLng(37.5582,-77.46293)); // 16 (75 of 1035.0) 2004-11-13T13:20:34Z 916 00:15:16 1.81052895853505
37
+ points.push(new GLatLng(37.55942,-77.46496)); // 17 (80 of 1035.0) 2004-11-13T13:21:43Z 985 00:16:25 1.95017328661485
38
+ points.push(new GLatLng(37.55998,-77.46582)); // 18 (82 of 1035.0) 2004-11-13T13:22:13Z 1015 00:16:55 2.01116382087678 2.0 00:08:42
39
+ points.push(new GLatLng(37.56095,-77.46747)); // 19 (87 of 1035.0) 2004-11-13T13:23:09Z 1071 00:17:51 2.12375571222832
40
+ points.push(new GLatLng(37.56215,-77.46949)); // 20 (92 of 1035.0) 2004-11-13T13:24:18Z 1140 00:19:00 2.26206064759939
41
+ points.push(new GLatLng(37.56181,-77.47076)); // 21 (97 of 1035.0) 2004-11-13T13:25:11Z 1193 00:19:53 2.37000534914213
42
+ points.push(new GLatLng(37.56078,-77.47202)); // 22 (102 of 1035.0) 2004-11-13T13:26:08Z 1250 00:20:50 2.48435316089741
43
+ points.push(new GLatLng(37.56241,-77.47434)); // 23 (107 of 1035.0) 2004-11-13T13:27:32Z 1334 00:22:14 2.65476076886625
44
+ points.push(new GLatLng(37.56354,-77.47617)); // 24 (112 of 1035.0) 2004-11-13T13:28:40Z 1402 00:23:22 2.78186352563053
45
+ points.push(new GLatLng(37.56481,-77.47838)); // 25 (117 of 1035.0) 2004-11-13T13:29:57Z 1479 00:24:39 2.93156162046509
46
+ points.push(new GLatLng(37.56556,-77.47962)); // 26 (120 of 1035.0) 2004-11-13T13:30:40Z 1522 00:25:22 3.01714523951085 3.0 00:08:27
47
+ points.push(new GLatLng(37.56644,-77.48114)); // 27 (125 of 1035.0) 2004-11-13T13:31:32Z 1574 00:26:14 3.12041247887602
48
+ points.push(new GLatLng(37.56775,-77.48333)); // 28 (130 of 1035.0) 2004-11-13T13:32:47Z 1649 00:27:29 3.27077989712514
49
+ points.push(new GLatLng(37.56912,-77.48565)); // 29 (135 of 1035.0) 2004-11-13T13:34:10Z 1732 00:28:52 3.42937745838166
50
+ points.push(new GLatLng(37.57067,-77.48818)); // 30 (140 of 1035.0) 2004-11-13T13:35:40Z 1822 00:30:22 3.60517740314757
51
+ points.push(new GLatLng(37.57204,-77.49048)); // 31 (145 of 1035.0) 2004-11-13T13:37:03Z 1905 00:31:45 3.76284426107172
52
+ points.push(new GLatLng(37.57318,-77.49241)); // 32 (150 of 1035.0) 2004-11-13T13:38:11Z 1973 00:32:53 3.89472541862394
53
+ points.push(new GLatLng(37.57262,-77.49374)); // 33 (155 of 1035.0) 2004-11-13T13:39:11Z 2033 00:33:53 4.02676900463497 4.0 00:08:31
54
+ points.push(new GLatLng(37.57176,-77.4946)); // 34 (160 of 1035.0) 2004-11-13T13:39:56Z 2078 00:34:38 4.10356239715243
55
+ points.push(new GLatLng(37.56983,-77.49627)); // 35 (165 of 1035.0) 2004-11-13T13:41:19Z 2161 00:36:01 4.26532756120921
56
+ points.push(new GLatLng(37.56788,-77.49769)); // 36 (170 of 1035.0) 2004-11-13T13:42:41Z 2243 00:37:23 4.42115850103388
57
+ points.push(new GLatLng(37.56614,-77.49893)); // 37 (175 of 1035.0) 2004-11-13T13:43:51Z 2313 00:38:33 4.55930585858025
58
+ points.push(new GLatLng(37.56582,-77.50039)); // 38 (180 of 1035.0) 2004-11-13T13:44:47Z 2369 00:39:29 4.67472188153515
59
+ points.push(new GLatLng(37.56736,-77.50333)); // 39 (185 of 1035.0) 2004-11-13T13:46:26Z 2468 00:41:08 4.86801470078062
60
+ points.push(new GLatLng(37.56837,-77.5055)); // 40 (189 of 1035.0) 2004-11-13T13:47:37Z 2539 00:42:19 5.00592810598917 5.0 00:08:26
61
+ points.push(new GLatLng(37.56914,-77.50711)); // 41 (194 of 1035.0) 2004-11-13T13:48:32Z 2594 00:43:14 5.10916222729476
62
+ points.push(new GLatLng(37.57013,-77.50932)); // 42 (199 of 1035.0) 2004-11-13T13:49:45Z 2667 00:44:27 5.24829847159214
63
+ points.push(new GLatLng(37.57123,-77.51151)); // 43 (204 of 1035.0) 2004-11-13T13:50:57Z 2739 00:45:39 5.39059926748032
64
+ points.push(new GLatLng(37.57234,-77.51393)); // 44 (209 of 1035.0) 2004-11-13T13:52:19Z 2821 00:47:01 5.54382085860815
65
+ points.push(new GLatLng(37.57316,-77.51625)); // 45 (214 of 1035.0) 2004-11-13T13:53:30Z 2892 00:48:12 5.68379982481173
66
+ points.push(new GLatLng(37.57185,-77.51736)); // 46 (219 of 1035.0) 2004-11-13T13:54:35Z 2957 00:49:17 5.80983567230983
67
+ points.push(new GLatLng(37.56938,-77.51822)); // 47 (224 of 1035.0) 2004-11-13T13:56:08Z 3050 00:50:50 5.98875530074231
68
+ points.push(new GLatLng(37.56904,-77.51842)); // 48 (226 of 1035.0) 2004-11-13T13:56:31Z 3073 00:51:13 6.01495659469438 6.0 00:08:54
69
+ points.push(new GLatLng(37.56876,-77.51934)); // 49 (231 of 1035.0) 2004-11-13T13:57:04Z 3106 00:51:46 6.08040905503655
70
+ points.push(new GLatLng(37.56917,-77.52206)); // 50 (236 of 1035.0) 2004-11-13T13:58:21Z 3183 00:53:03 6.23222273492036
71
+ points.push(new GLatLng(37.56863,-77.52453)); // 51 (241 of 1035.0) 2004-11-13T13:59:34Z 3256 00:54:16 6.37405050385754
72
+ points.push(new GLatLng(37.56794,-77.52738)); // 52 (246 of 1035.0) 2004-11-13T14:00:56Z 3338 00:55:38 6.53849454284372
73
+ points.push(new GLatLng(37.56816,-77.53009)); // 53 (251 of 1035.0) 2004-11-13T14:02:11Z 3413 00:56:53 6.68789903643218
74
+ points.push(new GLatLng(37.56799,-77.53168)); // 54 (256 of 1035.0) 2004-11-13T14:02:56Z 3458 00:57:38 6.77959618232015
75
+ points.push(new GLatLng(37.56803,-77.5341)); // 55 (261 of 1035.0) 2004-11-13T14:04:04Z 3526 00:58:46 6.91279620627879
76
+ points.push(new GLatLng(37.56792,-77.5358)); // 56 (264 of 1035.0) 2004-11-13T14:04:52Z 3574 00:59:34 7.00675373221606 7.0 00:08:21
77
+ points.push(new GLatLng(37.56764,-77.53777)); // 57 (269 of 1035.0) 2004-11-13T14:05:47Z 3629 01:00:29 7.11654665514228
78
+ points.push(new GLatLng(37.56689,-77.53962)); // 58 (274 of 1035.0) 2004-11-13T14:06:53Z 3695 01:01:35 7.24364270792186
79
+ points.push(new GLatLng(37.56638,-77.54185)); // 59 (279 of 1035.0) 2004-11-13T14:07:59Z 3761 01:02:41 7.3775980899979
80
+ points.push(new GLatLng(37.56468,-77.54331)); // 60 (284 of 1035.0) 2004-11-13T14:09:15Z 3837 01:03:57 7.52141025778632
81
+ points.push(new GLatLng(37.56296,-77.54367)); // 61 (289 of 1035.0) 2004-11-13T14:10:17Z 3899 01:04:59 7.6425855564398
82
+ points.push(new GLatLng(37.56155,-77.54391)); // 62 (294 of 1035.0) 2004-11-13T14:11:09Z 3951 01:05:51 7.74099027600618
83
+ points.push(new GLatLng(37.56024,-77.54412)); // 63 (299 of 1035.0) 2004-11-13T14:11:54Z 3996 01:06:36 7.83244464386864
84
+ points.push(new GLatLng(37.55773,-77.54459)); // 64 (304 of 1035.0) 2004-11-13T14:13:25Z 4087 01:08:07 8.00799174367724 8.0 00:08:33
85
+ points.push(new GLatLng(37.55747,-77.54406)); // 65 (309 of 1035.0) 2004-11-13T14:13:53Z 4115 01:08:35 8.06318316762709
86
+ points.push(new GLatLng(37.55833,-77.54243)); // 66 (314 of 1035.0) 2004-11-13T14:14:57Z 4179 01:09:39 8.18573660922624
87
+ points.push(new GLatLng(37.55889,-77.53996)); // 67 (319 of 1035.0) 2004-11-13T14:16:21Z 4263 01:11:03 8.32705570203374
88
+ points.push(new GLatLng(37.55914,-77.5367)); // 68 (324 of 1035.0) 2004-11-13T14:17:53Z 4355 01:12:35 8.50653336162412
89
+ points.push(new GLatLng(37.55914,-77.53384)); // 69 (329 of 1035.0) 2004-11-13T14:19:13Z 4435 01:13:55 8.66362997714462
90
+ points.push(new GLatLng(37.55929,-77.53135)); // 70 (334 of 1035.0) 2004-11-13T14:20:27Z 4509 01:15:09 8.80116847754491
91
+ points.push(new GLatLng(37.55876,-77.52865)); // 71 (339 of 1035.0) 2004-11-13T14:21:49Z 4591 01:16:31 8.95700338907076
92
+ points.push(new GLatLng(37.55807,-77.52779)); // 72 (341 of 1035.0) 2004-11-13T14:22:21Z 4623 01:17:03 9.02402181848259 9.0 00:08:56
93
+ points.push(new GLatLng(37.55655,-77.52659)); // 73 (346 of 1035.0) 2004-11-13T14:23:27Z 4689 01:18:09 9.14924503208899
94
+ points.push(new GLatLng(37.55472,-77.52578)); // 74 (351 of 1035.0) 2004-11-13T14:24:40Z 4762 01:19:22 9.28369732616903
95
+ points.push(new GLatLng(37.55299,-77.52384)); // 75 (356 of 1035.0) 2004-11-13T14:26:01Z 4843 01:20:43 9.447538872204
96
+ points.push(new GLatLng(37.55191,-77.52193)); // 76 (361 of 1035.0) 2004-11-13T14:27:07Z 4909 01:21:49 9.57650057297273
97
+ points.push(new GLatLng(37.55002,-77.52153)); // 77 (366 of 1035.0) 2004-11-13T14:28:19Z 4981 01:23:01 9.71009185936813
98
+ points.push(new GLatLng(37.55007,-77.52028)); // 78 (371 of 1035.0) 2004-11-13T14:28:56Z 5018 01:23:38 9.78031704455864
99
+ points.push(new GLatLng(37.5482,-77.5176)); // 79 (376 of 1035.0) 2004-11-13T14:30:38Z 5120 01:25:20 9.97933483320977
100
+ points.push(new GLatLng(37.54797,-77.51704)); // 80 (377 of 1035.0) 2004-11-13T14:30:57Z 5139 01:25:39 10.0138818614913 10.0 00:08:36
101
+ points.push(new GLatLng(37.54627,-77.51788)); // 81 (382 of 1035.0) 2004-11-13T14:32:11Z 5213 01:26:53 10.156932916274
102
+ points.push(new GLatLng(37.54354,-77.51891)); // 82 (387 of 1035.0) 2004-11-13T14:34:16Z 5338 01:28:58 10.3718150897664
103
+ points.push(new GLatLng(37.54181,-77.51711)); // 83 (392 of 1035.0) 2004-11-13T14:35:32Z 5414 01:30:14 10.5303699420794
104
+ points.push(new GLatLng(37.54142,-77.51545)); // 84 (397 of 1035.0) 2004-11-13T14:36:18Z 5460 01:31:00 10.6263594230067
105
+ points.push(new GLatLng(37.54037,-77.51453)); // 85 (402 of 1035.0) 2004-11-13T14:37:20Z 5522 01:32:02 10.7354221813914
106
+ points.push(new GLatLng(37.53927,-77.51498)); // 86 (407 of 1035.0) 2004-11-13T14:37:59Z 5561 01:32:41 10.8181118254028
107
+ points.push(new GLatLng(37.53694,-77.5158)); // 87 (412 of 1035.0) 2004-11-13T14:39:29Z 5651 01:34:11 10.9915686970985
108
+ points.push(new GLatLng(37.53674,-77.51548)); // 88 (414 of 1035.0) 2004-11-13T14:39:42Z 5664 01:34:24 11.0161035772686 11.0 00:08:45
109
+ points.push(new GLatLng(37.53625,-77.51337)); // 89 (419 of 1035.0) 2004-11-13T14:40:50Z 5732 01:35:32 11.1367227927776
110
+ points.push(new GLatLng(37.53552,-77.51035)); // 90 (424 of 1035.0) 2004-11-13T14:42:21Z 5823 01:37:03 11.3098172558327
111
+ points.push(new GLatLng(37.53451,-77.50829)); // 91 (429 of 1035.0) 2004-11-13T14:43:27Z 5889 01:38:09 11.4446585137939
112
+ points.push(new GLatLng(37.53273,-77.507)); // 92 (434 of 1035.0) 2004-11-13T14:44:44Z 5966 01:39:26 11.5867952143752
113
+ points.push(new GLatLng(37.53088,-77.50541)); // 93 (439 of 1035.0) 2004-11-13T14:46:11Z 6053 01:40:53 11.7419247731254
114
+ points.push(new GLatLng(37.52908,-77.50189)); // 94 (444 of 1035.0) 2004-11-13T14:48:17Z 6179 01:42:59 11.9715886920464
115
+ points.push(new GLatLng(37.52852,-77.50114)); // 95 (446 of 1035.0) 2004-11-13T14:48:46Z 6208 01:43:28 12.0281665281782 12.0 00:09:04
116
+ points.push(new GLatLng(37.52737,-77.49936)); // 96 (451 of 1035.0) 2004-11-13T14:49:52Z 6274 01:44:34 12.1541561439794
117
+ points.push(new GLatLng(37.52638,-77.49818)); // 97 (456 of 1035.0) 2004-11-13T14:50:55Z 6337 01:45:37 12.2485862026703
118
+ points.push(new GLatLng(37.52492,-77.49552)); // 98 (461 of 1035.0) 2004-11-13T14:52:27Z 6429 01:47:09 12.4268592271339
119
+ points.push(new GLatLng(37.52312,-77.49209)); // 99 (466 of 1035.0) 2004-11-13T14:54:20Z 6542 01:49:02 12.6528187805037
120
+ points.push(new GLatLng(37.52183,-77.48968)); // 100 (471 of 1035.0) 2004-11-13T14:55:45Z 6627 01:50:27 12.8122307121884
121
+ points.push(new GLatLng(37.52089,-77.48754)); // 101 (476 of 1035.0) 2004-11-13T14:56:56Z 6698 01:51:38 12.9474814958277
122
+ points.push(new GLatLng(37.52069,-77.4864)); // 102 (478 of 1035.0) 2004-11-13T14:57:29Z 6731 01:52:11 13.0115110937403 13.0 00:08:43
123
+ points.push(new GLatLng(37.52035,-77.48447)); // 103 (483 of 1035.0) 2004-11-13T14:58:28Z 6790 01:53:10 13.120275528204
124
+ points.push(new GLatLng(37.51986,-77.48198)); // 104 (488 of 1035.0) 2004-11-13T14:59:40Z 6862 01:54:22 13.260962797279
125
+ points.push(new GLatLng(37.51887,-77.47938)); // 105 (493 of 1035.0) 2004-11-13T15:01:03Z 6945 01:55:45 13.4216976013247
126
+ points.push(new GLatLng(37.51765,-77.4767)); // 106 (498 of 1035.0) 2004-11-13T15:02:33Z 7035 01:57:15 13.5913306044174
127
+ points.push(new GLatLng(37.51644,-77.47396)); // 107 (503 of 1035.0) 2004-11-13T15:04:00Z 7122 01:58:42 13.7634983336463
128
+ points.push(new GLatLng(37.51567,-77.47106)); // 108 (508 of 1035.0) 2004-11-13T15:05:26Z 7208 02:00:08 13.931858158213
129
+ points.push(new GLatLng(37.5158,-77.46936)); // 109 (511 of 1035.0) 2004-11-13T15:06:21Z 7263 02:01:03 14.0275831220463 14.0 00:08:52
130
+ points.push(new GLatLng(37.51698,-77.46707)); // 110 (516 of 1035.0) 2004-11-13T15:07:35Z 7337 02:02:17 14.1799981716365
131
+ points.push(new GLatLng(37.51745,-77.46584)); // 111 (521 of 1035.0) 2004-11-13T15:08:23Z 7385 02:03:05 14.2549793844926
132
+ points.push(new GLatLng(37.51848,-77.46316)); // 112 (526 of 1035.0) 2004-11-13T15:09:48Z 7470 02:04:30 14.4182040564254
133
+ points.push(new GLatLng(37.51943,-77.46089)); // 113 (531 of 1035.0) 2004-11-13T15:11:01Z 7543 02:05:43 14.5589484198491
134
+ points.push(new GLatLng(37.52033,-77.45866)); // 114 (536 of 1035.0) 2004-11-13T15:12:11Z 7613 02:06:53 14.6962976327517
135
+ points.push(new GLatLng(37.52112,-77.45645)); // 115 (541 of 1035.0) 2004-11-13T15:13:19Z 7681 02:08:01 14.8292314295688
136
+ points.push(new GLatLng(37.52183,-77.45479)); // 116 (546 of 1035.0) 2004-11-13T15:14:12Z 7734 02:08:54 14.9326731708379
137
+ points.push(new GLatLng(37.52243,-77.45353)); // 117 (549 of 1035.0) 2004-11-13T15:14:57Z 7779 02:09:39 15.0136522026628 15.0 00:08:36
138
+ points.push(new GLatLng(37.52322,-77.45211)); // 118 (554 of 1035.0) 2004-11-13T15:15:47Z 7829 02:10:29 15.1087447872879
139
+ points.push(new GLatLng(37.5246,-77.4526)); // 119 (559 of 1035.0) 2004-11-13T15:16:37Z 7879 02:11:19 15.2136014919309
140
+ points.push(new GLatLng(37.52634,-77.45235)); // 120 (564 of 1035.0) 2004-11-13T15:17:40Z 7942 02:12:22 15.3362611641563
141
+ points.push(new GLatLng(37.52782,-77.45173)); // 121 (569 of 1035.0) 2004-11-13T15:18:39Z 8001 02:13:21 15.444109219189
142
+ points.push(new GLatLng(37.52898,-77.45125)); // 122 (574 of 1035.0) 2004-11-13T15:19:26Z 8048 02:14:08 15.5286903258962
143
+ points.push(new GLatLng(37.53043,-77.45067)); // 123 (579 of 1035.0) 2004-11-13T15:20:24Z 8106 02:15:06 15.6340345715211
144
+ points.push(new GLatLng(37.53187,-77.45014)); // 124 (584 of 1035.0) 2004-11-13T15:21:22Z 8164 02:16:04 15.7377296386684
145
+ points.push(new GLatLng(37.53331,-77.44967)); // 125 (589 of 1035.0) 2004-11-13T15:22:18Z 8220 02:17:00 15.8406378638588
146
+ points.push(new GLatLng(37.53485,-77.44943)); // 126 (594 of 1035.0) 2004-11-13T15:23:15Z 8277 02:17:57 15.9482409262778
147
+ points.push(new GLatLng(37.53578,-77.44947)); // 127 (597 of 1035.0) 2004-11-13T15:23:51Z 8313 02:18:33 16.0125529444477 16.0 00:08:54
148
+ points.push(new GLatLng(37.53704,-77.44939)); // 128 (602 of 1035.0) 2004-11-13T15:24:42Z 8364 02:19:24 16.0997931985578
149
+ points.push(new GLatLng(37.53816,-77.44941)); // 129 (607 of 1035.0) 2004-11-13T15:25:34Z 8416 02:20:16 16.1772316292426
150
+ points.push(new GLatLng(37.53996,-77.44941)); // 130 (612 of 1035.0) 2004-11-13T15:26:42Z 8484 02:21:24 16.3017971460538
151
+ points.push(new GLatLng(37.5417,-77.44934)); // 131 (617 of 1035.0) 2004-11-13T15:27:47Z 8549 02:22:29 16.4222286883705
152
+ points.push(new GLatLng(37.54335,-77.44924)); // 132 (622 of 1035.0) 2004-11-13T15:28:46Z 8608 02:23:28 16.5364076925736
153
+ points.push(new GLatLng(37.54537,-77.44915)); // 133 (627 of 1035.0) 2004-11-13T15:30:00Z 8682 02:24:42 16.6764050652262
154
+ points.push(new GLatLng(37.54593,-77.45012)); // 134 (632 of 1035.0) 2004-11-13T15:31:03Z 8745 02:25:45 16.7648008672392
155
+ points.push(new GLatLng(37.54588,-77.45243)); // 135 (637 of 1035.0) 2004-11-13T15:32:03Z 8805 02:26:45 16.8915790871257
156
+ points.push(new GLatLng(37.5458,-77.45559)); // 136 (642 of 1035.0) 2004-11-13T15:33:31Z 8893 02:28:13 17.0648110183381 17.0 00:09:40
157
+ points.push(new GLatLng(37.54612,-77.45733)); // 137 (647 of 1035.0) 2004-11-13T15:34:23Z 8945 02:29:05 17.1639117037192
158
+ points.push(new GLatLng(37.54702,-77.45984)); // 138 (652 of 1035.0) 2004-11-13T15:35:43Z 9025 02:30:25 17.315101345106
159
+ points.push(new GLatLng(37.54777,-77.46187)); // 139 (657 of 1035.0) 2004-11-13T15:36:49Z 9091 02:31:31 17.4380323995227
160
+ points.push(new GLatLng(37.54854,-77.46393)); // 140 (662 of 1035.0) 2004-11-13T15:37:57Z 9159 02:32:39 17.5628951379647
161
+ points.push(new GLatLng(37.54912,-77.46576)); // 141 (667 of 1035.0) 2004-11-13T15:38:53Z 9215 02:33:35 17.6715638437557
162
+ points.push(new GLatLng(37.5499,-77.46782)); // 142 (672 of 1035.0) 2004-11-13T15:39:59Z 9281 02:34:41 17.7970172501388
163
+ points.push(new GLatLng(37.55037,-77.46898)); // 143 (677 of 1035.0) 2004-11-13T15:40:36Z 9318 02:35:18 17.8685223380721
164
+ points.push(new GLatLng(37.55093,-77.4708)); // 144 (682 of 1035.0) 2004-11-13T15:41:34Z 9376 02:36:16 17.9764940580828
165
+ points.push(new GLatLng(37.5511,-77.47121)); // 145 (683 of 1035.0) 2004-11-13T15:41:48Z 9390 02:36:30 18.0018378406249 18.0 00:08:17
166
+ points.push(new GLatLng(37.5517,-77.47277)); // 146 (688 of 1035.0) 2004-11-13T15:42:38Z 9440 02:37:20 18.0971298071894
167
+ points.push(new GLatLng(37.55219,-77.47404)); // 147 (693 of 1035.0) 2004-11-13T15:43:20Z 9482 02:38:02 18.1748275783354
168
+ points.push(new GLatLng(37.55269,-77.4755)); // 148 (698 of 1035.0) 2004-11-13T15:44:11Z 9533 02:38:53 18.2625544186737
169
+ points.push(new GLatLng(37.55438,-77.47471)); // 149 (703 of 1035.0) 2004-11-13T15:45:15Z 9597 02:39:57 18.3890335780148
170
+ points.push(new GLatLng(37.55655,-77.47348)); // 150 (708 of 1035.0) 2004-11-13T15:46:41Z 9683 02:41:23 18.5534374989842
171
+ points.push(new GLatLng(37.55889,-77.47222)); // 151 (713 of 1035.0) 2004-11-13T15:48:12Z 9774 02:42:54 18.7292654383694
172
+ points.push(new GLatLng(37.56069,-77.47114)); // 152 (718 of 1035.0) 2004-11-13T15:49:26Z 9848 02:44:08 18.8671241939458
173
+ points.push(new GLatLng(37.56279,-77.47003)); // 153 (723 of 1035.0) 2004-11-13T15:50:49Z 9931 02:45:31 19.0246336986259 19.0 00:09:01
174
+ points.push(new GLatLng(37.56419,-77.46928)); // 154 (728 of 1035.0) 2004-11-13T15:51:44Z 9986 02:46:26 19.1298894729944
175
+ points.push(new GLatLng(37.56601,-77.46831)); // 155 (733 of 1035.0) 2004-11-13T15:52:57Z 10059 02:47:39 19.2665026357072
176
+ points.push(new GLatLng(37.56717,-77.46763)); // 156 (738 of 1035.0) 2004-11-13T15:53:46Z 10108 02:48:28 19.3555694441862
177
+ points.push(new GLatLng(37.56908,-77.46664)); // 157 (743 of 1035.0) 2004-11-13T15:55:10Z 10192 02:49:52 19.4982903975632
178
+ points.push(new GLatLng(37.5709,-77.46559)); // 158 (748 of 1035.0) 2004-11-13T15:56:26Z 10268 02:51:08 19.6365697691457
179
+ points.push(new GLatLng(37.57275,-77.46458)); // 159 (753 of 1035.0) 2004-11-13T15:57:43Z 10345 02:52:25 19.7759892515564
180
+ points.push(new GLatLng(37.57442,-77.46363)); // 160 (758 of 1035.0) 2004-11-13T15:58:55Z 10417 02:53:37 19.9025893058583
181
+ points.push(new GLatLng(37.57612,-77.46273)); // 161 (762 of 1035.0) 2004-11-13T16:00:09Z 10491 02:54:51 20.0299635751823 20.0 00:09:20
182
+ points.push(new GLatLng(37.57756,-77.46192)); // 162 (767 of 1035.0) 2004-11-13T16:01:09Z 10551 02:55:51 20.1389567276245
183
+ points.push(new GLatLng(37.57901,-77.46151)); // 163 (772 of 1035.0) 2004-11-13T16:02:11Z 10613 02:56:53 20.2441470565457
184
+ points.push(new GLatLng(37.58073,-77.46185)); // 164 (777 of 1035.0) 2004-11-13T16:03:15Z 10677 02:57:57 20.3645207281582
185
+ points.push(new GLatLng(37.58271,-77.46222)); // 165 (782 of 1035.0) 2004-11-13T16:04:31Z 10753 02:59:13 20.5028813372448
186
+ points.push(new GLatLng(37.5847,-77.4626)); // 166 (787 of 1035.0) 2004-11-13T16:05:46Z 10828 03:00:28 20.6421529405642
187
+ points.push(new GLatLng(37.58635,-77.46314)); // 167 (792 of 1035.0) 2004-11-13T16:06:52Z 10894 03:01:34 20.7621108237411
188
+ points.push(new GLatLng(37.58822,-77.46393)); // 168 (797 of 1035.0) 2004-11-13T16:08:04Z 10966 03:02:46 20.8990465238588
189
+ points.push(new GLatLng(37.59004,-77.46415)); // 169 (801 of 1035.0) 2004-11-13T16:09:16Z 11038 03:03:58 21.0257431528371 21.0 00:09:07
190
+ points.push(new GLatLng(37.59161,-77.46331)); // 170 (806 of 1035.0) 2004-11-13T16:10:17Z 11099 03:04:59 21.1485948525263
191
+ points.push(new GLatLng(37.59318,-77.46205)); // 171 (811 of 1035.0) 2004-11-13T16:11:27Z 11169 03:06:09 21.2779675784681
192
+ points.push(new GLatLng(37.59476,-77.46061)); // 172 (816 of 1035.0) 2004-11-13T16:12:38Z 11240 03:07:20 21.4317343689817
193
+ points.push(new GLatLng(37.5935,-77.45951)); // 173 (821 of 1035.0) 2004-11-13T16:13:31Z 11293 03:08:13 21.5427436124071
194
+ points.push(new GLatLng(37.59172,-77.45859)); // 174 (826 of 1035.0) 2004-11-13T16:14:38Z 11360 03:09:20 21.684757380976
195
+ points.push(new GLatLng(37.59022,-77.45726)); // 175 (831 of 1035.0) 2004-11-13T16:15:40Z 11422 03:10:22 21.8143012352742
196
+ points.push(new GLatLng(37.58839,-77.45636)); // 176 (836 of 1035.0) 2004-11-13T16:16:47Z 11489 03:11:29 21.9505720417323
197
+ points.push(new GLatLng(37.58781,-77.45567)); // 177 (838 of 1035.0) 2004-11-13T16:17:16Z 11518 03:11:58 22.0057065657745 22.0 00:08:00
198
+ points.push(new GLatLng(37.58663,-77.45404)); // 178 (843 of 1035.0) 2004-11-13T16:18:14Z 11576 03:12:56 22.1267876778214
199
+ points.push(new GLatLng(37.58513,-77.45213)); // 179 (848 of 1035.0) 2004-11-13T16:19:31Z 11653 03:14:13 22.2740494114095
200
+ points.push(new GLatLng(37.58442,-77.45121)); // 180 (853 of 1035.0) 2004-11-13T16:20:09Z 11691 03:14:51 22.3445212134905
201
+ points.push(new GLatLng(37.58247,-77.4507)); // 181 (858 of 1035.0) 2004-11-13T16:21:21Z 11763 03:16:03 22.4865541503622
202
+ points.push(new GLatLng(37.58054,-77.45037)); // 182 (863 of 1035.0) 2004-11-13T16:22:29Z 11831 03:17:11 22.621322507128
203
+ points.push(new GLatLng(37.57854,-77.44997)); // 183 (868 of 1035.0) 2004-11-13T16:23:40Z 11902 03:18:22 22.7613020872745
204
+ points.push(new GLatLng(37.5767,-77.44967)); // 184 (873 of 1035.0) 2004-11-13T16:24:46Z 11968 03:19:28 22.8896128798193
205
+ points.push(new GLatLng(37.57511,-77.44936)); // 185 (877 of 1035.0) 2004-11-13T16:25:42Z 12024 03:20:24 23.0008056218197 23.0 00:08:26
206
+ points.push(new GLatLng(37.57326,-77.44926)); // 186 (882 of 1035.0) 2004-11-13T16:26:49Z 12091 03:21:31 23.128922959146
207
+ points.push(new GLatLng(37.57116,-77.44902)); // 187 (887 of 1035.0) 2004-11-13T16:28:03Z 12165 03:22:45 23.2747581450644
208
+ points.push(new GLatLng(37.56955,-77.44898)); // 188 (892 of 1035.0) 2004-11-13T16:29:01Z 12223 03:23:43 23.3861049737559
209
+ points.push(new GLatLng(37.56736,-77.4487)); // 189 (897 of 1035.0) 2004-11-13T16:30:18Z 12300 03:25:00 23.5386296363912
210
+ points.push(new GLatLng(37.56794,-77.44524)); // 190 (902 of 1035.0) 2004-11-13T16:31:48Z 12390 03:26:30 23.7486018435202
211
+ points.push(new GLatLng(37.56758,-77.44443)); // 191 (907 of 1035.0) 2004-11-13T16:32:19Z 12421 03:27:01 23.8117304098725
212
+ points.push(new GLatLng(37.56638,-77.44421)); // 192 (912 of 1035.0) 2004-11-13T16:33:01Z 12463 03:27:43 23.895536788925
213
+ points.push(new GLatLng(37.56485,-77.44394)); // 193 (917 of 1035.0) 2004-11-13T16:33:55Z 12517 03:28:37 24.0023242191908 24.0 00:08:13
214
+ points.push(new GLatLng(37.56324,-77.44364)); // 194 (922 of 1035.0) 2004-11-13T16:34:51Z 12573 03:29:33 24.1148209652818
215
+ points.push(new GLatLng(37.56215,-77.44306)); // 195 (927 of 1035.0) 2004-11-13T16:35:35Z 12617 03:30:17 24.1968483968297
216
+ points.push(new GLatLng(37.5606,-77.44252)); // 196 (932 of 1035.0) 2004-11-13T16:36:30Z 12672 03:31:12 24.3086090287258
217
+ points.push(new GLatLng(37.55882,-77.44254)); // 197 (937 of 1035.0) 2004-11-13T16:37:35Z 12737 03:32:17 24.4316659118825
218
+ points.push(new GLatLng(37.55732,-77.44246)); // 198 (942 of 1035.0) 2004-11-13T16:38:27Z 12789 03:33:09 24.5358411386246
219
+ points.push(new GLatLng(37.55578,-77.44196)); // 199 (947 of 1035.0) 2004-11-13T16:39:22Z 12844 03:34:04 24.645824587815
220
+ points.push(new GLatLng(37.55462,-77.44215)); // 200 (952 of 1035.0) 2004-11-13T16:40:04Z 12886 03:34:46 24.7280616224175
221
+ points.push(new GLatLng(37.55372,-77.44291)); // 201 (957 of 1035.0) 2004-11-13T16:40:44Z 12926 03:35:26 24.8031465093595
222
+ points.push(new GLatLng(37.55264,-77.44385)); // 202 (962 of 1035.0) 2004-11-13T16:41:33Z 12975 03:36:15 24.8938252776901
223
+ points.push(new GLatLng(37.55138,-77.44507)); // 203 (967 of 1035.0) 2004-11-13T16:42:33Z 13035 03:37:15 25.0037135917287 25.0 00:08:38
224
+ points.push(new GLatLng(37.55018,-77.44619)); // 204 (972 of 1035.0) 2004-11-13T16:43:32Z 13094 03:38:14 25.1070846226228
225
+ points.push(new GLatLng(37.54953,-77.44632)); // 205 (977 of 1035.0) 2004-11-13T16:44:01Z 13123 03:38:43 25.1610151878162
226
+ points.push(new GLatLng(37.54872,-77.44488)); // 206 (982 of 1035.0) 2004-11-13T16:44:51Z 13173 03:39:33 25.2578996585207
227
+ points.push(new GLatLng(37.54784,-77.44336)); // 207 (987 of 1035.0) 2004-11-13T16:45:44Z 13226 03:40:26 25.3610970714744
228
+ points.push(new GLatLng(37.54689,-77.44254)); // 208 (992 of 1035.0) 2004-11-13T16:46:26Z 13268 03:41:08 25.4455061109217
229
+ points.push(new GLatLng(37.54513,-77.44381)); // 209 (997 of 1035.0) 2004-11-13T16:47:36Z 13338 03:42:18 25.5925030441122
230
+ points.push(new GLatLng(37.54412,-77.44396)); // 210 (1002 of 1035.0) 2004-11-13T16:48:22Z 13384 03:43:04 25.6865808869399
231
+ points.push(new GLatLng(37.54277,-77.4446)); // 211 (1007 of 1035.0) 2004-11-13T16:49:17Z 13439 03:43:59 25.8021096438819
232
+ points.push(new GLatLng(37.54187,-77.44462)); // 212 (1012 of 1035.0) 2004-11-13T16:50:00Z 13482 03:44:42 25.8882232701881
233
+ points.push(new GLatLng(37.54088,-77.44291)); // 213 (1017 of 1035.0) 2004-11-13T16:50:57Z 13539 03:45:39 26.0109570902786 26.0 00:08:24
234
+ points.push(new GLatLng(37.53968,-77.44104)); // 214 (1022 of 1035.0) 2004-11-13T16:52:01Z 13603 03:46:43 26.1427957468834
235
+ points.push(new GLatLng(37.53844,-77.43934)); // 215 (1027 of 1035.0) 2004-11-13T16:52:56Z 13658 03:47:38 26.2763151706279
236
+ points.push(new GLatLng(37.53694,-77.43623)); // 216 (1032 of 1035.0) 2004-11-13T16:54:19Z 13741 03:49:01 26.4786746230576
237
+ points.push(new GLatLng(37.53674,-77.43595)); // 217 (1035 of 1035.0) 2004-11-13T16:56:17Z 13859 03:50:59 26.5328886994377
238
+
239
+ var routePolyline = new GPolyline(points);
240
+ map.addOverlay(routePolyline);
241
+
242
+ // Create a base icon for all of our markers that specifies the
243
+ // shadow, icon dimensions, etc.
244
+ var baseIcon = new GIcon();
245
+ baseIcon.shadow = "http://www.joakim-systems.com/gicons/shadow50.png";
246
+ baseIcon.iconSize = new GSize(20, 34);
247
+ baseIcon.shadowSize = new GSize(37, 34);
248
+ baseIcon.iconAnchor = new GPoint(9, 34);
249
+ baseIcon.infoWindowAnchor = new GPoint(9, 2);
250
+ baseIcon.infoShadowAnchor = new GPoint(18, 25);
251
+
252
+ var iconStart = new GIcon(baseIcon);
253
+ iconStart.image = "http://www.joakim-systems.com/gicons/dd-start.png";
254
+ var pStart = new GPoint(-77.43634, 37.54314);
255
+ var mStart = new GMarker(pStart, iconStart);
256
+ GEvent.addListener(mStart, "click", function() {
257
+ mStart.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Start!</b></td></tr><tr><td>Distance: </td><td>0.0</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:05:18Z </td></tr><tr><td>Elapsed Time: </td><td>00:00:00 </td></tr><tr><td>Average Pace: </td><td> </td></tr><tr><td>Lat/Lng: </td><td>37.54314 , -77.43634 </td></tr><tr><td>Altitude: </td><td>-55.619m </td></tr></table>");
258
+ });
259
+ map.addOverlay(mStart);
260
+
261
+ var icon1 = new GIcon(baseIcon);
262
+ icon1.image = "http://www.joakim-systems.com/gicons/marker1.png";
263
+ var p1 = new GPoint(-77.45125, 37.55133);
264
+ var m1 = new GMarker(p1, icon1);
265
+ GEvent.addListener(m1, "click", function() {
266
+ m1.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 1</b></td></tr><tr><td>Distance: </td><td>1.01289462376059</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:13:31Z </td></tr><tr><td>Elapsed Time: </td><td>00:08:13 </td></tr><tr><td>Average Pace: </td><td>8:6.7 </td></tr><tr><td>Lat/Lng: </td><td>37.55133 , -77.45125 </td></tr><tr><td>Altitude: </td><td>58.297m </td></tr></table>");
267
+ });
268
+ map.addOverlay(m1);
269
+
270
+ var icon2 = new GIcon(baseIcon);
271
+ icon2.image = "http://www.joakim-systems.com/gicons/marker2.png";
272
+ var p2 = new GPoint(-77.46582, 37.55998);
273
+ var m2 = new GMarker(p2, icon2);
274
+ GEvent.addListener(m2, "click", function() {
275
+ m2.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 2</b></td></tr><tr><td>Distance: </td><td>2.01116382087678</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:22:13Z </td></tr><tr><td>Elapsed Time: </td><td>00:16:55 </td></tr><tr><td>Average Pace: </td><td>8:24.7 </td></tr><tr><td>Lat/Lng: </td><td>37.55998 , -77.46582 </td></tr><tr><td>Altitude: </td><td>64.065m </td></tr></table>");
276
+ });
277
+ map.addOverlay(m2);
278
+
279
+ var icon3 = new GIcon(baseIcon);
280
+ icon3.image = "http://www.joakim-systems.com/gicons/marker3.png";
281
+ var p3 = new GPoint(-77.47962, 37.56556);
282
+ var m3 = new GMarker(p3, icon3);
283
+ GEvent.addListener(m3, "click", function() {
284
+ m3.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 3</b></td></tr><tr><td>Distance: </td><td>3.01714523951085</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:30:40Z </td></tr><tr><td>Elapsed Time: </td><td>00:25:22 </td></tr><tr><td>Average Pace: </td><td>8:24.5 </td></tr><tr><td>Lat/Lng: </td><td>37.56556 , -77.47962 </td></tr><tr><td>Altitude: </td><td>60.7m </td></tr></table>");
285
+ });
286
+ map.addOverlay(m3);
287
+
288
+ var icon4 = new GIcon(baseIcon);
289
+ icon4.image = "http://www.joakim-systems.com/gicons/marker4.png";
290
+ var p4 = new GPoint(-77.49374, 37.57262);
291
+ var m4 = new GMarker(p4, icon4);
292
+ GEvent.addListener(m4, "click", function() {
293
+ m4.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 4</b></td></tr><tr><td>Distance: </td><td>4.02676900463497</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:39:11Z </td></tr><tr><td>Elapsed Time: </td><td>00:33:53 </td></tr><tr><td>Average Pace: </td><td>8:24.9 </td></tr><tr><td>Lat/Lng: </td><td>37.57262 , -77.49374 </td></tr><tr><td>Altitude: </td><td>117.418m </td></tr></table>");
294
+ });
295
+ map.addOverlay(m4);
296
+
297
+ var icon5 = new GIcon(baseIcon);
298
+ icon5.image = "http://www.joakim-systems.com/gicons/marker5.png";
299
+ var p5 = new GPoint(-77.5055, 37.56837);
300
+ var m5 = new GMarker(p5, icon5);
301
+ GEvent.addListener(m5, "click", function() {
302
+ m5.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 5</b></td></tr><tr><td>Distance: </td><td>5.00592810598917</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:47:37Z </td></tr><tr><td>Elapsed Time: </td><td>00:42:19 </td></tr><tr><td>Average Pace: </td><td>8:27.2 </td></tr><tr><td>Lat/Lng: </td><td>37.56837 , -77.5055 </td></tr><tr><td>Altitude: </td><td>84.253m </td></tr></table>");
303
+ });
304
+ map.addOverlay(m5);
305
+
306
+ var icon6 = new GIcon(baseIcon);
307
+ icon6.image = "http://www.joakim-systems.com/gicons/marker6.png";
308
+ var p6 = new GPoint(-77.51842, 37.56904);
309
+ var m6 = new GMarker(p6, icon6);
310
+ GEvent.addListener(m6, "click", function() {
311
+ m6.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 6</b></td></tr><tr><td>Distance: </td><td>6.01495659469438</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:56:31Z </td></tr><tr><td>Elapsed Time: </td><td>00:51:13 </td></tr><tr><td>Average Pace: </td><td>8:30.9 </td></tr><tr><td>Lat/Lng: </td><td>37.56904 , -77.51842 </td></tr><tr><td>Altitude: </td><td>78.485m </td></tr></table>");
312
+ });
313
+ map.addOverlay(m6);
314
+
315
+ var icon7 = new GIcon(baseIcon);
316
+ icon7.image = "http://www.joakim-systems.com/gicons/marker7.png";
317
+ var p7 = new GPoint(-77.5358, 37.56792);
318
+ var m7 = new GMarker(p7, icon7);
319
+ GEvent.addListener(m7, "click", function() {
320
+ m7.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 7</b></td></tr><tr><td>Distance: </td><td>7.00675373221606</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:04:52Z </td></tr><tr><td>Elapsed Time: </td><td>00:59:34 </td></tr><tr><td>Average Pace: </td><td>8:30.1 </td></tr><tr><td>Lat/Lng: </td><td>37.56792 , -77.5358 </td></tr><tr><td>Altitude: </td><td>45.8m </td></tr></table>");
321
+ });
322
+ map.addOverlay(m7);
323
+
324
+ var icon8 = new GIcon(baseIcon);
325
+ icon8.image = "http://www.joakim-systems.com/gicons/marker8.png";
326
+ var p8 = new GPoint(-77.54459, 37.55773);
327
+ var m8 = new GMarker(p8, icon8);
328
+ GEvent.addListener(m8, "click", function() {
329
+ m8.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 8</b></td></tr><tr><td>Distance: </td><td>8.00799174367724</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:13:25Z </td></tr><tr><td>Elapsed Time: </td><td>01:08:07 </td></tr><tr><td>Average Pace: </td><td>8:30.4 </td></tr><tr><td>Lat/Lng: </td><td>37.55773 , -77.54459 </td></tr><tr><td>Altitude: </td><td>50.126m </td></tr></table>");
330
+ });
331
+ map.addOverlay(m8);
332
+
333
+ var icon9 = new GIcon(baseIcon);
334
+ icon9.image = "http://www.joakim-systems.com/gicons/marker9.png";
335
+ var p9 = new GPoint(-77.52779, 37.55807);
336
+ var m9 = new GMarker(p9, icon9);
337
+ GEvent.addListener(m9, "click", function() {
338
+ m9.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 9</b></td></tr><tr><td>Distance: </td><td>9.02402181848259</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:22:21Z </td></tr><tr><td>Elapsed Time: </td><td>01:17:03 </td></tr><tr><td>Average Pace: </td><td>8:32.3 </td></tr><tr><td>Lat/Lng: </td><td>37.55807 , -77.52779 </td></tr><tr><td>Altitude: </td><td>35.225m </td></tr></table>");
339
+ });
340
+ map.addOverlay(m9);
341
+
342
+ var icon10 = new GIcon(baseIcon);
343
+ icon10.image = "http://www.joakim-systems.com/gicons/marker10.png";
344
+ var p10 = new GPoint(-77.51704, 37.54797);
345
+ var m10 = new GMarker(p10, icon10);
346
+ GEvent.addListener(m10, "click", function() {
347
+ m10.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 10</b></td></tr><tr><td>Distance: </td><td>10.0138818614913</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:30:57Z </td></tr><tr><td>Elapsed Time: </td><td>01:25:39 </td></tr><tr><td>Average Pace: </td><td>8:33.2 </td></tr><tr><td>Lat/Lng: </td><td>37.54797 , -77.51704 </td></tr><tr><td>Altitude: </td><td>38.59m </td></tr></table>");
348
+ });
349
+ map.addOverlay(m10);
350
+
351
+ var icon11 = new GIcon(baseIcon);
352
+ icon11.image = "http://www.joakim-systems.com/gicons/marker11.png";
353
+ var p11 = new GPoint(-77.51548, 37.53674);
354
+ var m11 = new GMarker(p11, icon11);
355
+ GEvent.addListener(m11, "click", function() {
356
+ m11.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 11</b></td></tr><tr><td>Distance: </td><td>11.0161035772686</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:39:42Z </td></tr><tr><td>Elapsed Time: </td><td>01:34:24 </td></tr><tr><td>Average Pace: </td><td>8:34.2 </td></tr><tr><td>Lat/Lng: </td><td>37.53674 , -77.51548 </td></tr><tr><td>Altitude: </td><td>65.026m </td></tr></table>");
357
+ });
358
+ map.addOverlay(m11);
359
+
360
+ var icon12 = new GIcon(baseIcon);
361
+ icon12.image = "http://www.joakim-systems.com/gicons/marker12.png";
362
+ var p12 = new GPoint(-77.50114, 37.52852);
363
+ var m12 = new GMarker(p12, icon12);
364
+ GEvent.addListener(m12, "click", function() {
365
+ m12.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 12</b></td></tr><tr><td>Distance: </td><td>12.0281665281782</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:48:46Z </td></tr><tr><td>Elapsed Time: </td><td>01:43:28 </td></tr><tr><td>Average Pace: </td><td>8:36.1 </td></tr><tr><td>Lat/Lng: </td><td>37.52852 , -77.50114 </td></tr><tr><td>Altitude: </td><td>65.988m </td></tr></table>");
366
+ });
367
+ map.addOverlay(m12);
368
+
369
+ var icon13 = new GIcon(baseIcon);
370
+ icon13.image = "http://www.joakim-systems.com/gicons/marker13.png";
371
+ var p13 = new GPoint(-77.4864, 37.52069);
372
+ var m13 = new GMarker(p13, icon13);
373
+ GEvent.addListener(m13, "click", function() {
374
+ m13.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 13</b></td></tr><tr><td>Distance: </td><td>13.0115110937403</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:57:29Z </td></tr><tr><td>Elapsed Time: </td><td>01:52:11 </td></tr><tr><td>Average Pace: </td><td>8:37.3 </td></tr><tr><td>Lat/Lng: </td><td>37.52069 , -77.4864 </td></tr><tr><td>Altitude: </td><td>66.949m </td></tr></table>");
375
+ });
376
+ map.addOverlay(m13);
377
+
378
+ var icon14 = new GIcon(baseIcon);
379
+ icon14.image = "http://www.joakim-systems.com/gicons/marker14.png";
380
+ var p14 = new GPoint(-77.46936, 37.5158);
381
+ var m14 = new GMarker(p14, icon14);
382
+ GEvent.addListener(m14, "click", function() {
383
+ m14.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 14</b></td></tr><tr><td>Distance: </td><td>14.0275831220463</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:06:21Z </td></tr><tr><td>Elapsed Time: </td><td>02:01:03 </td></tr><tr><td>Average Pace: </td><td>8:37.8 </td></tr><tr><td>Lat/Lng: </td><td>37.5158 , -77.46936 </td></tr><tr><td>Altitude: </td><td>65.988m </td></tr></table>");
384
+ });
385
+ map.addOverlay(m14);
386
+
387
+ var icon15 = new GIcon(baseIcon);
388
+ icon15.image = "http://www.joakim-systems.com/gicons/marker15.png";
389
+ var p15 = new GPoint(-77.45353, 37.52243);
390
+ var m15 = new GMarker(p15, icon15);
391
+ GEvent.addListener(m15, "click", function() {
392
+ m15.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 15</b></td></tr><tr><td>Distance: </td><td>15.0136522026628</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:14:57Z </td></tr><tr><td>Elapsed Time: </td><td>02:09:39 </td></tr><tr><td>Average Pace: </td><td>8:38.1 </td></tr><tr><td>Lat/Lng: </td><td>37.52243 , -77.45353 </td></tr><tr><td>Altitude: </td><td>39.551m </td></tr></table>");
393
+ });
394
+ map.addOverlay(m15);
395
+
396
+ var icon16 = new GIcon(baseIcon);
397
+ icon16.image = "http://www.joakim-systems.com/gicons/marker16.png";
398
+ var p16 = new GPoint(-77.44947, 37.53578);
399
+ var m16 = new GMarker(p16, icon16);
400
+ GEvent.addListener(m16, "click", function() {
401
+ m16.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 16</b></td></tr><tr><td>Distance: </td><td>16.0125529444477</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:23:51Z </td></tr><tr><td>Elapsed Time: </td><td>02:18:33 </td></tr><tr><td>Average Pace: </td><td>8:39.2 </td></tr><tr><td>Lat/Lng: </td><td>37.53578 , -77.44947 </td></tr><tr><td>Altitude: </td><td>49.165m </td></tr></table>");
402
+ });
403
+ map.addOverlay(m16);
404
+
405
+ var icon17 = new GIcon(baseIcon);
406
+ icon17.image = "http://www.joakim-systems.com/gicons/marker17.png";
407
+ var p17 = new GPoint(-77.45559, 37.5458);
408
+ var m17 = new GMarker(p17, icon17);
409
+ GEvent.addListener(m17, "click", function() {
410
+ m17.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 17</b></td></tr><tr><td>Distance: </td><td>17.0648110183381</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:33:31Z </td></tr><tr><td>Elapsed Time: </td><td>02:28:13 </td></tr><tr><td>Average Pace: </td><td>8:41.1 </td></tr><tr><td>Lat/Lng: </td><td>37.5458 , -77.45559 </td></tr><tr><td>Altitude: </td><td>58.778m </td></tr></table>");
411
+ });
412
+ map.addOverlay(m17);
413
+
414
+ var icon18 = new GIcon(baseIcon);
415
+ icon18.image = "http://www.joakim-systems.com/gicons/marker18.png";
416
+ var p18 = new GPoint(-77.47121, 37.5511);
417
+ var m18 = new GMarker(p18, icon18);
418
+ GEvent.addListener(m18, "click", function() {
419
+ m18.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 18</b></td></tr><tr><td>Distance: </td><td>18.0018378406249</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:41:48Z </td></tr><tr><td>Elapsed Time: </td><td>02:36:30 </td></tr><tr><td>Average Pace: </td><td>8:41.6 </td></tr><tr><td>Lat/Lng: </td><td>37.5511 , -77.47121 </td></tr><tr><td>Altitude: </td><td>71.755m </td></tr></table>");
420
+ });
421
+ map.addOverlay(m18);
422
+
423
+ var icon19 = new GIcon(baseIcon);
424
+ icon19.image = "http://www.joakim-systems.com/gicons/marker19.png";
425
+ var p19 = new GPoint(-77.47003, 37.56279);
426
+ var m19 = new GMarker(p19, icon19);
427
+ GEvent.addListener(m19, "click", function() {
428
+ m19.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 19</b></td></tr><tr><td>Distance: </td><td>19.0246336986259</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:50:49Z </td></tr><tr><td>Elapsed Time: </td><td>02:45:31 </td></tr><tr><td>Average Pace: </td><td>8:42.0 </td></tr><tr><td>Lat/Lng: </td><td>37.56279 , -77.47003 </td></tr><tr><td>Altitude: </td><td>67.91m </td></tr></table>");
429
+ });
430
+ map.addOverlay(m19);
431
+
432
+ var icon20 = new GIcon(baseIcon);
433
+ icon20.image = "http://www.joakim-systems.com/gicons/marker20.png";
434
+ var p20 = new GPoint(-77.46273, 37.57612);
435
+ var m20 = new GMarker(p20, icon20);
436
+ GEvent.addListener(m20, "click", function() {
437
+ m20.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 20</b></td></tr><tr><td>Distance: </td><td>20.0299635751823</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:00:09Z </td></tr><tr><td>Elapsed Time: </td><td>02:54:51 </td></tr><tr><td>Average Pace: </td><td>8:43.8 </td></tr><tr><td>Lat/Lng: </td><td>37.57612 , -77.46273 </td></tr><tr><td>Altitude: </td><td>62.142m </td></tr></table>");
438
+ });
439
+ map.addOverlay(m20);
440
+
441
+ var icon21 = new GIcon(baseIcon);
442
+ icon21.image = "http://www.joakim-systems.com/gicons/marker21.png";
443
+ var p21 = new GPoint(-77.46415, 37.59004);
444
+ var m21 = new GMarker(p21, icon21);
445
+ GEvent.addListener(m21, "click", function() {
446
+ m21.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 21</b></td></tr><tr><td>Distance: </td><td>21.0257431528371</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:09:16Z </td></tr><tr><td>Elapsed Time: </td><td>03:03:58 </td></tr><tr><td>Average Pace: </td><td>8:45.0 </td></tr><tr><td>Lat/Lng: </td><td>37.59004 , -77.46415 </td></tr><tr><td>Altitude: </td><td>62.142m </td></tr></table>");
447
+ });
448
+ map.addOverlay(m21);
449
+
450
+ var icon22 = new GIcon(baseIcon);
451
+ icon22.image = "http://www.joakim-systems.com/gicons/marker22.png";
452
+ var p22 = new GPoint(-77.45567, 37.58781);
453
+ var m22 = new GMarker(p22, icon22);
454
+ GEvent.addListener(m22, "click", function() {
455
+ m22.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 22</b></td></tr><tr><td>Distance: </td><td>22.0057065657745</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:17:16Z </td></tr><tr><td>Elapsed Time: </td><td>03:11:58 </td></tr><tr><td>Average Pace: </td><td>8:43.4 </td></tr><tr><td>Lat/Lng: </td><td>37.58781 , -77.45567 </td></tr><tr><td>Altitude: </td><td>60.7m </td></tr></table>");
456
+ });
457
+ map.addOverlay(m22);
458
+
459
+ var icon23 = new GIcon(baseIcon);
460
+ icon23.image = "http://www.joakim-systems.com/gicons/marker23.png";
461
+ var p23 = new GPoint(-77.44936, 37.57511);
462
+ var m23 = new GMarker(p23, icon23);
463
+ GEvent.addListener(m23, "click", function() {
464
+ m23.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 23</b></td></tr><tr><td>Distance: </td><td>23.0008056218197</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:25:42Z </td></tr><tr><td>Elapsed Time: </td><td>03:20:24 </td></tr><tr><td>Average Pace: </td><td>8:42.8 </td></tr><tr><td>Lat/Lng: </td><td>37.57511 , -77.44936 </td></tr><tr><td>Altitude: </td><td>64.065m </td></tr></table>");
465
+ });
466
+ map.addOverlay(m23);
467
+
468
+ var icon24 = new GIcon(baseIcon);
469
+ icon24.image = "http://www.joakim-systems.com/gicons/marker24.png";
470
+ var p24 = new GPoint(-77.44394, 37.56485);
471
+ var m24 = new GMarker(p24, icon24);
472
+ GEvent.addListener(m24, "click", function() {
473
+ m24.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 24</b></td></tr><tr><td>Distance: </td><td>24.0023242191908</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:33:55Z </td></tr><tr><td>Elapsed Time: </td><td>03:28:37 </td></tr><tr><td>Average Pace: </td><td>8:41.5 </td></tr><tr><td>Lat/Lng: </td><td>37.56485 , -77.44394 </td></tr><tr><td>Altitude: </td><td>55.413m </td></tr></table>");
474
+ });
475
+ map.addOverlay(m24);
476
+
477
+ var icon25 = new GIcon(baseIcon);
478
+ icon25.image = "http://www.joakim-systems.com/gicons/marker25.png";
479
+ var p25 = new GPoint(-77.44507, 37.55138);
480
+ var m25 = new GMarker(p25, icon25);
481
+ GEvent.addListener(m25, "click", function() {
482
+ m25.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 25</b></td></tr><tr><td>Distance: </td><td>25.0037135917287</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:42:33Z </td></tr><tr><td>Elapsed Time: </td><td>03:37:15 </td></tr><tr><td>Average Pace: </td><td>8:41.3 </td></tr><tr><td>Lat/Lng: </td><td>37.55138 , -77.44507 </td></tr><tr><td>Altitude: </td><td>48.203m </td></tr></table>");
483
+ });
484
+ map.addOverlay(m25);
485
+
486
+ var icon26 = new GIcon(baseIcon);
487
+ icon26.image = "http://www.joakim-systems.com/gicons/marker26.png";
488
+ var p26 = new GPoint(-77.44291, 37.54088);
489
+ var m26 = new GMarker(p26, icon26);
490
+ GEvent.addListener(m26, "click", function() {
491
+ m26.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 26</b></td></tr><tr><td>Distance: </td><td>26.0109570902786</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:50:57Z </td></tr><tr><td>Elapsed Time: </td><td>03:45:39 </td></tr><tr><td>Average Pace: </td><td>8:40.5 </td></tr><tr><td>Lat/Lng: </td><td>37.54088 , -77.44291 </td></tr><tr><td>Altitude: </td><td>57.817m </td></tr></table>");
492
+ });
493
+ map.addOverlay(m26);
494
+
495
+ var iconFinish = new GIcon(baseIcon);
496
+ iconFinish.image = "http://www.joakim-systems.com/gicons/dd-end.png";
497
+ var pFinish = new GPoint(-77.43595, 37.53674);
498
+ var mFinish = new GMarker(pFinish, iconFinish);
499
+ GEvent.addListener(mFinish, "click", function() {
500
+ mFinish.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Finish!</b></td></tr><tr><td>Distance: </td><td>26.5328886994377</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:56:17Z </td></tr><tr><td>Elapsed Time: </td><td>03:50:59 </td></tr><tr><td>Average Pace: </td><td>8:42.3 </td></tr><tr><td>Lat/Lng: </td><td>37.53674 , -77.43595 </td></tr><tr><td>Altitude: </td><td>15.518m </td></tr></table>");
501
+ });
502
+ map.addOverlay(mFinish);
503
+
504
+
505
+
506
+
507
+ GEvent.addListener(map, "click", function() {
508
+ var center = map.getCenter();
509
+
510
+ document.getElementById("messages").innerHTML = 'click: ' + center.toString();
511
+ });
512
+ GEvent.addListener(map, "moveend", function() {
513
+ var center = map.getCenter();
514
+
515
+ document.getElementById("messages").innerHTML = 'moveend: ' + center.toString();
516
+ });
517
+
518
+ }
519
+ }
520
+ //]]>
521
+
522
+ </script>
523
+ </head>
524
+ <body onload="load()" onunload="GUnload()">
525
+ <center>
526
+ <h3> Richmond Marathon - 2004-11-13 </h3>
527
+ <h5> Generated by Gooby Sun Feb 25 12:00:27 EST 2007 <br> Gooby = Google APIs + Ruby </h5>
528
+ <div id="map" style="width: 900px; height: 600px"></div>
529
+ <div id="messages"></div>
530
+ </center>
531
+ </body>
532
+ </html>