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 = ["aachen", "aalen", "achim", "adelsheim", "altdorf", "ansbach", "apolda", "bad bederkesa", "bad essen", "bad harzburg", "bad kreuznach", "bad salzuflen", "bad segeberg", "baesweiler", "balingen", "bargteheide", "bayreruth", "bayreuth", "bedburg", "bentwisch (rostock)", "berlin", "berlin - reinickendorf", "berlin-hohenschönhausen", "berlin-reinickendorf", "berlin-schöneberg", "berlin-spandau", "berlin-tiergarten", "berlin-treptow", "berlin-weisensee", "bielefeld", "bietigheim", "böblingen", "bocholt", "bochum", "bönen", "bonn", "bonn-beuel", "bottrop", "brandenburg", "braunschweig", "bremen", "bremerhaven", "bremervörde", "brühl", "bundenthal", "büren", "bürstadt", "buxtehude", "chemnitz", "coesfeld", "cölbe", "cottbus", "cuxhaven", "dahlwitz-hoppegarten", "darmstadt", "dassel", "datteln", "dessau", "dinklage", "dinslaken", "dornstetten", "dorsten", "dortmund", "dreieich-sprendlingen", "dresden", "duisburg", "dülmen-rorup", "düren", "düsseldorf", "eberswalde", "elsdorf", "elz", "erftstadt lechenich", "erfurt", "erfurt-linderbach", "erkrath", "eschweiler", "essen", "esslingen", "euskirchen-wißkirchen", "falkenhagen", "flensburg", "forstinning", "frankfurt", "frankfurt/oder", "freiburg", "freudenstadt", "freyung", "friedenweiler", "friedrichshafen", "friesoythe", "fulda", "gaggenau", "geilenkirchen", "gelsenkirchen", "gera", "gersdorf", "gersthofen", "gevelsberg", "goldbach", "göppingen", "görwihl", "göttingen", "großefehn", "grünstadt", "gudensberg", "gütersloh", "hagen", "hagenow", "halle", "halle/dölbau", "hallstadt", "hamburg", "hamburg-harburg", "hamburg-hummelsbüttel", "hamburg-wandsbek", "hameln", "hamm", "hanau", "hannover", "haren", "heidelberg", "heilbronn", "heinsberg", "heinsberg-unterbruch", "heldrungen", "hemmoor", "hildesheim", "hof-moschendorf", "holm", "homburg", "hoya / weser", "hürth", "ibbenbüren", "idar oberstein", "idar-oberstein", "irxleben", "isernhagen", "jena", "jünkerath-glaad", "kaiserslautern", "kall-rinnen", "kaltenkirchen", "karlsruhe", "karstädt", "kassel", "kavelstorf", "kellinghusen", "kempten", "kiel", "kirchberg", "kirchdorf", "kirchheim", "kirchweidach", "kirrweiler", "kleve", "koblenz", "köln", "köln marsdorf", "konstanz", "körle-lobenhausen", "kornwestheim", "krefeld", "laatzen", "landau a. d. isar", "landshut", "langenau", "langenhagen", "leinfelden", "leipzig", "leverkusen", "lichtenstein", "lippstadt", "lohne", "longuich", "lörrach", "loxstedt", "lübeck", "luckau", "luckenwalde", "ludwigsburg", "ludwigshafen", "ludwigslust/techentin", "magdeburg", "mainz-kastel", "malente", "mannheim", "marktredwitz", "marpingen", "maschen", "meckenheim", "menden", "merzig", "meschede", "meschede-enste", "mittenwald", "mittenwalde", "mönchengladbach", "münchen", "münster", "naumburg", "nettersheim", "neubrandenburg", "neuhaus", "neumarkt", "neumünster", "neuruppin", "neuss", "neuwied", "nieder-olm", "niederkrüchten", "niederzier", "nisterau ot bach", "nordhausen", "nordhorn", "nürnberg", "oberhausen", "oestrich-winkel", "offenburg", "oldenburg", "osterholz-scharmbeck (stotel)", "ottendorf-okrilla", "ottersweier", "paderborn", "pampow (schwerin)", "parsberg", "petersaurach", "pfarrkirchen", "pforzheim", "plattling-pankofen", "plauen", "pocking", "potsdam", "putzbrunn", "queis", "radebeul", "ramsdorf", "ransbach-baumbach", "rastatt", "rastede", "ravensburg", "recklinghausen", "regen", "regensburg", "reichshof-wildbergerhütte", "reinsdorf", "rellingen", "remscheid", "rendsburg", "reutlingen", "rheinberg", "rheine", "rielasingen-worblingen", "rimsting", "ritterhude", "rollwitz", "rosenheim", "rostock", "rotenburg/wümme", "rott", "saalfeld", "saarbrücken", "schleiden gemünd", "schmelz", "schwanewede", "schwedt", "schweinfurt", "schwerin", "selfkant tüddern", "selfkant wehr", "siegburg", "siegsdorf", "simmerath", "singen", "sittensen", "soest", "solingen", "speyer", "stade", "stelle", "stralsund", "stuttgart", "stuttgart-zuffenhausen", "sulzemoos", "tettnang", "tinnum/sylt", "traunstein", "trier", "trittau", "tübingen", "tuttlingen", "ulm", "unna", "velden", "verden", "verden/aller", "viersen", "völkingen", "völklingen-lauterbach", "vs-villingen", "wachau", "wahlstedt", "waldbröl", "waldkirchen", "waltrop", "warngau", "wegberg", "wehretal-reichensachsen", "weiden", "weilerswist müggenhausen", "weingarten", "weinheim/bergstr.", "weinsberg", "weinstadt-endersbach", "weißenburg", "werl", "wesseling", "wetzlar-naunheim", "wilhelmshaven", "willich", "windeck-gerressen", "wismar", "witten", "wittenberg", "wittenberge", "wittstock", "worms", "wuppertal", "würzburg", "zehdenick", "zeven", "zimmern b. rottweil", "zorbau", "zweibrücken"]; } 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 = 'Stadt'; var vAddress = 'Strasse und Hausnummer'; var vZip = 'Postleitzahl'; 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='
