var Search = function() {
	this.provincie = "";
	this.listPlace = null;
	this.lastInput = null; 
	this.gemeente = "";
}
Search.prototype = {
	changeProvincie: function(val) {
		this.provincie = val;
		this.gemeente = "";
		if(typeof(this.listPlace) == "object" && this.listPlace != null) {
			this.listPlace.innerHTML = "";
			this.listPlace.style.display = "none";
			document.getElementById('plaatsnamen').value = "";
			document.getElementById('plaatsnamen_id').value = "";
			document.getElementById('gemeenten').value = "";
			document.getElementById('gemeenten_id').value = "";
		}
	},
	handleNewProv: function(xml) {

	},
	autoCompleteBox: function(xml) {
		search.listPlace.innerHTML = "";
		search.listPlace.style.display = "block";
		search.listPlace.onmouseout = function () {this.childNodes[0].childNodes[0].className = "selected";}
		search.listPlace.onmouseover = function () {this.childNodes[0].childNodes[0].className = "";}
		
		
		var ulItm = document.createElement("ul");
		for(i = 0; i < xml.returnXml().getElementsByTagName("plaats").length; i++) {
			var liItm = document.createElement("li");
			liItm.id = xml.returnXml().getElementsByTagName("plaats")[i].getAttribute("id");
			liItm.setAttribute("provincieID", xml.returnXml().getElementsByTagName("plaats")[i].getAttribute("provincieID"));
			liItm.setAttribute("gemeenteNaam", xml.returnXml().getElementsByTagName("plaats")[i].getAttribute("gemeenteNaam"));
			liItm.setAttribute("gemeenteID", xml.returnXml().getElementsByTagName("plaats")[i].getAttribute("gemeenteID"));
			
			if(i == 0) {
				liItm.className = "selected";
			}
			liItm.onmouseover = function () {this.className = "selected";}
			liItm.onmouseout = function () {this.className = "";}
			
			
			var val = xml.returnXml().getElementsByTagName("plaats")[i].getAttribute("name");
			liItm.setAttribute("name", val)
			liItm.innerHTML = "<strong>" + val.substr(0, search.lastInput.value.length) + "</strong>" + val.substr(search.lastInput.value.length, val.length);
			liItm.onclick = function() {
				search.fillField(this.name, this.id, this.provincieID, this.gemeenteNaam, this.gemeenteID);
			}
			ulItm.appendChild(liItm);
			
			if(i > 3) {
				break;
			}
		}
		/*ulItm.style.cssText = "position:absolute;";*/
		search.listPlace.style.position = 'absolute';
		search.listPlace.style.left = "0px";
		search.listPlace.style.top = (search.lastInput.offsetTop + 15) + "px";
		
		search.listPlace.appendChild(ulItm);
		if(xml.returnXml().getElementsByTagName("plaats").length == 1) {
			var naam = xml.returnXml().getElementsByTagName("plaats")[0].getAttribute("name").toLowerCase();
			var inp = search.lastInput.value.toLowerCase();
			
			if(naam == inp || naam == inp + " (" + inp + ")") {
				var plaats = xml.returnXml().getElementsByTagName("plaats")[0].getAttribute("name")
				var plaatsId = xml.returnXml().getElementsByTagName("plaats")[0].getAttribute("id")
				var gemeenteId = xml.returnXml().getElementsByTagName("plaats")[0].getAttribute("gemeenteID")
				var gemeenteNaam = xml.returnXml().getElementsByTagName("plaats")[0].getAttribute("gemeenteNaam")
				var provincie = xml.returnXml().getElementsByTagName("plaats")[0].getAttribute("provincieID")
				search.fillField(plaats, plaatsId, provincie, gemeenteNaam, gemeenteId);
			}
		}
		if(xml.returnXml().getElementsByTagName("plaats").length == 0) {
			search.listPlace.innerHTML = "";
			search.listPlace.style.display = "none";
		}
	},
	fillField: function(val, id, provId, gemeenteNaam, gemeenteId) {
		this.lastInput.value = val;
		
		if(document.getElementById("provincie").value == "" && this.provincie == "") {
			this.provincie = provId;
			document.getElementById("provincie").value = provId;
		}
		if(this.gemeente == "") {
			this.gemeente = gemeenteId;
			document.getElementById("gemeenten").value = gemeenteNaam;
			document.getElementById("gemeenten_id").value = gemeenteId;
		}
		
		if(this.lastInput.id == "gemeenten") {
			this.gemeente = id;
		}
		document.getElementById(this.lastInput.id + "_id").value = id
		search.listPlace.innerHTML = "";
		search.listPlace.style.display = "none";
	},
	autoComplete: function(objField, show) {
		var obj = this;
		this.lastInput = objField
		this.listPlace = show;
		
		if(objField.value.length > 0) {
			var requestPlaats = new ST_HTTPDataConnection();
			requestPlaats.setURL("../include/xml/getPlaats.php?title=" + objField.value + "&provincieID=" + this.provincie + "&gemeenteID=" + this.gemeente);
			requestPlaats.setFunction(search.autoCompleteBox);
			requestPlaats.requestData();
		} else {
			this.listPlace.style.display = "none";
			this.listPlace.innerHTML = "";
		}
	},
	autoCompleteGemeente: function(objField, show) {
		var obj = this;
		this.lastInput = objField
		this.listPlace = show;
		
		if(objField.value.length > 0) {
			var requestPlaats = new ST_HTTPDataConnection();
			requestPlaats.setURL("../include/xml/getGemeente.php?title=" + objField.value + "&provincieID=" + this.provincie);
			requestPlaats.setFunction(search.autoCompleteBox);
			requestPlaats.requestData();
		} else {
			this.listPlace.style.display = "none";
			this.listPlace.innerHTML = "";
		}
	}
}
var search = new Search();

