/*
*
*	COMMON functies
*
*/


/*------------------------------------------ 
functie refreshMap

Ververst het kaartje (document.map).

Gebruikte externe JavaScript variabelen:
- iCentreX: x-midden kaart in Eurolambert
- iCentreY: y-midden kaart in Eurolambert
- sKey: TMS key
- iMapWidth: breedte kaart (pixels)
- iMapHeight: hoogte kaart (pixels)
- iLevel: zoomlevel (1..8)
- iMapType: 0=gewoon, 1=kaart met marker, 2=routekaart
alleen bij iMapType=1:
- iLocX: x-symbool in EuroLambert
- iLocY: y-symbool in EuroLambert
alleen bij iMapType=2:
- sRouteID: TMS route ID
------------------------------------------ */
function refreshMap()
{
  var sURL = sHost;
  sURL += 'app=tms';
  sURL += '&output=gif';
  sURL += '&xcentre=' + iCentreX;
  sURL += '&ycentre=' + iCentreY;
  sURL += '&key=' + sKey;
  sURL += '&width=' + iMapWidth;
  sURL += '&height=' + iMapHeight;
  sURL += '&select=zoom';
  sURL += '&level=' + iLevel;
  switch (iMapType){
    case 0:
      sURL += '&cmd=map';
      break;
    case 1:
      sURL += '&cmd=locmap';
      sURL += '&locx=' + iLocX;
      sURL += '&locy=' + iLocY;
      break;
    case 2:
      sURL += '&cmd=routemap';
      sURL += '&routeid=' + sRouteID;
      break;
  }
  document.map.src = sURL;
  window.scrollTo(0,0); 
}

/*------------------------------------------ 
functie setZoomLevel

Stelt zoomlevel in op geveven waarde, en 
ververst daarna de kaart.

Gebruikte externe JavaScript variabelen:
- iLevel: zoomlevel (1..8)
------------------------------------------ */
function setZoomLevel(n)
{
  iLevel = n;
  refreshMap();  
}

/*------------------------------------------ 
functie zoomTo

Stelt nieuwe middelpunt van de kaart in,
zoomt eventueel in, en ververst de kaart.

Gebruikte externe JavaScript variabelen:
- iMinX: kleinste toegestade x-waarde in Eurolambert
- iMinY: kleinste toegestane y-waarde in Eurolambert
- iMaxX: grootste toegestane x-waarde in Eurolambert
- iMaxY: grootste toegestane y-waarde in Eurolambert
- iCentreX: x-midden kaart in Eurolambert
- iCentreY: y-midden kaart in Eurolambert
- iLevel: zoomlevel (1..8)
------------------------------------------ */
function zoomTo(x,y)
{
  if ((x > iMinX) && (x < iMaxX) && (y > iMinY) && (y < iMaxY))
  {
    iCentreX = x;
    iCentreY = y;
    
    if (iLevel > 2)
      iLevel = 2;
    refreshMap();
  } 
}

/*------------------------------------------ 
functie pan

Verschuift het middelpunt van de kaart in
x- en/of y-richting (waardes voor dx en
dy zijn -1, 0, +1), en ververst de kaart. 

Gebruikte externe JavaScript variabelen:
- iLevel: zoomlevel (1..8)
- iMapWidth: breedte kaart (pixels)
- iMapHeight: hoogte kaart (pixels)
- iCentreX: x-midden kaart in Eurolambert
- iCentreY: y-midden kaart in Eurolambert
- iMinX: kleinste toegestade x-waarde in Eurolambert
- iMinY: kleinste toegestane y-waarde in Eurolambert
- iMaxX: grootste toegestane x-waarde in Eurolambert
- iMaxY: grootste toegestane y-waarde in Eurolambert
------------------------------------------ */
function pan(dx,dy)
{
  var m = Math.round(power(3,(iLevel-1)) * 2);
  var x = dx * Math.round(iMapWidth/3 * m);
  var y = dy * Math.round(iMapHeight/3 * m);

  iCentreX = iCentreX + x;
  iCentreY = iCentreY + y;
   
  if (iCentreX < iMinX)
    iCentreX = iMinX;
   
  if (iCentreX > iMaxX)
    iCentreX = iMaxX;
     
  if (iCentreY < iMinY)
    iCentreY = iMinY;
     
  if (iCentreY > iMaxY)
    iCentreY = iMaxY;  
  
  refreshMap();
}


/*------------------------------------------ 
functie power

Berekend base ^ exponent.

Gebruikte externe JavaScript variabelen:
- geen
------------------------------------------ */
function power(base,exponent)
{
  var i = 1;
    
  for (var j = 1; j <= exponent; j++)
  {
    i = i * base;
  } 
  
  return i;
}


/*
*
* ROUTE functies
*
*/

/*------------------------------------------ 
functie zoomRoute

Tekent de (routekaart) opnieuw met de originele
waarden zoals deze door TMS zijn bepaald (dus zonder
eventuele gebruikerinteractie).

Gebruikte externe JavaScript variabelen:
- iCentreX: x-midden kaart in Eurolambert
- iCentreY: y-midden kaart in Eurolambert
- iCentreXOri: oorspronkelijk x-midden kaart in Eurolambert
- iCentreYOri: oorspronkelijk y-midden kaart in Eurolambert
- iLevel: zoomlevel (1..8)
- iLevelOri: oorspronkelijk zoomlevel (1..8)
------------------------------------------ */
function zoomRoute()
{
  iCentreX = iCentreXOri;
  iCentreY = iCentreYOri;
  iLevel = iLevelOri;
  refreshMap();
}

/*------------------------------------------ 
functie newRoute

Ga terug naar het lege invoerscherm van de routeplanner.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- rMode: planmode ('fast', 'short')
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function newRoute()
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=route";
  sRedirUrl += "&output=html";
  sRedirUrl += "&rmode=" + rMode;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve2';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  document.location.href=sURL;
}

/*------------------------------------------ 
functie nextRoute

Ga naar het scherm waarin een vervolgroute
gepland kan worden.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- rMode: planmode ('fast', 'short')
- sConfig: naam te gebruiken configuratie
- sDescr2: beschrijving huidige bestemming
- fLat2: lattitude huidige bestemming
- fLon2: longitude huidige bestemming
------------------------------------------ */
function nextRoute()
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=route";
  sRedirUrl += "&output=html";
  sRedirUrl += "&rmode=" + rMode;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve4';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  sURL += '&seltype1=4';
  sURL += '&descr1=' + escape(sDescr2);
  sURL += '&lat1=' + fLat2;
  sURL += '&lon1=' + fLon2;
  document.location.href=sURL;
}

/*------------------------------------------ 
functie reverseRoute

Berekent de route opnieuw van bestemming
naar vertrek.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- rMode: planmode ('fast', 'short')
- sKey: TMS key
- sConfig: naam te gebruiken configuratie
- sDescr1: beschrijving huidige vertrek
- fLat1: lattitude huidige vertrek
- fLon1: longitude huidige vertrek
- sDescr2: beschrijving huidige bestemming
- fLat2: lattitude huidige bestemming
- fLon2: longitude huidige bestemming
------------------------------------------ */
function reverseRoute()
{
  var sURL = sHost;
  sURL += 'app=tms';
  sURL += '&cmd=route';
  sURL += '&output=html';
  sURL += '&rmode=' + rMode;
  sURL += '&key=' + sKey;
  sURL += '&resdescr1=' + escape(sDescr2);
  sURL += '&reslat1=' + fLat2;
  sURL += '&reslon1=' + fLon2;
  sURL += '&resdescr2=' + escape(sDescr1);
  sURL += '&reslat2=' + fLat1;
  sURL += '&reslon2=' + fLon1;
  document.location.href=sURL;
}

/*------------------------------------------ 
functie reloadRoute

Berekent de huidige route opnieuw.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- rMode: planmode ('fast', 'short')
- sKey: TMS key
- sConfig: naam te gebruiken configuratie
- sDescr1: beschrijving huidige vertrek
- fLat1: lattitude huidige vertrek
- fLon1: longitude huidige vertrek
- sDescr2: beschrijving huidige bestemming
- fLat2: lattitude huidige bestemming
- fLon2: longitude huidige bestemming
------------------------------------------ */
function reloadRoute()
{
  var sURL = sHost;
  sURL += 'app=tms';
  sURL += '&cmd=route';
  sURL += '&output=html';
  sURL += '&rmode=' + rMode;
  sURL += '&key=' + sKey;
  sURL += '&resdescr1=' + escape(sDescr1);
  sURL += '&reslat1=' + fLat1;
  sURL += '&reslon1=' + fLon1;
  sURL += '&resdescr2=' + escape(sDescr2);
  sURL += '&reslat2=' + fLat2;
  sURL += '&reslon2=' + fLon2;
  document.location.href=sURL;
}

/*------------------------------------------ 
functie routeToPc

Bereken een route naar een vaste opgegeven postcode.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- rMode: planmode ('fast', 'short')
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function routeToPc(countryid, pc, descr)
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=route";
  sRedirUrl += "&output=html";
  sRedirUrl += "&rmode=" + rMode;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve3';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  sURL += '&seltype2=1';
  sURL += '&countryid2=' + countryid;
  sURL += '&pc2=' + escape(pc);
  sURL += '&descr2=' + escape(descr);
  document.location.href=sURL;
}

/*------------------------------------------ 
functie routeToAddress

Bereken een route naar een vast opgegeven adres.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- rMode: planmode ('fast', 'short')
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function routeToAddress(countryid, street, city, descr)
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=route";
  sRedirUrl += "&output=html";
  sRedirUrl += "&rmode=" + rMode;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve3';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  sURL += '&seltype2=2';
  sURL += '&countryid2=' + countryid;
  sURL += '&straat2=' + escape(street);
  sURL += '&plaats2=' + escape(city);
  sURL += '&descr2=' + escape(descr);
  document.location.href=sURL;
}

/*------------------------------------------ 
functie routeToCoordinate

Bereken een route naar een vaste opgegeven coordinaat (WGS84).

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- rMode: planmode ('fast', 'short')
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function routeToCoordinate(lat, lon, descr)
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=route";
  sRedirUrl += "&output=html";
  sRedirUrl += "&rmode=" + rMode;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve3';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  sURL += '&seltype2=4';
  sURL += '&lat2=' + escape(lat);
  sURL += '&lon2=' + escape(lon);
  sURL += '&descr2=' + escape(descr);
  document.location.href=sURL;
}


/*------------------------------------------ 
functie routeFromPc

Bereken een route vanaf een vaste opgegeven postcode.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- rMode: planmode ('fast', 'short')
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function routeFromPc(countryid, pc, descr)
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=route";
  sRedirUrl += "&output=html";
  sRedirUrl += "&rmode=" + rMode;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve4';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  sURL += '&seltype1=1';
  sURL += '&countryid1=' + countryid;
  sURL += '&pc1=' + escape(pc);
  sURL += '&descr1=' + escape(descr);
  document.location.href=sURL;
}

/*------------------------------------------ 
functie routeFromAddress

Bereken een route vanaf een vast opgegeven adres.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- rMode: planmode ('fast', 'short')
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function routeFromAddress(countryid, street, city, descr)
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=route";
  sRedirUrl += "&output=html";
  sRedirUrl += "&rmode=" + rMode;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve4';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  sURL += '&seltype1=2';
  sURL += '&countryid1=' + countryid;
  sURL += '&straat1=' + escape(street);
  sURL += '&plaats1=' + escape(city);
  sURL += '&descr1=' + escape(descr);
  document.location.href=sURL;
}

/*------------------------------------------ 
functie routeFromCoordinate

Bereken een route vanaf een vast opgegeven coordinaat (WGS84).

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- rMode: planmode ('fast', 'short')
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function routeFromCoordinate(lat, lon, descr)
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=route";
  sRedirUrl += "&output=html";
  sRedirUrl += "&rmode=" + rMode;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve4';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  sURL += '&seltype1=4';
  sURL += '&lat1=' + escape(lat);
  sURL += '&lon1=' + escape(lon);
  sURL += '&descr1=' + escape(descr);
  document.location.href=sURL;
}

/*
*
*	MAP functies
*
*/

/*------------------------------------------ 
functie newMap

Ga naar het invoerscherm voor de plattegrondservice.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function newMap(level)
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=loc";
  sRedirUrl += "&output=html";
  sRedirUrl += "&select=zoom";
  sRedirUrl += "&level=" + level;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve1';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  document.location.href=sURL;
}

/*------------------------------------------ 
functie mapOfPc

Toon een plattegrond van de gegeven postcode.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function mapOfPc(countryid, pc, descr, level)
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=loc";
  sRedirUrl += "&output=html";
  sRedirUrl += "&select=zoom";
  sRedirUrl += "&level=" + level;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve1';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  sURL += '&seltype1=1';
  sURL += '&countryid1=' + countryid;
  sURL += '&pc1=' + escape(pc);
  sURL += '&descr1=' + escape(descr);
  document.location.href=sURL;
}

/*------------------------------------------ 
functie mapOfPc

Toon een plattegrond van het gegeven adres.

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function mapOfAddress(countryid, street, city, descr, level)
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=loc";
  sRedirUrl += "&output=html";
  sRedirUrl += "&select=zoom";
  sRedirUrl += "&level=" + level;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve1';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  sURL += '&seltype1=2';
  sURL += '&countryid1=' + countryid;
  sURL += '&straat1=' + escape(street);
  sURL += '&plaats1=' + escape(city);
  sURL += '&descr1=' + escape(descr);
  document.location.href=sURL;
}

/*------------------------------------------ 
functie mapOfPc

Toon een plattegrond van de gegeven coordinaat (WGS84).

Gebruikte externe JavaScript variabelen:
- sHost: hostnaam TMS server
- sConfig: naam te gebruiken configuratie
------------------------------------------ */
function mapOfCoordinate(lat, lon, descr, level)
{
  var sRedirUrl = sHost;
  sRedirUrl += "app=tms";
  sRedirUrl += "&cmd=loc";
  sRedirUrl += "&output=html";
  sRedirUrl += "&select=zoom";
  sRedirUrl += "&level=" + level;
  sRedirUrl += "&";
  var sURL = sHost;
  sURL += 'app=resolve';
  sURL += '&cmd=resolve1';
  sURL += '&action=1';
  sURL += '&config=' + sConfig;
  sURL += '&redirurl=' + escape(sRedirUrl);
  sURL += '&seltype1=4';
  sURL += '&lat1=' + escape(lat);
  sURL += '&lon1=' + escape(lon);
  sURL += '&descr1=' + escape(descr);
  document.location.href=sURL;
}

 