//Global Vars
var oseast, osnorth;
var lon, lat;
var googmap;
var marker;
var googmarker;
var distance;
var scaneast, scannorth, lastscaneast, lastscannorth;
var osMap; 
var vectorLayer;
var lineFeature;
var lineString;
var points = new Array();
var heights = new Array();
var speeds = new Array();
var lonlatarray = new Array();
var walkchrono = new Array();
var icon,icon4;
var popup;
var time;
var boxes;
var show;
var pt;
var damper;
var googtoggle;
var dirtoggle;
var proftoggle;
var popup1;
var xmlDoc;
var xmlDoc1;
var xmlDoc2;
var selectedPosn=0;
var posmarkers;
var movemarker;
var text="";
var subtext="";
var horstep;
var currentPos=0;
var trackspeed;
var chronofirst,chronolast;
var wait=true;
var markers;
var offs;

//Line colour/width for path
var style_blue =
    { 
    strokeColor: "#0000FF",
    strokeOpacity: 0.7,
    strokeWidth: 8
}; 
//Line colour/width for path
var style_red =
    {
    strokeColor: "#00FF00",
    strokeOpacity: 0.5,
    strokeWidth: 3
};

// Read all points in turn, calc distance between and increment total. Display
// total.
function calcdistance(){
    distance = 0;
    var hold;
    hold=points.shift();
    lastscaneast = hold.x;
    lastscannorth= hold.y;
    points.push(hold);
    for(var c=1;c<points.length;c=c+1){ 
        hold= points.shift(); 
        scaneast = hold.x; 
        scannorth= hold.y; 
        points.push(hold);
        distance=distance+(Math.sqrt(Math.pow((scaneast-lastscaneast),2)+Math.pow((scannorth-lastscannorth),2))/1609.344);
        lastscaneast = scaneast; 
        lastscannorth= scannorth; 
    }
    document.getElementById('dist').innerHTML =distance.toFixed(3)+ " Miles.";
}

//Listen for keystroke 'G' toggles google, D information, P profile, & + - nudges
// selected position.
function handleKey(e){
    var keynum;
    var keychar;
    // Handle Internet Explorer       
    //    if(window.event) ////////////////////////This no longer functions as of June 2008
    //    {
    keynum = e.keyCode;
    //    } 
    // Handle Mozilla etc.
    if(e.which) 
    {
        keynum = e.which;
    }
    if (keynum==61)keynum=43;
    keychar = String.fromCharCode(keynum).toUpperCase();

    switch(keychar){
        // Show hide the Google view
    case "G":if(!googtoggle){
                document.getElementById("googlemap").style.visibility = 'visible';
                show=true;
                googtoggle=true; 
            }
            else{
                document.getElementById("googlemap").style.visibility = 'hidden';
                show=false;
                googtoggle=false;
            }
            break;
        // Show hide the directions view
    case "D":if(!dirtoggle){
            document.getElementById("directions").style.visibility = 'visible';
            document.getElementById("directions").style.left = '900px';
            dirtoggle=true;
        }
        else{
            document.getElementById("directions").style.visibility = 'hidden';
            document.getElementById("directions").style.left = '-900px';
            dirtoggle=false;
        }
        break;
/*    case "P":if(!proftoggle){
            document.getElementById("profile").style.visibility = 'visible';
            document.getElementById("datawindow").style.visibility = 'visible';           
            proftoggle=true;
        }
        else{
            document.getElementById("profile").style.visibility = 'hidden';
            document.getElementById("datawindow").style.visibility = 'hidden';
            
            proftoggle=false;
        }
        break;
    case "+":selectPoint(1);
            break;
    case "-":selectPoint(-1);
            break;  */
}
}


/*Create map - open layers for marker and route - set up function to get mouse GR position*/ 
// Takes route file, POI file, and boolean true for trk files.
function init2(afile,cfile,dfile,trk)
{  
    googtoggle=true;
    dirtoggle =true;
    proftoggle=false;
 xmlDoc=createDoc(afile); 
 xmlDoc1=createDoc(cfile);
 xmlDoc2=createDoc(dfile);
 markers = new OpenLayers.Layer.Markers( "Markers" );
 OpenLayers.Renderer.SVG.prototype.supported = function() {
var svgFeature = "http://www.w3.org/TR/SVG11/feature#";
return (document.implementation &&
(document.implementation.hasFeature("org.w3c.svg", "1.0") ||
document.implementation.hasFeature(svgFeature + "SVG", "1.1") ||
document.implementation.hasFeature(svgFeature + "BasicStructure", "1.1") ));
}; 
    
    osMap = new OpenSpace.Map('map'); 
    googmap=new GMap2( document.getElementById("googlemap"),
    {mapTypes:[G_SATELLITE_MAP]});
    osMap.setCenter(new OpenSpace.MapPoint(282000, 184000),6); //7
    osMap.addLayer(markers);/////////////////////////////////////////////////////////////////////////////////////////
    show=true;
    var boxes  = new OpenLayers.Layer.Boxes( "Boxes" );
    osMap.addLayer(boxes);
    var gridProjection = new OpenSpace.GridProjection(); 
    damper=true;
    osMap.events.register("mousemove", osMap, function(e) { 
      if(wait==true)return;
      if (damper){
        damper=false;
        pt = osMap.getLonLatFromViewPortPx(e.xy); 
        var lonlat = gridProjection.getLonLatFromMapPoint(pt);
        lon =lonlat.lon; 
        lat = lonlat.lat;
        osMap.removeLayer(boxes);
        boxes  = new OpenLayers.Layer.Boxes( "Boxes" );
        var bounds = new OpenLayers.Bounds();
        bounds.extend(new OpenLayers.LonLat((lon-0.00115),lat-(0.0006)));
        bounds.extend(new OpenLayers.LonLat((lon+0.00105),(lat+0.0006)));
        var box = new OpenLayers.Marker.Box(bounds);
        boxes.addMarker(box);
        osMap.addLayer(boxes);
        if(show){ 
            googmarker.setLatLng(new GLatLng(lat,lon));
            googmap.setCenter(new GLatLng(lat,lon),18);
        } 
        oseast=pt.lon;
        osnorth=pt.lat;
        document.getElementById("firsteast").innerHTML=oseast.toFixed(0);
        document.getElementById("firstnor").innerHTML=osnorth.toFixed(0);
      }else damper=true;
    });
    var center=new GLatLng(51.55,-3.70);
    googmap.setCenter(center,17);
    var newIcon=new GIcon();
    newIcon.iconSize = new GSize(31, 31);
    newIcon.iconAnchor = new GPoint(16, 16);
    var crossIcon = new GIcon(newIcon);
    crossIcon.image = "../../images/googposn1.PNG";
    var literalobj={
       icon: crossIcon
    };
    googmarker = new GMarker(center,literalobj); 
    googmap.addOverlay(googmarker);
    vectorLayer = new OpenLayers.Layer.Vector("Vector Layer"); 
    osMap.addLayer(vectorLayer); 
    document.getElementById("data").style.visibility = 'hidden';
    document.getElementById("guide").style.visibility = 'visible';
   
   
    document.getElementById("profile").style.visibility = 'hidden';
    document.getElementById("datawindow").style.visibility = 'hidden';
    posmarkers = new OpenLayers.Layer.Markers( "posMarkers" );
    osMap.addLayer(posmarkers);
    var size = new OpenLayers.Size(32,32);
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h/2);
    icon4 = new OpenLayers.Icon('../../images/googposn1.PNG',size,offset);
    movemarker=new OpenLayers.Marker(new OpenLayers.LonLat(-3.70,51.55),icon4);
    //posmarkers.addMarker(movemarker);
    var browser=navigator.appName;
   // if (browser=="Netscape"){
    if(trk==true){
       // xmlDoc.onload=setTimeout(" getgpxtrkfile();markProfile()",1);
       getgpxtrkfile();
       markProfile();
    }
    else{
   //     xmlDoc.onload=setTimeout(" getgpxfile()",1);
       getgpxfile();
       getextrafile();
    }
  /// xmlDoc1.onload=setTimeout(" getpoifile()",1);//xmlDoc1.onload=getpoifile();//
  getpoifile()
  //  setTimeout("markProfile()",12000);
 //   }
 //   else{
 //       if(trk==true){
  //         getgpxtrkfile();
  //      }
 //       else{
  //         getgpxfile();
  //      }
  //      getpoifile();
      //  markProfile();
//    }
    wait=false;
 

    
 offst=20;
 if(screen.availWidth >=1280) {
    offs=205;
 //   document.getElementById("profile").style.left = '200px';
 //   document.getElementById("datawindow").style.left = '200px';
//    document.getElementById("data").style.left = '120px';
//    document.getElementById("guide").style.left = '90px';
//    document.getElementById("map").style.left = '60px';
//     document.getElementById("map").style.width = '1020px';
    document.getElementById("googlemap").style.left = '820px';
    document.getElementById("directions").style.left = '820px';
   
}
} 

// Function loads and displays an 'rtept'file. Used only where 'trkpt' file
// unavailable or too large. Less functional as file contains less info.
function getgpxfile(){
    var lontot=0;
    var lattot=0;
   var num=0;
document.getElementById("intextbox").innerHTML="<p>"+"<h2>"+" Please wait while route file is processed. Processing route points...."+"</h2></p>";
//xmlDoc=createDoc(efile);
while(points.length>0){
    points.pop();
}
while(lonlatarray.length>0){
    lonlatarray.pop();
}
while(heights.length>0){
    heights.pop();
}
if(lineFeature!=null)  vectorLayer.removeFeatures(lineFeature);
// Load Arrays from input data
 num=xmlDoc.getElementsByTagName("rtept").length;
for (var y=0;y<num;y=y+1){

    lat1 = xmlDoc.getElementsByTagName("rtept")[y].getAttribute("lat");  
    lon1 = xmlDoc.getElementsByTagName("rtept")[y].getAttribute("lon");
    lontot=lontot+lon1;
    lattot=lattot+lat1;
   
    var lonlat = new OpenLayers.LonLat(lon1, lat1); 
    lonlatarray.push(lonlat);
    var gridProjection = new OpenSpace.GridProjection(); 
    var pos = gridProjection.getMapPointFromLonLat(lonlat); 
    var ptemp1 = new OpenLayers.Geometry.Point(pos.lon,pos.lat);
    points.push(ptemp1);
    var x = xmlDoc.getElementsByTagName("rtept")[y].childNodes[1].childNodes[0].nodeValue;
    heights.push(x);
}
var lineString = new OpenLayers.Geometry.LineString(points); 
lineFeature = new OpenLayers.Feature.Vector(lineString, null, style_blue); 
vectorLayer.addFeatures(lineFeature); 
// Centre Maps to lat/long
var fin=Math.round((xmlDoc.getElementsByTagName("rtept").length-1)/2);
var lat1 = xmlDoc.getElementsByTagName("rtept")[0].getAttribute("lat");
var lat2 = xmlDoc.getElementsByTagName("rtept")[fin].getAttribute("lat");
var lon1 = xmlDoc.getElementsByTagName("rtept")[0].getAttribute("lon");
var lon2 = xmlDoc.getElementsByTagName("rtept")[fin].getAttribute("lon");
var latof=((lat2-lat1)/2);
//var latof=Math.round(lattot/num);
//var latcentre=new Number(lat1+latof);
var lonof=((lon2-lon1)/2);
//var lonof=Math.round(lontot/num);
//var loncentre=new Number(lon1+lonof);
googmarker.setLatLng(new GLatLng(lat1,lon1));
googmap.setCenter(new GLatLng(lat1,lon1),18);
var lonlat1 = new OpenLayers.LonLat(lon1, lat1);
var gridProjection2 = new OpenSpace.GridProjection();
var pos1 = gridProjection2.getMapPointFromLonLat(lonlat1);
var lonlat2= lonlat1.add(lonof,latof);
var gridProjection1 = new OpenSpace.GridProjection(); 
var pos2 = gridProjection1.getMapPointFromLonLat(lonlat2);
osMap.setCenter(new OpenSpace.MapPoint(pos2.lon,pos2.lat,5));
//var lonlat3 = new OpenLayers.LonLat(lontot/xmlDoc.getElementsByTagName("rtept").length, lattot/xmlDoc.getElementsByTagName("rtept").length);
//var pos3 = gridProjection1.getMapPointFromLonLat(lonlat3);
//osMap.setCenter(new OpenSpace.MapPoint(pos3.lon,pos3.lat,5));
var size = new OpenLayers.Size(40, 40); 
var offset = new OpenLayers.Pixel(-size.w / 2, -size.h / 2); 
var icon2 = new OpenLayers.Icon('../../images/start.png', size, offset);
osMap.createMarker(pos1,icon2 , "comment",new OpenLayers.Size(250, 100));
calcdistance();

time=distance/document.getElementById('speed').value;
document.getElementById('time').innerHTML =time.toFixed(3)+ " Hours";
}

// Load xml file and create document object
function createDoc(efile){
var xmlDochold;
try //Internet Explorer
{
    xmlDochold=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
    try //Firefox, Mozilla, Opera, etc.
    {
        xmlDochold=document.implementation.createDocument("","",null);
    }
    catch(e)
    {
        alert(e.message);
        return null;
    }
}
try 
{
    xmlDochold.async=false;
    xmlDochold.load(efile);
    return xmlDochold;
}
catch(e) {
         try //Google Chrome
  {
   var xmlhttp = new window.XMLHttpRequest();
   xmlhttp.open("GET",efile,false);
   xmlhttp.send(null);
   xmlDochold = xmlhttp.responseXML;
   return xmlDochold;
  }
  catch(e)
  {
   error=e.message;
  }
   // alert(e.message);
  // // return null;
}
}

// Function loads and displays 'trkpt' file. Has greater functionality as file
// contains more information.
function getgpxtrkfile(){
    
document.getElementById("intextbox").innerHTML="<p>"+"<h2>"+" Please wait while route file is processed. Processing track points...."+"</h2></p>";

//xmlDoc=createDoc(efile);    
var answer = window.confirm("Show speed by track colour? This will extend the processing time. Cancel to use default.");
if (!answer)trackspeed=false; 
else   trackspeed=true;  
while(points.length>0){
    points.pop();
}
while(lonlatarray.length>0){
    lonlatarray.pop();
}
while(heights.length>0){
    heights.pop();
}
while(walkchrono.length>0){
    walkchrono.pop();
}
while(speeds.length>0){
   speeds.pop();
}
// Create speed icons
var size1 = new OpenLayers.Size(10, 10); 
var offset1 = new OpenLayers.Pixel(-size1.w / 2, -size1.h / 2); 
var icon8 = new OpenLayers.Icon('../../images/norm.png', size1, offset1); //norm.png
var icon6 = new OpenLayers.Icon('../../images/start.png', size1, offset1); //start.png
var icon7 = new OpenLayers.Icon('../../images/fast.png', size1, offset1); //fast.png
if(lineFeature!=null)  vectorLayer.removeFeatures(lineFeature);
// Load Arrays from input data
var step=2;
var count=0; 
var len1=xmlDoc.getElementsByTagName("trkpt").length;
var gridProjection = new OpenSpace.GridProjection(); 
var vstr;
var dropicon=0;
var totspeed=0;
var totcount=0;
chronofirst=0;
for (var y=0;y<len1;y=y+1){
    if(count==step){
        count=0;
        var getele=xmlDoc.getElementsByTagName("trkpt")[y];
        lat1 = getele.getAttribute("lat");  
        lon1 = getele.getAttribute("lon");
        var lonlat = new OpenLayers.LonLat(lon1, lat1); 
        lonlatarray.push(lonlat);
        var pos = gridProjection.getMapPointFromLonLat(lonlat); 
        var ptemp1 = new OpenLayers.Geometry.Point(pos.lon,pos.lat);
        points.push(ptemp1);
        var x = getele.childNodes[1].childNodes[0].nodeValue;
        heights.push(x);
        var w = getele.childNodes[0].childNodes[0].nodeValue;
        walkchrono.push(w);   
        if(chronofirst==0)chronofirst=w;
        chronolast=w;
        var v = getele.childNodes[2].childNodes[0].nodeValue;
       // speeds.push(v);
        vstr=v.substring(0,3);
        var pars=parseFloat(vstr);
        speeds.push(pars);
        totspeed=totspeed+ pars;
        totcount=totcount+1;        
        if(trackspeed==true){
         if(dropicon==2){/// set 2 with below to reduce again
            dropicon=0;  /// set zero to halve points
            if(pars>=3.5)
                //osMap.createMarker(pos,icon7.clone(), " ",new OpenLayers.Size(250, 100));
                markers.addMarker(new OpenLayers.Marker(lonlat,icon7.clone()));    
            else if(pars>=3)
                //osMap.createMarker(pos,icon8.clone(), " ",new OpenLayers.Size(250, 100));
                 markers.addMarker(new OpenLayers.Marker(lonlat,icon8.clone())); 
            else
                //osMap.createMarker(pos,icon6.clone(), " ",new OpenLayers.Size(250, 100));
                 markers.addMarker(new OpenLayers.Marker(lonlat,icon6.clone()));         
         }
         else dropicon++;
        } 
    }
    count=count+1;
}
if(trackspeed==false){
   var lineString = new OpenLayers.Geometry.LineString(points); 
   lineFeature = new OpenLayers.Feature.Vector(lineString, null, style_blue); 
   vectorLayer.addFeatures(lineFeature); 
}
// Centre Maps to lat/long
var lat1 = xmlDoc.getElementsByTagName("trkpt")[0].getAttribute("lat");
var lon1 = xmlDoc.getElementsByTagName("trkpt")[0].getAttribute("lon");
googmarker.setLatLng(new GLatLng(lat1,lon1));
googmap.setCenter(new GLatLng(lat1,lon1),18);
var lonlat1 = new OpenLayers.LonLat(lon1, lat1); 
var gridProjection1 = new OpenSpace.GridProjection(); 
var pos1 = gridProjection1.getMapPointFromLonLat(lonlat1); 
osMap.setCenter(new OpenSpace.MapPoint(pos1.lon,pos1.lat,7));
// Show start of walk
var size = new OpenLayers.Size(40, 40); 
var offset = new OpenLayers.Pixel(-size.w / 2, -size.h / 2); 
var icon2 = new OpenLayers.Icon('../../images/start.png', size, offset);
osMap.createMarker(pos1,icon2 , " ",new OpenLayers.Size(250, 100));
//Calc distance for complete route
calcdistance();
var tot=Date.parse(timeparser(chronolast))-Date.parse(timeparser(chronofirst));
tot=Math.round(tot/1000);
var temp=(tot%(3600*24));
var temp2=(tot%3600);
var hr=(temp-temp2)/3600;
var sec=temp2%60;
var min=(temp2-sec)/60;
if (min<10)min="0" + min;
document.getElementById('time').innerHTML =hr+"Hrs. "+min+"Mins. ";
document.getElementById("walkdat").innerHTML="<h4 >"+timeparser(chronofirst)+" "+"GMT"+"</h4>";
document.getElementById('speed').value=(totspeed/totcount).toFixed(2);
//Hide prompt window

if(trackspeed==false)document.getElementById("tracktextbox").style.visibility = 'hidden';
}


// Read height data and draw profile.
function markProfile(){
    document.getElementById("intextbox").innerHTML="<p>"+"<h2>"+" Please wait while route file is processed. Processing profile...."+"</h2></p>";
  //  var ascent=0;
 //   var htprev;
    var min=10000;
    var max=0;
    var len;
    var horizpos=1;
    var vertstep=1;
    var vertpos=10;
    var parsef;
    len=heights.length;
    horstep=796/len;
    for (var y=0;y<len;y=y+1){
        var x = heights.shift();

        parsef=parseFloat(x);
        heights.push(x);
        if (min>parsef){
            min=parsef;
        }
        if(max<parsef) {max=parsef;   }     
    }  
    text="<span style='position:absolute; left:"+ 1 +"px;top:"+ 1 + "px'>"+max+"</span>";
    text=text+"<span style='position:absolute; left:"+ 1 +"px;top:"+ 80 + "px'>"+min+"</span>";
    vertstep=90/(max-min);
   // var vertstepspeed=90/2;
    for ( y=0;y<len;y=y+1){
        var ht=heights.shift();
     //   var v = speeds.shift();
      //  speeds.push(v);       
        parsef=parseFloat(ht);
    //    if(y!=0){
      //      if(parsef>htprev){
           //     ascent=ascent+(parsef-htprev);
          //  }
      //  }
      //  else{
       //     htprev=parsef;
     //   }
        heights.push(ht);
        vertpos=100-(parsef*vertstep);
      //  vertposspeed=100-(v*vertstepspeed);
        text=text+"<span style='position:absolute; left:"+ horizpos.toFixed(0) +"px;top:"+ vertpos.toFixed(0) + "px'>.</span>";
      //  +"<span style='color:blue; position:absolute; left:"+ horizpos.toFixed(0) +"px;top:"+ vertposspeed.toFixed(0) + "px'>.</span>";
        horizpos=horizpos+horstep;
    }  
      document.getElementById("profile").innerHTML= text;
    //  document.getElementById("asc").innerHTML= ascent;
}

function profileClicked(event){
    if(offs!=205)offs=20;
   var x=event.x-offs;
   
   if (x<0)x=0;
   var ypos=Math.round(x/horstep);
   currentPos=ypos;
   selectPoint(1);
   
  // alert(ypos);

}

// Find the route point selected, get data and udate profile marker and data.
function selectPoint(dirstep){ 
 var scanpos=0;
 var distancetopoint=0;
 var finaldist;
 var lastholdeast,lastholdnorth;
 var len3=points.length;
 var temppos;
 for(var c=1;c<=len3;c=c+1){
 /// Scan through points
    var holdpts= points.shift();
    var holdeast = holdpts.x;
    var holdnorth= holdpts.y; 
    points.push(holdpts);
///Calc distance to point   
    if(c==1){
        lastholdeast=holdeast;
        lastholdnorth=holdnorth;
    }
    else{
        distancetopoint=distancetopoint+(Math.sqrt(Math.pow((holdeast-lastholdeast),2)+Math.pow((holdnorth-lastholdnorth),2))/1609.344);
        lastholdeast = holdeast; 
        lastholdnorth= holdnorth;   
    }   
/// Scan through heights
    var holdhts= heights.shift();
    heights.push(holdhts);
/// Scan through time
    var holdtime= walkchrono.shift();
    walkchrono.push(holdtime);
/// Scan through speed
    var holdspeed= speeds.shift();
    speeds.push(holdspeed);
/// Scan through lonlat
    var holdlonlat= lonlatarray.shift();
    lonlatarray.push(holdlonlat);
    if(dirstep!=0){
        if((currentPos==0)&&(dirstep==-1))currentPos=len3;
        if((currentPos==len3)&&(dirstep==1))currentPos=0;
        temppos=currentPos+dirstep;
        if(temppos==c){
          finaldist=distancetopoint;
          posmarkers.removeMarker(movemarker);
          scanpos=c-1;
          movemarker.destroy();
          movemarker=new OpenLayers.Marker(holdlonlat,icon4.clone());
          posmarkers.addMarker(movemarker);
          var holdhts1=parseFloat(holdhts);
          var holdtime1=holdtime;
          var holdspeed1=holdspeed;           
        }
    } 
    else if(dirstep==0){
      if(!(holdeast>(pt.lon+35))&& !(holdeast<(pt.lon-35))&& !(holdnorth>(pt.lat+35))&& !(holdnorth<(pt.lat-35))){
          finaldist=distancetopoint;
          posmarkers.removeMarker(movemarker);
          scanpos=c-1;
          movemarker.destroy();
          movemarker=new OpenLayers.Marker(holdlonlat,icon4.clone());
          posmarkers.addMarker(movemarker);
          holdhts1=parseFloat(holdhts);
          holdtime1=holdtime;
          holdspeed1=holdspeed;
          currentPos=c;
      }
    }
 }
 currentPos=currentPos+dirstep;    
 var datetoshow=timeparser(holdtime1);
 scanpos=horstep*scanpos;
 var scanposof=scanpos+1;
 subtext="<span style='position:absolute; left:"+ scanpos +"px;top:"+ 85 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red; position:absolute; left:"+ scanpos +"px;top:"+ -5 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanpos +"px;top:"+ 75 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanpos +"px;top:"+ 65 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanpos +"px;top:"+ 55 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanpos +"px;top:"+ 45 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanpos +"px;top:"+ 35 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanpos +"px;top:"+ 25 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanpos +"px;top:"+ 15 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanpos +"px;top:"+ 5 + "px'>"+"|"+"</span>";

 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanposof +"px;top:"+ 85 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanposof +"px;top:"+ -5 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanposof +"px;top:"+ 75 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanposof +"px;top:"+ 65 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanposof +"px;top:"+ 55 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanposof +"px;top:"+ 45 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanposof +"px;top:"+ 35 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanposof +"px;top:"+ 25 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanposof +"px;top:"+ 15 + "px'>"+"|"+"</span>";
 subtext=subtext+"<span style='color:red;position:absolute; left:"+ scanposof +"px;top:"+ 5 + "px'>"+"|"+"</span>";
 document.getElementById("profile").innerHTML= text+subtext;
 setTimeout("window.scrollTo(0,0)",10);
 
 document.getElementById("chrono").innerHTML= datetoshow+" GMT";
 document.getElementById("height").innerHTML= " "+holdhts1 +" Mtrs."; 
 document.getElementById("velocity").innerHTML= " "+holdspeed1 + "Mph." ;       
 document.getElementById("distpoint").innerHTML= " "+finaldist.toFixed(3) ;         
}

// Get date and time string and return in UK format
function timeparser(datetime){
 var split = datetime.indexOf("T");
 var datestr=datetime.substring(0,split);
 var timestr=datetime.substring(split+1);
 timestr=timestr.substring(0,8);
 var year=datestr.substring(0,datestr.indexOf("-"));
 var month=datestr.substring(datestr.indexOf("-")+1,datestr.lastIndexOf("-"));
 var day=datestr.substring(datestr.lastIndexOf("-")+1);
 monthfloat=parseFloat(month);
 var monthstr;
 switch(monthfloat){
     case 1:monthstr="January";
         break;
     case 2:monthstr="February";
         break;    
     case 3:monthstr="March";
         break; 
     case 4:monthstr="April";
         break;        
     case 5:monthstr="May";
         break;        
    case 6:monthstr="June";
         break;
     case 7:monthstr="July";
         break;    
     case 8:monthstr="August";
         break; 
     case 9:monthstr="September";
         break;        
     case 10:monthstr="October";
         break;  
     case 11:monthstr="November";
         break;        
     case 12:monthstr="December";
         break;           
 }
 return monthstr+" "+day+", "+year+" " + timestr;
    
}


// Read POI file and set up markers
function getpoifile(){
//xmlDoc1=createDoc(bfile);

document.getElementById("intextbox").innerHTML="<p>"+"<h2>"+" Please wait while route file is processed. LoadingPOI's...."+"</h2></p>";
// Load Arrays from input data
for (var y=0;y<xmlDoc1.getElementsByTagName("wpt").length;y=y+1){
    lat1 = xmlDoc1.getElementsByTagName("wpt")[y].getAttribute("lat");  
    lon1 = xmlDoc1.getElementsByTagName("wpt")[y].getAttribute("lon");
    try{
        var comment =xmlDoc1.getElementsByTagName("wpt")[y].childNodes[2].childNodes[0].nodeValue; 
    }catch(e){comment="No Information";}
    var lonlat = new OpenLayers.LonLat(lon1, lat1); 
    var gridProjection = new OpenSpace.GridProjection(); 
    var pos = gridProjection.getMapPointFromLonLat(lonlat); 
    osMap.createMarker(pos,null, comment,new OpenLayers.Size(250, 150));
}
document.getElementById("intextbox").style.visibility = 'hidden';
}

// Read POI file and set up markers
function getextrafile(){
//xmlDoc1=createDoc(bfile);

document.getElementById("intextbox").innerHTML="<p>"+"<h2>"+" Please wait while route file is processed. Loading Points...."+"</h2></p>";
// Load Arrays from input data
var pointsextra=new Array();
for (var y=0;y<xmlDoc2.getElementsByTagName("rtept").length;y=y+1){
 var   latit = xmlDoc2.getElementsByTagName("rtept")[y].getAttribute("lat");
 var   longit = xmlDoc2.getElementsByTagName("rtept")[y].getAttribute("lon");
 //   try{
  //      var comment =xmlDoc1.getElementsByTagName("wpt")[y].childNodes[2].childNodes[0].nodeValue;
  //  }catch(e){comment="No Information";}
    var lonlat = new OpenLayers.LonLat(longit, latit);
    var gridProjection = new OpenSpace.GridProjection();
    var pos = gridProjection.getMapPointFromLonLat(lonlat);
    var ptemp1 = new OpenLayers.Geometry.Point(pos.lon,pos.lat);
    pointsextra.push(ptemp1);
    var lineString = new OpenLayers.Geometry.LineString(pointsextra);
var lineFeature2 = new OpenLayers.Feature.Vector(lineString, null, style_red);
vectorLayer.addFeatures(lineFeature2);
   // osMap.createMarker(pos,null, comment,new OpenLayers.Size(250, 150));
}
document.getElementById("intextbox").style.visibility = 'hidden';
}



// Ignore name - called to test if selectPoint() is to be called.
function rightClick(e)
  {
      if(!e)
	e=window.event;

    
    if (e.ctrlKey==1)
      {
     selectPoint(0);
     cancelEvent(e);
      }
  }

function cancelEvent(e)
{
  if(!e)
    e = window.event;
  if(e.stopPropagation)
    e.stopPropagation();
  if(e.preventDefault)
    e.preventDefault();
  e.cancelBubble = true;
  e.cancel = true;
  e.returnValue = false;
  return false;
}


