--- a
+++ b/omgm/gps.php
@@ -0,0 +1,934 @@
+<?php
+
+function getIndexOpen($index, $vals) {
+	$IndexOpen = array();
+	$j=0;
+	for ($i=0; $i<count($index); $i++) {
+		if ($vals[$index[$i]]['type'] == 'open') {
+			$IndexOpen[$j] = $index[$i];
+			$j++;
+		}	
+	}
+	return($IndexOpen);
+}
+
+function getIndexClose($index, $vals) {
+	$IndexClose = array();
+	$j=0;
+	for ($i=0; $i<count($index); $i++) {
+		if ($vals[$index[$i]]['type'] == 'close') {
+			$IndexClose[$j] = $index[$i];
+			$j++;
+		}	
+	}
+	return($IndexClose);
+}
+
+function getIndexComplete($index, $vals) {
+	$IndexComplete = array();
+	$j=0;
+	for ($i=0; $i<count($index); $i++) {
+		if ($vals[$index[$i]]['type'] == 'complete') {
+			$IndexComplete[$j] = $index[$i];
+			$j++;
+		}	
+	}
+	return($IndexComplete);
+}
+
+function getIndexOpenComplete($index, $vals) {
+	$IndexOpenComplete = array();
+	$j=0;
+	for ($i=0; $i<count($index); $i++) {
+		if (($vals[$index[$i]]['type'] == 'complete')||($vals[$index[$i]]['type'] == 'open')) {
+			$IndexOpenComplete[$j] = $index[$i];
+			$j++;
+		}	
+	}
+	return($IndexOpenComplete);
+}
+
+function getLapPositions($lapIndexOpen, $posIndexOpen, $vals, &$latitudes, &$longitudes) {
+	$la = 0; $lo = 0; $pos = 0;
+	for ($j = 0; $j < count($lapIndexOpen); $j++) {
+		while ($posIndexOpen[$pos]<$lapIndexOpen[$j])
+			$pos++;
+		$latitudes[$la] = $vals[$posIndexOpen[$pos]+1][value];
+		$longitudes[$lo] = $vals[$posIndexOpen[$pos]+3][value];
+		$la++;
+		$lo++;
+//		echo "latitudes[".$la."]=".$latitudes[$la].", longitudes[".$lo."]=".$longitudes[$lo]."<br>";
+	}
+	// Finish
+	$latitudes[$la] = $vals[$posIndexOpen[count($posIndexOpen)-1]+1][value];
+	$longitudes[$lo] = $vals[$posIndexOpen[count($posIndexOpen)-1]+3][value];
+//	echo "latitudes[".$la."]=".$latitudes[$la].", longitudes[".$lo."]=".$longitudes[$lo]."<br>";
+}
+
+function tcx2posts($tcxfile, &$latitudes, &$longitudes) {
+		
+	if (!($fp = fopen($tcxfile, "r"))) {
+    		die("could not open XML input");
+	}
+
+	$contents = fread($fp, filesize($tcxfile));
+	$p = xml_parser_create();
+	$res = xml_parse_into_struct($p, $contents, $vals, $index);
+	if ($res == 0)
+		echo "Couldn't parse ".$tcxfile."<br>";
+	xml_parser_free($p);
+	$lapIndex = $index[LAP];
+	$lapIndexOpen = getIndexOpen($lapIndex, $vals);
+	$lapIndexClose = getIndexClose($lapIndex, $vals);
+	$posIndex = $index[POSITION];
+	$posIndexOpen = getIndexOpen($posIndex, $vals);
+	$posIndexClose = getIndexClose($posIndex, $vals);
+	getLapPositions($lapIndexOpen, $posIndexOpen, $vals, $latitudes, $longitudes);
+}
+
+function getTcxLapTimes($index, $vals, &$laps, &$starttime) {
+	$la = 1; $lo = 1;
+	$lappt = array();
+	$starttimefound = 0;
+	$lastpt = 0;
+	for ($j = 0; $j <= count($index); $j++) {
+		if ((($vals[$index[$j]]['type'] == 'open')&&($vals[$index[$j]]['tag'] == 'LAP'))||$firstpoint) {
+			$level = $vals[$index[$j]]['level'];
+			$open = 1;
+			$i = 1;
+			$foundname = 0;
+			$c=0;
+			$firstpoint = 1;
+			while ($open) {
+				if ((($vals[$index[$j]+$i][tag]=='LAP')&&($vals[$index[$j]+$i][type]=='close')&&($vals[$index[$j]+$i][level]==$level))||!$firstpoint)
+					break;
+				if ($vals[$index[$j]+$i][tag]=='TIME') {
+					list($date, $timez) = split("T", $vals[$index[$j]+$i][value]);
+					list($year, $month, $day) = split("-", $date);
+					list($time, $dummy) = split("Z", $timez);
+					list($hour, $minute, $second) = split(":", $time);
+					if (!$starttimefound) {
+						$starttime = mktime($hour, $minute, $second, $month, $day, $year);
+						$starttimefound = 1;
+						$lappt[0] = 0;
+					}
+					else 
+						$lappt[0] = mktime($hour, $minute, $second, $month, $day, $year)-$starttime;
+					$c++;
+				}
+				if ($vals[$index[$j]+$i][tag]=='LATITUDEDEGREES') {
+					$lappt[2] = $vals[$index[$j]+$i][value];
+					$c++;
+				}
+				if ($vals[$index[$j]+$i][tag]=='LONGITUDEDEGREES') {
+					$lappt[1] = $vals[$index[$j]+$i][value];
+					$c++;
+				}
+				if ($c==3) {
+					$laps[] = $lappt;
+				//	echo $lappt[0].", ".$lappt[1].", ".$lappt[2].", ".$lappt[3]."<br>"; 
+					$firstpoint = 0;
+				}
+				$i++;
+			}
+		}
+	}
+}
+
+function getTcxRoute($tptIndex, $vals, &$route, &$starttime) {
+	$la = 1; $lo = 1;
+	$trpt = array();
+	$firstpoint = 1;
+	$nrlappoints = 0;
+	$timebefore = -1;
+	for ($j = 0; $j <= count($tptIndex); $j++) {
+		if (($vals[$index[$j]]['type'] == 'open')&&($vals[$index[$j]]['tag'] == 'LAP')) 
+			$nrlappoints = 0;
+		if (($vals[$tptIndex[$j]]['type'] == 'open')&&($vals[$tptIndex[$j]]['tag'] == 'TRACKPOINT')) {
+			$level = $vals[$tptIndex[$j]]['level'];
+			$open = 1;
+			$i = 1;
+			$foundname = 0;
+			$c=0;
+			while ($open) {
+				if (($vals[$tptIndex[$j]+$i][tag]=='TRACKPOINT')&&($vals[$tptIndex[$j]+$i][type]=='close')&&($vals[$tptIndex[$j]+$i][level]==$level))
+					break;
+				if ($vals[$tptIndex[$j]+$i][tag]=='TIME') {
+					list($date, $timez) = split("T", $vals[$tptIndex[$j]+$i][value]);
+					list($year, $month, $day) = split("-", $date);
+					list($time, $dummy) = split("Z", $timez);
+					list($hour, $minute, $second) = split(":", $time);	
+					if ($firstpoint) {
+						$starttime = mktime($hour, $minute, $second, $month, $day, $year);
+						$trpt[0] = 0;
+					}
+					else
+						$trpt[0] = mktime($hour, $minute, $second, $month, $day, $year)-$starttime;
+					$c++;
+				}
+				if ($vals[$tptIndex[$j]+$i][tag]=='LATITUDEDEGREES') {
+					$trpt[2] = $vals[$tptIndex[$j]+$i][value];
+					$c++;
+				}
+				if ($vals[$tptIndex[$j]+$i][tag]=='LONGITUDEDEGREES') {
+					$trpt[1] = $vals[$tptIndex[$j]+$i][value];
+					$c++;
+				}
+				$i++;
+			}
+			if ($c==3) {
+				$nrlappoints++;
+				if ($nrlappoints==1)
+					$trpt[3] = "yes";
+				else
+					$trpt[3] = "no";
+				if ($timebefore != $trpt[0])
+					$route[] = $trpt;
+				$firstpoint = 0;
+				$timebefore = $trpt[0];
+			}
+		}
+	}
+}
+
+function tcx2routelaps($tcxfile, &$route, &$laps, &$starttime) {
+		
+	if (!($fp = fopen($tcxfile, "r"))) {
+    		die("could not open XML input");
+	}
+
+	$contents = fread($fp, filesize($tcxfile));
+	$p = xml_parser_create();
+	$res = xml_parse_into_struct($p, $contents, $vals, $index);
+	if ($res == 0)
+		echo "Couldn't parse ".$tcxfile."<br>";
+	xml_parser_free($p);
+	$tptIndex = $index[TRACKPOINT];
+	getTcxRoute($tptIndex, $vals, $route, $starttime);
+	$lapindex = $index[LAP];
+	getTcxLapTimes($lapindex, $vals, $laps, $starttime);
+	$j=0;
+	for ($i = 0; $i<count($laps); $i++) {
+		while ($j<count($route)) {
+			if ($route[$j][0] == $laps[$i][0]) {
+				$route[$j][3] = "yes";
+				break;
+			}
+			$j++;
+		}	
+	}	
+	$lappt[0] = $route[count($route)-1][0];
+	$lappt[1] = $route[count($route)-1][1];
+	$lappt[2] = $route[count($route)-1][2];
+	$route[count($route)-1][3]="yes";
+	$laps[] = $lappt;
+}
+
+function getWptPositions($wptOpenIndexComplete, $vals, &$latitudes, &$longitudes) {
+	$la = 1; $lo = 1;
+	for ($j = 0; $j <= count($wptOpenIndexComplete); $j++) {
+		if (($vals[$wptOpenIndexComplete[$j]]['type'] == 'open')&&($vals[$wptOpenIndexComplete[$j]]['tag'] == 'WPT')) {
+			$level = $vals[$wptOpenIndexComplete[$j]]['level'];
+			$open = 1;
+			$i = 1;
+			$foundname = 0;
+			while ($open) {
+				if (($vals[$wptOpenIndexComplete[$j]+$i][tag]=='WPT')&&($vals[$wptOpenIndexComplete[$j]+$i][type]=='close')&&($vals[$wptOpenIndexComplete[$j]+$i][level]==$level))
+					break;
+				if ($vals[$wptOpenIndexComplete[$j]+$i][tag]=='NAME') {
+					if ($vals[$wptOpenIndexComplete[$j]+$i][value]=="Start") {
+						$latitudes[0] = $vals[$wptOpenIndexComplete[$j]][attributes][LAT];
+						$longitudes[0] = $vals[$wptOpenIndexComplete[$j]][attributes][LON];
+						$foundname = 1;
+					}
+					else if ($vals[$wptOpenIndexComplete[$j]+$i][value]=="Finish") {
+						$finishlat = $vals[$wptOpenIndexComplete[$j]][attributes][LAT];
+						$finishlon = $vals[$wptOpenIndexComplete[$j]][attributes][LON];
+						$foundname = 1;
+					}
+				}
+				$i++;
+			}
+			if (!$foundname) {
+				$latitudes[$la] = $vals[$wptOpenIndexComplete[$j]][attributes][LAT];
+				$longitudes[$lo] = $vals[$wptOpenIndexComplete[$j]][attributes][LON];
+				$la++;
+				$lo++;
+			}
+		}
+		if ($vals[$wptOpenIndexComplete[$j]]['type'] == 'complete') {  
+			$latitudes[$la] = $vals[$wptOpenIndexComplete[$j]][attributes][LAT];
+			$longitudes[$lo] = $vals[$wptOpenIndexComplete[$j]][attributes][LON];
+			$la++;
+			$lo++;
+		}
+	}
+	if (!isset($latitudes[0])) 
+		$latitudes[0] = 100;
+	if (!isset($longitudes[0])) 
+		$longitudes[0] = 100;
+	if (!isset($finishlat)) 
+		$latitudes[$la] = 100;
+	if (!isset($finishlon)) 
+		$longitudes[$lo] = 100;
+}
+
+function gpx2posts($gpxfile, &$latitudes, &$longitudes) {
+	if (!($fp = fopen($gpxfile, "r"))) {
+    		die("could not open gpx file");
+	}
+	$contents = fread($fp, filesize($gpxfile));
+	$p = xml_parser_create();
+	$res = xml_parse_into_struct($p, $contents, $vals, $index);
+	if ($res == 0)
+		echo "Couldn't parse ".$gpxfile."<br>";
+	xml_parser_free($p);
+	$wptIndex = $index[WPT];
+	$wptIndexOpenComplete = getIndexOpenComplete($wptIndex, $vals);
+	getWptPositions($wptIndexOpenComplete, $vals, $latitudes, $longitudes);
+}
+
+function frwdtxt2route($frwdtxtfile, &$route, &$starttime) {
+
+	$nrlappoints = 0;
+
+        if (!($fp = fopen($frwdtxtfile, "r"))) {
+                die("could not open frwd text file");
+        }
+
+        $i=0;
+        if ($fp) {
+                $firstpoint = 1;
+                while (!feof($fp)) {
+                        $buffer = fgets($fp, 4096);
+			if (strstr($buffer, "Starttid")) {
+				list($dummy1, $day, $monthstr, $year, $time, $dummy2) = explode(" ", $buffer);
+				switch ($monthstr) {
+					case "januari": $month = 1; break;
+					case "februari": $month = 2; break;
+					case "mars": $month = 3; break;			
+					case "april": $month = 4; break;
+					case "maj": $month = 5; break;
+					case "juni": $month = 6; break;
+					case "juli": $month = 7; break;
+					case "augusti": $month = 8; break;
+					case "september": $month = 9; break;
+					case "oktober": $month = 10; break;
+					case "november": $month = 11; break;
+					case "december": $month = 12; break;
+				}
+				list($hour, $minute, $second) = explode(":", $time);
+				$starttime = mktime($hour, $minute, $second, $month, $day, $year); 
+			}
+                        if (strstr($buffer, "Yes")) {
+                                //echo $buffer;
+				$nrval = 15;
+             			//$nrval = sscanf($buffer, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t", $time, $lap, $nsm, $ewm, $lat, $long, $mh, $kmh, $dist, $pulse, $temp, $press, $sv, $te, $epoc);
+				list($time, $lap, $nsm, $ewm, $lat, $long, $mh, $kmh, $dist, $pulse, $temp, $press, $sv, $te, $epoc) = preg_split ("/\s+/", $buffer);
+				$nrlappoints=0;
+                                $firstpoint=0;
+                        } else if (!$firstpoint) {
+				$nrval = 14;
+                                //$nrval = sscanf($buffer, "%s\t\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t", $time, $nsm, $ewm, $lat, $long, $mh, $kmh, $dist, $pulse, $temp, $press, $sv, $te, $epoc);
+				list($time, $nsm, $ewm, $lat, $long, $mh, $kmh, $dist, $pulse, $temp, $press, $sv, $te, $epoc) = preg_split ("/\s+/", $buffer);
+                        }
+                        if ((!$firstpoint)&&($nrval>=14)) {
+                                //echo $lat." ".$long."<br>";
+                                $latarray = explode(",", $lat);
+                                $longarray = explode(",", $long);
+                                $latdeg = floor($latarray[0]/100);
+                                $latmin = fmod($latarray[0], 100);
+                                $latmin = ($latmin+$latarray[1]/10000)/60;
+                                $latitude=$latdeg+$latmin;
+                                $longdeg = floor($longarray[0]/100);
+                                $longmin = fmod($longarray[0], 100);
+                                $longmin = ($longmin+$longarray[1]/10000)/60;
+                                $longitude = $longdeg+$longmin;
+				$nrlappoints++;
+				if ($nrlappoints==1)
+					$route[] = array($time, $longitude, $latitude, "yes");
+				else
+					$route[] = array($time, $longitude, $latitude, "no");
+                                $i++;
+                        }
+                }
+                fclose($fp);
+        }
+
+}
+
+function frwdtxt2laps($frwdtxtfile, &$laps) {
+
+	if (!($fp = fopen($frwdtxtfile, "r"))) {
+                die("could not open frwd text file");
+        }
+
+	$i=0;	
+	if ($fp) {
+    		while (!feof($fp)) {
+        		$buffer = fgets($fp, 4096);
+			if (strstr($buffer, "Yes")) {
+				//echo $buffer;
+				//list($time, $lap, $nsm, $ewm, $lat, $long, $mh, $kmh, $dist, $pulse, $temp, $press, $sv, $te, $epoc) = sscanf($buffer, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\%s\t%s\t%s\t%s\t%s\t");
+				list($time, $lap, $nsm, $ewm, $lat, $long, $mh, $kmh, $dist, $pulse, $temp, $press, $sv, $te, $epoc) = preg_split ("/\s+/", $buffer);
+				//echo $lat." ".$long."<br>";
+				$latarray = explode(",", $lat);
+				$longarray = explode(",", $long);
+				$latdeg = floor($latarray[0]/100);
+				$latmin = fmod($latarray[0], 100);
+				$latmin = ($latmin+$latarray[1]/10000)/60;
+				$latitude = $latdeg+$latmin;
+				$longdeg = floor($longarray[0]/100);
+				$longmin = fmod($longarray[0], 100);
+				$longmin = ($longmin+$longarray[1]/10000)/60;
+				$longitude = $longdeg+$longmin;
+				$laps[] = array($time, $longitude, $latitude);
+				$i++;
+			}	
+    		}
+    		fclose($fp);
+	}
+}
+
+function frwdtxt2routelaps($frwdtxtfile, &$route, &$laps, &$starttime) {
+        if (!($fp = fopen($frwdtxtfile, "r"))) 
+                die("could not open frwd text file");
+	frwdtxt2route($frwdtxtfile, &$route, &$starttime);
+	frwdtxt2laps($frwdtxtfile, &$laps);
+}
+
+function frwdtxt2posts($frwdtxtfile, &$latitudes, &$longitudes) {
+
+	if (!($fp = fopen($frwdtxtfile, "r"))) {
+                die("could not open frwd text file");
+        }
+
+	$i=0;	
+	if ($fp) {
+    		while (!feof($fp)) {
+        		$buffer = fgets($fp, 4096);
+			if (strstr($buffer, "Yes")) {
+				//echo $buffer;
+				//list($time, $lap, $nsm, $ewm, $lat, $long, $mh, $kmh, $dist, $pulse, $temp, $press, $sv, $te, $epoc) = sscanf($buffer, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\%s\t%s\t%s\t%s\t%s\t");
+				list($time, $lap, $nsm, $ewm, $lat, $long, $mh, $kmh, $dist, $pulse, $temp, $press, $sv, $te, $epoc) = preg_split ("/\s+/", $buffer);
+				//echo $lat." ".$long."<br>";
+				$latarray = explode(",", $lat);
+				$longarray = explode(",", $long);
+				$latdeg = floor($latarray[0]/100);
+				$latmin = fmod($latarray[0], 100);
+				$latmin = ($latmin+$latarray[1]/10000)/60;
+				$latitudes[$i]=$latdeg+$latmin;
+				$longdeg = floor($longarray[0]/100);
+				$longmin = fmod($longarray[0], 100);
+				$longmin = ($longmin+$longarray[1]/10000)/60;
+				$longitudes[$i]=$longdeg+$longmin;
+				$i++;
+			}	
+    		}
+    		fclose($fp);
+	}
+
+}
+
+function to_posts($file, $type) {
+	if (is_uploaded_file($file)) {
+		switch ($type) {
+			case "tcx":
+       				tcx2posts($file, $latitudes, $longitudes);
+				break;
+			case "frwd":
+				frwdtxt2posts($file, $latitudes, $longitudes);
+				break;
+			case "gpx":
+				gpx2posts($file, $latitudes, $longitudes);
+				break;
+			default: return(false); break;
+		}
+		if ($longitudes[0] == 100)
+            		$_POST["startx"] = "";
+		else
+               		$_POST["startx"] = $longitudes[0];
+		if ($latitudes[0] == 100)
+            		$_POST["starty"] = "";
+		else
+               		$_POST["starty"] = $latitudes[0];
+               	$_POST["nrposts"] = count($longitudes)-2;
+               	for ($i=0; $i<$_POST["nrposts"]; $i++) {
+               		$_POST['post'][$i][x] = $longitudes[$i+1];
+                       	$_POST["post"][$i][y] = $latitudes[$i+1];
+       		}
+		if ($longitudes[count($longitudes)-1]==100) {
+               		$_POST["finishx"] = "";
+		}
+		else
+               		$_POST["finishx"] = $longitudes[count($longitudes)-1];
+		if ($latitudes[count($latitudes)-1]==100)
+               		$_POST["finishy"] = "";
+		else
+               		$_POST["finishy"] = $latitudes[count($latitudes)-1];
+		return(true);
+	} 
+	return(false);
+}
+
+function nrspaces($nrspaces) {
+	$indentstr = "";
+	for ($i=0; $i<$nrspaces; $i++) {
+		$indentstr .= " ";
+	}
+	return($indentstr);
+}
+
+function convert_to_tcx($starttime, $waypoints, $route, $filename) {
+	header('Content-Type: text/plain');
+	header('Content-Disposition: attachment; filename="'.$filename.'"');
+	echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n";
+	echo "<TrainingCenterDatabase xmlns=\"http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.garmin.com/xmlschemas/ActivityExtension/v2 http://www.garmin.com/xmlschemas/ActivityExtensionv2.xsd http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd\">\n";
+	echo "<Activities>\n";
+	echo "  <Activity Sport=\"Running\">\n";
+	$starttimestamp = date("Y-m-d\TH:i:s\Z", $starttime);
+	echo "    <Id>".$starttimestamp."</Id>\n";
+	$lapstr = nrspaces(4)."<Lap StartTime=\"".$starttimestamp."\">\n";
+	$distancelap = 0;
+	$timelap = 0;
+	$totaldistance = 0;
+	$wptsartime = explode(":", $waypoints);
+	$routeartime = explode(":", $route);
+	$firstpoint = new Point();
+	$secondpoint = new Point();
+	$routept = explode(",", $routeartime[0]); 
+	$firstpoint->lon = $routept[1];
+	$firstpoint->lat = $routept[2];
+	$nrspaces = 6; // used to get nicer look
+	$trackstrlap = nrspaces($nrspaces)."<Track>\n";
+	$nrspaces += 2; 
+	$trackstrlap .= nrspaces($nrspaces)."<Trackpoint>\n";
+	$nrspaces += 2; 
+	$trackstrlap .= nrspaces($nrspaces)."<Time>".$starttimestamp."</Time>\n";
+	$trackstrlap .= nrspaces($nrspaces)."<Position>\n";
+       	$nrspaces += 2;
+       	$trackstrlap .= nrspaces($nrspaces)."<LatitudeDegrees>".$routept[2]."</LatitudeDegrees>\n";
+       	$trackstrlap .= nrspaces($nrspaces)."<LongitudeDegrees>".$routept[1]."</LongitudeDegrees>\n";
+       	$nrspaces -= 2;
+       	$trackstrlap .= nrspaces($nrspaces)."</Position>\n";
+	$trackstrlap .= nrspaces($nrspaces)."<DistanceMeters>".$totaldistance."</DistanceMeters>\n";
+       	$nrspaces -= 2;
+	$trackstrlap .= nrspaces($nrspaces)."</Trackpoint>\n";
+       	$nrspaces -= 2;
+	for ($i=1; $i<count($routeartime); $i++) {
+		$routept = explode(",", $routeartime[$i]);
+		$secondpoint->lon = $routept[1];
+		$secondpoint->lat = $routept[2];
+		$line = new Line($firstpoint, $secondpoint);
+		$totaldistance += $line->getLength()*1000;
+		$firstpoint->lon = $routept[1];
+		$firstpoint->lat = $routept[2];
+		if ($routept[3] != "yes") {
+			$nrspaces += 2;
+			$trackstrlap .= nrspaces($nrspaces)."<Trackpoint>\n";
+			$timestamp = date("Y-m-d\TH:i:s\Z", $starttime+$routept[0]);
+			$nrspaces += 2;
+			$trackstrlap .= nrspaces($nrspaces)."<Time>".$timestamp."</Time>\n";
+			$trackstrlap .= nrspaces($nrspaces)."<Position>\n";
+			$nrspaces += 2;
+			$trackstrlap .= nrspaces($nrspaces)."<LatitudeDegrees>".$routept[2]."</LatitudeDegrees>\n";
+			$trackstrlap .= nrspaces($nrspaces)."<LongitudeDegrees>".$routept[1]."</LongitudeDegrees>\n";
+			$nrspaces -= 2;
+			$trackstrlap .= nrspaces($nrspaces)."</Position>\n";
+			$trackstrlap .= nrspaces($nrspaces)."<DistanceMeters>".$totaldistance."</DistanceMeters>\n";
+			$nrspaces -= 2;
+			$trackstrlap .= nrspaces($nrspaces)."</Trackpoint>\n";
+			$nrspaces -= 2;
+		}
+		else {
+			$nrspaces += 2;
+                        $trackstrlap .= nrspaces($nrspaces)."<Trackpoint>\n";
+                        $timestamp = date("Y-m-d\TH:i:s\Z", $starttime+$routept[0]);
+                        $nrspaces += 2;
+                        $trackstrlap .= nrspaces($nrspaces)."<Time>".$timestamp."</Time>\n";
+                        $trackstrlap .= nrspaces($nrspaces)."<Position>\n";
+                        $nrspaces += 2;
+                        $trackstrlap .= nrspaces($nrspaces)."<LatitudeDegrees>".$routept[2]."</LatitudeDegrees>\n";
+                        $trackstrlap .= nrspaces($nrspaces)."<LongitudeDegrees>".$routept[1]."</LongitudeDegrees>\n";
+                        $nrspaces -= 2;
+                        $trackstrlap .= nrspaces($nrspaces)."</Position>\n";
+                        $trackstrlap .= nrspaces($nrspaces)."<DistanceMeters>".$totaldistance."</DistanceMeters>\n";
+                        $nrspaces -= 2;
+                        $trackstrlap .= nrspaces($nrspaces)."</Trackpoint>\n";
+                        $nrspaces -= 2;
+                        $trackstrlap .= nrspaces($nrspaces)."</Track>\n";
+                        $nrspaces -= 2;
+                        $trackstrlap .= nrspaces($nrspaces)."</Lap>\n";
+			$distlap = $totaldistance-$distancelap;
+			$distancelap = $totaldistance;
+			$timel = $routept[0]-$timelap;
+			$timelap = $routept[0];
+			$nrspaces += 2;
+			$lapstr .= nrspaces($nrspaces)."<TotalTimeSeconds>".sprintf("%.7f", $timel)."</TotalTimeSeconds>\n";
+			$lapstr .= nrspaces($nrspaces)."<DistanceMeters>".$distlap."</DistanceMeters>\n";
+			$lapstr .= nrspaces($nrspaces)."<MaximumSpeed>0</MaximumSpeed>\n";
+			$lapstr .= nrspaces($nrspaces)."<Calories>0</Calories>\n";
+			$lapstr .= nrspaces($nrspaces)."<Intensity>Active</Intensity>\n";
+			$lapstr .= nrspaces($nrspaces)."<TriggerMethod>Manual</TriggerMethod>\n";
+			echo $lapstr.$trackstrlap;
+                        $nrspaces -= 2;
+			$lapstr = nrspaces($nrspaces)."<Lap StartTime=\"".$timestamp."\">\n";
+			$nrspaces += 2;
+			$trackstrlap = nrspaces($nrspaces)."<Track>\n";
+			$nrspaces += 2;
+			$trackstrlap .= nrspaces($nrspaces)."<Trackpoint>\n";
+			$nrspaces += 2; 
+			$trackstrlap .= nrspaces($nrspaces)."<Time>".$timestamp."</Time>\n";
+			$trackstrlap .= nrspaces($nrspaces)."<Position>\n";
+                       	$nrspaces += 2;
+                       	$trackstrlap .= nrspaces($nrspaces)."<LatitudeDegrees>".$routept[2]."</LatitudeDegrees>\n";
+                       	$trackstrlap .= nrspaces($nrspaces)."<LongitudeDegrees>".$routept[1]."</LongitudeDegrees>\n";
+                       	$nrspaces -= 2;
+                       	$trackstrlap .= nrspaces($nrspaces)."</Position>\n";
+			$trackstrlap .= nrspaces($nrspaces)."<DistanceMeters>".$totaldistance."</DistanceMeters>\n";
+                       	$nrspaces -= 2;
+			$trackstrlap .= nrspaces($nrspaces)."</Trackpoint>\n";
+                       	$nrspaces -= 2;
+		}
+	}
+	$nrspaces -= 2;
+	echo "\n";
+	echo nrspaces($nrspaces)."</Activity>\n";
+	$nrspaces -= 2;
+	echo nrspaces($nrspaces)."</Activities>\n";
+	echo nrspaces($nrspaces)."<Author xsi:type=\"Application_t\">\n";
+	$nrspaces += 2;
+	echo nrspaces($nrspaces)."<Name>FROG</Name>\n";
+	echo nrspaces($nrspaces)."<Build>\n";
+	$nrspaces += 2;
+      	echo nrspaces($nrspaces)."<Version>\n";
+	$nrspaces += 2;
+        echo nrspaces($nrspaces)."<VersionMajor>1</VersionMajor>\n";
+        echo nrspaces($nrspaces)."<VersionMinor>0</VersionMinor>\n";
+        echo nrspaces($nrspaces)."<BuildMajor>1</BuildMajor>\n";
+        echo nrspaces($nrspaces)."<BuildMinor>0</BuildMinor>\n";
+	$nrspaces -= 2;
+      	echo nrspaces($nrspaces)."</Version>\n";
+      	echo nrspaces($nrspaces)."<Type>Release</Type>\n";
+	$buildtime = date("Y-m-d\TH:i:s\Z");
+	echo nrspaces($nrspaces)."<Time>".$buildtime."</Time>\n";
+      	echo nrspaces($nrspaces)."<Builder>frog</Builder>\n";
+	$nrspaces -= 2;
+    	echo nrspaces($nrspaces)."</Build>\n";
+	if (isset($_SESSION["lang"]))
+		echo nrspaces($nrspaces)."<LangID>".$_SESSION["lang"]."</LangID>\n";
+	else
+		echo nrspaces($nrspaces)."<LangID>sv</LangID>\n";
+	echo nrspaces($nrspaces)."<PartNumber>006-A0119-00</PartNumber>\n";
+	$nrspaces -= 2;
+	echo nrspaces($nrspaces)."</Author>\n";
+	$nrspaces -= 2;
+	echo "\n";
+	echo nrspaces($nrspaces)."</TrainingCenterDatabase>";
+}
+
+function convert_to_tcx_course($starttime, $waypoints, $route, $filename) {
+	$nrspaces=0;
+	header('Content-Type: text/plain');
+	header('Content-Disposition: attachment; filename="'.$filename.'"');
+	echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n";
+	echo "<TrainingCenterDatabase xmlns=\"http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.garmin.com/xmlschemas/ActivityExtension/v2 http://www.garmin.com/xmlschemas/ActivityExtensionv2.xsd http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd\">\n";
+	$nrspaces+=2;
+	echo "\n";
+	echo nrspaces($nrspaces)."<Courses>\n";
+	$nrspaces+=2;
+	echo nrspaces($nrspaces)."<Course>\n";
+	$nrspaces+=2;
+	$starttimestamp = date("Y-m-d\TH:i:s\Z", $starttime);
+	echo nrspaces($nrspaces)."<Name>".substr($filename, 0, 15)."</Name>\n";
+	$nrspaceslap = $nrspaces;
+	$lapstrar = array();
+	$lapstr = nrspaces($nrspaceslap)."<Lap>\n";
+	$distancelap = 0;
+	$timelap = 0;
+	$totaldistance = 0;
+	$wptsartime = explode(":", $waypoints);
+	$routeartime = explode(":", $route);
+	$firstpoint = new Point();
+	$secondpoint = new Point();
+	$routept = explode(",", $routeartime[0]);
+	$firstpoint->lon = $routept[1];
+	$firstpoint->lat = $routept[2];
+	$trackstr = nrspaces($nrspaces)."<Track>\n";
+	$nrspaces += 2; 
+	$trackstr .= nrspaces($nrspaces)."<Trackpoint>\n";
+	$nrspaces += 2;
+	$trackstr .= nrspaces($nrspaces)."<Time>".$starttimestamp."</Time>\n";
+	$trackstr .= nrspaces($nrspaces)."<Position>\n";
+       	$nrspaces += 2;
+       	$trackstr .= nrspaces($nrspaces)."<LatitudeDegrees>".$routept[2]."</LatitudeDegrees>\n";
+       	$trackstr .= nrspaces($nrspaces)."<LongitudeDegrees>".$routept[1]."</LongitudeDegrees>\n";
+       	$nrspaces -= 2;
+       	$trackstr .= nrspaces($nrspaces)."</Position>\n";
+	$trackstr .= nrspaces($nrspaces)."<DistanceMeters>".$totaldistance."</DistanceMeters>\n";
+       	$nrspaces -= 2;
+	$trackstr .= nrspaces($nrspaces)."</Trackpoint>\n";
+       	$nrspaces -= 2;
+	for ($i=1; $i<count($routeartime); $i++) {
+		$routept = explode(",", $routeartime[$i]);
+		$secondpoint->lon = $routept[1];
+		$secondpoint->lat = $routept[2];
+		$line = new Line($firstpoint, $secondpoint);
+		$totaldistance += $line->getLength()*1000;
+		$firstpoint->lon = $routept[1];
+		$firstpoint->lat = $routept[2];
+		if ($routept[3] != "yes") {
+			$nrspaces += 2;
+			$trackstr .= nrspaces($nrspaces)."<Trackpoint>\n";
+			$timestamp = date("Y-m-d\TH:i:s\Z", $starttime+$routept[0]);
+			$nrspaces += 2;
+			$trackstr .= nrspaces($nrspaces)."<Time>".$timestamp."</Time>\n";
+			$trackstr .= nrspaces($nrspaces)."<Position>\n";
+			$nrspaces += 2;
+			$trackstr .= nrspaces($nrspaces)."<LatitudeDegrees>".$routept[2]."</LatitudeDegrees>\n";
+			$trackstr .= nrspaces($nrspaces)."<LongitudeDegrees>".$routept[1]."</LongitudeDegrees>\n";
+			$nrspaces -= 2;
+			$trackstr .= nrspaces($nrspaces)."</Position>\n";
+			$trackstr .= nrspaces($nrspaces)."<DistanceMeters>".$totaldistance."</DistanceMeters>\n";
+			$nrspaces -= 2;
+			$trackstr .= nrspaces($nrspaces)."</Trackpoint>\n";
+			$nrspaces -= 2;
+		}
+		else {
+			$nrspaces += 2;
+                        $trackstr .= nrspaces($nrspaces)."<Trackpoint>\n";
+                        $timestamp = date("Y-m-d\TH:i:s\Z", $starttime+$routept[0]);
+                        $nrspaces += 2;
+                        $trackstr .= nrspaces($nrspaces)."<Time>".$timestamp."</Time>\n";
+                        $trackstr .= nrspaces($nrspaces)."<Position>\n";
+                        $nrspaces += 2;
+                        $trackstr .= nrspaces($nrspaces)."<LatitudeDegrees>".$routept[2]."</LatitudeDegrees>\n";
+                        $trackstr .= nrspaces($nrspaces)."<LongitudeDegrees>".$routept[1]."</LongitudeDegrees>\n";
+                        $nrspaces -= 2;
+                        $trackstr .= nrspaces($nrspaces)."</Position>\n";
+                        $trackstr .= nrspaces($nrspaces)."<DistanceMeters>".$totaldistance."</DistanceMeters>\n";
+                        $nrspaces -= 2;
+                        $trackstr .= nrspaces($nrspaces)."</Trackpoint>\n";
+			$distlap = $totaldistance-$distancelap;
+			$distancelap = $totaldistance;
+			$timel = $routept[0]-$timelap;
+			$timelap = $routept[0];
+			$nrspaceslap += 2;
+			$lapstr .= nrspaces($nrspaceslap)."<TotalTimeSeconds>".sprintf("%.7f", $timel)."</TotalTimeSeconds>\n";
+			$lapstr .= nrspaces($nrspaceslap)."<DistanceMeters>".$distlap."</DistanceMeters>\n";
+			$lapstr .= nrspaces($nrspaceslap)."<Intensity>Active</Intensity>\n";
+			$nrspaceslap -= 2;	
+			$lapstr .= nrspaces($nrspaceslap)."</Lap>\n";
+			$lapstrar[] = $lapstr;
+			//echo $lapstr.$trackstrlap;
+			$lapstr = nrspaces($nrspaceslap)."<Lap>\n";
+			$trackstr .= nrspaces($nrspaces)."<Trackpoint>\n";
+			$nrspaces += 2; 
+			$trackstr .= nrspaces($nrspaces)."<Time>".$timestamp."</Time>\n";
+			$trackstr .= nrspaces($nrspaces)."<Position>\n";
+                       	$nrspaces += 2;
+                       	$trackstr .= nrspaces($nrspaces)."<LatitudeDegrees>".$routept[2]."</LatitudeDegrees>\n";
+                       	$trackstr .= nrspaces($nrspaces)."<LongitudeDegrees>".$routept[1]."</LongitudeDegrees>\n";
+                       	$nrspaces -= 2;
+                       	$trackstr .= nrspaces($nrspaces)."</Position>\n";
+			$trackstr .= nrspaces($nrspaces)."<DistanceMeters>".$totaldistance."</DistanceMeters>\n";
+                       	$nrspaces -= 2;
+			$trackstr .= nrspaces($nrspaces)."</Trackpoint>\n";
+                       	$nrspaces -= 2;
+		}
+	}
+	for ($i=0; $i<count($lapstrar); $i++)
+		echo $lapstrar[$i];
+	echo $trackstr;
+	echo nrspaces($nrspaces)."</Track>\n";
+	echo "\n";
+	echo nrspaces($nrspaces)."<Creator xsi:type=\"Application_t\">\n";
+	$nrspaces += 2;
+	echo nrspaces($nrspaces)."<Name>FROG</Name>\n";
+	echo nrspaces($nrspaces)."<Build>\n";
+	$nrspaces += 2;
+      	echo nrspaces($nrspaces)."<Version>\n";
+	$nrspaces += 2;
+        echo nrspaces($nrspaces)."<VersionMajor>1</VersionMajor>\n";
+        echo nrspaces($nrspaces)."<VersionMinor>0</VersionMinor>\n";
+        echo nrspaces($nrspaces)."<BuildMajor>1</BuildMajor>\n";
+        echo nrspaces($nrspaces)."<BuildMinor>0</BuildMinor>\n";
+	$nrspaces -= 2;
+      	echo nrspaces($nrspaces)."</Version>\n";
+      	echo nrspaces($nrspaces)."<Type>Release</Type>\n";
+	$buildtime = date("Y-m-d\TH:i:s\Z");
+	echo nrspaces($nrspaces)."<Time>".$buildtime."</Time>\n";
+      	echo nrspaces($nrspaces)."<Builder>frog</Builder>\n";
+	$nrspaces -= 2;
+    	echo nrspaces($nrspaces)."</Build>\n";
+	if (isset($_SESSION["lang"]))
+		echo nrspaces($nrspaces)."<LangID>".$_SESSION["lang"]."</LangID>\n";
+	else
+		echo nrspaces($nrspaces)."<LangID>sv</LangID>\n";
+	echo nrspaces($nrspaces)."<PartNumber>006-A0119-00</PartNumber>\n";
+	$nrspaces -= 2;
+	echo nrspaces($nrspaces)."</Creator>\n";
+	$nrspaces -= 2;
+	echo nrspaces($nrspaces)."</Course>\n";
+	$nrspaces -= 2;
+	echo nrspaces($nrspaces)."</Courses>\n";
+	echo "\n\n";
+	echo nrspaces($nrspaces)."<Author xsi:type=\"Application_t\">\n";
+	$nrspaces += 2;
+	echo nrspaces($nrspaces)."<Name>FROG</Name>\n";
+	echo nrspaces($nrspaces)."<Build>\n";
+	$nrspaces += 2;
+      	echo nrspaces($nrspaces)."<Version>\n";
+	$nrspaces += 2;
+        echo nrspaces($nrspaces)."<VersionMajor>1</VersionMajor>\n";
+        echo nrspaces($nrspaces)."<VersionMinor>0</VersionMinor>\n";
+        echo nrspaces($nrspaces)."<BuildMajor>1</BuildMajor>\n";
+        echo nrspaces($nrspaces)."<BuildMinor>0</BuildMinor>\n";
+	$nrspaces -= 2;
+      	echo nrspaces($nrspaces)."</Version>\n";
+      	echo nrspaces($nrspaces)."<Type>Release</Type>\n";
+	$buildtime = date("Y-m-d\TH:i:s\Z");
+	echo nrspaces($nrspaces)."<Time>".$buildtime."</Time>\n";
+      	echo nrspaces($nrspaces)."<Builder>frog</Builder>\n";
+	$nrspaces -= 2;
+    	echo nrspaces($nrspaces)."</Build>\n";
+	if (isset($_SESSION["lang"]))
+		echo nrspaces($nrspaces)."<LangID>".$_SESSION["lang"]."</LangID>\n";
+	else
+		echo nrspaces($nrspaces)."<LangID>sv</LangID>\n";
+	echo nrspaces($nrspaces)."<PartNumber>006-A0119-00</PartNumber>\n";
+	$nrspaces -= 2;
+	echo nrspaces($nrspaces)."</Author>\n";
+	$nrspaces -= 2;
+	echo "\n";
+	echo nrspaces($nrspaces)."</TrainingCenterDatabase>";
+}
+
+function convert_to_gpx($starttime, $route, $filename) {
+	header('Content-Type: text/plain');
+	header('Content-Disposition: attachment; filename="'.$filename.'"');
+	$starttimestamp = date("Y-m-d\TH:i:s\Z", $starttime);
+	$routeartime = explode(":", $route);
+	$nrspaceswpt = 2;
+	$wptstr = "";
+	$nrspacestrk = 2;
+	$trkstr = nrspaces($nrspacestrk)."<trk>\n";
+	$nrspacestrk += 2;
+	$trkstr .= nrspaces($nrspacestrk)."<name>".$filename."</name>\n";
+	$trkstr .= nrspaces($nrspacestrk)."<trkseg>\n";
+	$nrspacestrk += 2;
+	for ($i=0; $i<count($routeartime); $i++) {
+		$routept = explode(",", $routeartime[$i]);
+		$timestamp = date("Y-m-d\TH:i:s\Z", $starttime+$routept[0]);
+		$trkstr .= nrspaces($nrspacestrk)."<trkpt lon=\"".$routept[1]."\" lat=\"".$routept[2]."\">\n";
+		$nrspacestrk += 2;
+		$trkstr .= nrspaces($nrspacestrk)."<time>".$timestamp."</time>\n";
+		$nrspacestrk -= 2;
+		$trkstr .= nrspaces($nrspacestrk)."</trkpt>\n";
+		if ($routept[3] == "yes") {
+			$wptstr .= nrspaces($nrspaceswpt)."<wpt lon=\"".$routept[1]."\" lat=\"".$routept[2]."\">\n";
+			$nrspaceswpt += 2;
+			$wptstr .= nrspaces($nrspaceswpt)."<time>".$timestamp."</time>\n";
+			if ($i==0)
+				$wptstr .= nrspaces($nrspaceswpt)."<name>Start</name>\n";
+			if ($i==(count($routeartime)-1))
+				$wptstr .= nrspaces($nrspaceswpt)."<name>Finish</name>\n";
+			$nrspaceswpt -= 2;
+			$wptstr .= nrspaces($nrspaceswpt)."</wpt>\n";
+		}
+	}
+	$nrspacestrk -= 2;
+	$trkstr .= nrspaces($nrspacestrk)."</trkseg>\n";
+	$nrspacestrk -= 2;
+	$trkstr .= nrspaces($nrspacestrk)."</trk>\n";
+	echo "<gpx xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" version=\"1.1\" creator=\"FROG\" xmlns=\"http://www.topografix.com/GPX/1/1\">\n\n";
+	echo $wptstr."\n".$trkstr."\n</gpx>"; 
+}
+
+function getGpxRoute($tptIndex, $vals, $wpt, &$route, &$starttime) {
+	$starttimefound = 0;
+	$wptind = 0;
+	for ($j = 0; $j <= count($tptIndex); $j++) {
+		if (($vals[$tptIndex[$j]][type] == 'open')&&($vals[$tptIndex[$j]][tag] == 'TRKPT')) {
+			$i = 1;
+			$trpt[1] = $vals[$tptIndex[$j]][attributes][LON];
+			$trpt[2] = $vals[$tptIndex[$j]][attributes][LAT];
+			while ($open) {
+				if (($vals[$tptIndex[$j+$i]][type] == 'close')&&($vals[$tptIndex[$j+$i]][tag] == 'TRKPT'))
+					break;
+				if ($vals[$tptIndex[$j+$i]][tag] == 'TIME') {
+					list($date, $timez) = split("T", $vals[$index[$j]+$i][value]);
+					list($year, $month, $day) = split("-", $date);
+					list($time, $dummy) = split("Z", $timez);
+					list($hour, $minute, $second) = split(":", $time);
+					if (!$starttimefound) {
+                                                $starttime = mktime($hour, $minute, $second, $month, $day, $year);
+                                                $starttimefound = 1;
+                                                $trpt[0] = 0;
+                                        }
+                                        else
+                                                $trpt[0] = mktime($hour, $minute, $second, $month, $day, $year)-$starttime;
+					if ($wpt[$wptind] == $trpt[0]) {
+						$wptind++;	
+						$trpt[2] = "yes";
+					}
+					else
+						$trpt[2] = "no";
+					break;
+				}
+			}
+			$route[] = $trpt;
+		}
+	}
+}
+
+function getGpxWptTimes($wptOpenIndexComplete, $vals, &$starttime, &$wpt) {
+	$firsttime = 1;
+	for ($j = 0; $j < count($wptOpenIndexComplete); $j++) {
+		if (($vals[$wptOpenIndexComplete[$j]]['type'] == 'open')&&($vals[$wptOpenIndexComplete[$j]]['tag'] == 'WPT')) {
+		 	$level = $vals[$index[$j]]['level'];
+			$wptpt[1] = $vals[$wptOpenIndexComplete[$j]][attributes][LON];
+			$wptpt[2] = $vals[$wptOpenIndexComplete[$j]][attributes][LAT];
+			$i = 1;
+			$open = 1;
+			while ($open) {
+				if (($vals[$wptOpenIndexComplete[$j]+$i][tag]=='WPT')&&($vals[$wptOpenIndexComplete[$j]+$i][type]=='close')&&($vals[$wptOpenIndexComplete[$j]+$i][level]==$level))
+					break;
+				if ($vals[$wptOpenIndexComplete[$j]+$i][tag]=='TIME') {
+					list($date, $timez) = split("T", $vals[$wptOpenIndexComplete[$j]+$i][value]);
+					list($year, $month, $day) = split("-", $date);
+					list($time, $dummy) = split("Z", $timez);
+					list($hour, $minute, $second) = split(":", $time);
+					if ($firsttime) {
+                                                $starttime = mktime($hour, $minute, $second, $month, $day, $year);
+						$wptpt[0] = 0;
+						$firsttime = 0;
+					}
+					else 
+                                                $wptpt[0] = mktime($hour, $minute, $second, $month, $day, $year)-$starttime;
+					$open = 0;
+				}
+				$i++;
+			}
+		}
+		$wpt[] = $wptpt;
+	}
+}
+
+function gpx2routelaps($gpxfile, &$route, &$wpt, &$starttime) {
+        if (!($fp = fopen($gpxfile, "r")))
+                die("could not open gpx file");
+	$contents = fread($fp, filesize($gpxfile));
+	$p = xml_parser_create();
+	$res = xml_parse_into_struct($p, $contents, $vals, $index);
+        if ($res == 0)
+                echo "Couldn't parse ".$gpxfile."<br>";
+        xml_parser_free($p);
+        $wptIndex = $index[WPT];
+        $wptIndexOpenComplete = getIndexOpenComplete($wptIndex, $vals);
+	getGpxWptTimes($wptIndexOpenComplete, $vals, &$starttime, &$wpt);
+        $tptIndex = $index[TRKPT];
+	getGpxRoute($tptIndex, $vals, $wpt, &$route, &$starttime);
+}
+
+?>