﻿var refreshTime = 3;
var wms         = null;
var mapType     = 1;

function GetXmlHttpObject() 
{
	var browsername = navigator.appName;
	var XMLHttp = null;
	if (browsername == "Microsoft Internet Explorer")
		XMLHttp = new ActiveXObject("Msxml2.XMLHTTP");
	if (browsername == "Netscape")
		XMLHttp = new XMLHttpRequest();
	return XMLHttp;
}

function initialise( mapID, option )
{
  wms = NetstarMapControl( mapID, 790, 400, 15 );
  switch( option )
  {
    case 0:
    {
      wms.addNetstarDefault();    
      break;
    }
    case 1:
    {
      wms.addGoogleStreets();
      break;
    }
    case 2:
    {
      wms.addGoogleHybrid();
      break;
    }	
    default:
    {
      wms.addNetstarDefault();
    }
  }
}

function showLatestPosition()
{
  initialise( "map", mapType );
  cookies = extractCookies( cookies );
  
  var numUnits      = cookies[ "UnitCount" ];
  var tester        = NetstarAjaxGet( "", false, null, null );
  var workingUnits  = Array();
  var workingURLs   = Array();
  var unitNumber    = "";
  var url           = "";
  var units         = "";

  // determine which units are working first      
  for( index = 0; index < numUnits; index += 1 )
  {
    unitNumber  = cookies[ "Unit" + index ];
    url         = "ServiceProxy.aspx?unit=" + unitNumber;
    
    tester.url = url;
    tester.send();
    if( tester.noError() )
    {
      workingUnits[ workingUnits.length ] =   unitNumber;
      workingURLs[ workingURLs.length ]   =   url;
      
      if( units.length > 0 )
      {
        units += "X";
      }
      units +=  unitNumber;
    } // end if
  } // end for

  // process each working unit
  if( workingUnits.length > 0 )
  {
    var o = wms.addLatestPositionsLayer( "Latest Positions", "LatestPosition", "ServiceProxy.aspx?unit=" + units );
    o.selectControl.activate();
    /*
    for( index = 0; index < workingUnits.length; index += 1 )
    {
      unitNumber = workingUnits[ index ];
      url        = "ServiceProxy.aspx?unit=" + unitNumber;
      
      var o = wms.addLatestPositionsLayer( "Unit: " + unitNumber, "LatestPosition", url );
      o.selectControl.activate();
    } // end for
    */
  } // end if
  else
  {
    alert( "Unable to determine latest position of any unit" );
    
    url = "default_position.kml";
    wms.addLatestPositionsLayer( "Default Position", "LatestPosition", url );
    wms.map.zoomTo( 2 );
  }
  
  var div = document.getElementById( "map" );
  div.style.width   = "790px";
  div.style.height  = "399px";
  
}

function showTripReplayAll()
{
  initialise( "map", mapType );
  cookies = extractCookies( cookies );
  
  var numUnits      = cookies[ "UnitCount" ];
  var tester        = NetstarAjaxGet( "", false, null, null );
  var workingUnits  = Array();
  var unitNumber    = "";
  var url           = "";

  // determine which units are working first      
  for( index = 0; index < numUnits; index += 1 )
  {
    unitNumber  = cookies[ "Unit" + index ];
    url         = "ServiceProxy.aspx?unit=" + unitNumber;
    
    tester.url = url;
    tester.send();
    if( tester.noError() )
    {
      workingUnits[ workingUnits.length ] = unitNumber;
    } // end if
  } // end for

  // process each working unit
  if( workingUnits.length > 0 )
  {
    for( index = 0; index < workingUnits.length; index += 1 )
    {
      unitNumber      = workingUnits[ index ];
      var tripURL     = "ServiceProxy.aspx?unit=" + unitNumber;
      var routeURL    = "ServiceProxy.aspx?unit=" + unitNumber + "&tripline=true";
      
      /*var o = wms.addLatestPositionsLayer( "Unit: " + unitNumber, "LatestPosition", url );
      o.selectControl.activate();*/
      
      wms.addHistoryPositionsLayer( "Trip Positions for Device", "Trip"+index, tripURL );
      wms.addRouteLayer( "Route for Device", "Route"+index, routeURL );
    } // end for
  } // end if
  else
  {
    //alert( "Unable to determine route for units" );
    
    url = "default_position.kml";
    wms.addLatestPositionsLayer( "Default Position", "LatestPosition", url );
    wms.map.zoomTo( 2 );
  }
  
  var div = document.getElementById( "map" );
  div.style.width   = "790px";
  div.style.height  = "399px";
  
}

function showTripReplay()
{
  initialise( "map", mapType );
  cookies = extractCookies( cookies );

  var unitNumber  = cookies[ "unitID" ];
  if( unitNumber != null )
  {
    var tripURL     = "ServiceProxy.aspx?unit=" + unitNumber;
    var routeURL    = "ServiceProxy.aspx?unit=" + unitNumber + "&tripline=true";
    var testerTrip  = NetstarAjaxGet( tripURL, false, null, null );
    var testerRoute = NetstarAjaxGet( routeURL, false, null, null );
    
    testerTrip.send();
    testerRoute.send();
    var linkIsWorking = ( testerTrip.noError() && testerRoute.noError() );
    
    if( linkIsWorking )
    {
      wms.addHistoryPositionsLayer( "Trip Positions for Device", "Trip", tripURL );
      wms.addRouteLayer( "Route for Device", "Route", routeURL );
    } // end if
    else
    {
      alert( "Unable to display trip for unit: " + unitNumber );

      var url = "default_position.kml";
      wms.addLatestPositionsLayer( "Default Position", "LatestPosition", url );
      wms.map.zoomTo( 1 );
    } // end else
  } // end if
  else
  {
    alert( "Please select a unit to display the trip details for that unit" );
  } // end else

  var div = document.getElementById( "map" );
  div.style.width   = "789px";
  div.style.height  = "399px";
  div.align = "left";
}

function refreshTripReplay()
{
  if( wms != null )
  {
    wms.tripReplay( false );
  } // end if
}

