var unreserved = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.~"; var reserved = "!*'();:@&=+$,/?%#[]"; var allowed = unreserved + reserved; var hexchars = "0123456789ABCDEFabcdef"; function gethex(decimal) { return "%" + hexchars.charAt(decimal >> 4) + hexchars.charAt(decimal & 0xF); } function urlEncode(urlEncInput) { var encoded = ""; for (var i = 0; i < urlEncInput.length; i++ ) { var ch = urlEncInput.charAt(i); if (unreserved.indexOf(ch) != -1) { encoded = encoded + ch; } else { var charcode = urlEncInput.charCodeAt(i); if (charcode < 128) { encoded = encoded + gethex(charcode); } if (charcode > 127 && charcode < 2048) { encoded = encoded + gethex((charcode >> 6) | 0xC0); encoded = encoded + gethex((charcode & 0x3F) | 0x80); } if (charcode > 2047 && charcode < 65536) { encoded = encoded + gethex((charcode >> 12) | 0xE0); encoded = encoded + gethex(((charcode >> 6) & 0x3F) | 0x80); encoded = encoded + gethex((charcode & 0x3F) | 0x80); } if (charcode > 65535) { encoded = encoded + gethex((charcode >> 18) | 0xF0); encoded = encoded + gethex(((charcode >> 12) & 0x3F) | 0x80); encoded = encoded + gethex(((charcode >> 6) & 0x3F) | 0x80); encoded = encoded + gethex((charcode & 0x3F) | 0x80); } } } return encoded; } function getdec(hexencoded) { if (hexencoded.length == 3) { if (hexencoded.charAt(0) == "%") { if (hexchars.indexOf(hexencoded.charAt(1)) != -1 && hexchars.indexOf(hexencoded.charAt(2)) != -1) { return parseInt(hexencoded.substr(1,2),16); } } } return 256; } function replaceQs(inp,reverse) { var strOp = inp; if (reverse) { strOp = strOp.replace(/_sq_/gi, "'") strOp = strOp.replace(/_bs_/gi, "\\"); strOp = strOp.replace(/_dq_/gi, "\""); } else { strOp = strOp.replace(/'/gi, "_sq_"); strOp = strOp.replace(/\\/gi, "_bs_"); strOp = strOp.replace(/"/gi, "_dq_"); } return strOp; } var yPos = 0; var yPosPref = 0; var xPos = 0; function findPos(obj) { if(document.getElementById('sl_result_map')==null || document.getElementById('sl_result_map').className==null){return;} xPos = 0; yPos = 0; var curleft = curtop = 0; if (obj.offsetParent) { do { curleft += obj.offsetLeft; curtop += obj.offsetTop; } while (obj = obj.offsetParent); yPos = curtop; xPos = curleft; } if(yPos > yPosPref && yPosPref!=0){ yPos=yPos-iY } yPosPref=yPos } var iX = 0; var iY = 0; function KeySuggestion() { if(document.getElementById('sl_result_map') && document.getElementById('sl_result_map').className!=null && document.getElementById('sl_result_map').className!='') { var corAdd = document.getElementById('sl_result_map').className.split("_"); iX = parseFloat(corAdd[0]); iY = parseFloat(corAdd[1]); } this.listItems = ["alblasserdam", "alkmaar", "almere", "amersfoort", "amsterdam", "apeldoorn", "appeltern", "arnhem", "assen", "assendelft", "baarn", "barendrecht", "barneveld", "beek", "bergambacht", "bergen", "bergen op zoom", "berghem", "berkel en rodenrijs", "best", "beuningen", "bilthoven", "bingelrade", "bleiswijk", "borne", "boxtel", "bruchem", "brummen", "brunssum", "bussum", "castricum", "culemborg", "dalen", "dalfsen", "de meern", "delft", "den haag", "den ham", "deventer", "dieren", "doetinchem", "dordrecht", "drachten", "driebergen", "eefde", "eerbeek", "eindhoven", "elsloo", "elsloo (lb)", "emmeloord", "emmen", "enschede", "ermelo", "etten-leur", "franeker", "geleen", "gennep", "goes", "gouda", "groningen", "grootebroek", "grubbenvorst", "haaksbergen", "haarlem", "hardenberg", "havelte", "hazerswoude-dorp", "heesch", "heiloo", "heino", "hellevoetsluis", "helmond", "hengelo", "hengelo (o)", "herkenbosch", "hilversum", "hoevelaken", "hoofddorp", "hoogeveen", "hoogland", "houten", "huissen", "huizen", "joure", "kapellebrug", "katwijk", "kerkrade", "kortenhoef", "krimpen aan de lek", "landsmeer", "lattrop", "leeuwarden", "leiden", "leiderdorp", "leidschendam", "leimuiden", "lelystad", "lemelerveld", "loosdrecht", "maarn", "maarssen", "markelo", "middelstum", "monster", "naaldwijk", "nederweert-eind", "neede", "nibbixwoud", "nieuw-heeten", "nieuwegein", "nieuwerkerk", "nijkerk", "nijmegen", "noordwijkerhout", "norg", "oldenzaal", "oosterend (texel)", "oosterhout", "oud vossemeer", "oude leije", "oudega (gem. smallingerland)", "petten", "pijnacker", "poeldijk", "poortugaal", "purmerend", "raalte", "reusel", "ridderkerk", "rijen", "rijkevoort", "rijnsburg", "rijssen", "roosendaal", "rotterdam", "ruurlo", "s gravendeel", "s gravenzande", "sassenheim", "scharendijke", "schiedam", "schipluiden", "schoonhoven", "siddeburen", "simpelveld", "sint jacobiparochie", "sluis", "soest", "spijkenisse", "steijl", "stein", "tiel", "tilburg", "utrecht", "vaals", "vegelinsoord", "veldhoven", "vianen-cuijk", "vlissingen", "voerendaal", "voorschoten", "voorthuizen", "vught", "waarde", "warmond", "weert", "weesp", "wehe-den-hoorn", "wehl", "wekerom", "wervershoof", "westerhaar", "westkapelle", "westknollendam", "wijchen", "wilhelminadorp", "wolvega", "wormerveer", "zeewolde", "zelhem", "zevenaar", "zevenhuizen", "zoetermeer", "zoeterwoude", "zutphen", "zwaagwesteinde", "zwijndrecht", "zwolle"]; } KeySuggestion.prototype.requestMatch = function (objAutoComplete, bTypeAhead) { var aSuggestions = [];var j=0; var sInputValue = objAutoComplete.textbox.value; if (sInputValue.length > 0){ var sInputValueLC = sInputValue.toLowerCase(); for (var i=0; i < this.listItems.length; i++) { var sKeyLC = this.listItems[i].toLowerCase(); if (sKeyLC.indexOf(sInputValueLC) == 0) { j++; aSuggestions.push(sInputValue + this.listItems[i].substring(sInputValue.length)); } } } objAutoComplete.autosuggest(aSuggestions, bTypeAhead); if(j==1) { } }; var divTarget='' var valid = false; var busy = false; function AutoComplete(oTextbox, KeyProvider) { this.cur = -1; this.layer = null; this.provider = KeyProvider; this.textbox = oTextbox; sCityValue = oTextbox; this.init(); } AutoComplete.prototype.autosuggest = function(aSuggestions, bTypeAhead) { if(aSuggestions.length == 1) { if(bTypeAhead) { valid = true; this.typeAhead(aSuggestions[0]); } this.showSuggestions(aSuggestions); this.layer.style.display = "none"; } else if(aSuggestions.length > 0) { if(bTypeAhead) { valid = true; this.typeAhead(aSuggestions[0]); } this.showSuggestions(aSuggestions); } else { valid = false; this.layer.style.display = "none"; } }; AutoComplete.prototype.createDropDown = function() { var objThis = this; this.layer = document.createElement("div"); this.layer.className = "sl_suggestions"; this.layer.style.display = "none"; this.layer.style.width = this.textbox.offsetWidth; this.layer.onmousedown = this.layer.onmouseup = this.layer.onmouseover = function (objEvent) { objEvent = objEvent || window.event; objTarget = objEvent.target || objEvent.srcElement; if(objEvent.type == "mousedown") { objThis.textbox.value = objTarget.firstChild.nodeValue; valid = true; } else if(objEvent.type == "mouseover") { objThis.highlightSuggestion(objTarget); } else { objThis.textbox.focus(); } }; document.body.appendChild(this.layer); }; AutoComplete.prototype.getLeft = function () { var objNode = this.textbox; var iLeft = 0; this.cur = -1; while(objNode != null && objNode.tagName != "BODY") { iLeft += objNode.offsetLeft; objNode = objNode.offsetParent; } return iLeft; }; AutoComplete.prototype.getTop = function() { var objNode = this.textbox; var iTop = 0; while(objNode != null && objNode.tagName != "BODY") { iTop += objNode.offsetTop; objNode = objNode.offsetParent; } return iTop; }; AutoComplete.prototype.handleKeyDown = function(objEvent) { switch(objEvent.keyCode) { case 38: this.previousSuggestion(); break; case 40: this.nextSuggestion(); break; case 13: valid = true; this.hideSuggestions(); break; } }; AutoComplete.prototype.handleKeyUp = function(objEvent) { var iKeyCode = objEvent.keyCode; if(iKeyCode == 8 || iKeyCode == 46) { this.provider.requestMatch(this, false); } else if(iKeyCode < 32 || (iKeyCode >= 33 && iKeyCode < 46) || (iKeyCode >= 112 && iKeyCode <= 123)) { } else { this.provider.requestMatch(this, true); } }; AutoComplete.prototype.hideSuggestions = function() { this.layer.style.display = "none"; if(valid == true) { if(sCityValue.value != "") { initQuery(); } } }; AutoComplete.prototype.highlightSuggestion = function(objSuggestionNode) { for (var i=0; i < this.layer.childNodes.length; i++) { var objNode = this.layer.childNodes[i]; if(objNode == objSuggestionNode) { objNode.className = "sl_current" } else if(objNode.className == "sl_current") { objNode.className = ""; } } }; AutoComplete.prototype.init = function() { var objThis = this; this.textbox.onkeyup = function(objEvent) { if(!objEvent) { objEvent = window.event; } objThis.handleKeyUp(objEvent); }; this.textbox.onkeydown = function(objEvent) { if(!objEvent) { objEvent = window.event; } objThis.handleKeyDown(objEvent); }; this.textbox.onblur = function() { valid = true; objThis.hideSuggestions(); }; this.createDropDown(); }; AutoComplete.prototype.nextSuggestion = function() { var cSuggestionNodes = this.layer.childNodes; if(cSuggestionNodes.length > 0 && this.cur < cSuggestionNodes.length-1) { var objNode = cSuggestionNodes[++this.cur]; this.highlightSuggestion(objNode); this.textbox.value = objNode.firstChild.nodeValue; } }; AutoComplete.prototype.previousSuggestion = function() { var cSuggestionNodes = this.layer.childNodes; if(cSuggestionNodes.length > 0 && this.cur > 0) { var objNode = cSuggestionNodes[--this.cur]; this.highlightSuggestion(objNode); this.textbox.value = objNode.firstChild.nodeValue; } }; AutoComplete.prototype.selectRange = function(iStart, iLength) { if(this.textbox.createTextRange) { var oRange = this.textbox.createTextRange(); oRange.moveStart("character", iStart); oRange.moveEnd("character", iLength - this.textbox.value.length); oRange.select(); } else if(this.textbox.setSelectionRange) { this.textbox.setSelectionRange(iStart, iLength); } this.textbox.focus(); }; AutoComplete.prototype.showSuggestions = function(aSuggestions) { var objDiv = null; this.layer.innerHTML = ""; for (var i=0; i < aSuggestions.length; i++) { objDiv = document.createElement("div"); objDiv.appendChild(document.createTextNode(aSuggestions[i])); this.layer.appendChild(objDiv); } this.layer.style.left = this.getLeft() + "px"; this.layer.style.top = (this.getTop()+this.textbox.offsetHeight) + "px"; this.layer.style.display = "block"; }; AutoComplete.prototype.typeAhead = function(sSuggestion) { if(this.textbox.createTextRange || this.textbox.setSelectionRange) { var iLen = this.textbox.value.length; this.textbox.value = sSuggestion; this.selectRange(iLen, sSuggestion.length); } }; var sZipValue; var sScopeValue = ''; var sCountryValue; var sRegionValue; function initQuery() { if(!busy) { busy=true; sCityValue.value=document.getElementById('sl_tbx_city').value; sZipValue=document.getElementById('sl_tbx_zip').value; sScopeValue=document.getElementById('sl_opt_scope').value; sCountryValue=document.getElementById('sl_opt_country').value; sRegionValue=document.getElementById('sl_opt_region').value; if((varInit) || (Qcity!=sCityValue.value || Qzip!=sZipValue || Qregion!=sRegionValue || Qcountry!=sCountryValue || Qscope!=sScopeValue)) { varInit = false; Qcity=sCityValue.value; Qzip=sZipValue; Qregion=sRegionValue; Qcountry=sCountryValue; Qscope=sScopeValue; Qcity = replaceQs(Qcity,false) Qzip = replaceQs(Qzip,false) Qcity = replaceQs(Qcity,false) showResults(Qcity,Qzip,Qscope,Qcountry,Qregion,'sl_result_output'); Qcity = replaceQs(Qcity,true) Qzip = replaceQs(Qzip,true) Qcity = replaceQs(Qcity,true) updateSugg(); } else { busy=false; } } } var vCity = 'Woonplaats'; var vAddress = 'Straat + huisnummer'; var vZip = 'Postcode'; var imgFill = ''; function txtOnFocus (obj,val) { if (obj.value == val) { obj.title = ''; obj.value = ''; } } function txtOnBlur (obj,val) { if (obj.value == '') { obj.value = val; obj.style.fontWeight="normal"; } else if (obj.value != val) { obj.title = val; obj.style.fontWeight="bold"; } } var MapId = ""; function ShowMap(strid) { if(document.getElementById('sl_map_'+strid)==null){ return; } if(strid==MapId){ document.getElementById('sl_map_'+strid).innerHTML=''; document.getElementById('sl_map_'+strid).style.display = 'none'; document.getElementById('sl_map_open_'+MapId).style.display = 'block'; MapId = ''; yPosPref=0; } else{ if(MapId!=''){ document.getElementById('sl_map_'+MapId).innerHTML=''; document.getElementById('sl_map_'+MapId).style.display = 'none'; document.getElementById('sl_map_open_'+MapId).style.display = 'block'; } document.getElementById('sl_map_open_'+strid).style.display = 'none'; document.getElementById('sl_map_'+strid).innerHTML='
