/*
  Javascript-Bestand voor Bereikbaarheidskaart
  Copyright 2008 Goudappel Coffeng, Deventer, Netherlands (Bsd)
*/

// --------------------------------
// globale variabelen
// --------------------------------

var map, dragControl, dragControl;
var mapnik; 
var selectcontrol;
var vectors;
var projGoogle;
var projWGS84;
var projRD;
var style_type=new Array();

var global_rechten = 0;
var global_gebruiker = "";
var global_pw = "";
var global_SID = "";

var InfoMenuHoogte = 0;  
var Tabellen = new Array();
var Geoitems = new Array();
var Groepitems = new Array();
var Locatiezoeker_Eigendata = new Array();
var ID = "";

// ---------------------
function init()
// ---------------------
{
  projGoogle = new OpenLayers.Projection("EPSG:900913"); // 4326
  projWGS84 = new OpenLayers.Projection("EPSG:4326"); //
  projRD = new OpenLayers.Projection("EPSG:28992"); //
  OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
  OpenLayers.Util.onImageLoadErrorColor = "transparent";

  var options = {
    projection: new OpenLayers.Projection("EPSG:900913"),
    displayProjection: new OpenLayers.Projection("EPSG:4326"),
    units: "m",
    numZoomLevels: 18,
    maxResolution: 156543.0339,
    maxExtent: new OpenLayers.Bounds(-20037508, -20037508,20037508, 20037508.34), 
    restrictedExtent: new OpenLayers.Bounds(380000, 6500000,840000, 7150000), 
    eventListeners: {"changebaselayer": resizeMap }
  };

  map = new OpenLayers.Map('map', options);

//  var ghyb = new OpenLayers.Layer.Google("Google Hybrid",{type: G_HYBRID_MAP, 'sphericalMercator': true, 'opacity': 1}  );
//  var gmap = new OpenLayers.Layer.Google("Google Kaart",{'sphericalMercator': true, 'opacity': 0.5});
//  var gsat = new OpenLayers.Layer.Google("Google Luchtfoto",{type: G_SATELLITE_MAP, 'sphericalMercator': true, 'opacity': 0.5});
  mapnik = new OpenLayers.Layer.TMS("OpenStreetMap","http://a.tile.openstreetmap.org/",{'opacity': 1,type: 'png', getURL: osm_getTileURL,displayOutsideMaxExtent: true,attribution: ''});

  datalaag = new OpenLayers.Layer.WMS
  ( "Data", "mapserver/maakkaart.php",
    {'layers': '', format:'png'},
    {'opacity': 1,'isBaseLayer': false,'wrapDateLine': false,'reproject': false,'singleTile': true,'ratio': 1 } 
  );
  datalaag.setVisibility(false);
    
  map.addLayers([mapnik, datalaag]);

  var proj = new OpenLayers.Projection("EPSG:900913"); // 4326
  
  var point = new OpenLayers.LonLat(4.35, 52.001);
  point.transform(projWGS84,projGoogle);
  map.setCenter(point,10);

// ------------
// Editfuncties
// ------------

  var click = new OpenLayers.Control.Click_bsd();
  click.onClick = eventClick;
  map.addControl(click);
  click.activate();

  resizeMap();
  getTabellen();
}

// ------------
var popup = null;
function closepopup()
// ------------
{
	if (popup)
	{ map.removePopup(popup);
    popup.destroy();
    popup = null;
  }
}  

// ------------
function MaakPopup(poptekst)
// ------------
{  
  closepopup();  
  popup = new OpenLayers.Popup.FramedCloud("instructies",
         map.getCenter(),
         new OpenLayers.Size(400,400),
         poptekst+"<br>&nbsp;<br>&nbsp;", 
         null,
         true);
  map.addPopup(popup);
}

// ------------
function postcodeClick(postcode4)
	{Geoitems = new Array();
	Geoitems.push(postcode4);
//	Hoofdmenu = 2;
//	Submenu = 1;
	
	if (bereikbaarheid_scenario>0)
	{

	aktualiseer_isochronen();
	}
	else if (vbereikbaarheid_scenario>0)
	{

	aktualiseer_absverschillen();
	}
	else if (v2bereikbaarheid_scenario>0)
	{            

	aktualiseer_relverschillen();
	}

	
}
// ------------

// ------------
function handleeventClick(hReq)
// ------------
// handle voor 'echte' (eventClick) en voor vraag naar Detailinfo uit popup (getDetail)
// ------------


{
  var arr = hReq.responseText.split("|");
 	Geoitems = new Array();
	if ((id=parseInt(arr[1]))>0)
        Geoitems.push(id);
      //	Hoofdmenu = 2;
  	Submenu = 1;
  	MaakMenu()
  
  
  	if (bereikbaarheid_scenario>0)
	{
	  ;
	aktualiseer_isochronen();
	}
	else if (vbereikbaarheid_scenario>0)
	{
	  
  aktualiseer_absverschillen();
	}
	else if (v2bereikbaarheid_scenario>0)
	{
	aktualiseer_relverschillen();
	}
	
	
  	
}

var eventClicklonlat;
// ------------
function eventClick(e)
// ------------
{
	var xy = e.xy;
  var zoom = map.getZoom();
  var geotabel,datatype;
  var beperkTypeData = 0;
  var abounds = map.calculateBounds();
  var ascale=(abounds.right-abounds.left)/1000;
    
  eventClicklonlat = map.getLonLatFromViewPortPx(xy);
  
     geotabel ="geo_pc4";
     datatype="pol";

     
  new OpenLayers.Ajax.Request("mapserver/GetFeature.php", { method: 'get', parameters:
    {'x': Math.floor(eventClicklonlat.lon),
     'y': Math.floor(eventClicklonlat.lat), 
     'zoom': zoom, 
     'geotabel': geotabel, 
     'datatype': datatype,
     'beperkTypeData': beperkTypeData,
     'ID':-1  },
    onComplete: handleeventClick
  });
}

// -----------------------------------------------
function getDetail(geotabel,ID,x,y,zoom,beperkTypeData)
// geeft beschikbare informatie over een geofeature
// wordt aangeroepen uit link van GetFeature.php
// -----------------------------------------------
{
  new OpenLayers.Ajax.Request("mapserver/GetFeature.php", { method: 'get', parameters:
    {'x': Math.floor(eventClicklonlat.lon),
     'y': Math.floor(eventClicklonlat.lat), 
     'zoom': zoom, 
     'beperkTypeData': beperkTypeData,
     'geotabel': geotabel, 
     'datatype': "all",
     'ID':ID  },
    onComplete: handleeventClick
  });
}

// -----------------------------------------------
function resizeMap()
// -----------------------------------------------
{
  var centre = map.getCenter();
  var zoom = map.getZoom();
  var w = mygetWndW()-248;
  var h = mygetWndH();
  var bh=150;
  document.getElementById("map").style.width = w+"px";
  document.getElementById("map").style.height = (mygetWndH()-bh-InfoMenuHoogte)+"px";
  document.getElementById("info").style.width = w+"px";
  document.getElementById("info").style.height = InfoMenuHoogte+"px";    
  
  document.getElementById("links").style.top = "0px";    
  document.getElementById("links").style.height = (h-bh)+"px";    

  map.setCenter(centre, zoom);
}


var tpoint;
var aktKaart = -1;
function handlegetTabellen(hReq)
{
  Tabellen = new Array();
  Groepitems = new Array();
  var rijen;
	var format = new OpenLayers.Format.XML();
	var nodes = format.read(hReq.responseText);
	var allNodes = nodes.getElementsByTagName("tabellen");
	if (allNodes.length==0) alert("ongeldige XML input");
	var rijen = allNodes[0].getElementsByTagName("rij");
  var potentialNode, fullName;
  var aItem = "", aHoofdItem="";
  var arr;  
	for (s=0;s<rijen.length;s++)
	{
    allNodes = rijen[s].getElementsByTagName("*");
    var eenObject = new Object();
    for(var i=0; i<allNodes.length; ++i) eenObject[allNodes[i].nodeName]=OpenLayers.Util.getXmlNodeValue(allNodes[i]);
    eenObject.maakTabel = false;
    eenObject.klikmodus = 0;    
    arr = eenObject.datatabel.split("|");
    if (arr.length>1) eenObject.klikmodus = arr[1];    
    Tabellen[s] = eenObject;    
    if (aItem != eenObject.groepnaam)
    {
    	arr = eenObject.groepnaam.split("|");
    	if (aHoofdItem != arr[0])
      {
        var Object2 = new Object();
    	  Object2.groepnaam = arr[0];
    	  Object2.level = 2;
    	  Object2.uitgevouden = false;
    	  Object2.oudejaren = false;
    	  Groepitems.push(Object2);
    	  aHoofdItem = arr[0];
    	}
    	var Object2 = new Object();
    	Object2.groepnaam = eenObject.groepnaam;
    	Object2.level = 1;
    	Object2.uitgevouden = false;
    	Object2.oudejaren = false;
    	Groepitems.push(Object2);
    	aItem = eenObject.groepnaam;
    }	    
	}
	MaakMenu();
}

function getTabellen()
{
  document.getElementById("links").innerHTML = "<p class=\"titel\">Haal Tabellen op ...<br><img src=\"http://www.goudmap.info/map/buttons/wait.gif\"></p>";
  new OpenLayers.Ajax.Request("getTabellen.php", { method: 'get', parameters:
    { toeval:Math.random() },
    onComplete: handlegetTabellen
  });
}

function handleLogin(hReq)
{
	if (hReq.readyState == 4)
	{
		var str = hReq.responseText.split("|");
		global_rechten = str[0];
		global_SID = str[2];
		MaakMenu();
	}
}

function Login()
{
	global_gebruiker = document.formular.naam.value;
	global_pw=document.formular.password.value;
  new OpenLayers.Ajax.Request("login.php", { method: 'get', parameters:
    { 'naam': global_gebruiker, 'password': global_pw, 'toeval': Math.random() },
    onComplete: handleLogin
  });
}

function handleOpslaan(hReq)
{
	if (hReq.readyState == 4)
	{
		GetObjecten(-1);
		alert(hReq.responseText);
	}
}

function Opslaan()
{
	gemuteerd = 0;
	if (!document.formular) { alert("Opslaan niet meer mogelijk; formular is al verwijderd"); return; }
	var params = { 'naam': global_gebruiker, 'password': global_pw, 'toeval': Math.random() };
  for (var i=0; i<document.formular.length; i++)
    params[document.formular.elements[i].name]=document.formular.elements[i].value;
  new OpenLayers.Ajax.Request("Opslaan.php", { method: 'get', parameters: params,
    onComplete: handleOpslaan
  });
}

// ----------------------
function klikAardbolfromPopup(groepnaam,itemnaam,id)
// ----------------------
// in popup (gegenereerd in GetFeature.php) op aardbol geklikt
// wordt ook gebruikt in Menu Invloedgegevens
// id>0: GeoID wordt toegevoegd aan aktieve items
// id==-1: geen GeoID
// ----------------------
{
  closepopup();
  var item = -1; 
	for (var j=0;j<Tabellen.length;j++)
  { Tabellen[j].maakTabel=false;
    if ((Tabellen[j].groepnaam==groepnaam) && (Tabellen[j].itemnaam==itemnaam) && (Tabellen[j].aktueel==1))
      item = j; 
    if ((Tabellen[j].groepnaam==groepnaam)  && (Tabellen[j].aktueel==1) )
      Tabellen[j].maakTabel=true;      
  }
  if (item==-1) { alert("item niet gevonden: " + groepnaam+" : "+itemnaam); return; }
  aktKaart=item;
	if (id>=0) 
  { 
  	Geoitems = new Array();
    Geoitems.push(id);
	  MaakMenu();
	}          
}

// ----------------------
function MaakTabelKaart(arr_groepitem,trend)
// ----------------------
// arr_groepitem = array met groepen en itemnamen
// trend=true : alle jaren
// trend=false: alleen aktueel jaar
// ----------------------
{
  var item = -1;
  var groepnaam;
  var itemnaam;
  for (var j=0;j<Tabellen.length;j++) Tabellen[j].maakTabel=false;
  for (var i=0;i<arr_groepitem.length;i+=2)
  { 
    groepnaam = arr_groepitem[i];
    itemnaam  = arr_groepitem[i+1];
    for (var j=0;j<Tabellen.length;j++)
    { 
      if (i==0) // kaartitem alleen voor eerste item 
        if ((Tabellen[j].groepnaam==groepnaam) && (Tabellen[j].itemnaam==itemnaam) && (Tabellen[j].aktueel==1))
          item = j; 
      if (trend)
      { if ((Tabellen[j].groepnaam==groepnaam) && (Tabellen[j].itemnaam==itemnaam) )
          Tabellen[j].maakTabel=true;
      }    
      else          
        if ((Tabellen[j].groepnaam==groepnaam)  && (Tabellen[j].itemnaam==itemnaam) && (Tabellen[j].aktueel==1) )
          Tabellen[j].maakTabel=true;
    }
  }
  if (item==-1) { alert("item niet gevonden: " + groepnaam+" : "+itemnaam); return; }
  aktKaart=item;
}


// ----------------------
function klikAardbol(item)
// ----------------------
// in tabel op aardbol geklikt
// ----------------------
{
	aktKaart=item; 
	for (var j=0;j<Tabellen.length;j++) Tabellen[j].maakTabel=false;
	Tabellen[item].maakTabel=true;
	Geoitems = new Array();
	MaakMenu();
}

// ----------------------
function handleReistijdentoevoegen(hReq)
// ----------------------
{
  var gebiednr = parseInt(hReq.responseText);
  if (!(gebiednr>0))
    alert("fout: "+hReq.responseText);
  else
  {    
    Geoitems.push(gebiednr);
    //alert(Geoitems.length + " - "  + Geoitems[0]);
    MaakMenu();
  }
}

// ----------------------
function reistijdentoevoegen(pc4,gebiedtype)
// ----------------------
{
  new OpenLayers.Ajax.Request("GetPostcode.php", { method: 'get', parameters: {'pc':pc4,'gebiedtype':gebiedtype},
    onComplete: handleReistijdentoevoegen
  });
}

// ----------------------
function eigendatatoevoegen(pc4, aantal)
// in locatiezoeker is er een postcode-aantal combinatie toegevoegd
// ---------------------- 
{
  if ((pc4<1011)||(pc4>9999)){ alert(pc4+" is geen geldige postcode"); return }
  if (aantal<=0)             { alert(aantal+" is ongeldig");           return }
  if (Locatiezoeker_Eigendata.length>=20) { alert("te veel eigen data");return }
  for (var t=0;t<Locatiezoeker_Eigendata.length;t++)
  {
    if (Locatiezoeker_Eigendata[t][0]==pc4)
    {
      alert("Postcode "+pc4+" bestaat al in lijst. Aantal is toegevoegd");
      Locatiezoeker_Eigendata[t][1] += aantal;
      MaakMenu(); return
    }
  }
  Locatiezoeker_Eigendata.push(new Array(pc4,aantal));
  MaakMenu();
}
    
// ----------------------
function aktualiseer_isochronen()
// ----------------------
// wordt getriggerd bij wisseling van selectboxen
// ----------------------
 
{
if (Hoofdmenu==2)
{
	
  var arr_skim = new Array("Stedenbaan6maatwerk", "Stedenbaan66", "Stedenbaan616");  
	var variabel = 'skim '+arr_skim[bereikbaarheid_scenario-1];
	
	klikAardbolfromPopup('Bereikbaarheidskaart|Isocronen',variabel,-1);
	akt_layer();
	akt_tabellen();

  var mte="";
  
  
  	if (bereikbaarheid_scenario == 1)
	{
	mte += '<p><b>Variant 6/maatwerk:</b> in deze variant rijden 6 IC-treinen en 4 regionale treinen op de corridor Den Haag - Rotterdam.</p>'
	}
	else if (bereikbaarheid_scenario ==2 )
	{
	mte += '<p><b>Variant 6/6:</b> in deze variant rijden 6 IC-treinen en 6 regionale treinen op de corridor Den Haag - Rotterdam.</p>'
	}	
	else if (bereikbaarheid_scenario ==3 )
	{
	mte += '<p><b>Variant 6/16:</b> in deze variant rijden 6 IC-treinen en 16 regionale treinen op de corridor Den Haag - Rotterdam.</p>'
	}

mte +='<p><table style="margin: 0pt; padding: 0pt;"><tr class="maptiptd1" style="background-color:white"><td><b>Legenda:</b><br/>Bereikbaar binnen</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(255, 0, 0);"><td>&nbsp;10 minuten</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(255, 102, 0);"><td>&nbsp;20 minuten</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(255, 204, 0);"><td>&nbsp;30 minuten</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(206, 237, 0);"><td>&nbsp;45 minuten</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(121, 201, 0);"><td>&nbsp;60 minuten</td></tr></table>';
	
	vbereikbaarheid_scenario == 0;
	v2bereikbaarheid_scenario == 0;
		
  if (document.getElementById("bereikbaarheidstekst"))
     document.getElementById("bereikbaarheidstekst").innerHTML = mte;  


}
  // MaakMenu();
}


// ----------------------
function aktualiseer_absverschillen()
// ----------------------
// wordt getriggerd bij wisseling van selectboxen
// ----------------------
 

	
{

if (vbereikbaarheid_scenario>0)
{	

//alert (vbereikbaarheid_scenario);
  var arr_skim = new Array("Stedenbaan6maatwerkAbs", "Stedenbaan16maatwerkAbs", "Stedenbaan616Abs");  
	var variabel = 'skim '+arr_skim[vbereikbaarheid_scenario-1];
	
	klikAardbolfromPopup('Bereikbaarheidskaart|Absverschillen',variabel,-1);
	akt_layer();
	akt_tabellen();

  var mte="";
   
  if (vbereikbaarheid_scenario == 1)
	{
	mte += '<p><b>Variant 6/maatwerk en 6/6 vergeleken, absolute verschillen.</p>'
	}
	else if (vbereikbaarheid_scenario ==2 )
	{
	mte += '<p><b>Variant 6/maatwerk en 6/16 vergeleken, absolute verschillen.</p>'
	}	
	else if (vbereikbaarheid_scenario ==3 )
	{
	mte += '<p><b>Variant 6/6 en 6/16 vergeleken, absolute verschillen.</p>'
	}	
	
mte +='<p><table style="margin: 0pt; padding: 0pt;"><tr class="maptiptd1" style="background-color:white"><td><b>Legenda:</b><br/>Absolute reistijdverschillen</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(229, 213, 242);"><td>&nbsp;< 2 minuten</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(178, 147, 194);"><td>&nbsp;2 - 4 minuten</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(133, 90, 150);"><td>&nbsp;4 - 8 minuten</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(93, 44, 112);"><td>&nbsp;>8 minuten</td></tr></table>';
  if (document.getElementById("bereikbaarheidstekst"))
     document.getElementById("bereikbaarheidstekst").innerHTML = mte;  
     
    } 
}
    
    // ----------------------
function aktualiseer_relverschillen()
// ----------------------
// wordt getriggerd bij wisseling van selectboxen
// ----------------------
 

	
{	
	if (v2bereikbaarheid_scenario>0)
{
  var arr_skim = new Array("Stedenbaan6maatwerkRel", "Stedenbaan16maatwerkRel", "Stedenbaan616Rel");  
	var variabel = 'skim '+arr_skim[v2bereikbaarheid_scenario-1];
	
	klikAardbolfromPopup('Bereikbaarheidskaart|Relverschillen',variabel,-1);
	akt_layer();
	akt_tabellen();

  var mte="";
  
  if (v2bereikbaarheid_scenario == 1)
	{
	mte += '<p><b>Variant 6/maatwerk en 6/6 vergeleken, relatieve verschillen.</p>'
	}
	else if (v2bereikbaarheid_scenario ==2 )
	{
	mte += '<p><b>Variant 6/maatwerk en 6/16 vergeleken, relatieve verschillen.</p>'
	}	
	else if (v2bereikbaarheid_scenario ==3 )
	{
	mte += '<p><b>Variant 6/6 en 6/16 vergeleken, relatieve verschillen.</p>'
	}	
	
	mte +='<p><table style="margin: 0pt; padding: 0pt;"><tr class="maptiptd1" style="background-color:white"><td><b>Legenda:</b><br/>Relatieve reistijdverschillen in %</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(255, 255, 0);"><td>&nbsp;< 2%</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(0, 219, 0);"><td>&nbsp;2 - 5%</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(32, 153, 143);"><td>&nbsp;5 - 10%</td></tr><tr class="legenda" style="border: 1px solid rgb(255, 255, 255); width: 20px; background-color: rgb(11, 44, 122);"><td>&nbsp;>10%</td></tr></table>';
  if (document.getElementById("bereikbaarheidstekst"))
     document.getElementById("bereikbaarheidstekst").innerHTML = mte;  
    
    } 
}
// ----------------------
function aktualiseer_potenties()
// ----------------------
// wordt getriggerd bij wisseling van selectboxen
// ----------------------
{
  var arr_naam = new Array("auto 2005","auto 2020","OV 2008","OV 2020","fiets 2005");
	var variabel = arr_naam[parseInt(document.potenties.scenario.value)-1];
	klikAardbolfromPopup('Bereikbaarheidskaart|Catchment area',variabel,-1);
	akt_layer();
	akt_tabellen();
}

// ----------------------
function aktualiseer_ontplooing()
// ----------------------
// wordt getriggerd bij wisseling van selectboxen
// ----------------------
{
  var arr_naam = new Array("auto 2005","auto 2020","OV 2008","OV 2020","fiets 2005");
	var variabel = arr_naam[parseInt(document.potenties.scenario.value)-1];
	klikAardbolfromPopup('Bereikbaarheidskaart|Ontplooiingsmogelijkheden',variabel,-1);	
	akt_layer();
	akt_tabellen();
}

// ----------------------
function aktualiseer_profiel()
// ----------------------
// wordt getriggerd bij wisseling van selectboxen
// ----------------------
{
	var variabel = parseInt(document.profiel.scenario.value);
	klikAardbolfromPopup('Bereikbaarheidskaart|Bereikbaarheidsprofiel',variabel,-1);
	akt_layer();
	akt_tabellen();
}

// ----------------------
var Hoofdmenu = 0; // 0=home, 1=reistijden,2=bereikbaarheid,3=demografie,4=mobiliteit,5=informatie,6=contact
var Submenu = 1; // Hoofdmenu=3: 1=reistijdeninstap, 2=folders	
var Ondermenu = 0;
var laatsteQuery = "";
var reistijdenLijst=new Array();
var bereikbaarheid_scenario = 1; // auto ov 2005 2020 etc
var vbereikbaarheid_scenario = 0;
var v2bereikbaarheid_scenario = 0;

// ----------------------
function MaakMenu()
// ----------------------
{
	//alert ("maak menu")
	//alert (vbereikbaarheid_scenario);
	var te="";
	var waarde,nwaarde;
	var id,i,j,gevonden;
	var oudejaren;
	var aHoofditem = "";
	var arr;
  closepopup();
  document.getElementById("links").innerHTML = "";
  
// bovenmenu
// ---------
  
  var Menuitemnaam=new Array("Home","","Reistijdisochroon","Verschil in reistijden","Uitleg reistijden","","","","");    

  var te='<ul id="nav">';
  for (var t=0;t<=7;t++)
  { if (Menuitemnaam[t].length>0)
    {
	  	te += '<li><a ';
	    if (Hoofdmenu==t) te+= 'class="active"';
	    te += ' href="javascript:aktKaart=-1;for(var j=0;j<Tabellen.length;j++) Tabellen[j].maakTabel=false;Submenu=1;Ondermenu=0;Hoofdmenu='+t+';MaakMenu()">'+Menuitemnaam[t]+'</a></li>';    
    } 
  } 
  
  te += '</ul>';
  document.getElementById("bovenmenu").innerHTML = te;


// -------------------------------------
  if (Menuitemnaam[Hoofdmenu] == "Home") 	
// -------------------------------------
  {
      te = '<div class="name space"><h1>Home</h1></div>';
  
      te += '<p class="menu_head">Welkom op de bereikbaarheidskaart Stedenbaan</p>';
      te += '<p class="menu_text">Deze site is tot stand gekomen naar aanleiding van de studie maatschappelijke effecten Stedenbaan. Voor de corridor Den Haag - Rotterdam zijn verschillende dienstregelingen gemaakt voor Stedenbaan. De betekenis van elk van deze varianten is doorgerekend met het Nationale Verkeersmodel.</p>';
      te += '<p class="menu_text">Op deze site kunt u aan de hand van reistijden zien welke effecten Stedenbaan heeft vanuit/ naar uw (woon)locatie.</p>';
 
 	 //download
      te+= '<p class="menu_text">Zie <a href="doc/varianten_dienstregeling.pdf" target="_blank">hier</a> de varianten van de dienstregeling van Stedenbaan</p>'
	 
    
  }
        
// -------------------------------------
  if (Menuitemnaam[Hoofdmenu] == "Uitleg reistijden") 	
// -------------------------------------
  {
  
  te = '<p class="menu_head">Uitleg reistijden</p>';
 te += '<p class="menu_text">De OV-reistijd wordt berekend door uit te gaan van voortransport, wachttijd, rijtijd Stedenbaan en natransport. </p>';
 te += '<p class="menu_text">Stel een inwoner wil vanuit zijn woonlocatie Den Haag Moerwijk naar Schiedam Centrum. Het voortransport bestaat dan uit de wandeltijd vanuit de woonlocatie naar het dichtstbijzijnde station (in dit geval Den Haag Moerwijk). Met een frequentie van bijvoorbeeld 6x per uur wordt een wachttijd berekend van 5 minuten.Na ongeveer 15 minuten rijtijd met Stedenbaan kom je aan op Schiedam Centraal. Het centrum van Schiedam ligt op 5 minuten lopen. De totale OV-reistijd tussen Den Haag Moerwijk en Schiedam Centrum komt dan neer op ongeveer 30 minuten.</p>';
 te += '<p class="menu_text">In dit voorbeeld is geen overstap uitgewerkt. Voor een overstap van OV op OV wordt in de totale reistijdbepaling een extra overstaptijd van 5 minuten berekend.</p>';
 te += '<p class="menu_text">Wij gaan ervan uit dat Stedenbaan wordt gereden met modern materieel. Daarmee ontstaat ook tijdswinst ten opzichte van de huidige situatie, doordat het moderne materieel kortere halteringstijden kent en sneller accelereert en remt. </p>';

}

// -------------------------------------
  if (Menuitemnaam[Hoofdmenu] == "Reistijdisochroon") 	
// -------------------------------------   
  {   
  	//alert (vbereikbaarheid_scenario);
    if (Submenu==1) // hoofdmenu
    {    	
    	  if (bereikbaarheid_scenario==0)
    	  {
        bereikbaarheid_scenario=1;
        }
    	//titel
    	te ='<div class="name space"><h1>Bereik vanuit<br>een (woon-)locatie</h1></div>';
    	//tekst
     	te += '<p class="menu_head">Klik op een (woon)locatie in de kaart of vul een postcode in om de reistijdeffecten van Stedenbaan te zien.</p>';
     	//maken isochronen

 	 //kies postcode
	te +='<form name="pcform"><p>Postcode (4 cijfers):<br><input name="pc4" type="text" size="10" maxlength="6">';
	te +='<input type="button" name="sdf" value=" OK " onclick="postcodeClick(parseInt(this.form.pc4.value))"> ';
	te +='</p></form>';
	} 
	    	
	    	
	  //uitleg scenario
	 te+= '<div id="bereikbaarheidstekst"> </div>';
	// alert (te);
	
	//kies scenario
     	te+='<p>Reistijden openbaar vervoer in de toekomst (2020) volgens dienstregeling<br><SELECT NAME="scenario" onchange="bereikbaarheid_scenario=parseInt(this.value);refresh_legenda1(); aktualiseer_isochronen()">';
     	te+='<OPTION VALUE="0" '+((bereikbaarheid_scenario==0)?'selected':'')+'>Kies een optie</OPTION>';
      	te+='<OPTION VALUE="1" '+((bereikbaarheid_scenario==1)?'selected':'')+'>6/maatwerk</OPTION>';
      	te+='<OPTION VALUE="2" '+((bereikbaarheid_scenario==2)?'selected':'')+'>6/6</OPTION>';      
	     te+='<OPTION VALUE="3" '+((bereikbaarheid_scenario==3)?'selected':'')+'>6/16</OPTION>';
	     te+='</SELECT></p>';
	
   
    //(Submenu==1) &&
      
    if ( (Geoitems.length == 0))
    {
      var poptekst="<b>Klik op de kaart<br>om het centrum van<br>de isochronen te bepalen</b>";
      MaakPopup(poptekst);  
    } 
    aktualiseer_isochronen();
  }  
  
  // -------------------------------------
  if (Menuitemnaam[Hoofdmenu] == "Verschil in reistijden") 	
// -------------------------------------   
  {   
  	//alert (vbereikbaarheid_scenario);
    if (Submenu==1) // hoofdmenu
    {  
    
        if ((vbereikbaarheid_scenario==0)&&(v2bereikbaarheid_scenario==0))
    	  {
        vbereikbaarheid_scenario=1;
        refresh_legenda2(); 
        aktualiseer_absverschillen();
        }
    
        	
    	
    	//titel
    	te ='<div class="name space"><h1>Bereik vanuit<br>een (woon-)locatie</h1></div>';
    	//tekst
     	te += '<p class="menu_head">Klik op een (woon)locatie in de kaart of vul een postcode in om de reistijdeffecten van Stedenbaan te zien.</p>';
     	//maken isochronen

 	 //kies postcode
    	te +='<form name="pcform"><p>Postcode (4 cijfers):<br><input name="pc4" type="text" size="10" maxlength="6">';
    	te +='<input type="button" name="sdf" value=" OK " onclick="postcodeClick(parseInt(this.form.pc4.value))"> ';
    	te +='</p></form>';
    	
      	  //uitleg scenario
	   te+= '<div id="bereikbaarheidstekst"> </div>'; 
    
	
	//kies scenario ABSOLUUT
     	  te+='<p>Absolute reistijdverschillen (aantal minuten) :<br><SELECT NAME="scenario" onchange="vbereikbaarheid_scenario=parseInt(this.value);refresh_legenda2(); aktualiseer_absverschillen()">';
      	te+='<OPTION VALUE="0" '+((vbereikbaarheid_scenario==0)?'selected':'')+'>Kies een optie</OPTION>';
      	te+='<OPTION VALUE="1" '+((vbereikbaarheid_scenario==1)?'selected':'')+'>6/maatwerk en 6/6</OPTION>';
      	te+='<OPTION VALUE="2" '+((vbereikbaarheid_scenario==2)?'selected':'')+'>6/maatwerk en 6/16</OPTION>';      
      	te+='<OPTION VALUE="3" '+((vbereikbaarheid_scenario==3)?'selected':'')+'>6/6 en 6/16</OPTION>';
      	te+='</SELECT></p>';
      	
	//kies scenario RELATIEF
	
       	te+='<p>Relatieve reistijdverschillen (%verschillen):<br><SELECT NAME="scenario" onchange="v2bereikbaarheid_scenario=parseInt(this.value); refresh_legenda3();aktualiseer_relverschillen()">';
       	te+='<OPTION VALUE="0" '+((v2bereikbaarheid_scenario==0)?'selected':'')+'>Kies een optie</OPTION>';
      	te+='<OPTION VALUE="1" '+((v2bereikbaarheid_scenario==1)?'selected':'')+'>6/maatwerk en 6/6</OPTION>';
      	te+='<OPTION VALUE="2" '+((v2bereikbaarheid_scenario==2)?'selected':'')+'>6/maatwerk en 6/16</OPTION>';      
      	te+='<OPTION VALUE="3" '+((v2bereikbaarheid_scenario==3)?'selected':'')+'>6/6 en 6/16</OPTION>';
      	te+='</SELECT></p>';
      	
      	te+='<p>De verschillen tussen de dienstregelingsvarianten is met behulp van onderstaande opties inzichtelijk te maken. Let wel de verschillen tussen de dienstregelingsvarianten zijn indicatief omdat de reistijden zijn bepaald door het verkeersmodel. De verschillen zijn groot doordat aan overstappen van reizigers reistijdpenaltys meegegeven zijn. Meer hierover zie uitleg reistijden.</p>'
      	
      	
      	
	}
	aktualiseer_absverschillen();
  }	
  
  
  te+='<hr style="color:rgb(1,1,1); background-color:white; height:1px;">';
  
  te+='<span><table style="padding-top:26px; ">';
  te+='<tr><td style="font-size:7pt" valign=top>Initiatief:</td><td style="font-size:7pt"><a href="http://www.stedenbaan.nl" target="_blank">Programmabureau Stedenbaan</a></<td></tr>';
  te+='<tr><td style="font-size:7pt"valign=top>Applicatie:</td><td style="font-size:7pt"><a href="http://www.goudappel.nl" target="_blank">Goudappel Coffeng</a></<td></tr>';
  te+='<tr><td style="font-size:7pt"valign=top>Databronnen:</td><td style="font-size:7pt">Studie Stedebaan 2009</<td></tr>';
  te+='<tr><td style="font-size:7pt"valign=top>Achtergrondkaart:</td><td style="font-size:7pt"><a href="http://www.openstreetmap.nl" target="_blank">Openstreetmap</a></<td></tr>';
  te+="</table></span>";

  
  document.getElementById("links").innerHTML = te;  
  //aktualiseer_isochronen();
  

  akt_layer();
  akt_tabellen();
}
  
//--------------------------  
function refresh_legenda1()
//---------------------------
{
	
	vbereikbaarheid_scenario=0;
	v2bereikbaarheid_scenario=0;
	MaakMenu();
}
//--------------------------  
function refresh_legenda2()
//---------------------------
{
	
	//alert (vbereikbaarheid_scenario);
	bereikbaarheid_scenario=0;
	v2bereikbaarheid_scenario=0;
	MaakMenu();
}
//--------------------------  
function refresh_legenda3()
//---------------------------
{
	
	vbereikbaarheid_scenario=0;
	bereikbaarheid_scenario=0;
	MaakMenu();
}

// --------------------  
function akt_tabellen()
// --------------------
{ 
  return;
   
  var Query=maakSelstring(Geoitems);

  if ((Hoofdmenu == 2)&&(Submenu==2)&&(Ondermenu>=3)) // locatiezoeker
    for (var t=0;t<Locatiezoeker_Eigendata.length;t++)
      Query += "!"+Locatiezoeker_Eigendata[t][0]+"!"+Locatiezoeker_Eigendata[t][1];
  else
    Query += "!0";
         
  var tel=0;
  Query += "#";

  if ((Hoofdmenu==1) && (Submenu==1))
  {
    Query += "0#0#gen2";
    tel=1;
  } 
  else
  {
    for (var j=0;j<Tabellen.length;j++)
      if (Tabellen[j].maakTabel) 
      { Query += Tabellen[j].ID + "|";
        tel++;
        //alert (tel + " - " + Query);
      }
    Query += "#";  
    if (aktKaart>-1) Query += Tabellen[aktKaart].geotabel;
    Query += "#";  
    if (aktKaart>-1) Query += Tabellen[aktKaart].datatabel;
  }
            
  if (tel==0)
  { if (InfoMenuHoogte != 0)
    {
    	InfoMenuHoogte=0;
    	document.getElementById("info").innerHTML = "";
    	resizeMap();
    }
  }
  else
  {    
  	if (laatsteQuery != Query)
  	{   	  
	    var nieuwInfoMenuHoogte = 200;
	    var pretekst = "";
      var aid=-1; 
      if (aktKaart>=0)  
      { 
        if ((Hoofdmenu == 2) && (((Submenu==2) || (Submenu==3)) && (Ondermenu==1)))
  	  	{ nieuwInfoMenuHoogte = 0;   	
  	  	  pretekst =' ';
  	  	}         
        if ((Hoofdmenu==1) && (Submenu==2))
  	  	{ nieuwInfoMenuHoogte = 0;   	
  	  	  pretekst =' ';
  	  	}         

  	  	if (Tabellen[aktKaart].groepnaam=="Bereikbaarheidskaart|Catchment area") 
  	  	{ nieuwInfoMenuHoogte = 76;   	
  	  	  pretekst ='<b>Catchment area, economische potenties per gebied.</b><br>Naar afstand gewogen aantal bereikbare inwoners: naarmate herkomstlocaties in reistijd verder weg liggen tellen ze minder mee<br>bron reistijden: De nationale bereikbaarheidskaart <a href=\"http://www.bereikbaarheidskaart.nl\">www.bereikbaarheidskaart.nl</a><br>bron sociodata: ABF primos prognoses.';
  	  	} 
	    	if (Tabellen[aktKaart].groepnaam=="Bereikbaarheidskaart|Ontplooiingsmogelijkheden") 
	    	{ nieuwInfoMenuHoogte = 76;   	
	    	  pretekst = '<b>Ontplooiingsmogelijkheden per gebied.</b><br>Naar afstand gewogen aantal bereikbarearbeidsplaatsen: naarmate herkomstlocaties in reistijd verder weg liggen tellen ze minder mee<br>Omdat arbeidsplaatsen een goede proxy zijn voor bedrijvigheid is dit ook een maat voor de bereikbaarheid van andere bedrijven.<br>bron reistijden: De nationale bereikbaarheidskaart <a href=\"http://www.bereikbaarheidskaart.nl\">www.bereikbaarheidskaart.nl</a><br>bron sociodata: ABF primos prognoses.';
	    	} 
	    	if (Tabellen[aktKaart].groepnaam=="Bereikbaarheidskaart|Bereikbaarheidsprofiel") 
	    	{ nieuwInfoMenuHoogte = 76;   	
	    	  pretekst ='<b>Bereikbaarheidsprofiel, relatief best bereikbare gebieden.</b><br>Per vervoerwijze zijn de 20% best bereikbare gebieden bepaald en in kleur weergegeven. Bruine gebieden zijn goed bereikbaar met alle vervoerwijzen, terwijl bijvoorbeeld rode gebieden alleen per auto bereikbaar zijn.';
	    	} 	    	
	    }	
    	if (pretekst!="")
    	  document.getElementById("info").innerHTML = pretekst;
      else // extern ophalen
    	{
        var aid=-1; if (aktKaart>=0) aid = Tabellen[aktKaart].ID;
	      document.getElementById("info").innerHTML = "<div class=\"name space\"><h1>Bereken tabel...</h1></div>";
	      new OpenLayers.Ajax.Request("GetData.php", { method: 'get', parameters:
		    {'Query': Query,
	       'AktKaart': aid
	      },
		      onComplete: function(hReq) {document.getElementById("info").innerHTML = hReq.responseText; }
		    });
			}
          
	    if (InfoMenuHoogte!=nieuwInfoMenuHoogte)
	    {	
	    	InfoMenuHoogte=nieuwInfoMenuHoogte;
	    	resizeMap();
	    }	
	  } 
  }	    
}

// ----------------------
  function akt_layer()
// ----------------------
{
  var sel=maakSelstring(Geoitems);
  if ((Hoofdmenu == 2)&&(Submenu==2)&&(Ondermenu>=3)) // locatiezoeker
    for (var t=0;t<Locatiezoeker_Eigendata.length;t++)
      sel += "!"+Locatiezoeker_Eigendata[t][0]+"!"+Locatiezoeker_Eigendata[t][1];
  else
    sel += "!0";                        
  
  if (aktKaart!=-1)
  { 
    datalaag.mergeNewParams({VARIABEL:Tabellen[aktKaart].ID, SEL:sel});
    datalaag.setOpacity(0.6);
    mapnik.setOpacity(0.4);
    datalaag.setVisibility(true);    
  }
  else if ((Hoofdmenu==1) && (Submenu==1))
  {
    datalaag.mergeNewParams({VARIABEL:"gen2", SEL:sel});
    datalaag.setOpacity(0.6);
    mapnik.setOpacity(0.4);    
    datalaag.setVisibility(true);    
  } 	
  else if (Hoofdmenu == 3)
  {
    datalaag.mergeNewParams({VARIABEL:"gen3", SEL:sel});
    datalaag.setOpacity(0.6);
    mapnik.setOpacity(0.4);    
    datalaag.setVisibility(true);    
  } 	
  else
  {   
  	datalaag.setVisibility(false);
  	mapnik.setOpacity(1);
  }	
}


// ----------------------
function maakSelstring(Geoitems)
// ----------------------
{
	var s="";
  for (var i=0;i<Geoitems.length;i++)
    if (i==0) s+=Geoitems[i]; else s+= "|" + Geoitems[i];
  return s;  
}

// ----------------------
function MaakSubmenu(SubMenuitemnaam,Submenu,acss)   
// ----------------------
{
  var te='<ul id="'+acss+'">';
  te += '<li style="height:1px; padding:1px; ">&nbsp;</li>';
  for (var t=1;t<SubMenuitemnaam.length;t++)
  { 
  	if (SubMenuitemnaam[t]!="")
  	{
	    if (SubMenuitemnaam[t].substring(0,1)=="*")
	    { 
	      te += "<li class='vast'>"+SubMenuitemnaam[t].substring(1)+"</li>";
	    }
	    else
	    {
		    te += '<li ';
		    if (Submenu==t) te+= 'class="active"';
		    te += '><a ';
		    if (Submenu==t) te+= 'class="active"'; 
		    te += 'href="javascript:Submenu='+t+';Ondermenu=1;MaakMenu()">'+SubMenuitemnaam[t]+'</a></li>';
	    }
	  } 
  } 
  te += '</ul>';
  return te;
}

// ----------------------
function MaakOndermenu(SubMenuitemnaam,Ondermenu,acss)   
// ----------------------
{
  var te='<ul id="'+acss+'">';
  te += '<li style="height:1px; padding:1px; ">&nbsp;</li>';
  for (var t=1;t<SubMenuitemnaam.length;t++)
  { 
  	if (SubMenuitemnaam[t]!="")
  	{
	    if (SubMenuitemnaam[t].substring(0,1)=="*")
	    { 
	      te += "<li class='vast'>"+SubMenuitemnaam[t].substring(1)+"</li>";
	    }
	    else
	    {
		    te += '<li ';
		    if (Ondermenu==t) te+= 'class="active"';
		    te += '><a ';
		    if (Ondermenu==t) te+= 'class="active"'; 
		    te += 'href="javascript:Ondermenu='+t+';MaakMenu()">'+SubMenuitemnaam[t]+'</a></li>';
      }
    }
  } 
  te += '<li ><a href="javascript:Ondermenu=0;Submenu=1;MaakMenu()"><img src="icons/pijlterug.png"> Terug </a></li>';
  
  te += '</ul>';
  return te;
}

// ----------------------
function MaakOpties(tekst,arr_items)
// ----------------------
{
	var te = tekst;
	klikAardbolfromPopup(arr_items[2],arr_items[1],-1);
  te+='<form name="profiel" >';
  te+='<SELECT NAME="scenario" onchange="temparr=this.value.split(\'@\');klikAardbolfromPopup(temparr[0],temparr[1],-1); akt_layer(); akt_tabellen();">';
  for (i=0;i<arr_items.length;i+=3) 
    te+='<OPTION VALUE="'+arr_items[i+2]+'@'+arr_items[i+1]+'">'+arr_items[i]+'</OPTION>';
	te+='</SELECT>';     
	return te; 
}


