function getXMLHTTPRequest()
{
	try { req = new XMLHttpRequest(); }
	catch(err1)
	{
		try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch(err2)
		{
			try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch(err3) { req = false; }
		}
	}
	return req;
}

var http = getXMLHTTPRequest();
var global_gid = 0;
var global_dgid = 0;
var global_dgnum = 0;
var global_sid = 0;
var pageload = true;

function getCities()
{
	initStreets();
	
	var url = '../citiesXML.php';
	
	//anti-caching
	var rand = parseInt(Math.random()*999999999999999);
	
	url = url + "?rand=" + rand + "&province=" + document.getElementById('ddl_provincie').value;
	
	http.open("GET", url, true);
	http.onreadystatechange = useHttpResponseCities;
	http.send(null);
}

function getStreets()
{
	var url = '../streetsXML.php';
	
	//anti-caching
	var rand = parseInt(Math.random()*999999999999999);
	
	var ids = document.getElementById('ddl_gemeenten').value.split("/");
	
	gemeente_id = ids[0];
	deelgemeente_id = ids[1];
	deelgemeente_num = ids[2];
	
	url = url + "?rand=" + rand + "&gid=" + gemeente_id + "&dgid=" + deelgemeente_id + "&dgnum=" + deelgemeente_num;
	
	http.open("GET", url, true);
	http.onreadystatechange = useHttpResponseStreets;
	http.send(null);
}

function useHttpResponseCities()
{
	if (http.readyState == 4)
	{
		if(http.status == 200)
		{
			initCities();
			
			var totalNodes = http.responseXML.getElementsByTagName("gemeente");
			
			for(var i=0; i < totalNodes.length; i++)
			{
				var gemeente_naam = "";
				var deelgemeente_naam = "";
				
				var id = totalNodes[i].getElementsByTagName("id")[0].childNodes[0].nodeValue;
				var postcode = totalNodes[i].getElementsByTagName("postcode")[0].childNodes[0].nodeValue;
				var gemeente_id = totalNodes[i].getElementsByTagName("gemeente_id")[0].childNodes[0].nodeValue;
				var deelgemeente_id = totalNodes[i].getElementsByTagName("deelgemeente_id")[0].childNodes[0].nodeValue;
				var deelgemeente_num = totalNodes[i].getElementsByTagName("deelgemeente_num")[0].childNodes[0].nodeValue;
				
				if(totalNodes[i].getElementsByTagName("gemeente_naam")[0].childNodes[0])
					gemeente_naam = totalNodes[i].getElementsByTagName("gemeente_naam")[0].childNodes[0].nodeValue;
								
				if(totalNodes[i].getElementsByTagName("deelgemeente_naam")[0].childNodes[0])
					deelgemeente_naam = totalNodes[i].getElementsByTagName("deelgemeente_naam")[0].childNodes[0].nodeValue;
				
				//Format the text in de dropdown list
				var optionValue = gemeente_id + "/" + deelgemeente_id + "/" + deelgemeente_num;
				
				var optionText = postcode + " ";
				//optionText += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
				
				optionText += deelgemeente_naam;
if (getURLParam('moreInfo') && getURLParam('moreInfo')==1) {
	optionText += " # gemeente_id=" + gemeente_id + ",deelgemeente_id="+deelgemeente_id+",deelgemeente_num="+deelgemeente_num;
}	
				document.getElementById("ddl_gemeenten").options[document.getElementById("ddl_gemeenten").options.length] = new Option(optionText, optionValue);						
				document.getElementById("ddl_gemeenten").options[document.getElementById("ddl_gemeenten").options.length-1].innerHTML = optionText;
			}
			
			//Select the city if page is loading
			if(pageload == true && global_gid != 0 && global_dgid != 0)
			{
				var g_dg_id = global_gid + "/" + global_dgid + "/" + global_dgnum;
				
				for(var c=0; c < document.getElementById("ddl_gemeenten").options.length; c++)
				{
					if(document.getElementById("ddl_gemeenten").options[c].value == g_dg_id)
					{
						document.getElementById("ddl_gemeenten").options[c].selected = true;
					}
				}
				
				getStreets();
			}
		}
	}
}

function useHttpResponseStreets()
{
	if (http.readyState == 4)
	{
		if(http.status == 200)
		{
			var totalNodes = http.responseXML.getElementsByTagName("straat");
			
			initStreets();
			
			for(var i=0; i < totalNodes.length; i++)
			{
				var straat_naam = "";
				var straat_naam2 = "";
				
				var straat_id = totalNodes[i].getElementsByTagName("straat_id")[0].childNodes[0].nodeValue;
				
				if(totalNodes[i].getElementsByTagName("straat_naam")[0].childNodes[0])
					straat_naam = totalNodes[i].getElementsByTagName("straat_naam")[0].childNodes[0].nodeValue;
								
				if(totalNodes[i].getElementsByTagName("straat_naam2")[0].childNodes[0])
					straat_naam2 = totalNodes[i].getElementsByTagName("straat_naam2")[0].childNodes[0].nodeValue;
				
				//Format the text in de dropdown list
				var optionText = " ";
				var optionValue = straat_id;
				
				if(straat_naam != null && straat_naam != "") optionText = straat_naam;
				else if(straat_naam2 != null && straat_naam2 != "") optionText = straat_naam2;
				
				var exists = false;
				
				for(var c=0; c < document.getElementById("ddl_straten").options.length; c++)
				{
					if(document.getElementById("ddl_straten").options[c].value == optionValue)
					{
						exists = true;
					}
				}
				
				if(!exists) document.getElementById("ddl_straten").options[document.getElementById("ddl_straten").options.length] = new Option(optionText, optionValue);
			}
			
			//Select the street if page is loading
			if(pageload == true && global_sid != 0)
			{
				for(var c=0; c < document.getElementById("ddl_straten").options.length; c++)
				{
					if(document.getElementById("ddl_straten").options[c].value == global_sid)
					{
						document.getElementById("ddl_straten").options[c].selected = true;
					}
				}
				
				pageload = false;
			}
		}
	}
}

function initDropDowns()
{
	initCities();
	initStreets();
}

function initPage(gid, dgid, dgnum, sid)
{
	if(!http) http = getXMLHTTPRequest();
	
	initCities();
	initStreets();
	
	pageload = true;
	
	global_gid = gid;
	global_dgid = dgid;
	global_dgnum = dgnum;
	global_sid = sid;
	
	if(document.getElementById('ddl_provincie').value != 0) getCities();
}

function initCities()
{
	document.getElementById("ddl_gemeenten").options.length = 0;
			
	document.getElementById("ddl_gemeenten").options[document.getElementById("ddl_gemeenten").options.length] = new Option("Kies gemeente", 0);
	document.getElementById("ddl_gemeenten").options[document.getElementById("ddl_gemeenten").options.length] = new Option("", 0);
}

function initStreets()
{
	document.getElementById("ddl_straten").options.length = 0;
	
	document.getElementById("ddl_straten").options[document.getElementById("ddl_straten").options.length] = new Option("Kies straat", 0);
	document.getElementById("ddl_straten").options[document.getElementById("ddl_straten").options.length] = new Option("", 0);
}

function getURLParam(name){
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null ) return "";
  else return decodeURIComponent(results[1]);
}
