/* (c) 2011 allesklar.com */
ak.namespace("ak.utils");ak.utils.Paging=Class.create({initialize:function(total,hitsPerPage){this.setTotalHits(total||0);this.setHitsPerPage(hitsPerPage||10);this.setCurrentPage(1);},setTotalHits:function(totalHits){this.totalHits=totalHits;var page=(this.currentPage<=this.getTotalPages())?this.currentPage:1;this.setCurrentPage(page);},getTotalHits:function(){return this.totalHits;},setHitsPerPage:function(hitsPerPage){this.hitsPerPage=hitsPerPage;var page=(this.currentPage<=this.getTotalPages())?this.currentPage:1;this.setCurrentPage(page);},getHitsPerPage:function(){return this.hitsPerPage;},getTotalPages:function(){if(this.totalHits){var r=Math.floor((this.totalHits/this.hitsPerPage));return(this.totalHits%this.hitsPerPage)?r+1:r;}return 0;},setCurrentPage:function(currentPage){if(currentPage>0&&currentPage<=this.getTotalPages()){this.currentPage=currentPage;}},getCurrentPage:function(){return this.currentPage;},getFirst:function(){return(this.currentPage-1)*this.hitsPerPage;},getLast:function(){return Math.min((this.currentPage)*this.hitsPerPage-1,this.totalHits-1);},getPageByHit:function(hit){if(hit<0||hit>=this.totalHits){return;}var r=Math.floor((hit+1)/this.hitsPerPage);return((hit+1)%this.hitsPerPage)?r+1:r;},createPageLink:function(pagediv,index,callback,label){label=label||index;var pagelink=new Element("a",{href:"javascript:void(0);"});pagediv.insert(pagelink);Event.observe(pagelink,"click",function(){callback(index);});return pagelink.update(label);},createElement:function(container,type,callback){type=type||"bottom";callback=callback||Prototype.emptyFunction;var pagediv=new Element("div",{"class":"paging"});if(type==="bottom"){pagediv.addClassName("paging-bottom");}container.insert(pagediv);var currentPage=this.getCurrentPage();var totalPages=this.getTotalPages();if(currentPage>1){this.createPageLink(pagediv,1,callback,new Element("img",{src:"./img-maps/paging/first.gif",alt:"zum Anfang",title:"zum Anfang"})).addClassName("no-padding");this.createPageLink(pagediv,currentPage-1,callback,new Element("img",{src:"./img-maps/paging/back.gif",alt:"zur&uuml;ck",title:"zur&uuml;ck"}));this.createPageLink(pagediv,currentPage-1,callback,"zur&uuml;ck").addClassName("no-padding");}var start=Math.max(currentPage-2,1);var end;if(start+4>totalPages){var end=totalPages;start=Math.max(totalPages-4,1);}else{var end=start+4;}var pagelink;if(type=="bottom"){for(var i=start;i<=end;i++){if(i==currentPage){pagediv.insert(new Element("b").update(i));}else{this.createPageLink(pagediv,i,callback);}if(i<end){pagediv.insert(new Element("img",{src:"./img-maps/paging/sep.gif",alt:"|"}));}}}else{pagediv.insert(new Element("img",{src:"./img-maps/paging/sep-left.gif",alt:" |"}));pagediv.insert(new Element("b").update((this.getFirst()+1)+" - "+(this.getLast()+1)));pagediv.insert(new Element("img",{src:"./img-maps/paging/sep-right.gif",alt:"| "}));}if(currentPage<totalPages){this.createPageLink(pagediv,currentPage+1,callback,"weiter").addClassName("no-padding");this.createPageLink(pagediv,currentPage+1,callback,new Element("img",{src:"./img-maps/paging/next.gif",alt:"weiter",title:"weiter"}));this.createPageLink(pagediv,totalPages,callback,new Element("img",{src:"./img-maps/paging/last.gif",alt:"zum Ende",title:"zum Ende"})).addClassName("no-padding");}return pagediv;}});ak.namespace("ak.maps2009");ak.maps2009.ServiceManager=Class.create({initialize:function(){var services={};var components={};var self=this;this.registerService=function(name,service){services[name]=service;self["get"+name+"Service"]=function(){return service;};};this.registerComponent=function(name,component){components[name]=component;self["get"+name+"Component"]=function(){return component;};};this.getService=function(name){return services[name]||null;};this.getComponent=function(name){return components[name]||null;};},configure:function(config){config=config||{};var manager=this;if(config.services){config.services.each(function(service){manager.registerService(service.name,service.service);});}if(config.components){config.components.each(function(component){manager.registerComponent(component.name,component.component);});}}});ak.maps2009.ServiceManager.getInstance=function(config){if(!ak.maps2009.ServiceManager.instance){ak.maps2009.ServiceManager.instance=new ak.maps2009.ServiceManager();}if(config){ak.maps2009.ServiceManager.instance.configure(config);}return ak.maps2009.ServiceManager.instance;};ak.namespace("ak.maps2009");ak.maps2009.ServiceFinder={getService:function(serviceName){var serviceManager=ak.maps2009.ServiceManager.getInstance();return serviceManager?serviceManager.getService(serviceName):null;},getServiceManager:function(){return ak.maps2009.ServiceManager.getInstance();},getComponent:function(componentName){var serviceManager=ak.maps2009.ServiceManager.getInstance();return serviceManager?serviceManager.getComponent(componentName):null;},injectServices:function(serviceNames){var self=this;serviceNames.each(function(serviceName){var functionName="get"+serviceName+"Service";self[functionName]=function(){return self.getService(serviceName);};});},injectComponents:function(componentNames){var self=this;componentNames.each(function(componentName){var functionName="get"+componentName+"Component";self[functionName]=function(){return self.getComponent(componentName);};});}};ak.namespace("ak.maps2009");ak.maps2009.Logger=Object.extend(Object.clone(ak.maps2009.ServiceFinder),{setLoggerId:function(loggerId){this.loggerId=loggerId;},getLoggerId:function(){return this.loggerId;},debug:function(message){var loggerId=this.loggerId||"unknown";this.getService("Logging").debug(loggerId,message);},info:function(message){var loggerId=this.loggerId||"unknown";this.getService("Logging").info(loggerId,message);},error:function(message,exception){var loggerId=this.loggerId||"unknown";this.getService("Logging").error(loggerId,message,exception);},trace:function(message){var loggerId=this.loggerId||"unknown";this.getService("Logging").trace(loggerId,message);},isDebugEnabled:function(){var logger=this.getService("Logging");return logger.getLevel()==logger.DEBUG_LEVEL;},checkForMandatoryParameters:function(config,mandatory){for(var i=0;i<mandatory.length;i++){if(!config[mandatory[i]]){this.error("Missing mandatory config parameter '"+mandatory[i]+"'.");return false;}}return true;}});ak.namespace("ak.utils");ak.utils.Paging=Class.create({initialize:function(total,hitsPerPage){this.setTotalHits(total||0);this.setHitsPerPage(hitsPerPage||10);this.setCurrentPage(1);},setTotalHits:function(totalHits){this.totalHits=totalHits;var page=(this.currentPage<=this.getTotalPages())?this.currentPage:1;this.setCurrentPage(page);},getTotalHits:function(){return this.totalHits;},setHitsPerPage:function(hitsPerPage){this.hitsPerPage=hitsPerPage;var page=(this.currentPage<=this.getTotalPages())?this.currentPage:1;this.setCurrentPage(page);},getHitsPerPage:function(){return this.hitsPerPage;},getTotalPages:function(){if(this.totalHits){var r=Math.floor((this.totalHits/this.hitsPerPage));return(this.totalHits%this.hitsPerPage)?r+1:r;}return 0;},setCurrentPage:function(currentPage){if(currentPage>0&&currentPage<=this.getTotalPages()){this.currentPage=currentPage;}},getCurrentPage:function(){return this.currentPage;},getFirst:function(){return(this.currentPage-1)*this.hitsPerPage;},getLast:function(){return Math.min((this.currentPage)*this.hitsPerPage-1,this.totalHits-1);},getPageByHit:function(hit){if(hit<0||hit>=this.totalHits){return;}var r=Math.floor((hit+1)/this.hitsPerPage);return((hit+1)%this.hitsPerPage)?r+1:r;},createPageLink:function(pagediv,index,callback,label){label=label||index;var pagelink=new Element("a",{href:"javascript:void(0);"});pagediv.insert(pagelink);Event.observe(pagelink,"click",function(){callback(index);});return pagelink.update(label);},createElement:function(container,type,callback){type=type||"bottom";callback=callback||Prototype.emptyFunction;var pagediv=new Element("div",{"class":"paging"});if(type==="bottom"){pagediv.addClassName("paging-bottom");}container.insert(pagediv);var currentPage=this.getCurrentPage();var totalPages=this.getTotalPages();if(currentPage>1){this.createPageLink(pagediv,1,callback,new Element("img",{src:"./img-maps/paging/first.gif",alt:"zum Anfang",title:"zum Anfang"})).addClassName("no-padding");this.createPageLink(pagediv,currentPage-1,callback,new Element("img",{src:"./img-maps/paging/back.gif",alt:"zur&uuml;ck",title:"zur&uuml;ck"}));this.createPageLink(pagediv,currentPage-1,callback,"zur&uuml;ck").addClassName("no-padding");}var start=Math.max(currentPage-2,1);var end;if(start+4>totalPages){var end=totalPages;start=Math.max(totalPages-4,1);}else{var end=start+4;}var pagelink;if(type=="bottom"){for(var i=start;i<=end;i++){if(i==currentPage){pagediv.insert(new Element("b").update(i));}else{this.createPageLink(pagediv,i,callback);}if(i<end){pagediv.insert(new Element("img",{src:"./img-maps/paging/sep.gif",alt:"|"}));}}}else{pagediv.insert(new Element("img",{src:"./img-maps/paging/sep-left.gif",alt:" |"}));pagediv.insert(new Element("b").update((this.getFirst()+1)+" - "+(this.getLast()+1)));pagediv.insert(new Element("img",{src:"./img-maps/paging/sep-right.gif",alt:"| "}));}if(currentPage<totalPages){this.createPageLink(pagediv,currentPage+1,callback,"weiter").addClassName("no-padding");this.createPageLink(pagediv,currentPage+1,callback,new Element("img",{src:"./img-maps/paging/next.gif",alt:"weiter",title:"weiter"}));this.createPageLink(pagediv,totalPages,callback,new Element("img",{src:"./img-maps/paging/last.gif",alt:"zum Ende",title:"zum Ende"})).addClassName("no-padding");}return pagediv;}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.BasePoi=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.type=options.type;this.className="BasePoi";this.data=options.data||{};if(options.index!=null){this.setIndex(options.index);}this.clusterPoi=options.clusterPoi;this.shape=null;this.backgroundColor="#ffffff";this.highlightBgColor="#f0f0f0";this.infoBox=null;this.setIcon();this.setHighlightIcon();this.setLoggerId("PoiUtils");this.zIndex=200;},getZIndex:function(){return this.zIndex;},getType:function(){return this.type;},setType:function(type){this.type=type;},getLayer:function(){return this.layer;},setLayer:function(layer){this.layer=layer;},getTrackingName:function(){return this.getType();},getClassName:function(){return this.className;},getIndex:function(){return this.index;},setIndex:function(index){this.index=index;},getDescription:function(){this.data.description;},getTitle:function(){return this.data.title.toString().escapeHTML();},getClusterLinkContent:function(){return this.getTitle();},getClusterBoxIcon:function(){return null;},isClustered:function(){return Boolean(this.clusterPoi);},getClusterPoi:function(){return this.clusterPoi;},isClusterPoi:function(){return false;},showInfobox:function(){return true;},changeTab:function(index){this.activeTab.li.removeClassName("active");this.activeTab.content.setStyle({display:"none"});this.activeTab=this.tabs[index];this.activeTab.li.addClassName("active");this.activeTab.content.setStyle({display:"block"});},addZoomInLink:function(container){if(this.isClustered()){if(this.getClusterPoi().resolveable){var link=new Element("a",{href:"javascript:void(0);"}).addClassName("ak-zoom-in-link").update("Position in Karte anzeigen");Event.observe(link,"click",function(){this.getService("Mediator").detailPoiLoupeClicked(this);}.bind(this));container.insert(new Element("div").update(link));}var clickCallback=function(index){var poi=this.getClusterPoi().items[index-1];this.getService("Mediator").clusterPoiItemClicked(poi);}.bind(this);this.getClusterPoi().paging.setCurrentPage(this.index+1);this.getClusterPoi().paging.createElement(container,"bottom",clickCallback);}},createInfoBoxContent:function(){this.debug("createInfoBoxContent");this.mainEntries=[];tabs=this.getTabs();var infoBoxContent=new Element("div");infoBoxContent.addClassName("baseInfoBoxContent");if(tabs.length==1){infoBoxContent.insert(tabs[0].content);this.mainEntries.push(tabs[0].content);}else{this.tabs=tabs;var tabPanel=new Element("div",{"class":"infoBoxTabsDiv"});var tabList=new Element("ul",{"class":"infoBoxTabs"});tabPanel.insert(tabList);infoBoxContent.insert(tabPanel);tabs.each(function(tab,index){this.mainEntries.push(tab.content);var link=new Element("a",{href:"javascript:void(0);"}).update(tab.name);Event.observe(link,"click",this.changeTab.bind(this,index));tab.li=new Element("li").update(link);if(index==0){this.activeTab=tab;tab.li.addClassName("active");tab.content.setStyle({display:"block"});}else{tab.content.setStyle({display:"none"});}tabList.insert(tab.li);tabPanel.insert(tab.content);}.bind(this));tabs[1].li.addClassName("right");}return infoBoxContent;},getTabs:function(){return[{name:"Adresse",content:this.createInfoBoxMainEntry()}];},createInfoBoxMainEntry:function(){return new Element("div",{"class":"baseInfoBoxMainEntry"});},createInfoBoxHeader:function(){this.debug("createInfoBoxHeader");var infoBoxHeader=new Element("div",{"class":"baseInfoBoxHeader"});var closeImg=new Element("img",{"class":"closePoiDetail",src:ak.maps2009.config.imgServerUrl+"/poi/infobox/close.gif",alt:"schließen"});var onClose=function(){this.getService("Mediator").poiCloseLinkClicked(this);}.bind(this);Event.observe(closeImg,"click",onClose);infoBoxHeader.insert(closeImg);var content=this.createInfoBoxHeaderContent();if(content){infoBoxHeader.insert(content);}return infoBoxHeader;},createInfoBoxHeaderContent:function(){return;},createInfoBox:function(){this.debug("createInfoBox");this.infoBox=new Element("div",{"class":"baseInfoBox"});var infoBoxHeader=this.createInfoBoxHeader();this.infoBox.insert(infoBoxHeader);var infoBoxContent=this.createInfoBoxContent();this.infoBox.insert(infoBoxContent);return this.infoBox;},setIcon:function(){this.icon="";},getIcon:function(){return this.icon;},setHighlightIcon:function(){this.highlightIcon=this.icon;},getHighlightIcon:function(){return this.highlightIcon;},getInfoBox:function(container){var creating=false;if(this.infoBox===null){creating=true;this.createInfoBox();}if(typeof container!=="undefined"&&container.contains(this.infoBox)===false){container.insert(this.infoBox);}if(creating){var contentHeight=this.mainEntries[0].getHeight()+"px";this.mainEntries.each(function(e){e.setStyle({height:contentHeight});});}return this.infoBox;},getData:function(){return this.data;},getShape:function(){return this.shape;},setShape:function(shape){this.shape=shape;},getAddress:function(){return"";},createRouteLinks:function(){var routeLinks=new Element("div");var address=this.getAddress()||this.getTitle();var routeStartDiv=new Element("div",{"class":"infoBoxRouteDiv"});var startIconDiv=new Element("div",{"class":"infoBoxRouteLabel"});startIconDiv.insert(new Element("img",{src:ak.maps2009.config.imgServerUrl+"/routeList/start.gif"}));routeStartDiv.insert(startIconDiv);var routeStartLink=(new Element("a",{href:"javascript:void(0)"})).update("als Startadresse in Routenplaner");routeStartDiv.insert(routeStartLink);Element.observe(routeStartLink,"click",function(){ak.maps2009.ServiceManager.getInstance().getService("Mediator").setRouteSearchInput({start:address,startlat:this.data.latitude,startlng:this.data.longitude});}.bind(this));routeLinks.insert(routeStartDiv);var routeEndDiv=new Element("div",{"class":"infoBoxRouteDiv"});var endIconDiv=new Element("div",{"class":"infoBoxRouteLabel"});endIconDiv.insert(new Element("img",{src:ak.maps2009.config.imgServerUrl+"/routeList/ziel.gif"}));routeEndDiv.insert(endIconDiv);var routeEndLink=(new Element("a",{href:"javascript:void(0)"})).update("als Zieladresse in Routenplaner");routeEndDiv.insert(routeEndLink);Element.observe(routeEndLink,"click",function(){ak.maps2009.ServiceManager.getInstance().getService("Mediator").setRouteSearchInput({end:address,endlat:this.data.latitude,endlng:this.data.longitude});}.bind(this));routeLinks.insert(routeEndDiv);return routeLinks;}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.AddressPoi=Class.create(ak.maps2009.utils.poi.BasePoi,{initialize:function($super,options){$super(options);this.className="AddressPoi";this.zIndex=280;},getAddress:function(){return this.data.name;},getTrackingName:function(){return"Adresse";},createInfoBoxMainEntry:function($super){var infoBoxMainEntry=$super();infoBoxMainEntry.insert(this.data.name);infoBoxMainEntry.appendChild(this.createRouteLinks());return infoBoxMainEntry;},createInfoBoxHeaderContent:function(){return"Adresse";},setIcon:function(){this.icon=ak.maps2009.config.imgServerUrl+"poi/address/suchpunkt.gif";}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.TownInfoPoi=Class.create(ak.maps2009.utils.poi.BasePoi,{initialize:function($super,options){$super(options);this.className="TownInfoPoi";this.zIndex=210;},getTrackingName:function(){return"Stadtinfo";},createInfoBoxMainEntry:function($super){var infoBoxMainEntry=$super();var townInfoTitle=new Element("span",{"class":"infoBoxMainEntryTitle"});townInfoTitle.insert(this.data.title);townInfoTitle.insert(new Element("br"));infoBoxMainEntry.insert(townInfoTitle);infoBoxMainEntry.insert("Einwohner: "+this.data.population);infoBoxMainEntry.insert(new Element("br"));infoBoxMainEntry.insert("Fläche: "+this.data.area);infoBoxMainEntry.insert(new Element("br"));infoBoxMainEntry.insert("Vorwahl: "+this.data.prefix);infoBoxMainEntry.insert(new Element("br"));infoBoxMainEntry.insert("Kennzeichen: "+this.data.licenceTag);infoBoxMainEntry.insert(new Element("br"));infoBoxMainEntry.insert("Höhe ü. NN: "+this.data.altitude);infoBoxMainEntry.insert(new Element("br"));return infoBoxMainEntry;},createInfoBoxHeaderContent:function(){return"Stadtinfos";},setIcon:function(){this.icon=ak.maps2009.config.imgServerUrl+"poi/townInfo/stadtinfo.gif";}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.CategoryPoi=Class.create(ak.maps2009.utils.poi.BasePoi,{initialize:function($super,options){$super(options);this.className="CategoryPoi";this.zIndex=240;this.detailsLoaded=false;},createInfoBox:function($super){if(!this.detailsLoaded){this.getService("PoiSearch").find({asynchronous:false,caller:"categoryPoi",parameters:{poi:this.data.id,output:"json",context:"poi-service"},onSuccess:function(t){if(typeof t==="object"&&typeof t.items==="object"&&typeof(t.items[0])==="object"){this.data=t.items[0];this.detailsLoaded=true;this.title=this.data.infoboxTitle?this.data.infoboxTitle.toString().escapeHTML():"";}else{this.info("Loading details failed!");}}.bind(this),onFailure:function(){this.info("Loading details failed!");}.bind(this)});}return $super();},getClusterBoxIcon:function(){return(this.data.clusterBoxIcon)?"http://"+ak.maps2009.config.mt2002Host+"/images/image.php?origin=poi&id="+encodeURIComponent(this.data.clusterBoxIcon):"";},getTrackingName:function(){return"POI-"+this.title;},getTitleElement:function(){var element;if(this.data.titleUrl){element=new Element("a",{href:this.data.titleUrl,target:"_blank"});}else{element=new Element("strong");}element.addClassName("infoBoxMainEntryTitle");element.setStyle("float:none;");if(this.data.title){element.update(this.data.title.toString().escapeHTML());}return element;},getTabs:function(){if(this.show2ndTab()){var tabs=[{name:"Adresse",content:this.getFirstTabContent()}];if(this.data.description){tabs.push({name:"Beschreibung",content:this.get2ndTabContent()});}return tabs;}return[{name:"Adresse",content:this.getFirstTabContent("description")}];},get2ndTabContent:function(){var infoBoxMainEntry=this.createInfoBoxMainEntry();infoBoxMainEntry.insert(this.getTitleElement());infoBoxMainEntry.insert(new Element("br"));if(this.data.description){var description=this.data.description.toString().escapeHTML().replace(/\n\n/g,"<br>");if(description.length>500){description=description.substring(0,497)+"...";}infoBoxMainEntry.insert(description);}if(this.data.sourceText||this.data.sourceLink||this.data.sourceIcon){var source=new Element("div");if(this.data.sourceIcon){source.insert(new Element("img",{alt:"Quelle",src:"http://"+ak.maps2009.config.mt2002Host+"/images/image.php?origin=poi&id="+encodeURIComponent(this.data.sourceIcon),style:"padding-right:7px;"}));}if(this.data.sourceLink){source.insert(new Element("a",{href:this.data.sourceLink,target:"_blank"}).update((this.data.sourceText||this.data.sourceLink).toString().escapeHTML()));}else{if(this.data.sourceText){source.insert(this.data.sourceText.toString().escapeHTML());}}infoBoxMainEntry.insert(source);}return infoBoxMainEntry;},getFirstTabContent:function(mode){var infoBoxMainEntry;if(mode=="description"){infoBoxMainEntry=this.get2ndTabContent();}else{infoBoxMainEntry=this.createInfoBoxMainEntry();if(this.data.picture){infoBoxMainEntry.insert(new Element("img",{alt:"Kein Bild",src:this.data.picture,width:"48",height:"64"}).addClassName("ak-infobox-img"));}infoBoxMainEntry.insert(this.getTitleElement());infoBoxMainEntry.insert(new Element("br"));var address=this.getAddress();if(address){infoBoxMainEntry.insert(address);infoBoxMainEntry.insert(new Element("br"));}if(this.data.phone){infoBoxMainEntry.insert("Tel.: "+this.data.phone.toString().escapeHTML());infoBoxMainEntry.insert(new Element("br"));}if(this.data.eMail){infoBoxMainEntry.insert("E-Mail: ");infoBoxMainEntry.insert(new Element("a",{href:"mailto:"+this.data.eMail,style:"float:none;"}).update((this.data.eMailText||this.data.eMail).toString().escapeHTML()));}if(this.data.moreUrl1){var textUrls=new Element("div");var link1=new Element("a").update((this.data.moreUrlText1||this.data.moreUrl1).toString().escapeHTML());if(typeof this.data.popupUrl1==="string"&&this.data.popupUrl1.match(/^[a-zA-Z\/\-]+$/)){var target="mt_mapdetail";var url="http://"+ak.maps2009.config.mt2002Host+"/deutschland/stadtplan/poi/"+this.data.popupUrl1+"?id="+encodeURIComponent(this.data.id);link1.href='javascript:void(window.open("'+url+'","'+target+'","width=670,height=900,location=0"));';}else{link1.href=this.data.moreUrl1;link1.target="_blank";}textUrls.insert(link1);if(this.data.moreUrl2){link1.setStyle("padding-right:8px;");var link2=new Element("a",{href:this.data.moreUrl2,target:"_blank"}).update((this.data.moreUrlText2||this.data.moreUrl2).toString().escapeHTML());textUrls.insert(link2);}infoBoxMainEntry.insert(textUrls);}if(this.data.openingHours||this.data.rating){var info=new Element("div");if(this.data.openingHours){info.insert(new Element("strong").update("Öffnungszeiten: "));info.insert(this.data.openingHours.toString().escapeHTML());info.insert(new Element("br"));}if(this.data.rating){info.insert(new Element("strong").update("Bewertung: "));info.insert(this.data.rating.toString().escapeHTML());}infoBoxMainEntry.insert(info);}if(this.data.moreUrl3){var buttonUrls=new Element("div");var link3=new Element("a",{href:this.data.moreUrl3,target:"_blank","class":"ak-infobox-button",style:"padding-right:9px"}).update((this.data.moreUrlText3||this.data.moreUrl3).toString().escapeHTML());buttonUrls.insert(link3);if(this.data.moreUrl4){var link4=new Element("a",{href:this.data.moreUrl4,target:"_blank","class":"ak-infobox-button"}).update((this.data.moreUrlText4||this.data.moreUrl4).toString().escapeHTML());buttonUrls.insert(link4);}infoBoxMainEntry.insert(buttonUrls);}}this.addZoomInLink(infoBoxMainEntry);infoBoxMainEntry.insert(this.createRouteLinks());if(this.data.customDetails){this.addCustomDetails(infoBoxMainEntry);}return infoBoxMainEntry;},addCustomDetails:function(infoBoxMainEntry){var detailsContainer=new Element("div");infoBoxMainEntry.insert(detailsContainer);var url=this.data.customDetails+encodeURIComponent(this.data.partnerId);this.getService("Ajax").update(detailsContainer,url,{method:"get"});},show2ndTab:function(){var d=this.getData();return(d.street||d.zip||d.city||d.phone||d.eMail||d.moreUrl1||d.openingHours||d.rating||d.moreUrl3);},getAddress:function(){var address=this.data.street||"";if(this.data.zip||this.data.city){if(address){address+=",";}if(this.data.zip){address+=" "+this.data.zip;}if(this.data.city){address+=" "+this.data.city;}}return address.toString().escapeHTML();},createInfoBoxHeaderContent:function(){return this.title;},showInfobox:function(){return(this.data.infoBoxMode>0);},getTooltip:function(){return(this.data.infoBoxMode%2==0)?this.getTitle():"";},setIcon:function(){var src="http://"+ak.maps2009.config.mt2002Host+"/images/image.php?origin=poi&id="+encodeURIComponent(this.data.mapIcon);this.icon='<img src="'+src+'" alt="" title="'+this.getTooltip()+'">';}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.CompanyPoi=Class.create(ak.maps2009.utils.poi.BasePoi,{initialize:function($super,options){$super(options);this.className="CompanyPoi";this.zIndex=230;if(options.position){this.setPosition(options.position);}this.title="";},getTrackingName:function(){return"Branchenbuch";},createInfoBoxConfirmReviseEntry:function(){var infoBoxConfirmEntryLink=new Element("div");var confirmEntryLink="https://listing.allesklar.de/branchenbuch/companyVerify.php?companyID="+this.data.companyId;infoBoxConfirmEntryLink.appendChild(new Element("a",{href:confirmEntryLink,target:"_blank"})).update("Eintrag best&auml;tigen");var reviseEntryLink="https://listing.allesklar.de/branchenbuch/companyChange.php?companyID="+this.data.companyId;infoBoxConfirmEntryLink.appendChild(new Element("a",{"class":"reviseEntryLink",href:reviseEntryLink,target:"_blank"})).update("Eintrag &auml;ndern");return infoBoxConfirmEntryLink;},getTitleElement:function(){return new Element("a",{href:this.getUrl(),target:"_blank"});},createInfoBoxMainEntry:function($super){var infoBoxMainEntry=$super();this.insertAddressData(infoBoxMainEntry);infoBoxMainEntry.appendChild(this.createRouteLinks());return infoBoxMainEntry;},insertAddressData:function(container){var companyInfoTitle=this.getTitleElement();companyInfoTitle.addClassName("infoBoxMainEntryTitle");companyInfoTitle.insert(this.data.title);container.insert(companyInfoTitle);container.insert(new Element("br"));this.data.street=this.data.street.replace(/<br>/," ");var address=(this.data.street)?this.data.street+", ":"";if(this.data.zip){address+=this.data.zip+" ";}address+=this.data.city;container.insert(address);container.insert(new Element("br"));if(this.data.phone){container.insert("Tel.: "+this.data.phone);container.insert(new Element("br"));}if(this.data.changeAllowed){container.appendChild(this.createInfoBoxConfirmReviseEntry());}this.addBookingUrls(container);},addBookingUrls:function(container){if(this.data.bookingUrl||this.data.livebookingUrl){var buttonUrls=new Element("div",{"class":"baseInfoMainEntry"});if(this.data.bookingUrl){var link=new Element("a",{href:this.data.bookingUrl,target:"_blank","class":"ak-infobox-button",style:"padding-right:9px"}).update("Zimmer buchen");buttonUrls.insert(link);}if(this.data.livebookingUrl){var link=new Element("a",{href:this.data.livebookingUrl,target:"_blank","class":"ak-infobox-button"}).update("Tisch reservieren");buttonUrls.insert(link);}buttonUrls.insert(new Element("br"));container.insert(buttonUrls);}},getHitListContent:function(){var listContent=new Element("div",{"class":"adressWrapper"});listContent.insert((new Element("b")).update(this.data.title));listContent.insert(new Element("br"));listContent.insert(this.data.street+", "+this.data.city);if(this.data.phone){listContent.insert((new Element("div")).update("Tel: "+this.data.phone));}if(false&&this.data.displayUrl){var urlWrapper=new Element("div",{"class":"urlWrapper"});listContent.insert(urlWrapper);urlWrapper.insert(new Element("a",{href:this.data.displayUrl}).update(this.data.displayUrl));}return listContent;},getAddress:function(){return this.data.street+", "+this.data.city;},getUrl:function(){return"http://branchenbuch.meinestadt.de/"+this.getData().kgsUrlName+"/company/"+this.getData().companyId;},createInfoBoxHeaderContent:function(){return"Suchergebnis";},getPosition:function(){return this.position;},setPosition:function(pos){this.position=pos;this.updateIcons();},isPremium:function(){return false;},updateIcons:function(){var pos=Math.min(this.position,20);this.icon=ak.maps2009.config.imgServerUrl+"poi/company/small/"+pos+".gif";this.highlightIcon=ak.maps2009.config.imgServerUrl+"poi/company/highlight/"+pos+".gif";}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.BusinessPoi=Class.create(ak.maps2009.utils.poi.CompanyPoi,{initialize:function($super,options){$super(options);this.className="BusinessPoi";this.zIndex=250;},getUrl:function(){return"http://branchenbuch.meinestadt.de/"+this.getData().cityUrlName+"/firma/"+this.getData().companyUrlName;},createInfoBoxLink:function(){var infoBoxLink=new Element("div");var infoBoxLinkElement=new Element("a",{href:this.data.link,target:"_blank"}).update("Website besuchen");Event.observe(infoBoxLinkElement,"click",function(){this.getService("Tracking").triggerLinkTracking({result:this.getTrackingName(),detail:"Website-Link-Klick"});}.bind(this));infoBoxLink.appendChild(infoBoxLinkElement);return infoBoxLink;},createAddressTab:function(){var infoBoxMainEntry=new Element("div",{"class":"baseInfoBoxMainEntry"});this.insertAddressData(infoBoxMainEntry);infoBoxMainEntry.appendChild(this.createInfoBoxLink());infoBoxMainEntry.appendChild(this.createRouteLinks());return infoBoxMainEntry;},createDetailTab:function(){var infoBoxDetailTab=new Element("div",{"class":"infoBoxDetailTab"});infoBoxDetailTab.insert(this.data.shortDescription);return infoBoxDetailTab;},getTabs:function(){return[{name:"Adresse",content:this.createAddressTab()},{name:"Details",content:this.createDetailTab()}];},updateIcons:function(){var pos=Math.min(this.position,20);this.icon=ak.maps2009.config.imgServerUrl+"poi/premium/small/"+pos+".gif";this.highlightIcon=ak.maps2009.config.imgServerUrl+"poi/premium/highlight/"+pos+".gif";}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.PremiumPoi=Class.create(ak.maps2009.utils.poi.BusinessPoi,{initialize:function($super,options){$super(options);this.className="PremiumPoi";this.zIndex=260;},isPremium:function(){return true;}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.MapAdPoi=Class.create(ak.maps2009.utils.poi.PremiumPoi,{titleMap:{1:"Hanse Merkur Filialen",4:"Accor Hotels",5:"Volksfürsorgefilialen"},initialize:function($super,options){$super(options);this.className="MapAdPoi";this.zIndex=270;this.title=this.titleMap[this.data.categoryId];},setIcon:function(){this.icon=ak.maps2009.config.imgServerUrl+"poi/mapAd/"+this.data.logo;},getTrackingName:function(){return"Empfehlungen-"+this.title;},getUrl:function(){return;},getTitleElement:function(){return new Element("span");},createInfoBoxHeaderContent:function(){return this.title;}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.FotoPoi=Class.create(ak.maps2009.utils.poi.BasePoi,{initialize:function($super,options){$super(options);this.zIndex=220;this.className="FotoPoi";if(options.position){this.setPosition(options.position);}},createInfoBoxMainEntry:function($super){var data=this.getData();var infoBoxMainEntry=$super();var link=new Element("a",{href:"http://"+ak.maps2009.config.mt2002Host+"/"+data.cityUrlName+"/bilder/detail?id="+data.imageId,target:"_blank"});link.addClassName("ak-loupe");var imgContainer=new Element("div").addClassName("ak-infobox-landscape-format");imgContainer.insert(link);imgContainer.insert(new Element("img",{src:this.getImageUrl("C&maxwidth=261&maxheight=196"),alt:data.alt||""}));infoBoxMainEntry.insert(imgContainer);var details=new Element("div");details.insert(new Element("b").update(data.title));details.insert(new Element("br"));details.insert((data.street?data.street+", ":"")+(data.zip?data.zip+" ":"")+data.city);infoBoxMainEntry.insert(details);this.addZoomInLink(infoBoxMainEntry);return infoBoxMainEntry;},getImageUrl:function(type){return"http://"+ak.maps2009.config.mt2002Host+"/images/image.php?origin=foto&id="+this.data.imageId+"&type="+type;},getClusterLinkContent:function(){return new Element("img",{src:this.getImageUrl("V"),alt:"",width:64,height:48});},createInfoBoxHeaderContent:function(){return"Foto";},getTrackingName:function(){return"Foto";},isPremium:function(){return(this.getData().rating<3);},setIcon:function(){var type,width,height;if(this.isPremium()){type="J";width=45;height=45;}else{type="K";width=15;height=15;}this.icon='<img src="'+this.getImageUrl(type)+'" alt="" style="background:#fff;border:1px solid #a1a1a1;padding:2px;" width="'+width+'" height="'+height+'">';}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.ClusterPoi=Class.create(ak.maps2009.utils.poi.BasePoi,{initialize:function($super,options){this.clusterType=options.type;this.amount=options.data.amount;this.clusterTitle=options.data.title;this.items=[];if(options.data.clusterItems&&options.data.clusterItems.length>0){this.resolveable=false;if(options.data.clusterItems[0].item){options.data.clusterItems=options.data.clusterItems[0].item;}for(var i=0;i<options.data.clusterItems.length;i++){var data=options.data.clusterItems[i];if(!this.resolveable&&(Math.abs(data.longitude-options.data.longitude)>0.00011||Math.abs(data.latitude-options.data.latitude)>0.00007)){this.resolveable=true;}try{var poi=ak.maps2009.utils.poi.PoiFactory.create({type:this.clusterType,data:data,index:i,clusterPoi:this});}catch(e){this.error("Creating POI failed",e);var poi=null;}this.items.push(poi);}}$super(options);this.paging=new ak.utils.Paging(this.amount,1);this.className="ClusterPoi";this.itemsPerPage=12;},isClusterPoi:function(){return true;},getZIndex:function(){var mapping={foto:220,mapAd:270};return mapping[this.clusterType]||201;},showInfobox:function(){return(this.items.length>0);},getItems:function(){return this.items;},getTitle:function(){return this.amount+" Treffer";},setShape:function($super,shape){$super(shape);for(var i=0;i<this.items.length;i++){this.items[i].setShape(shape);}},setLayer:function($super,layer){$super(layer);for(var i=0;i<this.items.length;i++){this.items[i].setLayer(layer);}},getTrackingName:function(){var name="Cluster-"+this.clusterType;if(this.showInfobox()===false){name+="-zoom";}return name;},createInfoBoxMainEntry:function($super){var content=$super();var paging=new ak.utils.Paging(this.items.length,this.itemsPerPage);this.showPage(paging,content,1);if(this.resolveable){var mediator=this.getService("Mediator");var link=new Element("a",{href:"javascript:void(0);"}).addClassName("ak-zoom-in-link").update("Alle Treffer in der Karte anzeigen");Event.observe(link,"click",mediator.clusterPoiLoupeClicked.bind(mediator,this));content.insert(new Element("div").addClassName("ak-zoom-in-link").update(link));}else{content.insert(new Element("div",{"class":"help-text"}).update("Treffer liegen zu nah beieinander, um sie einzeln in der Karte anzuzeigen."));}return content;},showPage:function(paging,container,index){var list=new Element("ul").addClassName("ak-cluster-item-list");container.update(list);container.insert(new Element("br").addClassName("antifloat"));var mediator=this.getService("Mediator");var clickCallback=this.showPage.bind(this,paging,container);paging.setCurrentPage(index);for(var i=paging.getFirst();i<=paging.getLast();i++){var poi=this.items[i];var listItem=new Element("li").addClassName(this.getCssClass());var img=poi.getClusterBoxIcon();if(img){listItem.insert(new Element("img",{src:img,alt:"",style:"padding-right:8px;"}));}var link=new Element("a",{href:"javascript:void(0);"}).update(poi.getClusterLinkContent());Event.observe(link,"click",mediator.clusterPoiItemClicked.bind(mediator,poi));listItem.insert(link);list.insert(listItem);}if(paging.getTotalPages()>1){paging.createElement(container,"bottom",clickCallback);}},createInfoBoxHeaderContent:function(){return new Element("div",{"class":this.getCssClass()}).update(this.getTitle());},getCssClass:function(){return"ak-"+this.clusterType;},getSize:function(){return this.showInfobox()?"small":(this.amount>100)?"large":"medium";},setIcon:function(){var size=this.getSize();this.icon=ak.maps2009.config.imgServerUrl+"poi/cluster/"+this.clusterType+"-"+size+".gif";}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.CategoryClusterPoi=Class.create(ak.maps2009.utils.poi.ClusterPoi,{initialize:function($super,options){$super(options);this.className="CategoryClusterPoi";},createInfoBox:function($super){if(this.items.length){var ids=this.items.collect(function(i){return i.data.id;}).join(",");this.getService("PoiSearch").find({asynchronous:false,caller:"categoryPoi",parameters:{poi:ids,output:"json",context:"poi-service"},onSuccess:function(t){if(typeof t==="object"&&typeof t.items==="object"){var i=0;t.items.each(function(data){this.items[i].data=data;this.items[i].detailsLoaded=true;this.items[i].title=data.infoboxTitle;i++;}.bind(this));}else{this.info("Updating details for clusered POIs failed!");}}.bind(this)});}return $super();},setIcon:function(){var property="clusterIcon"+this.getSize().capitalize();var catId=this.data.category;var listComp=this.getComponent("CategoryList");if(!listComp){return this.error("CategoryListComponent not found!");}var category=listComp.categories[catId];if(!category){return this.error("category "+catId+" not found");}this.icon=category[property];}});ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.PoiFactory={create:function(options){var getCompanyPoiClass=function(options){if(options.index===null){return null;}if(options.data&&options.data.isPaid){if(options.data.isPremium){return ak.maps2009.utils.poi.PremiumPoi;}return ak.maps2009.utils.poi.BusinessPoi;}return ak.maps2009.utils.poi.CompanyPoi;};options=options||{};options.data=options.data||{};var poiClass;if(options.data.amount){if(options.type==="category"){poiClass=ak.maps2009.utils.poi.CategoryClusterPoi;}else{poiClass=ak.maps2009.utils.poi.ClusterPoi;}}else{var type2ClassFunction={mapAd:function(options){return ak.maps2009.utils.poi.MapAdPoi;},category:function(options){return ak.maps2009.utils.poi.CategoryPoi;},company:function(options){if(options.index==null){return;}options.position=options.position||options.index+1;return getCompanyPoiClass(options);},townInfo:function(options){return ak.maps2009.utils.poi.TownInfoPoi;},address:function(options){if(options.data.companyId!=null){options.position=1;return getCompanyPoiClass(options);}return ak.maps2009.utils.poi.AddressPoi;},kaz:function(options){if(options.index==null){return;}options.position=options.position||options.index+1;return ak.maps2009.utils.poi.KazPoi;},foto:function(options){return ak.maps2009.utils.poi.FotoPoi;},kaufda:function(options){if(options.index==null){return;}options.position=options.position||options.index+1;return ak.maps2009.utils.poi.KaufdaPoi;}};var fct=type2ClassFunction[options.type];if(typeof fct!="function"){throw {message:"PoiFactory says: Invalid type '"+options.type+"'"};}poiClass=fct(options);}try{var poi=new poiClass(options);}catch(e){e.message="PoiFactory says: Creating poi failed: "+e.message;throw e;}return poi;}};ak.namespace("ak.maps2009.utils.poi");ak.maps2009.utils.poi.PoiCollection=Class.create(ak.maps2009.Logger,Enumerable,{initialize:function(poiList,type,layer){this.setLoggerId("PoiCollection");poiList=poiList||[];this.layerId=layer||type;var entries=[];for(var i=0;i<poiList.length;i++){try{var poi=ak.maps2009.utils.poi.PoiFactory.create({type:type,data:poiList[i],index:i});}catch(e){this.error("creating POI failed",e);var poi=null;}entries.push(poi);}var shapeMapping={};this.getSelectedPois=function(indices){var selectedPois=[];indices.each(function(index){selectedPois.push(this.getPoiByIndex(index));}.bind(this));return selectedPois;},this.clear=function(){shapeMapping={};entries=[];},this._each=function(iterator){for(var i=0;i<entries.length;i++){iterator(entries[i]);}};this.getPoiByIndex=function(index){return entries[index];};this.getPoiByShapeId=function(shapeId){return shapeMapping[shapeId];},this.setShapeMapping=function(shapeId,poi){shapeMapping[shapeId]=poi;};},getLayerId:function(){return this.layerId;}});ak.namespace("ak.maps2009.utils.search");ak.maps2009.utils.search.BaseSearch=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.lastInput=null;this.defaultInput=null;this.noDefaultInput=[];this.results=new ak.maps2009.utils.poi.PoiCollection();this.waiting=false;this.setLoggerId(options.loggerId);this.poiType=options.poiType;this.poiLayer=options.poiLayer||options.poiType;this.isStatic=false;},isStaticMode:function(){return this.isStatic;},setStaticMode:function(state){this.isStatic=state;},isWaiting:function(){return this.waiting;},getClusterRadius:function(){var zoom=this.getComponent("Map").getZoomLevel();var mapping=[0.008,0.016,0.03,0.06,0.12,0.25,0.5,1.5,3,3,10,30,60,60];return mapping[Math.min(19-zoom,mapping.length-1)];},clear:function(){this.results.clear();this.lastInput=null;this.defaultInput=null;this.setStaticMode(false);},getResults:function(){return this.results;},getPoiByShapeId:function(shapeId){return this.results.getPoiByShapeId(shapeId);},getPoiByIndex:function(index){return this.results.getPoiByIndex(index);},inputChanged:function(input){return(!this.lastInput);},update:function(input1,options){this.debug("update "+Object.toJSON(input1));options=options||{};var input=Object.clone(input1);if(this.defaultInput){input=Object.extend(Object.clone(this.defaultInput),input);}else{this.debug("defaultInput is null");}this.debug("validateInput "+this.validateInput(input));this.debug("inputChanged "+this.inputChanged(input));if(this.validateInput(input)&&this.inputChanged(input)){this.waiting=true;this.debug("triggerSearch("+Object.toJSON(input)+")");var onSuccess=options.onSuccess||Prototype.emptyFunction;var onFailure=options.onFailure||Prototype.emptyFunction;var onCreate=options.onCreate||Prototype.emptyFunction;this.lastInput=input;this.defaultInput=Object.clone(input);this.noDefaultInput.each(function(property){delete this.defaultInput[property];}.bind(this));this.results.clear();this.triggerSearch(input,onSuccess,onFailure,onCreate);return true;}return false;},handleSuccess:function(callback,results){this.debug("handleSuccess");this.handleResults(results);this.waiting=false;callback(this.results);},handleResults:function(results){this.debug("handleResults");results=results||{};if(!results||!results.items){return this.info("Search results are empty!");}this.results=new ak.maps2009.utils.poi.PoiCollection(results.items,this.poiType,this.poiLayer);if(!this.results){this.error("Creation of POI Collection failed!");}},handleFailure:function(callback){this.debug("handleFailure");this.lastInput=null;this.waiting=false;callback();},getSelectedPois:function(indices){return this.results.getSelectedPois(indices);}});ak.maps2009.utils.search.AddressSearch=Class.create(ak.maps2009.utils.search.BaseSearch,{initialize:function($super,options){options=options||{};options.loggerId="AddressSearch";options.poiType=options.poiType||"address";$super(options);this.noDefaultInput.push("setBestMapView");},triggerSearch:function(input,onSuccess,onFailure,onCreate){if(input.companyId){this.getService("CompanySearch").find({caller:this.poiLayer,parameters:{company:input.companyId},onCreate:onCreate,onSuccess:function(results){if(results&&results.items&&results.items[0]){this.handleSuccess(onSuccess,results.items[0]);}else{this.handleFailure(onFailure);}}.bind(this),onFailure:function(){this.handleFailure(onFailure);}.bind(this)});}else{onCreate();input.onSuccess=this.handleSuccess.bind(this,onSuccess);input.onFailure=this.handleFailure.bind(this,onFailure);this.getComponent("Map").findAddress(input);}},validateInput:function(input){return Boolean(input.address||input.companyId);},inputChanged:function($super,input){return $super(input)||(this.lastInput.address!=input.address)||(this.lastInput.latitude&&this.lastInput.latitude!=input.latitude)||(this.lastInput.longitude&&this.lastInput.longitude!=input.longitude);},handleResults:function(results){if(!results){return this.info("Search results are empty!");}this.lastInput.longitude=results.longitude;this.lastInput.latitude=results.latitude;this.results=new ak.maps2009.utils.poi.PoiCollection([results],this.poiType,this.poiLayer);this.lastInput.address=this.results.getPoiByIndex(0).getAddress();}});ak.maps2009.utils.search.RouteSearch=Class.create(ak.maps2009.utils.search.BaseSearch,{initialize:function($super,options){options=options||{};options.loggerId="RouteSearch";options.poiType=options.poiType||"route";options.poiLayer=options.poiLayer||options.poiType;$super(options);},triggerSearch:function(input,onSuccess,onFailure,onCreate){onCreate();input.onSuccess=this.handleSuccess.bind(this,onSuccess);input.onFailure=this.handleFailure.bind(this,onFailure);this.getComponent("Map").findRoute(input);},handleResults:function(route){if(route&&route.legs&&route.legs.length){this.lastInput.startlat=route.legs[0].latitude;this.lastInput.startlng=route.legs[0].longitude;this.lastInput.endlat=route.legs[route.legs.length-1].latitude;this.lastInput.endlng=route.legs[route.legs.length-1].longitude;}else{return this.info("Route is empty!");}route.clear=function(){route=undefined;};this.results=route;},validateInput:function(input){return Boolean(input.start&&input.end&&input.optimize);},inputChanged:function($super,input){return $super(input)||(this.lastInput.start!=input.start)||(this.lastInput.end!=input.end)||(this.lastInput.optimize!=input.optimize);},getPoiByShapeId:function(shapeId){return null;}});ak.maps2009.utils.search.CategorySearch=Class.create(ak.maps2009.utils.search.BaseSearch,{initialize:function($super,options){options=options||{};options.loggerId="CategorySearch";options.poiType=options.poiType||"category";this.amount=options.amount||10000;this.disableClustering=options.disableClustering;$super(options);this.noDefaultInput.push("poi");},triggerSearch:function(input,onSuccess,onFailure,onCreate){var parameters={output:"json",context:"poi-service"};if(input.poi){parameters.poi=input.poi;this.setStaticMode(true);}else{this.setStaticMode(false);parameters.centerX=input.searchRect.centerX;parameters.centerY=input.searchRect.centerY;parameters.radiusX=input.searchRect.radiusX;parameters.radiusY=input.searchRect.radiusY;parameters.amount=this.amount;parameters.category=input.category;if(!this.disableClustering){parameters.clusterRadius=input.clusterRadius;parameters.maxClusterItems=36;}}this.getService("PoiSearch").find({caller:this.poiLayer,parameters:parameters,onSuccess:this.handleSuccess.bind(this,onSuccess),onFailure:this.handleFailure.bind(this,onFailure),onCreate:onCreate});},validateInput:function(input){return Boolean(input.poi||(input.category&&input.searchRect));},inputChanged:function($super,input){input.clusterRadius=this.getClusterRadius();return $super(input)||(this.lastInput.poi!=input.poi)||(this.lastInput.category!=input.category)||(this.lastInput.clusterRadius!=input.clusterRadius)||(this.lastInput.searchRect.centerX!=input.searchRect.centerX)||(this.lastInput.searchRect.centerY!=input.searchRect.centerY)||(this.lastInput.searchRect.radiusX!=input.searchRect.radiusX)||(this.lastInput.searchRect.radiusY!=input.searchRect.radiusY);}});ak.maps2009.utils.search.CompanySearch=Class.create(ak.maps2009.utils.search.BaseSearch,{initialize:function($super,options){options=options||{};options.loggerId="CompanySearch";options.poiType=options.poiType||"company";options.poiLayer=options.poiLayer||options.poiType;$super(options);this.noDefaultInput=["companyId"];},triggerSearch:function(input,onSuccess,onFailure,onCreate){if(!input.startAt){input.startAt=1;}if(!input.amount){input.amount=200;}if(input.companyId){this.setStaticMode(true);this.getService("CompanySearch").findCompanyById({caller:this.poiLayer,onSuccess:this.handleSuccess.bind(this,onSuccess),onFailure:this.handleFailure.bind(this,onFailure),onCreate:onCreate},input.companyId);}else{this.getService("CompanySearch").find({caller:this.poiLayer,parameters:{words:input.company,offset:input.startAt-1,count:input.amount,sort:"DEFAULT",lng:input.searchRect.centerX,lat:input.searchRect.centerY,radius_x:input.searchRect.radiusX,radius_y:input.searchRect.radiusY,auto_umkr:"false",timeout_milliseconds:"2000"},onSuccess:this.handleSuccess.bind(this,onSuccess),onFailure:this.handleFailure.bind(this,onFailure),onCreate:onCreate});}},validateInput:function(input){return Boolean((input.company||input.companyId)&&input.searchRect);},inputChanged:function($super,input){input.searchRect.centerX=Math.min(Math.max(input.searchRect.centerX,5),15.5);input.searchRect.centerY=Math.min(Math.max(input.searchRect.centerY,47),55.5);input.searchRect.radiusX=Math.min(input.searchRect.radiusX,1.5);input.searchRect.radiusY=Math.min(input.searchRect.radiusY,1);return $super(input)||(this.lastInput.startAt!=input.startAt)||(this.lastInput.amount!=input.amount)||(this.lastInput.company&&this.lastInput.company!=input.company)||(this.lastInput.companyId&&this.lastInput.companyId!=input.companyId)||(this.lastInput.searchRect.centerX!=input.searchRect.centerX)||(this.lastInput.searchRect.centerY!=input.searchRect.centerY)||(this.lastInput.searchRect.radiusX!=input.searchRect.radiusX)||(this.lastInput.searchRect.radiusY!=input.searchRect.radiusY);}});ak.maps2009.utils.search.TownSearch=Class.create(ak.maps2009.utils.search.BaseSearch,{initialize:function($super,options){options=options||{};options.loggerId="TownSearch";options.poiType=options.poiType||"townInfo";options.poiLayer=options.poiLayer||options.poiType;$super(options);},triggerSearch:function(input,onSuccess,onFailure,onCreate){this.getService("TownSearch").find({parameters:{latitude:input.latitude,longitude:input.longitude},onSuccess:this.handleSuccess.bind(this,onSuccess),onFailure:this.handleFailure.bind(this,onFailure),onCreate:onCreate});},validateInput:function(input){return Boolean(input.latitude&&input.longitude);},inputChanged:function($super,input){return $super(input)||(this.lastInput.latitude!=input.latitude)||(this.lastInput.longitude!=input.longitude);}});ak.maps2009.utils.search.MapAdSearch=Class.create(ak.maps2009.utils.search.BaseSearch,{initialize:function($super,options){options=options||{};options.loggerId="MapAdSearch";options.poiType=options.poiType||"mapAd";options.poiLayer=options.poiLayer||options.poiType;$super(options);},triggerSearch:function(input,onSuccess,onFailure,onCreate){this.getService("MapAdSearch").find({caller:this.poiLayer,parameters:{xCoord:input.searchRect.centerX,yCoord:input.searchRect.centerY,radiusX:input.searchRect.radiusX,radiusY:input.searchRect.radiusY,category:input.category},onSuccess:this.handleSuccess.bind(this,onSuccess),onFailure:this.handleFailure.bind(this,onFailure),onCreate:onCreate});},validateInput:function(input){return Boolean(input.category&&input.searchRect);},inputChanged:function($super,input){return $super(input)||(this.lastInput.category!=input.category)||(this.lastInput.searchRect.centerX!=input.searchRect.centerX)||(this.lastInput.searchRect.centerY!=input.searchRect.centerY)||(this.lastInput.searchRect.radiusX!=input.searchRect.radiusX)||(this.lastInput.searchRect.radiusY!=input.searchRect.radiusY);}});ak.maps2009.utils.search.FotoSearch=Class.create(ak.maps2009.utils.search.BaseSearch,{initialize:function($super,options){options=options||{};options.loggerId="FotoSearch";options.poiType=options.poiType||"foto";options.poiLayer=options.poiLayer||options.poiType;$super(options);},triggerSearch:function(input,onSuccess,onFailure,onCreate){this.getService("FotoSearch").find({caller:this.poiLayer,parameters:{context:"image",output:"json",xCoord:input.searchRect.centerX,yCoord:input.searchRect.centerY,radiusX:input.searchRect.radiusX,radiusY:input.searchRect.radiusY,clusterRadius:input.clusterRadius,mode:input.mode},onSuccess:this.handleSuccess.bind(this,onSuccess),onFailure:this.handleFailure.bind(this,onFailure),onCreate:onCreate});},validateInput:function(input){return Boolean(input.searchRect);},inputChanged:function($super,input){input.clusterRadius=this.getClusterRadius();return $super(input)||(this.lastInput.mode!=input.mode)||(this.lastInput.clusterRadius!=input.clusterRadius)||(this.lastInput.searchRect.centerX!=input.searchRect.centerX)||(this.lastInput.searchRect.centerY!=input.searchRect.centerY)||(this.lastInput.searchRect.radiusX!=input.searchRect.radiusX)||(this.lastInput.searchRect.radiusY!=input.searchRect.radiusY);}});ak.namespace("ak.maps2009.applications");ak.maps2009.applications.BaseApp=Class.create(ak.maps2009.Logger,{initialize:function(){this.setLoggerId("BaseApp");this.serviceManager=ak.maps2009.ServiceManager.getInstance();var loggingService=new ak.maps2009.internalServices.logging.LoggingService({level:"debug"});this.serviceManager.configure({services:[{name:"Logging",service:loggingService}]});},getStateFromUrl:function(){var search=window.location.search;search=search.replace(/\+/g," ");return search?search.toQueryParams():null;}});ak.namespace("ak.maps2009.applications.main");ak.maps2009.applications.main.MainApp=Class.create(ak.maps2009.applications.BaseApp,{initialize:function(){this.autoSizeMap();var state=this.getStateFromUrl()||{};this.serviceManager=ak.maps2009.ServiceManager.getInstance();this.serviceManager.configure({services:[{name:"Logging",service:new ak.maps2009.internalServices.logging.LoggingService({level:"info",externalConsole:ak.maps2009.config.externalLoggingConsole,levels:{MainMediatorService:"debug",TrackingService:"debug"}})}]});this.setLoggerId("MainApp");try{var ajaxService=new ak.maps2009.internalServices.ajax.AjaxService({maxConcurrentRequests:10,activityVisualizerId:"ajax-visualizer",timeout:8000});this.serviceManager.registerService("Ajax",ajaxService);var companySearchService=new ak.maps2009.externalServices.companySearch.CompanySearchService({searcherUrl:"java-service/",xmlServerUrl:ak.maps2009.config.xmlServerUrl});this.serviceManager.registerService("CompanySearch",companySearchService);var mapAdSearchService=new ak.maps2009.externalServices.mapAdSearch.MapAdSearchService({xmlServerUrl:ak.maps2009.config.xmlServerUrl,product:ak.maps2009.config.product});this.serviceManager.registerService("MapAdSearch",mapAdSearchService);var poiSearchService=new ak.maps2009.externalServices.jsonSearch.JsonSearchService({searcherUrl:"java-service/poi",loggerId:"PoiSearchService",callerId:"PoiSearchService"});this.serviceManager.registerService("PoiSearch",poiSearchService);var fotoSearchService=new ak.maps2009.externalServices.jsonSearch.JsonSearchService({searcherUrl:"services/service.php",loggerId:"FotoSearchService",callerId:"FotoSearchService"});this.serviceManager.registerService("FotoSearch",fotoSearchService);var townSearchService=new ak.maps2009.externalServices.townSearch.TownSearchService({xmlServerUrl:ak.maps2009.config.xmlServerUrl,product:ak.maps2009.config.product,visualizer:"town-search-visualizer"});this.serviceManager.registerService("TownSearch",townSearchService);var tileService=new ak.maps2009.internalServices.tile.TileService();this.serviceManager.registerService("Tile",tileService);this.initTrackingService(state);state.searchType=(state.searchType&&state.searchType.match("^(address|company|route)$"))?state.searchType:"address";var searchInput=this.getSearchInput(state);this.info("searchInput: "+Object.toJSON(searchInput));var mediatorService=new ak.maps2009.internalServices.mediator.MainMediatorService({mapAdDefaultZoom:(typeof state.mapAd==="undefined"),searchType:state.searchType});this.serviceManager.registerService("Mediator",mediatorService);var companySearchComponent=new ak.maps2009.components.companySearch.CompanySearchComponent({form:"companySearchForm",zoomStreet:"zoomStreet",zoomCity:"zoomCity",zoomRegion:"zoomRegion",searchInput:(state.searchType=="company")?searchInput:{}});this.serviceManager.registerComponent("CompanySearch",companySearchComponent);var routeSearchComponent=new ak.maps2009.components.routeSearch.RouteSearchComponent({form:"routeSearchForm",searchInput:(state.searchType=="route")?searchInput:{}});this.serviceManager.registerComponent("RouteSearch",routeSearchComponent);var addressSearchComponent=new ak.maps2009.components.addressSearch.AddressSearchComponent({form:"addressSearchForm",searchInput:(state.searchType=="address")?searchInput:{}});this.serviceManager.registerComponent("AddressSearch",addressSearchComponent);var townSignComponent=new ak.maps2009.components.townSign.TownSignComponent({signContainer:"townSign"});this.serviceManager.registerComponent("TownSign",townSignComponent);var mapComponent=new ak.maps2009.components.map.VirtualEarthComponent({mapContainer:"map",infoBoxContainer:"infoBox",loadingIndicator:"loading-indicator"});this.serviceManager.registerComponent("Map",mapComponent);var companyListComponent=new ak.maps2009.components.list.HitListComponent({itemsPerPage:8,container:"ak-company-list",identifier:"CompanyListComponent",deleteSearchLink:true});this.serviceManager.registerComponent("CompanyList",companyListComponent);var addressListComponent=new ak.maps2009.components.list.AddressListComponent({container:"ak-address-list"});this.serviceManager.registerComponent("AddressList",addressListComponent);var routeListComponent=new ak.maps2009.components.list.RouteListComponent({container:"ak-route-list"});this.serviceManager.registerComponent("RouteList",routeListComponent);var leftAdComponent=new ak.maps2009.components.leftAd.LeftAdComponent({adContainer:"adDiv"});this.serviceManager.registerComponent("LeftAd",leftAdComponent);var searchPanelComponent=new ak.maps2009.components.tabPanel.TabPanelComponent({container:"aksearchTabs",tabs:[{name:"search",li:"searchTabSearch",div:"akmapSearchTab"},{name:"route",li:"searchTabRouting",div:"akmapRoutingTab"}],activeTab:(state.searchType=="route")?"route":"search"});this.serviceManager.registerComponent("SearchPanel",searchPanelComponent);var searchTabComponent=new ak.maps2009.components.tabPanel.TabPanelComponent({container:"akmapSearchTab",tabs:[{name:"address",li:"addressSearchTab",div:"addressSearch"},{name:"company",li:"companySearchTab",div:"companySearch"}],activeTab:(state.searchType!="route")?state.searchType:"address"});this.serviceManager.registerComponent("SearchTab",searchTabComponent);new ak.maps2009.components.foldMenu.FoldMenuComponent({listContainer:"akMapAdMenu"});var mapAdListComponent=new ak.maps2009.components.mapAdList.MapAdListComponent({listContainer:"akMapAdList",checkedCategories:(state.mapAd)?state.mapAd.split(","):[]});this.serviceManager.registerComponent("MapAdList",mapAdListComponent);new ak.maps2009.components.foldMenu.FoldMenuComponent({listContainer:"akCategoryMenu"});var categoryListComponent=new ak.maps2009.components.categoryList.CategoryListComponent({listContainer:"akCategoryList",checkedCategories:(state.category)?state.category.split(","):[],maxChecked:3,singlePoi:state.poi,singlePoiType:state.pt});this.serviceManager.registerComponent("CategoryList",categoryListComponent);new ak.maps2009.components.foldMenu.FoldMenuComponent({listContainer:"akFotoMenu"});var fotoListComponent=new ak.maps2009.components.fotoList.FotoListComponent({listContainer:"akFotoList",checkedCategories:(state.foto)?state.foto.split(","):[]});this.serviceManager.registerComponent("FotoList",fotoListComponent);if(!state.lat||!state.lng){state.lat=52.52378100000001;state.lng=13.411896000000015;state.zoom=state.zoom||11;}else{state.zoom=state.zoom||14;}state.style=state.style||VEMapStyle.Road;mapComponent.loadMap({center:{latitude:state.lat,longitude:state.lng},zoom:state.zoom,showControls:true,showScalebar:true,style:state.style});var triggered=mediatorService.triggerSearch(searchInput);var trackingEvent={eventName:(triggered)?state.searchType:"map",link:{iwc:triggered,initial:true,search:state.searchType,mapStyle:state.style,mapAd:this.getComponent("MapAdList").getCheckedCategories(),category:this.getComponent("CategoryList").getCheckedCategories()},page:1,address:searchInput.address,searchWords:searchInput.company,start:searchInput.start,end:searchInput.end,opt:(state.searchType=="route")?(searchInput.opt||"time"):""};this.getService("Tracking").triggerInitialPI(trackingEvent);Event.observe(window,"resize",this.autoSizeMap.bind(this));}catch(e){this.error("app.initialize() failed",e);}},getSearchInput:function(state){var map={address:this.getAddressSearchInput.bind(this),company:this.getCompanySearchInput.bind(this),route:this.getRouteSearchInput.bind(this)};var fct=map[state.searchType];return fct(state);},getRouteSearchInput:function(state){var start=(state.start)?state.start:((state.streetStart||state.zipStart||state.cityStart)?[state.streetStart,state.zipStart,state.cityStart].join(", "):"");var end=(state.end)?state.end:((state.streetEnd||state.zipEnd||state.cityEnd)?[state.streetEnd,state.zipEnd,state.cityEnd].join(", "):"");return{setBestMapView:!(state.lat&&state.lng),start:start,startlat:state.startlat,startlng:state.startlng,end:end,endlat:state.endlat,endlng:state.endlng,optimize:state.opt||"time"};},getAddressSearchInput:function(state){if(state.companyId){return{companyId:state.companyId};}var address=(state.address)?state.address:((state.street||state.zip||state.city)?[state.street,state.zip,state.city].join(", ").replace(/^[, ]+ /g,""):"");return{setBestMapView:!(state.lat&&state.lng),address:address||"",latitude:state.addrlat,longitude:state.addrlng};},getCompanySearchInput:function(state){if(state.companyId){return{companyId:state.companyId};}return{company:state.company||"",distance:state.distance||null};},autoSizeMap:function(){var mapDiv=$("map");var mapPanel=$("mapPanel");var body=$$("body")[0];var leftColumn=$("akmap-lcol");var bodyWidth=Element.getWidth(body);var bodyHeight=document.viewport.getHeight();var leftColumnWidth=leftColumn.getWidth();var headerHeight=$("akmap-header").getHeight();var mapDivWidth=bodyWidth-leftColumnWidth-20;var resizeHack=3;if(navigator.appName.indexOf("Explorer")!=-1){resizeHack=18;}var mapDivHeight=bodyHeight-headerHeight-resizeHack;mapDiv.setStyle({width:mapDivWidth+"px",height:mapDivHeight+"px"});mapPanel.setStyle({width:mapDivWidth+"px",height:mapDivHeight+"px"});leftColumn.setStyle({height:mapDivHeight+"px"});$$(".ajax-visualizer").each(function(e){e.setStyle({top:(mapDivHeight/2-10)+"px",left:(mapDivWidth/2-50)+"px"});});var consoleDiv=$("console2");consoleDiv.setStyle({top:mapDivHeight+"px"});try{var mapComponent=this.getComponent("Map");if(mapComponent){mapComponent.resizeMap(mapDivWidth,mapDivHeight);}}catch(e){}},initTrackingService:function(){var trackingService=new ak.maps2009.internalServices.tracking.TrackingService({ivw:{imgContainer:"akIvwWrapper",imgSrcPath:"http://mstadt.ivwbox.de/cgi-bin/ivw/CP",eventMapping:{mapStyle:"SP-PLANV-A",onendpan:"SP-PLANV-A",onendzoom:"SP-PLANV-A",map:"plan",company:"plan",address:"plan",route:"planR",print:"planX",forward:"planX"}},xiti:{eventMapping:{map:"Stadtplan_Karte",company:"Stadtplan_Karte_BrachenbuchSuche",address:"Stadtplan_Karte_AddressSuche",route:"Stadtplan_Karte_RoutenSuche",print:"Stadtplan_Karte_Drucken",forward:"Stadtplan_Karte_Weiterleiten"}},mlm:{redirecter:"http://"+ak.maps2009.config.mt2002Host+"/x/tracking/mlm/track.php",requestId:ak.maps2009.config.mlmRequestId}});this.serviceManager.registerService("Tracking",trackingService);},encodeState:function(){var view=this.getComponent("Map").getCenterAndZoom();var mapStyle=this.getComponent("Map").getMapStyle();var state={zoom:view.zoom,lat:view.y,lng:view.x,style:mapStyle};var categories=this.getComponent("CategoryList").getCheckedCategories();if(categories.length){state.category=categories.join(",");}var fotos=this.getComponent("FotoList").getCheckedCategories();if(fotos.length){state.foto=fotos.join(",");}if(!this.getService("Mediator").mapAdDefaultZoom){var mapAds=this.getComponent("MapAdList").getCheckedCategories();state.mapAd=mapAds.join(",");}var mediator=this.getService("Mediator");state.searchType=mediator.getSearchType();var searchInput=mediator.getLastSearchInput()||{};if(searchInput.address){state.address=searchInput.address;}if(searchInput.latitude){state.addrlat=searchInput.latitude;}if(searchInput.longitude){state.addrlng=searchInput.longitude;}if(searchInput.company){state.company=searchInput.company;}if(searchInput.distance){state.distance=searchInput.distance;}if(searchInput.start){state.start=searchInput.start;}if(searchInput.startlat){state.startlat=searchInput.startlat;}if(searchInput.startlng){state.startlng=searchInput.startlng;}if(searchInput.end){state.end=searchInput.end;}if(searchInput.endlat){state.endlat=searchInput.endlat;}if(searchInput.endlng){state.endlng=searchInput.endlng;}if(searchInput.optimize){state.opt=searchInput.optimize;}return state;},getForwardURL:function(){var state=this.encodeState();var location=window.location;return location.protocol+"//"+location.host+location.pathname+"?"+Object.toQueryString(state);},forward:function(){if(this.forwardPopup){this.forwardPopup.close();}var town=this.getService("Mediator").getCurrentTown();ak.maps2009.forwardState={url:this.getForwardURL(),town:(town)?town.getData():{}};this.forwardPopup=window.open("forwardPopup.php","forwardWindow","status=yes,width=720,height=600,scrollbars=yes");this.getService("Mediator").reloadPITracking({eventName:"forward"});},print:function(){var state=this.encodeState();state.town=this.getComponent("TownSign").extractTown();var searchResults=this.getService("Mediator").getVisibleSearchResults(state.searchType);if(searchResults){state.searchResults=searchResults.invoke("getData");var results=this.getService("Mediator").getSearchResults(state.searchType);state.total=(results&&results.size)?results.size():0;}ak.maps2009.printState=state;window.open("printPopup.php","printWindow","status=yes,width=720,height=800,scrollbars=yes");}});ak.namespace("ak.maps2009.applications.print");ak.maps2009.applications.print.PrintApp=Class.create(ak.maps2009.applications.main.MainApp,{initialize:function(){var state=window.opener.ak.maps2009.printState;this.serviceManager=ak.maps2009.ServiceManager.getInstance();this.serviceManager.configure({services:[{name:"Logging",service:new ak.maps2009.internalServices.logging.LoggingService({level:"info",externalConsole:ak.maps2009.config.externalLoggingConsole,console:"printconsole",levels:{PrintApp:"debug",PrintMediatorService:"debug"}})}]});this.setLoggerId("PrintApp");var ajaxService=new ak.maps2009.internalServices.ajax.AjaxService({maxConcurrentRequests:10,activityVisualizerId:"ajax-visualizer",timeout:6000});this.serviceManager.registerService("Ajax",ajaxService);var mediatorService=new ak.maps2009.internalServices.mediator.PrintMediatorService({searchType:state.searchType});this.serviceManager.registerService("Mediator",mediatorService);var townSearchService=new ak.maps2009.externalServices.townSearch.TownSearchService({xmlServerUrl:ak.maps2009.config.xmlServerUrl,product:ak.maps2009.config.product,visualizer:"town-search-visualizer"});this.serviceManager.registerService("TownSearch",townSearchService);var trackingService=new ak.maps2009.internalServices.tracking.TrackingService({ivw:{imgContainer:"akIvwWrapper",imgId:"ivwPixel",imgSrcPath:"http://mstadt.ivwbox.de/cgi-bin/ivw/CP",eventMapping:{onendpan:"planX",onendzoom:"planX",print:"planX"}},xiti:{eventMapping:{map:"Stadtplan_Karte",company:"Stadtplan_Karte_BrachenbuchSuche",address:"Stadtplan_Karte_AddressSuche",route:"Stadtplan_Karte_RoutenSuche",print:"Stadtplan_Karte_Drucken",forward:"Stadtplan_Karte_Weiterleiten"}}});this.serviceManager.registerService("Tracking",trackingService);var townSignComponent=new ak.maps2009.components.townSign.TownSignComponent({signContainer:"town-sign"});this.serviceManager.registerComponent("TownSign",townSignComponent);var mapComponent=new ak.maps2009.components.map.VirtualEarthComponent({mapContainer:"map",infoBoxContainer:"infobox",loadingIndicator:"loading-indicator"});this.serviceManager.registerComponent("Map",mapComponent);var headerContentComponent=new ak.maps2009.components.headerContent.HeaderContentComponent({container:"header-content"});this.serviceManager.registerComponent("HeaderContent",headerContentComponent);switch(state.searchType){case"company":var listComponent=new ak.maps2009.components.list.HitListComponent({itemsPerPage:8,container:"list"});this.serviceManager.registerComponent("CompanyList",listComponent);break;case"route":var listComponent=new ak.maps2009.components.list.RouteListComponent({container:"list"});this.serviceManager.registerComponent("RouteList",listComponent);break;default:var listComponent=new ak.maps2009.components.list.AddressListComponent({container:"list"});this.serviceManager.registerComponent("AddressList",listComponent);}this.debug("all services and components initialized");this.autoSizeMap();this.getComponent("TownSign").showSign({title:state.town});mapComponent.loadMap({center:{latitude:state.lat,longitude:state.lng},zoom:state.zoom,showControls:false,showScalebar:false,style:state.style});var searchInput=this.getSearchInput(state);if(state.searchType==="route"||state.searchType==="address"){mediatorService.triggerSearch(searchInput);}trackingService.triggerInitialPI({eventName:"print"});mediatorService.goToLastFoundAddress=function(){mapComponent.setCenterAndZoom(state.lng,state.lat);};if(state.searchResults&&state.total){var poiCollection=new ak.maps2009.utils.poi.PoiCollection(state.searchResults,state.searchType);mediatorService.handleSearchResults(state.searchType,poiCollection);}this.getComponent("HeaderContent").fill({totalHits:state.total,hits:(state.searchResults&&state.searchResults.size)?state.searchResults.size():0,searchInput:searchInput,searchType:state.searchType});},autoSizeMap:function(){this.debug("autoSizeMap");var mapDiv=$("map");var mapPanel=$("map-panel");var dimensions=mapPanel.getDimensions();mapDiv.setStyle({width:dimensions.width+"px",height:dimensions.height+"px"});var mapComponent=this.serviceManager.getMapComponent();if(mapComponent){mapComponent.resizeMap(dimensions.width,dimensions.height);}},print:function(){this.serviceManager.getComponent("Map").enablePrinting();window.print();}});ak.namespace("ak.maps2009.externalServices");ak.maps2009.externalServices.SearchService=Class.create(ak.maps2009.Logger,{initialize:function(config){config=config||{};var loggerId=config.loggerId||"SearchService";this.setLoggerId(loggerId);config.product=config.product||ak.maps2009.config.product;config.xmlServerUrl=config.xmlServerUrl||ak.maps2009.config.xmlServerUrl;this.checkForMandatoryParameters(config,["xmlServerUrl","searcherUrl"]);this.xmlServerUrl=config.xmlServerUrl;this.url=this.xmlServerUrl+config.searcherUrl;this.baseParams={product:config.product};this.visualizer=config.visualizer;this.method="get";this.caller=config.callerId;this.priority=config.priority;this.resultValues={title:{name:"title"},"openSearch:totalResults":{name:"totalResults",type:parseInt,defaultValue:0},"openSearch:startIndex":{name:"startIndex",type:parseInt,defaultValue:1},"openSearch:itemsPerPage":{name:"itemsPerPage",type:parseInt,defaultValue:0},"openSearch:teaser":{name:"teaser"},"akcom:extended":{name:"extended",type:parseInt,defaultValue:0},"akcom:extendedX":{name:"extendedX",type:parseFloat},"akcom:extendedY":{name:"extendedY",type:parseFloat}};this.itemValues={title:{name:"title"},description:{name:"description"},link:{name:"link"}};this.headers={};},escapeParameters:function(parameters){for(var name in parameters){if(parameters.hasOwnProperty(name)){parameters[name]=encodeURI(parameters[name]);}}},find:function(options,url){options=options||{};url=url||this.url;var opts={caller:this.caller,priority:this.priority,activity:this.visualizer,method:this.method,requestHeaders:this.headers,sanitizeJSON:true};Object.extend(opts,options);opts.parameters=Object.extend(Object.clone(this.baseParams),options.parameters);var onFailure=options.onFailure||Prototype.emptyFunction;opts.onFailure=function(transport){this.onFindFailure(transport);onFailure();}.bind(this);var onSuccess=options.onSuccess||Prototype.emptyFunction;opts.onSuccess=function(transport){try{var results=this.onFindSuccess(transport);}catch(e){this.error("onFindSuccess failed: ",e);}try{return(results)?onSuccess(results):onFailure();}catch(e){this.error("find callback failed!",e);}}.bind(this);this.debug("url: "+url);this.debug("parameters: "+Object.toJSON(opts.parameters));return this.getService("Ajax").request(url,opts);},getChild:function(element,tagname){var children=element.childNodes;for(var i=0;i<children.length;i++){if(children[i].tagName==tagname){return children[i];}}},getChannel:function(xml_doc){if(!xml_doc||xml_doc.nodeType!=9){this.error("Parameter xml_doc is no valid XML document!");return null;}var rss=this.getChild(xml_doc,"rss");if(!rss){this.error("XML document is no RSS feed!");return null;}var channel=this.getChild(rss,"channel");if(!channel){this.error("No channel tag found!");return null;}return channel;},getItems:function(channel){this.debug("getItems");var items=[];if(channel&&channel.childNodes){var children=channel.childNodes;for(var i=0;i<children.length;i++){if(children[i].tagName=="item"){try{var item=this.getNodeValues(children[i],this.itemValues);if(item.title==="ClusterItem"){var clusterItemsNode=this.getChild(children[i],"akcom:cluterItems");item.clusterItems=(typeof clusterItemsNode==="undefined")?[]:this.getItems(clusterItemsNode);}items.push(item);}catch(e){this.debug("getItems: "+e.message);}}}}return items;},onFindSuccess:function(transport){var channel=this.getChannel(transport.responseXML);if(!channel){return null;}var results=this.getNodeValues(channel,this.resultValues);results.items=this.getItems(channel);if(results.title=="Error RSS"){this.error(results.description||"Search returned an RSS Error");for(var i=0;i<results.items.length;i++){this.error(results.items[i].title+": "+results.items[i].description);}return null;}return results;},getNodeValues:function(element,nodes){var getNodeVal=function(node,type){var value=(node.firstChild)?node.firstChild.nodeValue:"";value=value.strip();return type?type(value):value;};var results={};var entry;for(var name in nodes){if(nodes.hasOwnProperty(name)){entry=nodes[name];results[entry.name]=(entry.defaultValue!=undefined)?entry.defaultValue:null;}}if(element&&element.childNodes){var xml_nodes=element.childNodes;for(var i=0;i<xml_nodes.length;i++){entry=nodes[xml_nodes[i].nodeName];if(entry){try{results[entry.name]=getNodeVal(xml_nodes[i],entry.type);}catch(e){this.info("getNodeVal for "+entry.name+" failed: "+e.message);}}}}return results;},onFindFailure:function(){this.debug("Find failed!");}});ak.namespace("ak.maps2009.externalServices.jsonSearch");ak.maps2009.externalServices.jsonSearch.JsonSearchService=Class.create(ak.maps2009.externalServices.SearchService,{initialize:function($super,config){config=config||{};config.searcherUrl=config.searcherUrl;config.loggerId=config.loggerId||"JsonSearchService";config.callerId=config.callerId||"JsonSearchService";$super(config);this.headers.Accept="application/json, text/json";this.baseParams={};},onFindSuccess:function(transport){this.debug("typeof transport: "+typeof transport);if(!transport.responseText){return this.info("Response text is empty!");}this.debug("transport.responseText: "+transport.responseText);try{var results=transport.responseJSON;if(typeof results==="object"&&results!==null){if(results.errors){results.errors.each(function(msg){this.error(msg);}.bind(this));}if(results.warnings){results.warnings.each(function(msg){this.info(msg);}.bind(this));}}else{this.info("results is null or no object");}return results;}catch(e){this.error("Evaluating JSON failed",e);}}});ak.namespace("ak.maps2009.externalServices.companySearch");ak.maps2009.externalServices.companySearch.CompanySearchService=Class.create(ak.maps2009.externalServices.jsonSearch.JsonSearchService,{initialize:function($super,config){config=config||{};config.loggerId="CompanySearchService";config.callerId="CompanySearchService";$super(config);Object.extend(this.baseParams,{context:"branchenbuch"});},find:function($super,options,url){return $super(options,url||(this.url+"search/get_companies_by_word_for_rss_feed"));},findCompanyById:function($super,options,companyId){return this.find(options,this.url+"company_detail/company/"+companyId);},onFindSuccess:function($super,transport){var res=$super(transport);if(transport.status==204){return{totalResults:0,items:[]};}var results;if(res.bezahl_firma){results=this.mapMlmProperties(res.bezahl_firma);results.items=[this.mapCompany(res.bezahl_firma)];}else{if(res.firma){results=this.mapMlmProperties(res.firma);results.items=[this.mapCompany(res.firma)];}else{results=this.mapMlmProperties(res.companies);results.totalResults=res.companies["@totalResults"];results.items=[];res.companies.company.each(function(c){results.items.push(this.mapCompany(c));}.bind(this));}}var trackingService=this.getService("Tracking");if(trackingService){trackingService.trackMlmGroup("company",{t:results.mlmItemType,s:results.mlmSearchId,h:results.mlmServerId,p:results.mlmAffiliateId});}return results;},mapMlmProperties:function(entry){return{mlmItemType:entry["@mlmItemId"],mlmServerId:entry["@mlmServerId"],mlmSearchId:entry["@mlmSearchId"],mlmAffiliateId:"27"};},mapCompany:function(c){var company={title:c.firmen_name,companyId:c["@id"],distance:c.distance,isPremium:(c.product_type=="premium"),isPaid:Boolean(c.product_type.match("^bezahlt|premium$")),shortDescription:c.kurz_beschreibung,displayUrl:c.url,link:c.url,changeAllowed:c.change_profile_allowed,companyUrlName:c.company_url_name};if(c.booking_information){company.bookingUrl=c.booking_information.booking_url;company.livebookingUrl=c.booking_information.live_booking_url;}if(c.telefon){company.phone=c.telefon.vorwahl+" "+c.telefon.nummer;}if(c.fax){company.fax=c.fax.vorwahl+" "+c.fax.nummer;}if(c.address){company.city=c.address.plz+" "+c.address.ort,company.street=c.address.strasse+" "+c.address.hausnummer,company.longitude=c.address.longitude;company.latitude=c.address.latitude;company.kgsUrlName=c.address.orts_name_url;company.cityUrlName=c.address.orts_name_url;}return company;}});ak.namespace("ak.maps2009.externalServices.mapAdSearch");ak.maps2009.externalServices.mapAdSearch.MapAdSearchService=Class.create(ak.maps2009.externalServices.SearchService,{initialize:function($super,config){config=config||{};config.searcherUrl="rss/rss.php";config.loggerId="MapAdSearchService";config.callerId="MapAdSearchService";config.priority="low";$super(config);Object.extend(this.baseParams,{feed:"MapAdDefaultSearch",amount:1000,xCoord:0,yCoord:0,radiusX:0,radiusY:0});Object.extend(this.itemValues,{"akcom:categoryId":{name:"categoryId"},"akcom:city":{name:"city",defaultValue:""},"akcom:street":{name:"street",defaultValue:""},"akcom:phone":{name:"phone"},"akcom:fax":{name:"fax"},"akcom:distance":{name:"distance",type:parseFloat},"akcom:isPremium":{name:"isPremium",type:function(x){return Boolean(parseInt(x));}},"akcom:isPaid":{name:"isPaid",type:function(x){return Boolean(parseInt(x));}},"akcom:xCoord":{name:"longitude",type:parseFloat},"akcom:yCoord":{name:"latitude",type:parseFloat},"akcom:extendedX":{name:"extendedX",type:parseFloat},"akcom:extendedY":{name:"extendedY",type:parseFloat},"akcom:shortDescription":{name:"shortDescription",defaultValue:""},"akcom:eMail":{name:"eMail"},"akcom:logo":{name:"logo"},"akcom:displayUrl":{name:"displayUrl"},"akcom:partnerImage":{name:"partnerImage"},"akcom:partnerName":{name:"partnerName"},"akcom:partnerImageName":{name:"partnerImageName"},"akcom:partnerImageWidth":{name:"partnerImageWidth",type:parseInt},"akcom:partnerImageHeight":{name:"partnerImageHeight",type:parseInt},"akcom:changeAllowed":{name:"changeAllowed",type:function(x){return(x=="J");}},"akcom:amount":{name:"amount",type:parseInt}});}});ak.namespace("ak.maps2009.externalServices.townSearch");ak.maps2009.externalServices.townSearch.TownSearchService=Class.create(ak.maps2009.externalServices.SearchService,{initialize:function($super,config){config=config||{};config.searcherUrl="rss/rss.php";config.loggerId="TownSearchService";config.callerId="TownSearchService";config.priority="low";$super(config);this.baseParams.feed="ExtendedCitySearch";Object.extend(this.itemValues,{"meinestadt:regionKey":{name:"kgs"},"meinestadt:zipCode":{name:"zip"},"meinestadt:weather":{name:"weatherUrl"},"meinestadt:weatherTemp":{name:"weatherTemp",type:parseFloat},"meinestadt:cityCenterX":{name:"longitude",type:parseFloat},"meinestadt:cityCenterY":{name:"latitude",type:parseFloat},"meinestadt:mapX":{name:"mapX",type:parseInt},"meinestadt:mapY":{name:"mapY",type:parseInt},"meinestadt:einwohner":{name:"population"},"meinestadt:flaeche":{name:"area"},"meinestadt:kennzeichen":{name:"licenceTag"},"meinestadt:urlName":{name:"urlName"},"meinestadt:vorwahl":{name:"prefix",type:function(val){return val.split(", ");}},"meinestadt:hoehe":{name:"altitude"}});},find:function($super,options){options=options||{};options.onFailure=options.onFailure||Prototype.emptyFunction;if(!options.parameters){this.error("No parameters given!");return options.onFailure();}if(!options.parameters.latitude||!options.parameters.longitude){this.error("parameters.langitude or parameters.latitude undefined or null!");return options.onFailure();}var mapComponent=this.getComponent("Map");if(!mapComponent){this.error("Map Component not available!");return options.onFailure();}this.debug("reverseGeocoding with map");mapComponent.reverseGeocode(options.parameters.latitude,options.parameters.longitude,function(location){if(!location){this.debug("No location found!");return options.onFailure();}this.debug(options.parameters.latitude+", "+options.parameters.longitude+": "+Object.toJSON(location));if(location.state&&location.state!="Deutschland"){this.info("Not in Germany!");return options.onFailure();}options.parameters.zip=location.zip;options.parameters.city=location.name;$super(options);}.bind(this));},onFindSuccess:function($super,transport){var results=$super(transport);return results;}});ak.namespace("ak.maps2009.internalServices.ajax");Ajax.Request.prototype.success=function(){var status=this.getStatus();return status&&(status>=200&&status<300);};ak.maps2009.internalServices.ajax.ActivityResponder=Class.create(ak.maps2009.Logger,{initialize:function(activityVisualizerId){this.activityVisualizerId=activityVisualizerId;this.activities={};this.setLoggerId("ActivityResponder");},onCreate:function(request){this.debug("onCreate");var options=request.options;var activity=(options&&options.activity)?options.activity:this.activityVisualizerId;if(!this.activities[activity]){this.activities[activity]=1;}else{this.activities[activity]++;}$(activity).style.display="block";this.debug(this.activities[activity]+" active");},onComplete:function(request){this.debug("onComplete "+request.url);var options=request.options;var activity=(options&&options.activity)?options.activity:this.activityVisualizerId;this.activities[activity]--;if(this.activities[activity]<=0){$(activity).hide();}}});ak.maps2009.internalServices.ajax.TimeoutResponder=Class.create(ak.maps2009.Logger,{initialize:function(timeout,onTimeout){this.timeout=timeout;this.onTimeout=onTimeout;this.setLoggerId("TimeoutResponder");},onCreate:function(request){this.debug("onCreate");var options=request.options;var timeout=(options&&options.timeout)?options.timeout:this.timeout;var onTimeout=(options&&options.onTimeout)?options.onTimeout:this.onTimeout;var callInProgress=this._callInProgress;request.timer=window.setTimeout(function(){var abortType=typeof request.transport.abort;if(abortType=="function"||abortType=="object"||abortType=="unknown"){if(callInProgress(request.transport)){this.debug("Timeout of "+timeout+" ms exceeded, aborting request ...");try{request.transport.abort();if(onTimeout){onTimeout(request);}}catch(e){this.error("aborting requests that exceeded timeout failed",e);}}}}.bind(this),timeout);},onComplete:function(request){this.debug("onComplete: "+request.url);window.clearTimeout(request.timer);},_callInProgress:function(xhr){switch(xhr.readyState){case 1:case 2:case 3:return true;default:return false;}}});ak.maps2009.internalServices.ajax.QueueResponder=Class.create(ak.maps2009.Logger,{initialize:function(maxConcurrentRequests,maxConcurrentLowRequests,onOutdated){this.setLoggerId("QueueResponder");this.maxConcurrentRequests=maxConcurrentRequests;this.maxConcurrentLowRequests=(maxConcurrentLowRequests&&maxConcurrentLowRequests<maxConcurrentRequests)?maxConcurrentLowRequests:this.maxConcurrentRequests-1;this.queuedRequests={high:new ak.utils.Queue(),low:new ak.utils.Queue()};this.activeLowRequestCount=0;this.namedActiveRequests={};this.onOutdated=onOutdated||Prototype.emptyFunction;},maximumReached:function(priority){priority=priority||"high";if(priority=="high"){return Ajax.activeRequestCount>=this.maxConcurrentRequests;}return this.activeLowRequestCount>=this.maxConcurrentLowRequests;},enqueue:function(request){if(request.options){this.abortPreviousRequests(request.options.caller);this.deletePreviousRequests(request.options.caller);if(request.options.priority=="low"){this.queuedRequests.low.enqueue(request);return;}}this.queuedRequests.high.enqueue(request);},deletePreviousRequests:function(caller){if(!caller){return;}this.queuedRequests.high.removeAll(function(request){return(request.options&&request.options.caller==caller);});},abortPreviousRequests:function(caller){if(!caller){return;}var request=this.namedActiveRequests[caller];if(request){var options=request.options||{};var onOutdated=options.onOutdated||this.onOutdated;options.onFailure=Prototype.emptyFunction;try{request.transport.abort();onOutdated(request);}catch(e){this.error("aborting previous requests failed",e);}}},getQueuedRequests:function(priority){if(priority){return this.queuedRequests[priority]?this.queuedRequests[priority].toArray():[];}return this.queuedRequests.high.toArray().concat(this.queuedRequests.low.toArray());},onComplete:function(request){this.debug("onComplete, active requests: "+Ajax.activeRequestCount);if(request.options){if(request.options.caller){this.namedActiveRequests[request.options.caller]=undefined;}if(request.options.priority=="low"){this.activeLowRequestCount--;}}if(Ajax.activeRequestCount<this.maxConcurrentRequests){var newRequest=(this.queuedRequests.high.isEmpty()&&this.activeLowRequestCount<this.maxConcurrentLowRequests)?this.queuedRequests.low.dequeue():this.queuedRequests.high.dequeue();if(newRequest){if(newRequest.type=="request"){return new Ajax.Request(newRequest.url,newRequest.options);}else{return new Ajax.Updater(newRequest.container,newRequest.url,newRequest.options);}}}},onCreate:function(request){this.debug("onCreate, active requests: "+Ajax.activeRequestCount);if(request.options){if(request.options.priority=="low"){this.activeLowRequestCount++;}if(request.options.caller){this.abortPreviousRequests(request.options.caller);this.namedActiveRequests[request.options.caller]=request;}}}});ak.maps2009.internalServices.ajax.AjaxService=Class.create(ak.maps2009.Logger,{initialize:function(options){ak.maps2009.internalServices.ajax.AjaxService.responders.each(function(responder){Ajax.Responders.unregister(responder);});this.setLoggerId("AjaxService");options=options||{};if(options.timeout){this.timeoutResponder=new ak.maps2009.internalServices.ajax.TimeoutResponder(options.timeout,options.onTimeout);}else{this.timeoutResponder=options.timeoutResponder;}if(this.timeoutResponder){Ajax.Responders.register(this.timeoutResponder);ak.maps2009.internalServices.ajax.AjaxService.responders.push(this.timeoutResponder);}if(options.activityVisualizerId){this.activityResponder=new ak.maps2009.internalServices.ajax.ActivityResponder(options.activityVisualizerId);}else{this.activityResponder=options.activityResponder;}if(this.activityResponder){Ajax.Responders.register(this.activityResponder);ak.maps2009.internalServices.ajax.AjaxService.responders.push(this.activityResponder);}if(options.maxConcurrentRequests){this.queueResponder=new ak.maps2009.internalServices.ajax.QueueResponder(options.maxConcurrentRequests,options.maxConcurrentLowRequests,options.onOutdated);}else{this.queueResponder=options.queueResponder;}if(this.queueResponder){Ajax.Responders.register(this.queueResponder);ak.maps2009.internalServices.ajax.AjaxService.responders.push(this.queueResponder);}if(options.errorCallback){Ajax.Responders.register({onFailure:options.errorCallback});}},queuedRequests:function(priority){return(this.queueResponder)?this.queueResponder.getQueuedRequests(priority):[];},request:function(url,options){options=options||{};if(this.queueResponder&&this.queueResponder.maximumReached(options.priority)){this.queueResponder.enqueue({type:"request",url:url,options:options});}else{return new Ajax.Request(url,options);}},update:function(container,url,options){options=options||{};if(this.queueResponder&&this.queueResponder.maximumReached(options.priority)){this.queueResponder.enqueue({type:"update",container:container,url:url,options:options});return null;}else{return new Ajax.Updater(container,url,options);}}});ak.maps2009.internalServices.ajax.AjaxService.responders=[];ak.namespace("ak.maps2009.internalServices.logging");ak.maps2009.internalServices.logging.LoggingService=Class.create({ERROR_LEVEL:0,INFO_LEVEL:1,DEBUG_LEVEL:2,levelMap:{error:0,info:1,debug:2},initialize:function(options){options=options||{};this.bufferSize=options.bufferSize||200;this.buffer=new ak.utils.RingBuffer(this.bufferSize);this.setLevel(options.level||this.ERROR_LEVEL);this.stackTraceFunc=Prototype.emptyFunction;this.levels={};var levels=options.levels;if(levels){for(var loggerID in levels){this.setLevel(levels[loggerID],loggerID);}}if(options.externalConsole){this.console=null;try{var target=options.console||"consoleWindow";var consoleUrl=options.consoleUrl||"console.html";this.externalWindow=window.open(consoleUrl,target,"dependent=yes,width=800,height=400,left=10,top=10,resizable=yes,scrollbars=yes");Event.observe(window,"unload",function(){if(this.externalWindow){this.externalWindow.close();}}.bind(this));}catch(e){alert("Creating Console Window failed: "+e.message);}}else{this.console=$(options.console)||$("console");}},externalConsoleLoaded:function(){var consoleDocument=this.externalWindow.document;this.console=consoleDocument.getElementsByTagName("body")[0];this.flushMessages();},externalConsoleClosed:function(){this.console=null;},setLevel:function(level,loggerID){if(Object.isString(level)){level=this.levelMap[level]||this.ERROR_LEVEL;}if(level>=this.ERROR_LEVEL&&level<=this.DEBUG_LEVEL){if(loggerID){this.levels[loggerID]=level;}else{this.defaultLevel=level;}}},getLevel:function(loggerID){var level;if(loggerID){level=this.levels[loggerID];}if(Object.isUndefined(level)){level=this.defaultLevel;}return level;},debug:function(loggerID,message){var entry={level:this.DEBUG_LEVEL,loggerID:loggerID,levelName:"debug",time:new Date(),message:message};this._log(entry);},info:function(loggerID,message){var entry={level:this.INFO_LEVEL,loggerID:loggerID,levelName:"info",time:new Date(),message:message};this._log(entry);},error:function(loggerID,message,exception){if(typeof exception=="object"){message+="\n"+exception.name+": "+exception.message+" ("+exception.fileName+":"+exception.lineNumber+")";if(typeof exception.stack=="string"){message+="\n\n"+exception.stack;}}var entry={level:this.ERROR_LEVEL,loggerID:loggerID,levelName:"error",time:new Date(),message:message};this._log(entry);},trace:function(loggerID,message){var stackTrace=this.stackTraceFunc();this.debug(loggerID,message+", stack trace:");var print=this._print.bind(this);var level=this.DEBUG_LEVEL;stackTrace.each(function(line,index){if(index>0){print(line,level);}});},flushMessages:function(){var log=this._log.bind(this);this.buffer.toArray().each(log);},getAllMessages:function(){return this.buffer.toArray();},getStackTraceFunction:function(){var mode;try{(0)();}catch(e){mode=e.stack?"Firefox":window.opera?"Opera":"Other";}switch(mode){case"Firefox":return function(){try{(0)();}catch(e){return e.stack.replace(/^.*?\n/,"").replace(/(?:\n@:0)?\s+$/m,"").replace(/^\(/gm,"{anonymous}(").split("\n");}};case"Opera":return function(){try{(0)();}catch(e){var lines=e.message.split("\n"),ANON="{anonymous}",lineRE=/Line\s+(\d+).*?in\s+(http\S+)(?:.*?in\s+function\s+(\S+))?/i,i,j,len;for(i=4,j=0,len=lines.length;i<len;i+=2){if(lineRE.test(lines[i])){lines[j++]=(RegExp.$3?RegExp.$3+"()@"+RegExp.$2+RegExp.$1:ANON+RegExp.$2+":"+RegExp.$1)+" -- "+lines[i+1].replace(/^\s+/,"");}}lines.splice(j,lines.length-j);return lines;}};default:return function(){var curr=arguments.callee.caller,FUNC="function",ANON="{anonymous}",fnRE=/function\s*([\w\-$]+)?\s*\(/i,stack=[],j=0,fn,args,i;while(curr){fn=fnRE.test(curr.toString())?RegExp.$1||ANON:ANON;args=stack.slice.call(curr.arguments);i=args.length;while(i--){switch(typeof args[i]){case"string":args[i]='"'+args[i].replace(/"/g,'\\"')+'"';break;case"function":args[i]=FUNC;break;}}stack[j++]=fn+"("+args.join()+")";curr=curr.caller;}return stack;};}},_log:function(entry){var loggerID=entry.loggerID;var level=this.getLevel(loggerID);if(level>=entry.level){this.buffer.append(entry);pad=function(number,length,paddingChar){var string=number.toString();while(string.length<length){string=paddingChar+string;}return string;};var time=entry.time;time=pad(time.getHours(),2,"0")+":"+pad(time.getMinutes(),2,"0")+":"+pad(time.getSeconds(),2,"0")+"."+pad(time.getMilliseconds(),3,"0");var message=entry.levelName+" - "+loggerID+" - "+time+" - "+entry.message;this._print(message,entry.level);}},_print:function(message,level){if(this.console){try{this.console.innerHTML+="<code>"+message+"</code><br >";}catch(e){}}try{if(console){if(level==this.DEBUG_LEVEL&&console.debug){console.debug(message);}else{if(level==this.INFO_LEVEL&&console.info){console.info(message);}else{if(level==this.ERROR_LEVEL&&console.error){console.error(message);}}}}}catch(e){}}});ak.namespace("ak.maps2009.internalServices.logging");ak.maps2009.internalServices.logging.MockLoggingService=Class.create({ERROR_LEVEL:0,INFO_LEVEL:1,DEBUG_LEVEL:2,initialize:function(){},setLevel:function(){},debug:function(){},info:function(){},error:function(){},trace:function(){},flushMessages:function(){},getAllMessages:function(){return[];}});ak.namespace("ak.maps2009.internalServices.mediator");ak.maps2009.internalServices.mediator.BaseMediatorService=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.setLoggerId("BaseMediatorService");this.townSearch=new ak.maps2009.utils.search.TownSearch();this.stopWatch=new ak.utils.StopWatch();},mapZoomed:function(zoomLevel){},mapPanned:function(centerX,centerY){this.getService("Mediator").triggerTownSearch(centerY,centerX);},viewRectChanged:function(viewRect){this.debug("viewRectChanged");},searchRectEquals:function(rect1,rect2){return(rect1&&rect1&&rect1.centerX==rect2.centerX&&rect1.centerY==rect2.centerY&&rect1.radiusX==rect2.radiusX&&rect1.radiusY==rect2.radiusY);},mapStyleChanged:function(style){this.debug("mapStyleChanged");this.triggerLinkTracking({mapStyle:style});this.reloadPITracking({eventName:"mapStyle",omniture:false,xiti:false});},shapeHovered:function(shapeId){return true;},shapeLeft:function(shapeId){return true;},shapeLeftClicked:function(shapeId){this.debug("shapeLeftClicked "+shapeId);var poi=this.getPoiByShapeId(shapeId);if(poi){if(poi.showInfobox()){this.getComponent("Map").showInfoBox(poi);}else{if(poi.isClusterPoi()){this.getComponent("Map").zoomIn({x:poi.getData().longitude,y:poi.getData().latitude});}}this.triggerLinkTracking({result:poi.getTrackingName(),detail:"Karte-Klick"});return true;}this.debug("Shape "+shapeId+" has been clicked but isn't a POI!");return false;},getPoiByShapeId:function(shapeId){return(this.currentTown&&this.currentTown.shape.GetID()==shapeId)?this.currentTown:null;},poiCloseLinkClicked:function(poi){this.getComponent("Map").hideInfoBox(poi);if(poi.isClustered()){this.getComponent("Map").showInfoBox(poi.getClusterPoi());}},triggerTownSearch:function(latitude,longitude){this.debug("triggerTownSearch("+latitude+", "+longitude+")");this.townSearch.update({latitude:latitude,longitude:longitude},{onSuccess:function(results){var currentTown=results.getPoiByIndex(0);if(currentTown){this.currentTown=currentTown;this.getComponent("TownSign").showSign(this.currentTown.getData());this.getComponent("Map").showPoiList(results);}}.bind(this)});},getCurrentTown:function(){return this.currentTown;},logProfilingData:function(){if(this.isDebugEnabled()){this.debug("profiling for SearchService:");var laps=this.stopWatch.getAllLaps();laps.each(function(lap){this.debug(lap.name+" needed "+lap.duration+" ms");},this);}},reloadPITracking:function(e){if(e.eventName){var trackingService=this.getService("Tracking");if(trackingService){trackingService.reloadPITracking(e);}}else{this.error("no tracking-event defined");}},triggerLinkTracking:function(event){var trackingService=this.getService("Tracking");if(trackingService){trackingService.triggerLinkTracking(event);}},birdseyeEntered:function(){this.debug("birdseyeEntered");this.setSearchType("address");},birdseyeLeft:function(){this.debug("birdseyeLeft");},setRouteSearchInput:function(searchInput){this.setSearchType("route");this.getComponent("RouteSearch").setSearchInput(searchInput);}});ak.maps2009.internalServices.mediator.MainMediatorService=Class.create(ak.maps2009.internalServices.mediator.BaseMediatorService,{initialize:function($super,options){options=options||{};$super(options);this.setLoggerId("MainMediatorService");this.mapAdSearch={};this.fotoSearch=new ak.maps2009.utils.search.FotoSearch();this.categorySearch={};this.leftAdVisible=true;this.mapAdDefaultZoom=!(options.mapAdDefaultZoom===false);this.searches={address:new ak.maps2009.utils.search.AddressSearch(),company:new ak.maps2009.utils.search.CompanySearch(),route:new ak.maps2009.utils.search.RouteSearch()};this.searchType=options.searchType||"address";this.printLink=$("ak-print-link");},setSearchType:function(searchType){if(this.searchType===searchType){return;}if(!this.searches[searchType]){return this.error("setSearchType: unknown state '"+searchType+"'!");}if(this.searchType!==null){this.getSearchList().hide();}this.searchType=searchType;this.getSearchList().show();var searchPanel=this.getComponent("SearchPanel");if(searchPanel){if(searchType=="route"){searchPanel.changeTab("route");}else{searchPanel.changeTab("search");this.getComponent("SearchTab").changeTab(searchType);}}else{this.info("no SearchPanel found");}var searchComponent=this.getSearchComponent();if(searchComponent){searchComponent.focus();}},getSearchList:function(type){type=type||this.searchType;var name=type.capitalize()+"List";var list=this.getComponent(name);if(!list){this.info("Missing search list "+name);}return list;},getSearchComponent:function(){return this.getComponent(this.searchType.capitalize()+"Search");},getSearchType:function(){return this.searchType;},getSearch:function(type){type=type||this.getSearchType();if(!type){return null;}return this.searches[type];},getVisibleSearchResults:function(type){this.debug("getVisibleSearchResults("+type+")");if(type==="route"){return null;}var search=this.searches[type];if(!search){return null;}if(type==="company"){var results=search.getSelectedPois(this.getComponent("CompanyList").getVisiblePois());var data=results.invoke("getData");return new ak.maps2009.utils.poi.PoiCollection(data,"company");}return search.getResults();},getSearchResults:function(type){var search=this.searches[type];if(search){return search.getResults();}},getLastSearchInput:function(type){type=type||this.searchType;var search=this.searches[type];if(search){return search.lastInput;}},searchSubmitted:function(searchInput,type){this.setSearchType(type);if(type=="route"&&!(searchInput.start&&searchInput.end)){alert("Bitte geben Sie Start- und Zieladresse ein");return;}this.triggerSearch(searchInput,type,true);},trackSearch:function(searchInput,type,numResults){var trackingEvent={eventName:type,searchWords:searchInput.company||searchInput.address,start:searchInput.start,end:searchInput.end,opt:searchInput.optimize,link:{search:type,detail:"Klick"},page:numResults?1:0};this.reloadPITracking(trackingEvent);},formSubmitted:function(searchInput,formName){this.debug("formSubmitted "+formName);this.deleteSearchResults();this.searchSubmitted(searchInput,this.searchType);},tabClicked:function(name){this.debug("tabClicked("+name+")");var searchType=(name=="search")?this.getComponent("SearchTab").getActiveTab():name;this.setSearchType(searchType);this.triggerLinkTracking({search:searchType,detail:"Tab-Klick"});},mapZoomed:function($super,zoomLevel){this.debug("mapZoomed "+zoomLevel);$super(zoomLevel);this.getComponent("CompanySearch").zoomLevelChanged(zoomLevel);if(zoomLevel>13){if(this.mapAdDefaultZoom){this.checkCategories("mapAd");}}else{if(this.mapAdDefaultZoom){this.uncheckCategories("mapAd");}}},viewRectChanged:function($super,viewRect){this.debug("viewRectChanged");if(this.getComponent("Map").isBirdseye()){return;}if(this.searchType==="company"&&!(this.searches.company.isStaticMode())){this.triggerSearch({searchRect:viewRect},this.searchType);}var tileService=this.getService("Tile");if(tileService.updateTile(viewRect)){var searchRect=tileService.getSearchRect();this.info("tile changed "+Object.toJSON(searchRect));var categoryList=this.getComponent("CategoryList");var categories=categoryList.getCheckedCategories();categories.each(function(category){this.triggerCategorySearch(searchRect,category);}.bind(this));if(categoryList.singlePoiType){this.triggerCategorySearch(searchRect,categoryList.singlePoiType,categoryList.singlePoi);}categories=this.getComponent("MapAdList").getCheckedCategories();categories.each(function(category){this.triggerMapAdSearch(searchRect,category);}.bind(this));var mode=this.getComponent("FotoList").getMode();if(mode){this.triggerFotoSearch({searchRect:searchRect,mode:mode});}}},shapeHovered:function(shapeId){var poi=this.searches.company.getPoiByShapeId(shapeId);if(!poi){return false;}this.getComponent("CompanyList").highlightPoi(poi);return true;},shapeLeft:function(shapeId){var poi=this.searches.company.getPoiByShapeId(shapeId);if(!poi){return false;}this.getComponent("CompanyList").undoHighlightPoi(poi);return true;},showCategories:function(type,categories){var listName=(type=="category")?"CategoryList":"MapAdList";categories=categories||this.getComponent(listName).getCheckedCategories();this.debug("showCategories "+Object.toJSON(categories));categories.each(function(type,id){var search=(type=="mapAd")?this.mapAdSearch[id]:this.categorySearch[id];var pois=(search)?search.getResults():undefined;if(pois){this.getComponent("Map").showPoiList(pois);}}.bind(this,type));},hideCategories:function(type,categories){var listName=(type=="category")?"CategoryList":"MapAdList";categories=categories||this.getComponent(listName).getCheckedCategories();categories.each(function(type,id){var search=(type=="mapAd")?this.mapAdSearch[id]:this.categorySearch[id];var pois=(search)?search.getResults():undefined;if(pois){this.getComponent("Map").clearLayer(pois.getLayerId());}}.bind(this,type));},uncheckCategories:function(type){this.debug("uncheckCategories "+type);this.hideCategories(type);var listName=(type=="category")?"CategoryList":"MapAdList";this.getComponent(listName).setCheckboxValues(false);},checkCategories:function(type){this.debug("checkCategories "+type);var listName=(type=="category")?"CategoryList":"MapAdList";this.getComponent(listName).setCheckboxValues(true);this.showCategories(type);},disableCategories:function(){this.debug("disableCategories");this.hideCategories("category");this.getComponent("CategoryList").disableCheckboxes();},enableCategories:function(){this.getComponent("CategoryList").enableCheckboxes();this.showCategories("category");},showCategoryList:function(){this.getComponent("CategoryList").show();this.showCategories("category");},hideCategoryList:function(){this.debug("disableCategories");this.hideCategories("category");this.getComponent("CategoryList").hide();},disableMapAds:function(){this.debug("disableMapAds");this.hideCategories("mapAd");this.getComponent("MapAdList").disableCheckboxes();},enableMapAds:function(){this.debug("enableMapAds");this.getComponent("MapAdList").enableCheckboxes();this.showCategories("mapAd");},hideMapAdList:function(){this.hideCategories("mapAd");this.getComponent("MapAdList").hide();},showMapAdList:function(){this.getComponent("MapAdList").show();this.showCategories("mapAd");},disableFotos:function(){this.debug("disableFotos");this.getComponent("Map").clearLayer(this.fotoSearch.poiLayer);this.getComponent("FotoList").disableCheckboxes();},enableFotos:function(){this.debug("enableFotos");var results=this.fotoSearch.getResults();if(results){this.getComponent("Map").showPoiList(results);}this.getComponent("FotoList").enableCheckboxes();},hideFotoList:function(){this.getComponent("Map").clearLayer(this.fotoSearch.poiLayer);this.getComponent("FotoList").hide();},showFotoList:function(){var results=this.fotoSearch.getResults();if(results){this.getComponent("Map").showPoiList(results);}this.getComponent("FotoList").show();},companyZoomLinkClicked:function(zoomLevel){this.getComponent("Map").setZoomLevel(zoomLevel,"companyListLink");},clusterPoiItemClicked:function(poi){this.triggerLinkTracking({result:poi.getTrackingName(),detail:"Karte-Klick"});this.getComponent("Map").showInfoBox(poi);},clusterPoiLoupeClicked:function(clusterPoi){this.debug("clusterPoiLoupeClicked");this.triggerLinkTracking({result:clusterPoi.getTrackingName(),detail:"Infobox-Lupe-Klick"});var pois=clusterPoi.getItems();var points=[];pois.each(function(poi){var data=poi.getData();points.push({y:data.latitude,x:data.longitude});});this.getComponent("Map").setMapView(points);},detailPoiLoupeClicked:function(poi){this.info("detailPoiLoupeClicked");this.triggerLinkTracking({result:poi.getTrackingName(),detail:"Infobox-Lupe-Klick"});this.getComponent("Map").hideInfoBox(poi);this.getComponent("Map").setCenterAndZoom(poi.getData().longitude,poi.getData().latitude,Math.max(16,Math.min(this.getComponent("Map").getZoomLevel()+1,19)));},categoryListInitialized:function(checkedCategories){this.info("categoryListInitialized");if(this.getComponent("Map").initialized){var searchRect=this.getService("Tile").getSearchRect();checkedCategories.each(function(category){this.triggerCategorySearch(searchRect,category);}.bind(this));var categoryList=this.getComponent("CategoryList");if(categoryList.singlePoiType){this.triggerCategorySearch(searchRect,categoryList.singlePoiType,categoryList.singlePoi);}}},categoryClicked:function(categoryId,value){this.info("categoryClicked("+categoryId+", "+value+")");if(value){var searchRect=this.getService("Tile").getSearchRect();var triggered=this.triggerCategorySearch(searchRect,categoryId);if(!triggered){this.getComponent("Map").showPoiList(this.categorySearch[categoryId].getResults());}}else{if(this.categorySearch[categoryId]){this.getComponent("Map").clearLayer(this.categorySearch[categoryId].poiLayer);}}},mapAdLinkClicked:function(categoryId){this.info("mapAdLinkClicked "+categoryId);var categories=this.getComponent("MapAdList").getCategoryIds();categories.each(function(cat){var checked=(cat==categoryId);this.getComponent("MapAdList").setCheckboxValue(cat,checked);if(!checked){this.mapAdValueChanged(checked,cat);}}.bind(this));var searchRect=this.getComponent("Map").getCurrentViewRect();this.getService("MapAdSearch").find({parameters:{xCoord:searchRect.centerX,yCoord:searchRect.centerY,radiusX:searchRect.radiusX,radiusY:searchRect.radiusY,extend:1,category:categoryId},onSuccess:this.handleNextMapAdResult.bind(this),onFailure:this.handleNextMapAdFailure.bind(this)});this.mapAdDefaultZoom=false;},mapAdValueChanged:function(categoryId,value){this.info("mapAdValueChanged("+value+", "+categoryId+")");this.mapAdDefaultZoom=false;if(value){var triggered=this.triggerMapAdSearch(this.getService("Tile").getSearchRect(),categoryId);if(!triggered){this.getComponent("Map").showPoiList(this.mapAdSearch[categoryId].getResults());}}else{if(this.mapAdSearch[categoryId]){this.getComponent("Map").clearLayer(this.mapAdSearch[categoryId].poiLayer);}}},fotoListValueChanged:function(value,mode){this.info("fotoListValueChanged("+value+", "+mode+")");if(mode){var triggered=this.triggerFotoSearch({searchRect:this.getService("Tile").getSearchRect(),mode:mode});if(!triggered){this.getComponent("Map").showPoiList(this.fotoSearch.getResults());}}else{this.getComponent("Map").clearLayer(this.fotoSearch.poiLayer);}},hitListItemHovered:function(index){var poi=this.searches[this.searchType].getPoiByIndex(index);if(!poi){this.info("Company list item "+index+" has been hovered but doesn't exist!");return;}this.getSearchList().highlightPoi(poi);this.getComponent("Map").heightenPoi(poi);},hitListItemLeft:function(index){var poi=this.searches[this.searchType].getPoiByIndex(index);if(!poi){return;}this.getSearchList().undoHighlightPoi(poi);this.getComponent("Map").rescalePoi(poi);},hitListItemLeftClicked:function(index){this.triggerLinkTracking({result:this.searchType,detail:"Liste-Klick"});var poi=this.searches[this.searchType].getPoiByIndex(index);if(!poi){return this.error("Company list item "+index+" has been hovered but doesn't exist!");}this.getComponent("Map").showInfoBox(poi);this.getService("Tracking").trackMlmAction({groupId:"company",mlmActionId:27,items:[poi.getData().companyId]});},hitListPageClicked:function(index){var search=this.searches[this.searchType];this.triggerLinkTracking({result:this.searchType,detail:"Blaettern-Klick",page:index,searchWords:search.lastInput.company||search.lastInput.companyId,link:{search:this.searchType}});var indices=this.getSearchList().showPage(index,this.searches[this.searchType].results);this.getComponent("Map").showPoiList(search.results,search.poiLayer,indices);},triggerFotoSearch:function(input){this.debug("triggerFotoSearch "+Object.toJSON(input));return this.fotoSearch.update(input,{onSuccess:function(results){this.getComponent("Map").showPoiList(results);}.bind(this)});},triggerMapAdSearch:function(searchRect,category){this.debug("triggerMapAdSearch "+Object.toJSON(searchRect)+" "+category);if(typeof this.mapAdSearch[category]==="undefined"){this.mapAdSearch[category]=new ak.maps2009.utils.search.MapAdSearch({poiLayer:"mapAd"+category});}return this.mapAdSearch[category].update({searchRect:searchRect,category:category},{onSuccess:function(results){this.getComponent("Map").showPoiList(results);}.bind(this),onFailure:function(){this.error("An error occured during map ad search");}.bind(this)});},handleNextMapAdResult:function(result){var mapComponent=this.getComponent("Map");var center=mapComponent.getCenter();mapComponent.setMapView([{x:center.x-result.extendedX,y:center.y-result.extendedY},{x:center.x+result.extendedX,y:center.y+result.extendedY}]);},handleNextMapAdFailure:function(){this.debug("handleNextMapAdFailure");},triggerCategorySearch:function(searchRect,category,poi){this.categorySearch[category]=this.categorySearch[category]||new ak.maps2009.utils.search.CategorySearch({poiLayer:"category"+category});var search=this.categorySearch[category];var triggered=search.update({searchRect:searchRect,category:category,poi:poi},{onSuccess:function(results){try{this.getComponent("Map").showPoiList(results);}catch(e){this.error("triggerCategorySearch: showPoiList failed",e);}}.bind(this)});if(!triggered&&!search.isWaiting()){this.getComponent("Map").showPoiList(search.getResults());}},triggerSearch:function(searchInput,type,trackSearch){this.debug("triggerSearch "+Object.toJSON(searchInput));type=type||this.searchType;if(type!=="address"&&this.getComponent("Map").isBirdseye()){return;}var listComponent=this.getSearchList();listComponent.show();var search=this.searches[type];var called=false;if(type!=="address"&&type!=="route"&&!searchInput.searchRect){searchInput.searchRect=this.getComponent("Map").getCurrentViewRect();}var triggered=search.update(searchInput,{onSuccess:function(results){called=true;this.getComponent("Map").clearLayer(search.poiLayer);if(trackSearch){this.trackSearch(searchInput,type,results.size());}listComponent.showProgress();this.handleSearchResults(this.searchType,results);}.bind(this),onFailure:function(){called=true;this.getComponent("Map").clearLayer(search.poiLayer);if(trackSearch){this.trackSearch(searchInput,type,0);}listComponent.showError();}.bind(this)});if(triggered){this.hideLeftAd();if(!called){this.getComponent("Map").clearLayer(search.poiLayer);listComponent.showProgress();}}return triggered;},handleSearchResults:function(type,results){this.debug("handleSearchResults "+type);var search=this.searches[type];var listComponent=this.getSearchList(type);if(type==="address"){if(!search.lastInput||search.lastInput.setBestMapView!==false){var newCenter=this.getComponent("Map").getCenter();this.triggerTownSearch(newCenter.y,newCenter.x);}var poi=results.getPoiByIndex(0);this.getComponent("Map").showPoiList(results,results.getLayerId());this.getComponent("Map").showInfoBox(poi);listComponent.update(poi);}else{if(type==="route"){listComponent.update(results);if(search.lastInput.setBestMapView!==false){newCenter=this.getComponent("Map").getCenter();this.triggerTownSearch(newCenter.y,newCenter.x);}var searchComponent=this.getComponent("RouteSearch");if(searchComponent){searchComponent.setSearchInput(search.lastInput);}}else{var indices=listComponent.update(results);this.getComponent("Map").showPoiList(results,search.poiLayer,indices);}}},deleteSearchResults:function(type,clearSearchInput){this.debug("deleteSearchResults "+type+" "+clearSearchInput);type=type||this.searchType;var search=this.getSearch(type);if(type=="route"){this.getComponent("Map").clearRoute();}else{this.getComponent("Map").clearLayer(search.poiLayer);}this.getSearchList(type).clear();search.clear();if(clearSearchInput){var searchComponent=this.getSearchComponent(type);if(searchComponent){searchComponent.clearSearchInput();}}},showLeftAd:function(){this.debug("Show left Ad");this.leftAdVisible=true;this.getComponent("LeftAd").showAd();},hideLeftAd:function(){if(this.leftAdVisible){this.debug("Hide left Ad");this.leftAdVisible=false;this.getComponent("LeftAd").hideAd();}},reloadLeftAd:function(){this.debug("Reload left Ad");this.leftAdVisible=true;this.getComponent("LeftAd").reloadAd();},resizeLeftCol:function(){var bodyHeight=document.viewport.getHeight();var headerHeight=$("akmap-header").getHeight();var mapDivHeight=bodyHeight-headerHeight-2;var adDiv=$("adDiv");var adDivHeight=adDiv.getHeight();var adDivDisplay=adDiv.getStyle("display");if(adDivDisplay=="none"){adDivHeight=0;}this.info("adDivHeight: "+adDivHeight);var searchTabHeight=$("aksearchTabs").getHeight();this.info("searchTabHeight: "+searchTabHeight);var leftColumn=$("lcolBottom");var ieHack=0;if(navigator.appName.indexOf("Explorer")!=-1){ieHack=20;}var leftColumnHeight=mapDivHeight-searchTabHeight-10-adDivHeight;this.info("bodyHeight: "+bodyHeight);this.info("mapDivHeight: "+mapDivHeight);this.info("leftColHeight: "+leftColumnHeight);leftColumn.setStyle({height:leftColumnHeight+"px"});},getPoiByShapeId:function($super,shapeId){var poi=$super(shapeId)||this.searches.address.getPoiByShapeId(shapeId)||this.searches.company.getPoiByShapeId(shapeId)||this.searches.route.getPoiByShapeId(shapeId)||this.fotoSearch.getPoiByShapeId(shapeId);if(poi){return poi;}for(var name in this.mapAdSearch){var search=this.mapAdSearch[name];poi=search.getPoiByShapeId(shapeId);if(poi){return poi;}}for(var name in this.categorySearch){var search=this.categorySearch[name];poi=search.getPoiByShapeId(shapeId);if(poi){return poi;}}},birdseyeEntered:function($super){$super();this.disablePrintLink();this.getComponent("SearchPanel").disableTab("route");this.getComponent("SearchTab").disableTab("company");this.deleteSearchResults("company");this.hideMapAdList();this.hideCategoryList();this.hideFotoList();},birdseyeLeft:function($super){$super();this.enablePrintLink();this.getComponent("SearchPanel").enableTab("route");this.getComponent("SearchTab").enableTab("company");this.showMapAdList();this.showCategoryList();this.showFotoList();},enablePrintLink:function(){this.printLink.href="javascript:app.print();";this.printLink.removeClassName("disabled");},disablePrintLink:function(){this.printLink.href="javascript:void(0);";this.printLink.addClassName("disabled");},goToLastFoundAddress:function(){this.debug("goToLastFoundAddress");var lastInput=this.getLastSearchInput("address");if(lastInput&&lastInput.longitude&&lastInput.latitude){this.getComponent("Map").setCenterAndZoom(lastInput.longitude,lastInput.latitude);}}});ak.namespace("ak.maps2009.internalServices.mediator");ak.maps2009.internalServices.mediator.PrintMediatorService=Class.create(ak.maps2009.internalServices.mediator.MainMediatorService,{initialize:function($super,options){options=options||{};$super(options);this.setLoggerId("PrintMediatorService");},viewRectChanged:function($super,viewRect){},mapZoomed:function(zoomLevel){},mapPanned:function(centerX,centerY){this.getService("Mediator").triggerTownSearch(centerY,centerX);},triggerTownSearch:function(latitude,longitude){this.debug("triggerTownSearch");this.townSearch.update({latitude:latitude,longitude:longitude},{onSuccess:function(results){var currentTown=this.getCurrentTown();this.getComponent("TownSign").showSign(currentTown.getData());}.bind(this)});},hitListPageClicked:function(index){},hitListItemHovered:function(index){},hitListItemLeft:function(index){},hitListItemLeftClicked:function(index){},hideLeftAd:function(){}});ak.namespace("ak.maps2009.internalServices.tile");ak.maps2009.internalServices.tile.TileService=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.setLoggerId("TileService");this.currentTile=null;this.tileWidth=0;this.tileHeight=0;},getCurrentTile:function(){return this.currentTile;},normalize:function(value){return parseFloat((value*0.00001).toFixed(3));},updateTile:function(viewRect){viewRect={centerX:Math.round(viewRect.centerX*100000),centerY:Math.round(viewRect.centerY*100000),radiusX:Math.round(viewRect.radiusX*100000),radiusY:Math.round(viewRect.radiusY*100000)};this.debug("updateTile "+Object.toJSON(viewRect));if(this.currentTile===null){var centerChanged=true;var sizeChanged=true;this.tileWidth=Math.min(viewRect.radiusX*2,1050000);this.tileHeight=Math.min(viewRect.radiusY*2,850000);this.currentTile={minX:Math.max(Math.min(viewRect.centerX-Math.round(this.tileWidth*0.5),1550000),500000),maxX:Math.max(Math.min(viewRect.centerX+Math.round(this.tileWidth*0.5),1550000),500000),minY:Math.max(Math.min(viewRect.centerY-Math.round(this.tileHeight*0.5),5550000),4700000),maxY:Math.max(Math.min(viewRect.centerY+Math.round(this.tileHeight*0.5),5550000),4700000)};this.debug("initialized current tile: "+Object.toJSON(this.currentTile));}else{var sizeChanged=this.updateTileSize(viewRect.radiusX,viewRect.radiusY);if(sizeChanged){this.debug("tile size changed");}var centerChanged=this.updateTileCenter(viewRect.centerX,viewRect.centerY);if(centerChanged){this.debug("tile center changed");}}return(sizeChanged||centerChanged);},getSearchRect:function(){var centerX=Math.max(Math.min(this.currentTile.minX+this.tileWidth*0.5,1550000),500000);var centerY=Math.max(Math.min(this.currentTile.minY+this.tileHeight*0.5,5550000),4700000);return{centerX:this.normalize(centerX),centerY:this.normalize(centerY),radiusX:this.normalize(Math.min(this.tileWidth*1.5,1050000)),radiusY:this.normalize(Math.min(this.tileHeight*1.5,850000))};},updateTileSize:function(radiusX,radiusY){var changed=false;var width=radiusX*2;var height=radiusY*2;width=Math.min(width,1050000);height=Math.min(height,850000);if(Math.abs(this.tileWidth-width)>=150+0.1*width){changed=true;this.debug("width changed from "+this.tileWidth+" to "+width);var diff=Math.round((width-this.tileWidth)*0.5);this.currentTile.minX-=diff;this.currentTile.maxX+=diff;this.tileWidth=width;}if(Math.abs(this.tileHeight-height)>=150+0.1*height){changed=true;this.debug("height changed from "+this.tileHeight+" to "+height);var diff=Math.round((height-this.tileHeight)*0.5);this.currentTile.minY-=diff;this.currentTile.maxY+=diff;this.tileHeight=height;}return changed;},updateTileCenter:function(centerX,centerY){this.debug(this.currentTile.minX+" < "+centerX+" < "+this.currentTile.maxX);this.debug(this.currentTile.minY+" < "+centerY+" < "+this.currentTile.maxY);var changed=false;if(centerX<this.currentTile.minX){changed=true;var moveLeft=Math.floor((this.currentTile.maxX-centerX)/this.tileWidth);this.debug("move Left: "+moveLeft);this.currentTile.minX=Math.max(this.currentTile.minX-moveLeft*this.tileWidth,500000);this.currentTile.maxX=this.currentTile.minX+this.tileWidth;}else{if(centerX>this.currentTile.maxX){changed=true;var moveRight=Math.floor((centerX-this.currentTile.minX)/this.tileWidth);this.debug("move Right: "+moveRight);this.currentTile.maxX=Math.min(this.currentTile.maxX+moveRight*this.tileWidth,1550000);this.currentTile.minX=this.currentTile.maxX-this.tileWidth;}}if(centerY<this.currentTile.minY){changed=true;var moveUp=Math.floor((this.currentTile.maxY-centerY)/this.tileHeight);this.currentTile.minY=Math.max(this.currentTile.minY-moveUp*this.tileHeight,4700000);this.currentTile.maxY=this.currentTile.minY+this.tileHeight;}else{if(centerY>this.currentTile.maxY){changed=true;var moveDown=Math.floor((centerY-this.currentTile.minY)/this.tileHeight);this.currentTile.maxY=Math.min(this.currentTile.maxY+moveDown*this.tileHeight,5550000);this.currentTile.minY=this.currentTile.maxY-this.tileHeight;}}return changed;}});ak.namespace("ak.maps2009.components");ak.maps2009.components.BaseFormComponent=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.setLoggerId("FormComponent");this.form=$(options.form);if(!this.form){return this.error("No or invalid form argument passed!");}this.fields=this.getFields();this.initialInput=this.getSearchInput();if(options.searchInput){this.setSearchInput(options.searchInput);}Event.observe(this.form,"submit",this.onSubmit.bind(this));},getValue:function(name){var value=this.fields[name].getValue();if(value=="null"){value="";}return value;},setValue:function(name,newValue){this.fields[name].setValue(newValue);},getName:function(){return"FormComponent";},getFields:function(){return{};},onSubmit:function(){$(this.form.getInputs("submit")[0]).focus();this.getService("Mediator").formSubmitted(this.getSearchInput(),this.getName());},focus:function(){this.form.focusFirstElement();},setSearchInput:function(searchInput,submit){searchInput=searchInput||{};for(var name in this.fields){var value=searchInput[name];if(value!=null){this.setValue(name,value);}}if(submit){this.onSubmit();}},getEmptySearchInput:function(){return this.initialInput;},clearSearchInput:function(){this.setSearchInput(this.getEmptySearchInput());this.focus();},getSearchInput:function(){var searchInput={};for(var name in this.fields){searchInput[name]=this.getValue(name);}return searchInput;}});ak.namespace("ak.maps2009.components.headerContent");ak.maps2009.components.headerContent.HeaderContentComponent=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.setLoggerId("HeaderContentComponent");this.container=$(options.container);if(!this.container){this.error("Missing container!");}},fill:function(options){switch(options.searchType){case"company":var header=this.createSearchHeader(options);break;case"address":var header=this.createAddressHeader(options);break;case"route":var header=this.createRouteHeader(options);break;default:var header=new Element("div");break;}this.debug(header);this.container.insert(header);},createSearchHeader:function(opts){this.debug("createSearchHeader "+Object.toJSON(opts));var p=new Element("p");if(opts.searchInput&&opts.searchInput.company){p.update(opts.hits+" von "+opts.totalHits+' Treffern f\xfcr "'+opts.searchInput.company+'"');}return p;},createAddressHeader:function(opts){var p=new Element("p");if(opts.searchInput&&opts.searchInput.address){p.update('Adresssuche nach "'+opts.searchInput.address+'"');}return p;},createRouteHeader:function(opts){var p=new Element("p");if(opts.searchInput&&opts.searchInput.start&&opts.searchInput.end){p.insert("Route von&nbsp;").insert(new Element("b").insert(opts.searchInput.start));p.insert("&nbsp;nach&nbsp;").insert(new Element("b").insert(opts.searchInput.end));}return p;}});ak.namespace("ak.maps2009.components.foldMenu");ak.maps2009.components.foldMenu.FoldMenuComponent=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.setLoggerId("FoldMenuComponent");this.listContainer=$(options.listContainer);if(!this.listContainer){this.error("Missing listContainer!");}this.listContainer.addClassName("fold-menu");this.caption=$(this.listContainer.childElements()[0]);this.caption.addClassName("fold-menu-title");this.content=$(this.listContainer.childElements()[1]);Event.observe(this.caption,"click",this.toggle.bind(this));},toggle:function(){if(this.content.visible()){Effect.SlideUp(this.content,{duration:0.5});this.caption.removeClassName("open");}else{Effect.SlideDown(this.content,{duration:0.5});this.caption.addClassName("open");}},hide:function(){this.listContainer.show();},show:function(){this.listContainer.hide();}});ak.namespace("ak.maps2009.components.companySearch");ak.maps2009.components.companySearch.CompanySearchComponent=Class.create(ak.maps2009.components.BaseFormComponent,{initialize:function($super,options){options=options||{};$super(options);this.setLoggerId("CompanySearchComponent");Event.observe($(options.zoomStreet),"click",this.streetCityRegionClicked.bind(this,15));Event.observe($(options.zoomCity),"click",this.streetCityRegionClicked.bind(this,14));Event.observe($(options.zoomRegion),"click",this.streetCityRegionClicked.bind(this,12));},getName:function(){return"FormComponent";},getFields:function(){return{company:this.form.getInputs("text")[0]};},streetCityRegionClicked:function(zoomLevel){this.getService("Mediator").companyZoomLinkClicked(zoomLevel);},zoomLevelChanged:function(zoomLevel){$("zoomStreet").removeClassName("zoomLinkActive");$("zoomCity").removeClassName("zoomLinkActive");$("zoomRegion").removeClassName("zoomLinkActive");switch(zoomLevel){case 15:$("zoomStreet").addClassName("zoomLinkActive");break;case 14:$("zoomCity").addClassName("zoomLinkActive");break;case 12:$("zoomRegion").addClassName("zoomLinkActive");break;default:break;}}});ak.namespace("ak.maps2009.components.routeSearch");ak.maps2009.components.routeSearch.RouteSearchComponent=Class.create(ak.maps2009.components.BaseFormComponent,{initialize:function($super,options){options=options||{};$super(options);this.setLoggerId("RouteSearchComponent");Event.observe(this.fields.start,"change",function(){this.fields.startlat.value=null;this.fields.startlng.value=null;}.bind(this));Event.observe(this.fields.end,"change",function(){this.fields.endlat.value=null;this.fields.endlng.value=null;}.bind(this));},getName:function(){return"RouteFormComponent";},getFields:function(){var optimize=this.form.getInputs("radio","optimize");optimize.setValue=function(opt){optimize.find(function(e){return(e.value==opt);}).checked=true;};optimize.getValue=function(){return optimize.find(function(e){return e.checked;}).value;};return{start:this.form.getInputs("text","start")[0],startlat:this.form.getInputs("hidden","startlat")[0],startlng:this.form.getInputs("hidden","startlng")[0],end:this.form.getInputs("text","end")[0],endlat:this.form.getInputs("hidden","endlat")[0],endlng:this.form.getInputs("hidden","endlng")[0],optimize:optimize};},setSearchInput:function($super,searchInput,submit){$super(searchInput,submit);if(!submit){if(searchInput.start){if(!this.fields.end.getValue()){this.fields.end.focus();}else{$("routeSearchForm").getInputs("submit")[0].focus();}}else{if(searchInput.end){if(!this.fields.start.getValue()){this.fields.start.focus();}else{$("routeSearchForm").getInputs("submit")[0].focus();}}}}}});ak.namespace("ak.maps2009.components.addressSearch");ak.maps2009.components.addressSearch.AddressSearchComponent=Class.create(ak.maps2009.components.BaseFormComponent,{initialize:function($super,options){options=options||{};$super(options);this.setLoggerId("AddressSearchComponent");Event.observe(this.fields.address,"change",this.clearCoordinates.bind(this));},getName:function(){return"AddressFormComponent";},getFields:function(){return{address:$(this.form.getInputs("text","address")[0]),latitude:$(this.form.getInputs("hidden","latitude")[0]),longitude:$(this.form.getInputs("hidden","longitude")[0])};},clearCoordinates:function(){this.debug("clear coordinates");this.fields.latitude.value=null;this.fields.longitude.value=null;}});ak.namespace("ak.maps2009.components.leftAd");ak.maps2009.components.leftAd.LeftAdComponent=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.setLoggerId("LeftAdComponent");this.adDiv=$(options.adContainer);if(!this.adDiv){this.error("Missing adContainer!");}this.iframe=this.createIframe();this.adDiv.insert(this.iframe);},createIframe:function(){var iframe=new Element("iframe",{scrolling:"no",name:"leftAd",id:"leftAd",src:"ad.html","class":"adIframe",frameborder:"0"});return iframe;},showAd:function(){this.adDiv.style.display="block";},hideAd:function(){this.adDiv.style.display="none";},reloadAd:function(){}});ak.namespace("ak.maps2009.components.townSign");ak.maps2009.components.townSign.TownSignComponent=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.setLoggerId("TownSignComponent");this.signContainer=$(options.signContainer);if(!this.signContainer){this.error("Missing sign container!");}this.townLink=$(this.signContainer.getElementsByTagName("a")[0]);if(!this.townLink){this.error("Missing link tag!");}this.townImg=$(this.signContainer.getElementsByTagName("img")[0]);if(!this.signContainer){this.error("Missing imgage tag!");}this.originalValue=this.extractTown();this.baseImgUrl=this.townImg.getAttribute("src").replace(this.originalValue,"");},extractTown:function(){return this.townImg.getAttribute("title").replace(/ meinestadt.de/,"");},isDefault:function(){return(this.extractTown()==this.originalValue);},showSign:function(town){town=town||{};if(town.link){this.townLink.writeAttribute("href",town.link);}if(town.title){this.townImg.writeAttribute("src",this.baseImgUrl+town.title);this.townImg.writeAttribute("alt",town.title);this.townImg.writeAttribute("title",town.title);}},clearSign:function(){this.listContainer.innerHTML="";}});ak.namespace("ak.maps2009.components.map");ak.maps2009.components.map.VirtualEarthComponent=Class.create(ak.maps2009.Logger,{initialize:function(options){this.setLoggerId("VirtualEarthComponent");options=options||{};this.infoBoxContainer=$(options.infoBoxContainer);this.layers={};this.loadingIndicator=$(options.loadingIndicator);this.mapContainer=$(options.mapContainer);this.map=new VEMap(options.mapContainer);var zoomHandler=this.zoomHandler.bind(this);var panHandler=this.panHandler.bind(this);var startZoomHandler=this.startZoomHandler.bind(this);var startPanHandler=this.startPanHandler.bind(this);var resizeHandler=this.resizeHandler.bind(this);var mouseOverHandler=this.mouseOverHandler.bind(this);var mouseOutHandler=this.mouseOutHandler.bind(this);var clickHandler=this.clickHandler.bind(this);var doubleClickHandler=this.doubleClickHandler.bind(this);var mouseWheelHandler=this.mouseWheelHandler.bind(this);var mouseDownHandler=this.mouseDownHandler.bind(this);var mouseUpHandler=this.mouseUpHandler.bind(this);var enterBirdsEyeHandler=this.enterBirdsEyeHandler.bind(this);var leaveBirdsEyeHandler=this.leaveBirdsEyeHandler.bind(this);var changeMapStyleHandler=this.changeMapStyleHandler.bind(this);this.map.AttachEvent("onstartzoom",startZoomHandler);this.map.AttachEvent("onstartpan",startPanHandler);this.map.AttachEvent("onendzoom",zoomHandler);this.map.AttachEvent("onendpan",panHandler);this.map.AttachEvent("onresize",resizeHandler);this.map.AttachEvent("onmouseover",mouseOverHandler);this.map.AttachEvent("onmouseout",mouseOutHandler);this.map.AttachEvent("onclick",clickHandler);this.map.AttachEvent("ondoubleclick",doubleClickHandler);this.map.AttachEvent("onmousedown",mouseDownHandler);this.map.AttachEvent("onmouseup",mouseUpHandler);this.map.AttachEvent("onmousewheel",mouseWheelHandler);this.map.AttachEvent("onobliqueenter",enterBirdsEyeHandler);this.map.AttachEvent("onobliqueleave",leaveBirdsEyeHandler);this.map.AttachEvent("onchangemapstyle",changeMapStyleHandler);this.visibleInfoBox={hide:Prototype.emptyFunction,show:Prototype.emptyFunction};this.miniMapVisible=false;this.userZoomed="";this.userPanned="";var dimensions=$(this.mapContainer.parentNode).getDimensions();this.mapContainer.setStyle({width:dimensions.width+"px",height:dimensions.height+"px"});this.resizeMap(dimensions.width,dimensions.height);this.initialized=false;},loadMap:function(opts){this.debug("loadMap "+Object.toJSON(opts));this.map.onLoadMap=function(){this.debug("VEMap.onLoadMap called");this.initialized=true;var center=this.getCenterAndZoom();this.zoomHandler({zoomLevel:center.zoom});this.getService("Mediator").mapPanned(center.x,center.y);}.bind(this);opts=opts||{};var center=new VELatLong(opts.center.latitude,opts.center.longitude);if(this.isBirdseye(opts.style)){this.oldMapStyle=VEMapStyle.Road;this.map.LoadMap(center,17,VEMapStyle.Road,false,null,true);this.map.HideDashboard();if(!(opts.showControls===false)){this.addControls();}this.setMapStyle(opts.style);this.setZoomLevel(Math.min(opts.zoom,2));}else{this.oldMapStyle=opts.style;this.map.LoadMap(center,opts.zoom,opts.style,false,null,true);this.map.HideDashboard();if(!(opts.showControls===false)){this.addControls(opts.disableMapStyleChange);}}if(opts.showScalebar===false){this.map.HideScalebar();}},isBirdseye:function(style){style=style||this.getMapStyle();return(style==VEMapStyle.Birdseye||style==VEMapStyle.Oblique||style==VEMapStyle.BirdseyeHybrid);},startZoomHandler:function(){this.visibleInfoBox.hide();},startPanHandler:function(){this.visibleInfoBox.hide();},viewChangeHandler:function(e){this.getService("Mediator").viewRectChanged(this.getCurrentViewRect());},zoomHandler:function(e){this.debug("Map zoomed to: "+e.zoomLevel);if(!this.initialized){return;}this.getService("Mediator").mapZoomed(e.zoomLevel);this.viewChangeHandler();if(this.userZoomed){this.getService("Tracking").reloadPITracking({eventName:"onendzoom",xiti:false});this.userZoomed="";}if(this.zoomSliderObject){this.zoomSliderObject.setValue(20-e.zoomLevel);}},panHandler:function(e){this.debug("Map panned "+Object.toJSON(e));this.viewChangeHandler();var center=this.getCenter();this.getService("Mediator").mapPanned(center.x,center.y);this.debug("Map panned - new center: "+Object.toJSON(center));if(this.userPanned){this.getService("Tracking").reloadPITracking({eventName:"onendpan",xiti:false});this.userPanned="";}},resizeHandler:function(e){this.debug("resizeHandler()");this.visibleInfoBox.hide();this.viewChangeHandler();this.hideMiniMap();},mouseOverHandler:function(e){if(e.elementID){var shapeId=this.elementId2ShapeId(e.elementID);return this.getService("Mediator").shapeHovered(shapeId);}return true;},mouseOutHandler:function(e){if(e.elementID){var shapeId=this.elementId2ShapeId(e.elementID);return this.getService("Mediator").shapeLeft(shapeId);}return true;},clickHandler:function(e){if(e.elementID&&e.leftMouseButton){var shapeId=this.elementId2ShapeId(e.elementID);this.getService("Mediator").shapeLeftClicked(shapeId);}return true;},doubleClickHandler:function(e){this.debug("doubleClickHandler called "+Object.toJSON(e));this.userZoomed="doubleClick";},mouseWheelHandler:function(e){this.debug("mouseWheelHandler called "+Object.toJSON(e));this.userZoomed="mouseWheel";},mouseDownHandler:function(e){this.debug("mouseDownHandler called "+Object.toJSON(e));this.mouseDownCoords={x:e.clientX,y:e.clientY};},mouseUpHandler:function(e){this.debug("mouseUpHandler called "+Object.toJSON(e));var mouseUpCoords={x:e.clientX,y:e.clientY};if(this.mouseDownCoords&&(mouseUpCoords.x!=this.mouseDownCoords.x||mouseUpCoords.y!=this.mouseDownCoords.y)){this.userPanned="dragAndDrop";}},changeMapStyleHandler:function(e){var mapStyle=e.mapStyle;this.debug("map style changed to "+mapStyle);var mediator=this.getService("Mediator");mediator.mapStyleChanged(mapStyle);var hasBeenBirdseye=this.isBirdseye(this.oldMapStyle);if(this.isBirdseye(mapStyle)){if(!hasBeenBirdseye){this.toggleBirdsEyeControls(true);mediator.birdseyeEntered();}}else{if(hasBeenBirdseye){this.toggleBirdsEyeControls(false);mediator.birdseyeLeft();}}this.oldMapStyle=e.mapStyle;},toggleBirdsEyeControls:function(bool){this.debug("toggleBirdsEyeControls");if(bool){$("zoomScaleBarDiv").style.visibility="hidden";$("zoomOutDiv").style.top="95px";$("verticalBackground").style.height="143px";$("turnLeftDiv").style.display="block";$("turnRightDiv").style.display="block";}else{if($("zoomScaleBarDiv")&&$("zoomScaleBarDiv").style.visibility=="hidden"){$("zoomScaleBarDiv").style.visibility="visible";$("zoomOutDiv").style.top="";$("verticalBackground").style.height="";$("turnLeftDiv").style.display="none";$("turnRightDiv").style.display="none";}}},turnBirdsEye:function(direction){var birdsEyeScene=this.map.GetBirdseyeScene();var orientation=birdsEyeScene.GetOrientation();var orientations=["North","East","South","West"];var i=orientations.indexOf(orientation);if(i==-1){return this.error("invalid Orientation: '"+orientation+"'");}var newOrientation=orientations[(i+4+direction)%4];this.map.SetBirdseyeOrientation(newOrientation);},enterBirdsEyeHandler:function(e){if($("birdsEyeButtonOverlay")){$("birdsEyeButtonOverlay").style.visibility="hidden";}this.debug("entering birds eye");},leaveBirdsEyeHandler:function(e){if($("birdsEyeButtonOverlay")){$("birdsEyeButtonOverlay").style.visibility="visible";}this.debug("leaving birds eye");this.setMapStyle(this.getMapStyle());},showBirdseyeInfoText:function(){this.debug("showBirdsEyeInfoText");var infoTextBox=new Element("div",{"class":"infoTextBox"});var title=new Element("div",{"class":"infoTextBoxTitle"}).update("Vogelperspektive Beta");infoTextBox.insert(title);title.insert(new Element("div",{"class":"infoTextBoxClose"}).update("schließen"));var content=new Element("div",{"class":"infoTextBoxContent"}).update("Aus der Vogelperspektive können Sie nach einer Adresse innerhalb der betreffenden Stadt suchen.");infoTextBox.insert(content);content.insert(new Element("br"));content.insert(new Element("br"));content.insert("Die Suche nach Branchen oder das Berechnen einer Route sowie Weiterleitung und Druck sind in dieser Ansicht zur Zeit nicht möglich.");var infoBoxTop=(this.getMapHeight()/2)-100;var infoBoxLeft=(this.getMapWidth()/2)-175;infoTextBox.style.top=infoBoxTop+"px";infoTextBox.style.left=infoBoxLeft+"px";Event.observe(infoTextBox,"click",function(){infoTextBox.style.display="none";});this.mapContainer.insert(infoTextBox);this.debug("showBirdsEyeInfoText end");},elementId2ShapeId:function(elementId){return elementId.substr(0,18);},resizeMap:function(width,height){this.debug("resizeMap");if(this.map.vemapcontrol){this.map.Resize(width,height);}},heightenPoi:function(poi){poi.shape.SetCustomIcon(poi.getHighlightIcon());},rescalePoi:function(poi){poi.getShape().SetCustomIcon(poi.getIcon());},showPoiDetails:function(poi){poi.getShape().SetDescription(poi.getDetailView());this.map.ShowInfoBox(poi.shape);},showPoi:function(poi){this.debug("showPoi "+poi.getIndex());poi.getShape().Show();},hidePoi:function(poi){poi.getShape().Hide();},showPoiLayer:function(poi){poi.getShape().GetShapeLayer().Show();},hidePoiLayer:function(poi){poi.getShape().GetShapeLayer().Hide();},hidePoiDetails:function(poi){this.map.HideInfoBox();},showPoiPreview:function(poi){this.map.HideInfoBox();poi.shape.SetDescription(poi.getPreview());this.map.ShowInfoBox(poi.shape);},hidePoiPreview:function(poi){this.map.HideInfoBox();},computeInfoBoxPosition:function(anchor,infoBox){var position=this.map.LatLongToPixel(anchor);var boxDimensions=infoBox.getDimensions();var mapDimensions=this.mapContainer.getDimensions();return{left:Math.min(position.x,mapDimensions.width-boxDimensions.width),top:Math.min(position.y,mapDimensions.height-boxDimensions.height-1)};},enablePrinting:function(){var printOpt=new VEPrintOptions(true);this.map.SetPrintOptions(printOpt);},getMapHeight:function(){return parseInt(this.mapContainer.getHeight());},getMapWidth:function(){return parseInt(this.mapContainer.getWidth());},showInfoBox:function(poi){this.debug("showInfoBox");var shape=poi.getShape();var infoBoxContainer=$("infoBoxLayer"+poi.getLayer());var infoBox=poi.getInfoBox(infoBoxContainer);var boxPos=this.computeInfoBoxPosition(shape.GetIconAnchor(),infoBox);infoBox.style.left=boxPos.left+"px";infoBox.style.top=boxPos.top+"px";this.visibleInfoBox.hide();this.visibleInfoBox=infoBox;this.visibleInfoBox.show();},hideInfoBox:function(poi){poi.getInfoBox().hide();},getCenter:function(){if(this.isBirdseye()){var birdseyeScene=this.map.GetBirdseyeScene();var x=birdseyeScene.GetWidth()/2;var y=birdseyeScene.GetHeight()/2;this.debug("Pixel: "+x+" "+y);var center=birdseyeScene.PixelToLatLong(new VEPixel(x,y),this.map.GetZoomLevel());var decodedCenter=(new _xy1).Decode(center);this.debug(decodedCenter.Longitude+" "+decodedCenter.Latitude);return{x:decodedCenter.Longitude,y:decodedCenter.Latitude};}else{var center=this.map.GetCenter();return{x:center.Longitude,y:center.Latitude};}},setCenter:function(centerX,centerY){this.map.SetCenter(new VELatLong(centerY,centerX));},getZoomLevel:function(){return this.map.GetZoomLevel();},setZoomLevel:function(zoomLevel,userZoomed){this.userZoomed=userZoomed||this.userZoomed;return this.map.SetZoomLevel(zoomLevel);},zoomIn:function(center){this.userZoomed="zoomIn";if(typeof center==="object"&&center.x&&center.y){var newCenter=new VELatLong(center.y,center.x);var newZoom=Math.min(this.map.GetZoomLevel()+1,19);this.map.SetCenterAndZoom(newCenter,newZoom);}else{this.map.ZoomIn();}},getCenterAndZoom:function(){var center=this.getCenter();center.zoom=this.getZoomLevel();return center;},setCenterAndZoom:function(centerX,centerY,zoom){if(centerX&&centerY){if(zoom){this.map.SetCenterAndZoom(new VELatLong(centerY,centerX),zoom);}else{this.map.SetCenter(new VELatLong(centerY,centerX));}}else{if(zoom){this.map.SetZoomLevel(zoom);}}},getCurrentViewRect:function(){var center=this.map.GetCenter();var view=this.map.GetMapView();var topLeft=view.TopLeftLatLong;var bottomRight=view.BottomRightLatLong;var deltaLat=Math.abs(topLeft.Latitude-bottomRight.Latitude);var deltaLong=Math.abs(topLeft.Longitude-bottomRight.Longitude);return{centerX:center.Longitude,centerY:center.Latitude,radiusX:deltaLong/2,radiusY:deltaLat/2};},getRadiusSearchRect:function(radius){var center=this.getCenter();var rectX=this.computePoint(center.y,center.x,270,radius);var rectY=this.computePoint(center.y,center.x,0,radius);return{centerX:center.x,centerY:center.y,radiusX:Math.abs(rectX.Longitude-center.x),radiusY:Math.abs(rectY.Latitude-center.y)};},createLayer:function(identifier,title,description){var layer=new VEShapeLayer();layer.SetTitle("title");layer.SetDescription("description");this.registerLayer(identifier,layer);var layerContainerId="infoBoxLayer"+identifier;if(!$(layerContainerId)){this.infoBoxContainer.appendChild(new Element("div",{id:layerContainerId}));}return layer;},addLayer:function(layer){try{this.map.AddShapeLayer(layer);}catch(e){this.error("VEMap.AddShapeLayer failed",e);}},removeLayer:function(layer){this.debug("removeLayer");this.map.DeleteShapeLayer(layer);},registerLayer:function(identifier,layer){this.layers[identifier]=layer;},getLayer:function(identifier){return this.layers[identifier];},clearRoute:function(){this.map.DeleteRoute();},clearLayer:function(layerId){this.debug("clearLayer "+layerId);var layer=this.getLayer(layerId);if(!layer){return;}layer.DeleteAllShapes();$("infoBoxLayer"+layerId).innerHTML="";},hideLayer:function(layerId){var layer=this.getLayer(layerId);if(!layer){return;}layer.Hide();this.debug("Hide layer: "+layerId);},showLayer:function(layerId){var layer=this.getLayer(layerId);if(!layer){return;}this.debug("showLayer("+layerId+")");layer.Show();},showPoiList:function(pois,layerId,indices){layerId=layerId||pois.getLayerId();this.debug("showPoiList, layerId: "+layerId+" indices:"+Object.toJSON(indices));if(indices){var selectedPois=pois.getSelectedPois(indices);}else{var selectedPois=pois;}var layer=this.getLayer(layerId);if(layer){this.clearLayer(layerId);}else{layer=this.createLayer(layerId,layerId+" results","POI layer for "+layerId);this.addLayer(layer);}var pins=[];selectedPois.each(function(poi){var data=poi.getData();var shape=new VEShape(VEShapeType.Pushpin,new VELatLong(data.latitude,data.longitude));shape.SetCustomIcon(poi.getIcon());pins.push(shape);poi.setShape(shape);poi.setLayer(layerId);});layer.AddShape(pins);selectedPois.each(function(poi){poi.getShape().SetZIndex(poi.getZIndex());pois.setShapeMapping(poi.getShape().GetID(),poi);});},drawCircle:function(){this.map.Clear();var center=this.map.GetCenter();var circle=this.createCircle(center,0.25,0,0,255,0.1);this.map.AddShape(circle);},computeDistance:function(latLong1,latLong2){var lat1=latLong1.Latitude;var lon1=latLong1.Longitude;var lat2=latLong2.Latitude;var lon2=latLong2.Longitude;var R=6371;var dLat=(lat2-lat1)*Math.PI/180;var dLon=(lon2-lon1)*Math.PI/180;var a=Math.sin(dLat/2)*Math.sin(dLat/2)+Math.cos(lat1*Math.PI/180)*Math.cos(lat2*Math.PI/180)*Math.sin(dLon/2)*Math.sin(dLon/2);var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return R*c;},computePoint:function(lat,lon,angle,distance){var R=6371;var lat1=lat*Math.PI/180;var lon1=lon*Math.PI/180;var angle1=angle*Math.PI/180;var lat2=Math.asin(Math.sin(lat1)*Math.cos(distance/R)+Math.cos(lat1)*Math.sin(distance/R)*Math.cos(angle1));var lon2=lon1+Math.atan2(Math.sin(angle1)*Math.sin(distance/R)*Math.cos(lat1),Math.cos(distance/R)-Math.sin(lat1)*Math.sin(lat2));lon2=(lon2+Math.PI)%(2*Math.PI)-Math.PI;if(isNaN(lat2)||isNaN(lon2)){return null;}return new VELatLong(lat2/Math.PI*180,lon2/Math.PI*180);},createCircle:function(latLong,radius,r,g,b,alpha){r=r||0;g=g||0;b=b||255;alpha=alpha||0.25;var lat=latLong.Latitude;var lon=latLong.Longitude;var points=new Array();var steps=60;for(var angle=0;angle<360;angle+=(360/steps)){points.push(this.computePoint(lat,lon,angle,radius));}var shape=new VEShape(VEShapeType.Polygon,points);shape.SetFillColor(new VEColor(r,g,b,alpha));shape.HideIcon();return shape;},drawViewRect:function(rect){rect=rect||this.getCurrentViewRect();if(this.viewRectShape){this.map.DeleteShape(this.viewRectShape);}var points=[new VELatLong(rect.centerY-rect.radiusY,rect.centerX-rect.radiusX),new VELatLong(rect.centerY+rect.radiusY,rect.centerX-rect.radiusX),new VELatLong(rect.centerY+rect.radiusY,rect.centerX+rect.radiusX),new VELatLong(rect.centerY-rect.radiusY,rect.centerX+rect.radiusX)];var shape=new VEShape(VEShapeType.Polygon,points);shape.SetFillColor(new VEColor(0,0,255,0.25));shape.HideIcon();this.map.AddShape(shape);this.viewRectShape=shape;},reverseGeocode:function(lat,lng,callback){this.map.FindLocations(new VELatLong(lat,lng),function(locations){var name=(locations&&locations.length)?locations[0].Name:null;if(!name){return callback();}try{var location={};var a=name.split(",");var zipMatch=name.match("[0-9]{4,7}");if(zipMatch===null){location.name=a[0].strip();location.state=a[a.length-1].strip();}else{location.zip=zipMatch[0];var cityMatch=name.match(location.zip+" ([^,]+)(,.*){0,1}$");if(cityMatch!==null){location.name=cityMatch[1];}if(a[0].indexOf(location.zip)<0){location.street=a[0].strip();}if(a[a.length-1].indexOf(location.zip)<0){location.state=a[a.length-1].strip();}else{location.state="Deutschland";}}}catch(e){this.info("Failed parsing location string "+name+" ! "+e.message);return callback();}return callback(location);}.bind(this));},findRoute:function(options){var loadingIndicator=this.loadingIndicator;var onSuccess=options.onSuccess||Prototype.emptyFunction;var onFailure=options.onFailure||Prototype.emptyFunction;var routeOpts=new VERouteOptions();routeOpts.SetBestMapView=(options.setBestMapView!=null)?options.setBestMapView:true;routeOpts.DistanceUnit=VERouteDistanceUnit.Kilometer;routeOpts.UseMWS=false;routeOpts.RouteOptimize=(options.optimize=="distance")?VERouteOptimize.MinimizeDistance:VERouteOptimize.MinimizeTime;routeOpts.RouteCallback=function(Route){if(loadingIndicator){loadingIndicator.hide();}if(!Route){return onFailure();}var legs=Route.RouteLegs;var route={time:Route.Time,distance:Route.Distance,legs:[],size:function(){return this.legs.length;}};for(var i=0;i<legs.length;i++){for(var j=0;j<legs[i].Itinerary.Items.length;j++){var item=legs[i].Itinerary.Items[j];route.legs.push({distance:item.Distance,time:item.Time,latitude:item.LatLong.Latitude,longitude:item.LatLong.Longitude,text:item.Text,title:item.Shape.GetTitle(),icon:item.Shape.GetCustomIcon().Image});}}if(legs.length>0){var items=legs[0].Itinerary.Items;items[0].Shape.SetCustomIcon(ak.maps2009.config.imgServerUrl+"poi/route/start.gif");items[items.length-1].Shape.SetCustomIcon(ak.maps2009.config.imgServerUrl+"poi/route/ziel.gif");route.legs[0].icon=ak.maps2009.config.imgServerUrl+"routeList/start.gif";route.legs[route.legs.length-1].icon=ak.maps2009.config.imgServerUrl+"routeList/ziel.gif";}onSuccess(route);};options.start=options.start.replace(/ß/,"ss");options.end=options.end.replace(/ß/,"ss");var start=(options.startlat&&options.startlng)?new VELatLong(options.startlat,options.startlng):options.start;var end=(options.endlat&&options.endlng)?new VELatLong(options.endlat,options.endlng):options.end;var locations=[start,end];this.debug("calling VEMap.GetDirections");if(loadingIndicator){loadingIndicator.show();}this.map.GetDirections(locations,routeOpts);},findAddress:function(options){this.debug("findAddress: "+options.address);this.debug("findAddress: "+Object.toJSON(options));var onSuccess=options.onSuccess||Prototype.emptyFunction;var onFailure=options.onFailure||Prototype.emptyFunction;var setBestMapView=(options.setBestMapView!=null)?options.setBestMapView:true;if(options.latitude&&options.longitude){if(setBestMapView){this.setCenterAndZoom(options.longitude,options.latitude,14);}return onSuccess({name:options.address,latitude:options.latitude,longitude:options.longitude});}var my_callback=function(shapeLayer,findResult,places,moreResults,error){if(this.loadingIndicator){this.loadingIndicator.hide();}if(!(places&&places[0])){return onFailure();}this.debug("places[0]: "+Object.toJSON(places[0]));var pinLatLong={};if(this.isBirdseye()){pinLatLong=places[0].Locations[0].LatLong;}else{pinLatLong=places[0].LatLong;}var address={latitude:pinLatLong.Latitude,longitude:pinLatLong.Longitude,locations:places[0].Locations,name:places[0].Name,matchCode:places[0].MatchCode,matchConfidence:places[0].MatchConfidence,precision:places[0].Precision};onSuccess(address);};options.address=options.address.replace(/ß/,"ss");if(this.loadingIndicator){this.loadingIndicator.setStyle({display:"block"});}this.map.Find(null,options.address,VEFindType.Businesses,null,0,10,false,true,true,setBestMapView,my_callback.bind(this));},setViewRect:function(visibleKm,center){var centerAndZoom={};if(center){centerAndZoom.x=center.x;centerAndZoom.y=center.y;}else{centerAndZoom=this.getCenterAndZoom();}var upperLeft=this.computePoint(centerAndZoom.y,centerAndZoom.x,315,(1.42*visibleKm/2));var bottomRight=this.computePoint(centerAndZoom.y,centerAndZoom.x,135,(1.42*visibleKm/2));var rectPoints=new Array(2);rectPoints[0]=upperLeft;rectPoints[1]=bottomRight;this.map.SetMapView(rectPoints);},setMapView:function(points){this.debug("setMapView "+Object.toJSON(points));var vePoints=[];points.each(function(p){vePoints.push(new VELatLong(p.y,p.x));});this.map.SetMapView(vePoints);},getVisibleKm:function(){var view=this.map.GetMapView();var topLeft=view.TopLeftLatLong;var bottomRight=view.BottomRightLatLong;var topRight=new VELatLong(topLeft.Latitude,bottomRight.Longitude);var width=this.computeDistance(topLeft,topRight);var height=this.computeDistance(bottomRight,topRight);if(width<height){var visibleKm=width;}else{var visibleKm=height;}return visibleKm;},getMapStyle:function(){return this.map.GetMapStyle();},setMapStyle:function(style){this.debug("setMapStyle "+style);if(!$("aerialImg")){return;}var aerialActive=ak.maps2009.config.imgServerUrl+"toolbar/k_navi_luftbild-aktiv.gif";var aerialPassive=ak.maps2009.config.imgServerUrl+"toolbar/k_navi_luftbild-passiv.gif";var roadActive=ak.maps2009.config.imgServerUrl+"toolbar/k_navi_karte-aktiv.gif";var roadPassive=ak.maps2009.config.imgServerUrl+"toolbar/k_navi_karte-passiv.gif";var hybridActive=ak.maps2009.config.imgServerUrl+"toolbar/k_navi_kombi-aktiv.gif";var hybridPassive=ak.maps2009.config.imgServerUrl+"toolbar/k_navi_kombi-passiv.gif";var birdsEyeActive=ak.maps2009.config.imgServerUrl+"toolbar/k_navi_birdseye-aktiv.gif";var birdsEyePassive=ak.maps2009.config.imgServerUrl+"toolbar/k_navi_birdseye-passiv.gif";if(style==VEMapStyle.Aerial){this.map.SetMapStyle(VEMapStyle.Aerial);$("aerialImg").src=aerialActive;$("roadImg").src=roadPassive;$("hybridImg").src=hybridPassive;$("birdsEyeImg").src=birdsEyePassive;}else{if(style==VEMapStyle.Road){this.map.SetMapStyle(VEMapStyle.Road);$("aerialImg").src=aerialPassive;$("roadImg").src=roadActive;$("hybridImg").src=hybridPassive;$("birdsEyeImg").src=birdsEyePassive;}else{if(style==VEMapStyle.Hybrid){this.map.SetMapStyle(VEMapStyle.Hybrid);$("aerialImg").src=aerialPassive;$("roadImg").src=roadPassive;$("hybridImg").src=hybridActive;$("birdsEyeImg").src=birdsEyePassive;}else{if(style==VEMapStyle.BirdseyeHybrid){this.map.SetMapStyle(VEMapStyle.BirdseyeHybrid);$("aerialImg").src=aerialPassive;$("roadImg").src=roadPassive;$("hybridImg").src=hybridPassive;$("birdsEyeImg").src=birdsEyeActive;}}}}},toggleMiniMap:function(){this.miniMapVisible?this.hideMiniMap():this.showMiniMap();this.getService("Tracking").triggerLinkTracking({mapStyle:"miniMap",detail:this.miniMapVisible?"Einblenden":"Ausblenden"});},showMiniMap:function(){var mapWidth=this.getMapWidth();var offsetX=mapWidth-150;this.map.ShowMiniMap(offsetX,0,VEMiniMapSize.Small);this.miniMapVisible=true;$("MSVE_minimap_resize").style.visibility="hidden";$("miniMapImg").src=ak.maps2009.config.imgServerUrl+"toolbar/k_navi_minikarte-aktiv.gif";},hideMiniMap:function(){this.map.HideMiniMap();this.miniMapVisible=false;if($("miniMapImg")){$("miniMapImg").src=ak.maps2009.config.imgServerUrl+"toolbar/k_navi_minikarte-passiv.gif";}},createControl:function(divId,imgSrc,imgTitle,imgId,callback,parentNode){var div=new Element("div",{id:divId});if(imgSrc){var img=new Element("img",{id:imgId,src:imgSrc,title:imgTitle});if(callback){Event.observe(img,"click",callback);}div.insert(img);}if(parentNode){parentNode.appendChild(div);}},createZoomSlider:function(){this.zoomSliderObject=new Control.Slider("zoomHandleDiv","zoomScaleBarDiv",{range:$R(1,19),values:$R(1,19),axis:"vertical",sliderValue:20-this.getZoomLevel(),onChange:function(value){var zoomLevel=20-value;if(this.getZoomLevel()!=zoomLevel){this.setZoomLevel(zoomLevel,"slider");}}.bind(this)});},hideControls:function(){var control=$("verticalControls");this.map.HideControl(control);},showControls:function(){var control=$("verticalControls");this.map.ShowControl(control);},addControls:function(disableMapStyleChange){this.debug("addControls()");var verticalControls=new Element("div",{id:"verticalControls"});var verticalBackground=new Element("div",{id:"verticalBackground"});verticalControls.insert(verticalBackground);if(!disableMapStyleChange){var roadViewClickCallback=function(){this.setMapStyle(VEMapStyle.Road);}.bind(this);this.createControl("roadDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi_karte-aktiv.gif","Karte","roadImg",roadViewClickCallback,verticalControls);var aerialViewClickCallback=function(){this.setMapStyle(VEMapStyle.Aerial);}.bind(this);this.createControl("aerialDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi_luftbild-passiv.gif","Luftbild","aerialImg",aerialViewClickCallback,verticalControls);var hybridViewClickCallback=function(){this.setMapStyle(VEMapStyle.Hybrid);}.bind(this);this.createControl("hybridDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi_kombi-passiv.gif","Kombikarte","hybridImg",hybridViewClickCallback,verticalControls);var birdsEyeViewClickCallback=function(){this.setMapStyle(VEMapStyle.BirdseyeHybrid);}.bind(this);this.createControl("birdsEyeDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi_birdseye-passiv.gif","Vogelperspektive","birdsEyeImg",birdsEyeViewClickCallback,verticalControls);this.createControl("birdsEyeButtonOverlay",null,null,null,null,verticalControls);var miniMapClickCallback=function(){this.toggleMiniMap();}.bind(this);this.createControl("miniMapDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi_minikarte-passiv.gif","Minikarte","miniMapImg",miniMapClickCallback,verticalControls);}var upClickCallback=function(){this.userPanned="controlUp";this.map.Pan(0,Math.ceil(this.getMapHeight()*-0.25));}.bind(this);this.createControl("upDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi-kreuz-oben.gif","Karte nach oben verschieben","",upClickCallback,verticalControls);var leftClickCallback=function(){this.userPanned="controlLeft";this.map.Pan(Math.ceil(this.getMapWidth()*-0.25),0);}.bind(this);this.createControl("leftDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi-kreuz-links.gif","Karte nach links verschieben","",leftClickCallback,verticalControls);var rightClickCallback=function(){this.userPanned="controlRight";this.map.Pan(Math.ceil(this.getMapWidth()*0.25),0);}.bind(this);this.createControl("rightDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi-kreuz-rechts.gif","Karte nach rechts verschieben","",rightClickCallback,verticalControls);var downClickCallback=function(){this.userPanned="controlDown";this.map.Pan(0,Math.ceil(this.getMapHeight()*0.25));}.bind(this);this.createControl("downDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi-kreuz-unten.gif","Karte nach unten verschieben","",downClickCallback,verticalControls);var zoomInClickCallback=function(){this.userZoomed="controlPlus";this.map.ZoomIn();}.bind(this);this.createControl("zoomInDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi-plus.gif","Hinein zoomen","",zoomInClickCallback,verticalControls);var zoomOutClickCallback=function(){this.userZoomed="controlMinus";this.map.ZoomOut();}.bind(this);this.createControl("zoomOutDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi-minus.gif","Heraus zoomen","",zoomOutClickCallback,verticalControls);var turnLeftClickCallback=function(){this.turnBirdsEye(-1);}.bind(this);this.createControl("turnLeftDiv",ak.maps2009.config.imgServerUrl+"toolbar/icon_links-drehn.gif","Linksherum fliegen","",turnLeftClickCallback,verticalControls);var turnRightClickCallback=function(){this.turnBirdsEye(1);}.bind(this);this.createControl("turnRightDiv",ak.maps2009.config.imgServerUrl+"toolbar/icon_rechts-drehn.gif","Rechtsherum fliegen","",turnRightClickCallback,verticalControls);this.createControl("zoomScaleBarDiv",ak.maps2009.config.imgServerUrl+"toolbar/karten-zoom-stab.gif","","",null,verticalControls);var goBackClickCallback=function(){}.bind(this);this.createControl("goBackDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi-kreuz-mitte.gif","","",goBackClickCallback,verticalControls);this.map.AddControl(verticalControls,201);var scaleBarContainer=$("zoomScaleBarDiv");this.createControl("zoomHandleDiv",ak.maps2009.config.imgServerUrl+"toolbar/k_navi-sliderbutton.gif","","",null,scaleBarContainer);this.createZoomSlider();}});ak.namespace("ak.maps2009.components.categoryList");ak.maps2009.components.categoryList.CategoryListComponent=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.setLoggerId(options.loggerId||"CategoryListComponent");this.container=$(options.listContainer);if(!this.container){this.error("Missing listContainer!");}this.initialized=false;this.trackingName="category";this.disabled=Boolean(options.disabled);this.checkedCategories=options.checkedCategories||[];if(options.singlePoi&&options.singlePoiType&&this.checkedCategories.indexOf(options.singlePoiType)==-1){this.singlePoi=options.singlePoi;this.singlePoiType=options.singlePoiType;}this.maxChecked=options.maxChecked;this.categoryQueue=new ak.utils.Queue();this.categories={};this.initCategories();},hide:function(){$(this.container.parentNode).style.display="none";},show:function(){$(this.container.parentNode).setStyle("display:block;");},getListItemCssClass:function(){return"poi-list-item poi-list-item2";},fillList:function(categories){this.debug("fillList");this.list=new Element("ul");this.container.update(this.list);this.categories={};categories.each(this.addCategory.bind(this));},initCategories:function(){this.debug("initCategories");var searchService=new ak.maps2009.externalServices.jsonSearch.JsonSearchService({searcherUrl:"java-service/categories",loggerId:"PoiSearchService",callerId:"PoiSearchService"});searchService.find({parameters:{context:"poi-service",output:"json",validDate:new Date().format("%Y-%m-%d")},onComplete:function(){this.initialized=true;var checkedCategories=this.getCheckedCategories();this.getService("Mediator").categoryListInitialized(checkedCategories);}.bind(this),onSuccess:function(response){var iconProperties=["listIcon","clusterIconSmall","clusterIconMedium","clusterIconLarge"];var url="http://"+ak.maps2009.config.mt2002Host+"/images/image.php?origin=poi&id=";response.items.each(function(i){iconProperties.each(function(p){i[p]=url+i[p];});});this.fillList(response.items);}.bind(this),onFailure:function(){this.error("initCategories() failed!");this.container.update(new Element("p",{"class":"errormsg"}).update("Beim Laden der POI-Kategorien ist ein Fehler aufgetreten! "));}.bind(this),onCreate:function(){this.container.update(new Element("img",{alt:"Lade POI-Kategorien ...",src:"./img-maps/progress.gif"}));}.bind(this)});},onCheckboxClick:function(checkbox){var categoryId=checkbox.name;var value=checkbox.getValue();if(categoryId==this.singlePoiType){delete this.singlePoiType;}this.getService("Mediator").categoryClicked(categoryId,value);this.getService("Tracking").triggerLinkTracking({category:[categoryId],detail:"Checkbox-Klick-"+(value?"An":"Aus")});},createLabel:function(category){return new Element("span").update(category.title);},addCategory:function(category){this.debug("addCategory "+Object.toJSON(category));var li=new Element("li",{"class":this.getListItemCssClass()});var index=this.checkedCategories.indexOf(category.id);var checked=(index!=-1&&(!this.maxChecked||index<this.maxChecked));var checkbox=new Element("input",{type:"checkbox",checked:checked,name:category.id,disabled:this.disabled});li.insert(checkbox);checkbox.checked=checked;if(checked){this.categoryQueue.enqueue(category.id);}Event.observe(checkbox,"click",this.onCheckboxClick.bind(this,checkbox));Event.observe(checkbox,"click",this.onCheckboxChange.bind(this,checkbox));li.insert(new Element("img",{src:category.listIcon,alt:category.title,width:15,height:15}));category.label=this.createLabel(category);if(this.disabled){category.label.addClassName("disabled");}li.insert(category.label);if(category.hint){var img=new Element("img",{src:"/img-maps/info-icon.gif",alt:"Hinweis",style:"padding:0 0 4px 3px;"});var innerDiv=new Element("div");innerDiv.insert(new Element("strong").update(category.title)).insert(new Element("br"));innerDiv.insert(category.hint);var bubble=new Element("div",{"class":"ak-bubble"}).insert(innerDiv);var hint=new Element("div",{style:"width:14px;"}).insert(img).insert(bubble);Event.observe(hint,"mouseover",function(){bubble.setStyle("display:block;");});Event.observe(hint,"mouseout",function(){bubble.setStyle("display:none;");});li.insert(hint);}this.list.insert(li);category.checkbox=checkbox;this.categories[category.id]=category;},onCheckboxChange:function(checkbox){var value=checkbox.getValue();var category=checkbox.name;if(value){this.categoryQueue.enqueue(category);if(this.maxChecked&&this.categoryQueue.size()>this.maxChecked){var categoryId=this.categoryQueue.dequeue();var category=this.categories[categoryId];category.checkbox.checked=false;this.onCheckboxClick(category.checkbox);}}else{this.categoryQueue.removeObject(category);}},getCheckedCategories:function(){if(!this.initialized){return[];}var checked=[];Object.values(this.categories).each(function(category){if(category.checkbox.getValue()&&!category.checkbox.disabled){checked.push(category.id);}});return checked;},setCheckboxValue:function(categoryId,value){this.debug("setCheckboxValue("+categoryId+", "+value+")");var category=this.categories[categoryId];if(!category){this.error("setCheckboxValue failed: No categoryId "+categoryId+" is unknown!");}category.checkbox.checked=value;this.onCheckboxChange(category.checkbox,value);},setCheckboxValues:function(value){var change=[];this.debug("setCheckboxValues("+value+")");Object.values(this.categories).each(function(category){this.setCheckboxValue(category.id,value);}.bind(this));},getCategoryIds:function(){return Object.keys(this.categories);},getCategories:function(ids){if(ids){var c=[];ids.each(function(id){c.push(this.categories[id]);}.bind(this));return c;}return Object.values(this.categories);},disableCheckboxes:function(){if(this.initialized){this.getCategories().each(this.disableCategory.bind(this));}else{this.disabled=true;}},disableCategory:function(category){category.checkbox.writeAttribute("disabled",true);category.label.addClassName("disabled");},enableCategory:function(category){category.checkbox.writeAttribute("disabled",false);category.label.removeClassName("disabled");},enableCheckboxes:function(){if(this.initialized){var changed=this.getCategories().each(this.enableCategory.bind(this));}else{this.disabled=false;}}});ak.namespace("ak.maps2009.components.mapAdList");ak.maps2009.components.mapAdList.MapAdListComponent=Class.create(ak.maps2009.components.categoryList.CategoryListComponent,{initialize:function($super,options){options=options||{};options.loggerId="MapAdListComponent";$super(options);this.trackingName="mapAd";},getListItemCssClass:function(){return"poi-list-item";},initCategories:function(){var categories=[{title:"Volksfürsorgefilialen",id:"5",listIcon:ak.maps2009.config.imgServerUrl+"poiList/mapad_15x15_volksfuersorge.gif",linkName:"Nächste Volksfürsorge Filiale"}];this.fillList(categories);this.initialized=true;},onCheckboxClick:function(checkbox){var categoryId=checkbox.name;var value=checkbox.getValue();var mediator=this.getService("Mediator");mediator.mapAdValueChanged(categoryId,value);this.getService("Tracking").triggerLinkTracking({mapAd:[categoryId],detail:"Checkbox-Klick-"+(value?"An":"Aus")});},createLabel:function(category){var label=new Element("a",{href:"javascript:void(0);"}).update(category.linkName);category.handler=function(){this.getService("Mediator").mapAdLinkClicked(category.id);this.getService("Tracking").triggerLinkTracking({mapAd:[category.id],detail:"Nächstgelegenes-Link-Klick"});}.bind(this);Event.observe(label,"click",category.handler);return label;},disableCategory:function($super,category){$super(category);Event.stopObserving(category.label,"click",category.handler);},enableCategory:function($super,category){$super(category);Event.stopObserving(category.label,"click",category.handler);Event.observe(category.label,"click",category.handler);}});ak.namespace("ak.maps2009.components.fotoList");ak.maps2009.components.fotoList.FotoListComponent=Class.create(ak.maps2009.components.categoryList.CategoryListComponent,{initialize:function($super,options){options=options||{};options.loggerId="FotoListComponent";$super(options);this.trackingName="foto";},getListItemCssClass:function(){return"poi-list-item";},initCategories:function(){var categories=[{title:"Top-Fotos einblenden",id:"premium",listIcon:ak.maps2009.config.imgServerUrl+"poiList/foto_15x15_top.gif"},{title:"Fotos einblenden",id:"non-premium",listIcon:ak.maps2009.config.imgServerUrl+"poiList/foto_15x15_all.gif"}];this.fillList(categories);this.initialized=true;},getMode:function(){var modes=this.getCheckedCategories();if(modes.length){return(modes.length>1)?"all":modes[0];}return"";},onCheckboxClick:function(checkbox){var value=checkbox.getValue();var mediator=this.getService("Mediator");mediator.fotoListValueChanged(value,this.getMode());this.getService("Tracking").triggerLinkTracking({foto:checkbox.name,detail:"Checkbox-Klick-"+(value?"An":"Aus")});}});ak.namespace("ak.maps2009.components.list");ak.maps2009.components.list.BaseListComponent=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.setLoggerId("ListComponent");this.container=$(options.container);if(!this.container){this.error("Missing container!");}},showProgress:function(){this.debug("showProgress");this.container.update(this.createHeadline("Liste wird geladen ..."));this.container.insert(new Element("img",{src:"./img-maps/progress.gif",alt:"aktiv","class":"search-list-content"}));},getErrorContent:function(){return"Es ist ein Fehler aufgetreten!";},showError:function(){this.debug("showError");var p=new Element("p",{"class":"errormsg"});p.update(this.getErrorContent());this.container.update(p);},update:function(poiCollection){this.clear();},createHeadline:function(caption){return new Element("div",{"class":"search-list-headline"}).update(caption);},clear:function(){this.container.update();},hide:function(){this.container.hide();},show:function(){this.container.setStyle({display:"block"});}});ak.maps2009.components.list.AddressListComponent=Class.create(ak.maps2009.components.list.BaseListComponent,{initialize:function($super,options){options=options||{};$super(options);this.setLoggerId("AddressListComponent");},getErrorContent:function(){return"Es gab keine Ergebnisse für Ihre Suche! Bitte überprüfen Sie, ob die Adresse - Straße, Ort - vollständig eingegeben wurde.";},update:function(address){this.debug("update");this.container.update(this.createHeadline("Gefundene Adresse"));var mediator=this.getService("Mediator");var p=new Element("p",{"class":"search-list-content"}).update('"');var addressLink=new Element("a",{"class":"found-address",href:"javascript:void(0);"}).update(address.getAddress());Event.observe(addressLink,"click",mediator.goToLastFoundAddress.bind(mediator));p.insert(addressLink);p.insert('"');this.container.insert(p);var deleteLink=new Element("a",{"class":"linker-link",href:"javascript:void(0);"});deleteLink.update("Suche löschen");Event.observe(deleteLink,"click",mediator.deleteSearchResults.bind(mediator,"address"));this.container.insert(deleteLink);}});ak.maps2009.components.list.HitListComponent=Class.create(ak.maps2009.components.list.BaseListComponent,{initialize:function($super,options){options=options||{};$super(options);this.container.addClassName("ak-hit-list");this.setLoggerId(options.identifier||"HitListComponent");this.opts={deleteSearchLink:Boolean(options.deleteSearchLink)};this.paging=new ak.utils.Paging(0,options.itemsPerPage||10);this.visiblePois=[];},showProgress:function($super){$super();this.visiblePois=[];},showError:function($super){$super();this.visiblePois=[];},getErrorContent:function(){return"Es ist ein Fehler aufgetreten!<br>Bitte verkleinern Sie den Suchausschnitt oder versuchen es später nochmal.";},update:function(poiCollection,startAt){this.debug("update");if(!poiCollection){return this.error("update: No POI collection given!");}this.paging.setTotalHits(poiCollection.size());startAt=startAt||1;this.container.update(this.createHeadline(this.paging.getTotalHits()+" Treffer in der Karte"));this.mapList=new Element("ul");if(this.opts.deleteSearchLink){var deleteLink=new Element("a",{"class":"linker-link",href:"javascript:void(0);"});deleteLink.update("Suche löschen");var mediator=this.getService("Mediator");Event.observe(deleteLink,"click",mediator.deleteSearchResults.bind(mediator,"company"));this.container.insert(deleteLink);}this.container.appendChild(this.mapList);return this.showPage(startAt,poiCollection);},showPage:function(index,poiCollection){if(!poiCollection.size()){this.visiblePois=[];return this.visiblePois;}this.debug("showPage");this.visiblePois=[];this.mapList.innerHTML="";var mediator=this.getService("Mediator");var clickCallback=function(index){mediator.hitListPageClicked(index);};this.paging.setCurrentPage(index);this.paging.createElement(this.mapList,"top",clickCallback);var mlmViewItems=[];for(var i=this.paging.getFirst();i<=this.paging.getLast();i++){var poi=poiCollection.getPoiByIndex(i);this.visiblePois.push(i);mlmViewItems.push(poi.getData().companyId);this.mapList.insert(this.createPoiElement(poi));}this.paging.createElement(this.mapList,"bottom",clickCallback);this.getService("Tracking").trackMlmAction({actionId:0,groupId:"company",items:mlmViewItems});return this.visiblePois;},clear:function($super){$super();this.visiblePois=[];},getVisiblePois:function(){return this.visiblePois;},turnToPoi:function(poi){var page=this.paging.getPageByHit(poi.getIndex());this.paging.setCurrentPage(page);},createPoiElement:function(poi){poi.setPosition(poi.getIndex()%this.paging.getHitsPerPage()+1);var entryContainer=new Element("li");if(poi.isPremium()){entryContainer.addClassName("premium");}this.mapList.insert(entryContainer);entryContainer.insert(new Element("div",{"class":"imgWrapper"}).update(new Element("img",{src:poi.getIcon()})));var mediatorService=this.getService("Mediator");var mouseoverCallback=mediatorService.hitListItemHovered.bind(mediatorService,poi.getIndex());Event.observe(entryContainer,"mouseover",mouseoverCallback);var mouseoutCallback=mediatorService.hitListItemLeft.bind(mediatorService,poi.getIndex());Event.observe(entryContainer,"mouseout",mouseoutCallback);var clickCallback=mediatorService.hitListItemLeftClicked.bind(mediatorService,poi.getIndex());Event.observe(entryContainer,"click",clickCallback);entryContainer.insert(poi.getHitListContent());return entryContainer;},highlightPoi:function(poi){if(poi.getIndex()>=this.paging.getFirst()&&poi.getIndex()<=this.paging.getLast()){var index=poi.getIndex()-this.paging.getFirst();var entryContainer=$(this.mapList.childNodes[index+1]);entryContainer.addClassName("highlighted");}},undoHighlightPoi:function(poi){if(poi.getIndex()>=this.paging.getFirst()&&poi.getIndex()<=this.paging.getLast()){var index=poi.getIndex()-this.paging.getFirst();var entryContainer=$(this.mapList.childNodes[index+1]);entryContainer.removeClassName("highlighted");}}});ak.maps2009.components.list.RouteListComponent=Class.create(ak.maps2009.components.list.BaseListComponent,{initialize:function(options){options=options||{};this.setLoggerId("RouteListComponent");this.container=$(options.container);if(!this.container){this.error("Missing container!");}},getErrorContent:function(){return"Es gab keine Ergebnisse für Ihre Suche!";},update:function(route){this.debug("update");this.clear();var listHeader=new Element("div",{"class":"route-list-header"});listHeader.insert(new Element("div",{"class":"search-list-headline"}).update("Routenbeschreibung"));var info=new Element("p",{"class":"route-info"}).update("Entfernung: ");info.insert(new Element("b").update(route.distance.toFixed(1)+" km"));info.insert(",  Fahrzeit: ").insert(new Element("b").update(ak.formatTime(route.time)));listHeader.insert(info);var delLink=new Element("a",{href:"javascript:void(0)","class":"linker-link"}).update("Route löschen");var mediator=this.getService("Mediator");Event.observe(delLink,"click",mediator.deleteSearchResults.bind(mediator,"route"));listHeader.insert(delLink);this.container.insert(listHeader);route.legs.each(function(leg,index){this.container.insert(this.createRouteLegItem(leg,index));}.bind(this));},createRouteLegItem:function(routeLeg,index){var cssClass=(index%2)?"route-leg-odd":"route-leg-even";var item=new Element("div",{"class":cssClass});item.insert(new Element("div",{"class":"route-leg-icon"}).insert(new Element("img",{title:routeLeg.title,alt:routeLeg.title,src:routeLeg.icon})));item.insert(new Element("div",{"class":"route-leg-text"}).update(routeLeg.text));var info=new Element("div",{"class":"route-leg-info"});if(routeLeg.time){info.insert(ak.formatTime(routeLeg.time));}info.insert(new Element("br"));if(routeLeg.distance){info.insert(routeLeg.distance.toFixed(1)+" km");}item.insert(info);return item;}});ak.namespace("ak.maps2009.components.searchSlider");ak.maps2009.components.searchSlider.SearchSliderComponent=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.setLoggerId("SearchSliderComponent");this.container=$(options.container);this.track=$(options.track);this.handle=$(options.handle);this.onChange=options.onChange||Prototype.emptyFunction;this.createSliderInfo();this.sliderValue=0.5;this.createSlider();},createSliderInfo:function(){this.infoContainer=document.createElement("div");this.container.appendChild(this.infoContainer);this.infoContainer.innerHTML=0;},createSlider:function(){this.sliderObject=new Control.Slider(this.handle.id,this.track.id,{range:$R(0,25),values:[0.5,5,10,15,20,25],sliderValue:this.sliderValue,onChange:this.sliderChange.bind(this)});},sliderChange:function(value){this.debug("sliderChange("+value+")");if(this.sliderValue==value){return;}this.sliderValue=value;this.infoContainer.innerHTML=value;this.getService("Mediator").sliderChanged(value);this.onChange(value);},disable:function(){this.trackContainer.style.backgroundColor="#DDDDDD";this.sliderObject.active=false;},enable:function(){this.trackContainer.style.backgroundColor="#FEC00F";this.sliderObject.active=true;},setValue:function(value){this.debug("setValue("+value+")");if(!value){return;}value=value-value%5;value=Math.min(25,Math.max(0.5,value));if(value!=this.sliderValue){this.sliderObject.setValue(value);}},getValue:function(value){return this.sliderValue;}});ak.namespace("ak.maps2009.components.tabPanel");ak.maps2009.components.tabPanel.TabPanelComponent=Class.create(ak.maps2009.Logger,{initialize:function(options){options=options||{};this.tabs={};this.setLoggerId("TabPanelComponent");this.container=$(options.container);if(!(options.tabs&&options.tabs.length)){return this.error("No tabs given!");}for(var i=0;i<options.tabs.length;i++){var tab={name:options.tabs[i].name,li:$(options.tabs[i].li),div:$(options.tabs[i].div),index:i};this.tabs[tab.name]=tab;if(tab.name==options.activeTab){this.activateTab(tab);}else{this.deactivateTab(tab);}Event.observe(tab.li,"click",function(tab){if(tab.li.hasClassName("disabled")){return;}this.getService("Mediator").tabClicked(tab.name);}.bind(this,tab));}if(!this.activeTab){this.activateTab(this.tabs[options.tabs[0].name]);}},getActiveTab:function(){return this.activeTab.name;},deactivateTab:function(tab){tab.div.style.display="none";tab.li.removeClassName("active");},activateTab:function(tab){tab.div.style.display="block";tab.li.addClassName("active");this.activeTab=tab;},disableTab:function(name){var tab=this.tabs[name];if(!tab){return this.error("disableTab: invalid name "+name);}tab.li.addClassName("disabled");},enableTab:function(name){var tab=this.tabs[name];if(!tab){return this.error("enableTab: invalid name "+name);}tab.li.removeClassName("disabled");},changeTab:function(name){this.debug("changeTab("+name+")");var tab=this.tabs[name];if(!tab){return this.error("changeTab: invalid name "+name);}if(tab.li.hasClassName("disabled")){return;}if(tab!=this.activeTab){this.deactivateTab(this.activeTab);this.activateTab(tab);}}});var xtnv=document;var xtsd="";var xtsite="";var xtn2="";var xtpage="";ak.namespace("ak.maps2009.internalServices.tracking");ak.maps2009.internalServices.tracking.TrackingService=Class.create(ak.maps2009.Logger,{mapping:{company:"Branchenbuch",route:"Route",address:"Adresse",miniMap:"Minikarte"},initialize:function(options){options=options||{};this.setLoggerId("TrackingService");this.mapping[VEMapStyle.Road]="Karte";this.mapping[VEMapStyle.Shaded]="Karte";this.mapping[VEMapStyle.Aerial]="Luftbild";this.mapping[VEMapStyle.Hybrid]="Kombi";this.mapping[VEMapStyle.BirdseyeHybrid]="Vogelperspektive";this.ignoreEvents={};this.stopWatch=new ak.utils.StopWatch();this.initialized=false;var ivwConfig=options.ivw||{};this.ivwContainer=$(ivwConfig.imgContainer);this.ivwUrl=ivwConfig.imgSrcPath;this.ivwMapping=ivwConfig.eventMapping||{};if(typeof ivwConfig.imgContainer=="string"){this.ivwImg=$$("#"+ivwConfig.imgContainer+" img")[0];this.initialized=Boolean(this.ivwImg);}var xitiConfig=options.xiti||{};this.xitiMapping=xitiConfig.eventMapping||{};this.xitiLinkPrefix=xitiConfig.linkPrefix||"Stadtplan";this.xitiLevel2=xitiConfig.level2||"11";if(!(typeof options.mlm==="object"&&this.initializeMlm(options.mlm))){this.trackMlmGroup=Prototype.emptyFunction;this.trackMlmAction=Prototype.emptyFunction;}},initializeMlm:function(config){if(typeof ak.mlm==="undefined"){this.error("Missing ak.mlm! No mlm tracking possible!");return false;}if(ak.mlm.initialized){this.debug("Mlm already initialized.");return true;}this.debug("initializing mlm ...");if(!config.redirecter){this.error("Missing redirecter! No mlm tracking possible!");return false;}if(!config.requestId){this.error("Missing requestId! No mlm tracking possible!");return false;}ak.mlm.initialize({redirecter:config.redirecter,request:config.requestId});return true;},trackMlmGroup:function(name,group){if(ak.mlm.getGroup(name)){this.info("group already exists");return;}ak.mlm.addGroup(name,group);},trackMlmAction:function(opts){this.info("trackMlmAction");if(!ak.mlm.getGroup(opts.groupId)){return this.info("Unable to track mlm action: Invalid groupId '"+opts.groupId+"'");}var items={};items[opts.groupId]=opts.items;ak.mlm.reloadCntPixel({action:opts.actionId,items:items});},triggerInitialPI:function(event){this.initialized=true;this.initializeIvw(event);this.initializeXiti(event);},createLinkName:function(link){this.debug("createLinkName: "+Object.toJSON(link));if(!link){return;}var name=this.xitiLinkPrefix;if(link.search){name+="_Suche-"+this.mapping[link.search];}if(link.mapStyle){name+="_Modus-"+this.mapping[link.mapStyle];}if(link.mapAd){var c=this.getComponent("MapAdList").getCategories(link.mapAd).pluck("title");name+="_Empfehlungen-"+c.collect(function(s){return s.substr(0,5);}).join("-");}if(link.category){var c=this.getComponent("CategoryList").getCategories(link.category).pluck("title");name+="_POI-"+c.collect(function(s){return s.substr(0,5);}).join("-");}if(link.foto){name+="_Foto-"+link.foto;}if(link.result){name+="_Ergebnis-"+link.result.replace(/company/,"Branchenbuch");}if(link.detail){name+="_"+link.detail;}return name;},ignoreNextEvent:function(name){this.ignoreEvents[name]=1;},triggerLinkTracking:function(event){if(!this.initialized){return;}this.triggerXitiLinkTracking(event);},reloadPITracking:function(event){if(!this.initialized){return;}this.debug("reloadPITracking "+event.eventName);var eventName=event.eventName;if(this.ignoreEvents[eventName]){this.ignoreEvents[eventName]-=1;return;}if(event.ivw!==false){this.reloadIvwTracking(event);}if(event.xiti!==false){this.triggerXitiPITracking(event);}},determineIvwTag:function(trackingEvent){var tagName=this.ivwMapping[trackingEvent.eventName];if(!tagName){this.error("No IVW tag defined for "+trackingEvent.eventName);}return tagName;},initializeIvw:function(event){this.debug("initializeIvw "+Object.toJSON(event));this.ivwImg=new Element("img",{alt:"ivw"});this.reloadIvwTracking(event,true);this.ivwContainer.insert(this.ivwImg);},reloadIvwTracking:function(trackingEvent,init){if(!this.ivwImg){return;}var referrer=(init&&document.referrer)?encodeURIComponent(document.referrer):"";var ivwTag=this.determineIvwTag(trackingEvent);this.ivwImg.src=this.ivwUrl+"/"+ivwTag+"?r="+referrer+"&d="+(Math.random()*100000);this.debug(this.ivwImg.src);},getXitiMulticriteria:function(event){var currentTown=this.getService("Mediator").getCurrentTown();var multicriteria={};var ivwCode=(event.eventName)?this.ivwMapping[event.eventName]:"";if(ivwCode){multicriteria.x4=ivwCode+"_"+this.xitiMapping[event.eventName];}if(currentTown){multicriteria.x1=currentTown.getData().title;}return multicriteria;},getXitiFormulaParams:function(event){var params={};var mc=[];var mapping={searchWords:"f1",address:"f1",start:"f1",end:"f2",opt:"f3"};for(var name in mapping){var f=this.normalizeSearchWord(event[name]);if(f){params[mapping[name]]=f;mc.push(f);}}if(mc.length){params.mc=this.xitiLinkPrefix+"-"+this.mapping[event.link.search]+"-suche";if(event.link.iwc){params.mc+="-iwc";}params.mc+="_"+mc.join("-");params.np=event.page;}return params;},determineXitiParams:function(event){event=event||{};var params={};Object.extend(params,this.getXitiFormulaParams(event));Object.extend(params,this.getXitiMulticriteria(event));return params;},normalizeSearchWord:function(word){return word?word.toLowerCase():"";},initializeXiti:function(event){this.triggerXitiPITracking(event,true);},triggerXitiPITracking:function(event,referrer){event=event||{};this.debug("triggerXitiPITracking "+Object.toJSON(event));if(!this.xitiMapping[event.eventName]){return this.info("No xiti mapping defined for "+event.eventName);}var level2=this.xitiLevel2;var pageName=this.xitiMapping[event.eventName];var params=this.determineXitiParams(event);if(referrer&&document.referrer){params.ref=document.referrer.replace(/[<>]/g,"").replace(/&/g,"$");if(document.referrer.match(/^http:\/\/www.google.(de|com)\/(search|url)\?/g)){params.x11=pageName+"|"+((document.referrer.toQueryParams()||{}).q||"- undefined").replace(/;|\|/g,",").replace(/\+/g,"_");}}var paramsString=Object.toQueryString(params);if(paramsString){pageName+="&"+paramsString;}xt_med("F",level2,pageName);this.debug("XiTi PI: "+level2+" - "+pageName);},triggerXitiLinkTracking:function(event){var level2=this.xitiLevel2;var pageName=this.createLinkName(event);var params=this.determineXitiParams(event);var paramsString=Object.toQueryString(params);if(paramsString){pageName+="&"+paramsString;}xt_med("F",level2,pageName,"N");this.debug("Huhu XiTi Link: "+level2+" - "+pageName);}});

