var BDMapHandler={mInfoUrl:"",mExtPOI:"",mExtInfo:"",mCurrentMarker:null,mMarkerTimer:null,mMarkerOutTimer:null,mIdCounter:0,mCurrentMap:null,mAll:{},iconSetType:{small:{path:"/images/category/15x18/",height:18,width:15,shadowHeight:18,shadowWidth:26,anchorX:7,anchorY:18},normal:{path:"/images/category/20x20/",height:24,width:20,shadowHeight:24,shadowWidth:32,anchorX:10,anchorY:24},center:{path:"/images/category/24x24/",height:28,width:24,shadowHeight:28,shadowWidth:36,anchorX:12,anchorY:28}},show:function(inId){if(this.mAll[inId]){this.mAll[inId].show()}},getId:function(){return(Math.random()*"1000"+new String(this.mIdCounter++))},getIcon:function(inType,inName){var ret=null;var setType=BDMapHandler.iconSetType[inType];if(setType){baseIcon=setType.baseIcon;if(setType.baseIcon==null){baseIcon=new google.maps.Icon();if(setType.shadowWidth){baseIcon.shadow="http://www.google.com/mapfiles/shadow50.png";baseIcon.shadowSize=new google.maps.Size(setType.shadowWidth,setType.shadowHeight)}baseIcon.iconAnchor=new google.maps.Point(setType.anchorX,setType.anchorY);setType.baseIcon=baseIcon}ret=new google.maps.Icon(baseIcon);ret.image=setType.path+inName+".png"}return ret}};var ExternalIconHandler={getBaseIcon:function(){if(ExternalIconHandler.baseIcon==null){ExternalIconHandler.baseIcon=new google.maps.Icon();ExternalIconHandler.baseIcon.image="http://www.google.com/intl/de_de/mapfiles/arrow.png";ExternalIconHandler.baseIcon.shadow="http://www.google.com/mapfiles/shadow50.png";ExternalIconHandler.baseIcon.iconSize=new google.maps.Size(32,32);ExternalIconHandler.baseIcon.shadowSize=new google.maps.Size(56,32);ExternalIconHandler.baseIcon.iconAnchor=new google.maps.Point(15,19);ExternalIconHandler.baseIcon.infoWindowAnchor=new google.maps.Point(28,7)}return ExternalIconHandler.baseIcon},mIcons:{}};function BDMap(inId){BDMapHandler.mAll[inId]=this;BDMapHandler.mCurrentMap=this;this.mMapId=inId;this.mMarker=new Array();this.mCenter=new google.maps.LatLngBounds();this.mZoom=11;this.mVisible=false;this.mZoomControl=new google.maps.LargeMapControl3D();this.mOverviewControl=new google.maps.OverviewMapControl();this.mTypeControl=new google.maps.MapTypeControl();this.mType=G_NORMAL_MAP;this.mScaleControl=new google.maps.ScaleControl();this.mSupportMouseScroll=true}BDMap.prototype.createMarkerJSON=function(inData,inPOICount,fireEvent){if(this.mMap){this.mMap.getInfoWindow().hide();this.mMap.clearOverlays()}this.mMarker=[];bounds=new google.maps.LatLngBounds();if(inData.items!=null&&inData.items.length){for(i=0;i<inData.items.length;i++){obj=inData.items[i];lat=obj.lat;lng=obj.lng;cat=obj.cat;marker=null;if(cat=="cluster"){marker=new BDClusterMarker(lat,lng,obj.countPois,obj.rect.s,obj.rect.w,obj.rect.n,obj.rect.e);this.addMarkerObject(marker);if(inPOICount==null||inPOICount>i){bounds.extend(new google.maps.LatLng(lat,lng))}}else{if(cat=="bookmark"){id=obj.id;name=obj.name;this.addMarker(id,lat,lng,name,cat,600,null,{iconType:"normal",bookmarkType:obj.type})}else{if(cat=="destination"){}else{id=obj.id;name=obj.name;gid=obj.gid;state=obj.status;type=obj.type;if(obj.trip){cat+="_book";state++}else{if(obj.verified==true){cat+="_bookout";state=0}else{if(obj.verified==false){cat+="_check"}}}this.addMarker(id,lat,lng,name,cat,state,gid,{iconType:type});if(inPOICount==null||inPOICount>i||type=="center"){bounds.extend(new google.maps.LatLng(lat,lng))}}}}}}this.loadExternalPOIs();if(fireEvent){google.maps.Event.trigger(this,"markerLoaded",this.mMarker,bounds)}return bounds};BDMap.prototype.loadExternalPOIs=function(){var currentMap=this;if(BDMapHandler.mExtPOI!=null&&BDMapHandler.mExtPOI.length>0){var request=google.maps.XmlHttp.create();request.open("GET",BDMapHandler.mExtPOI);request.onreadystatechange=function(){if(request.readyState==4){var xmlDoc=google.maps.Xml.parse(request.responseText);if(xmlDoc!=null&&xmlDoc.documentElement!=null){var icons=xmlDoc.documentElement.getElementsByTagName("icon");for(var i=0;i<icons.length;i++){var iconName=icons[i].getAttribute("name");var icon_url=icons[i].getAttribute("icon_url");var icon_width=icons[i].getAttribute("icon_width");var icon_height=icons[i].getAttribute("icon_height");var shadow_url=icons[i].getAttribute("shadow_url");var shadow_width=icons[i].getAttribute("shadow_width");var shadow_height=icons[i].getAttribute("shadow_height");var anchor_x=icons[i].getAttribute("anchor_x");var anchor_y=icons[i].getAttribute("anchor_y");var info_anchor_x=icons[i].getAttribute("info_anchor_x");var info_anchor_y=icons[i].getAttribute("info_anchor_y");var theIcon=new google.maps.Icon(ExternalIconHandler.getBaseIcon());theIcon.image=icon_url;theIcon.iconSize=new google.maps.Size(icon_width,icon_height);theIcon.shadow=shadow_url;theIcon.shadowSize=new google.maps.Size(shadow_width,shadow_height);theIcon.iconAnchor=new google.maps.Point(anchor_x,anchor_y);theIcon.infoWindownchor=new google.maps.Point(info_anchor_x,info_anchor_y);ExternalIconHandler.mIcons[iconName]=theIcon}var pois=xmlDoc.documentElement.getElementsByTagName("poi");if(currentMap.mMap){currentMap.mMap.getInfoWindow().hide()}for(var i=0;i<pois.length;i++){var id=null;var lat=parseFloat(pois[i].getAttribute("latitude"));var lng=parseFloat(pois[i].getAttribute("longitude"));var tooltip=pois[i].getAttribute("tooltip");var type=pois[i].getAttribute("type");var state=1;var distance=parseFloat(pois[i].getAttribute("distance"));var markerIcon=pois[i].getAttribute("marker");var infoUrl=pois[i].getAttribute("infoUrl");var marker=new ExternalMarker(lat,lng,tooltip,type,infoUrl,markerIcon);if(distance>0){marker.setDistance(distance)}currentMap.addMarkerObject(marker)}var tabs=xmlDoc.documentElement.getElementsByTagName("tab");for(var i=0;i<tabs.length;i++){var title=tabs[i].getAttribute("title");var theUrl=tabs[i].getAttribute("url");var target=tabs[i].getAttribute("target");if(target==null){target="_blank"}if(title!=null&&theUrl!=null){var extraTab=document.getElementById("extraTab");extraTab.innerHTML='<a href="'+theUrl+'" target="'+target+'">'+title+"</a>"}}}}};request.send(null)}};BDMap.prototype.changeIcon=function(inData,bookOnly){var idSet={};for(i=0;i<inData.length;i++){idSet[inData[i].gid]=true}for(i=0;i<this.mMarker.length;i++){var marker=this.mMarker[i];if(marker!=null){var gid=marker.mGiataId;if(idSet[gid]==true){this.replaceIcon(marker,"Uebernachten_book",5)}else{if(marker.mType=="Uebernachten_check"){if(bookOnly){this.mMap.removeOverlay(marker.mMarker);this.mMarker[i]=null}else{this.replaceIcon(marker,"Uebernachten_bookout",0,(marker.mIconType=="center"?null:"small"))}}}}}};BDMap.prototype.replaceIcon=function(bdmarker,inType,inState,inIconType){bdmarker.mIconType=(inIconType?inIconType:bdmarker.mIconType);bdmarker.mType=inType;if(bdmarker.mMarker){this.mMap.removeOverlay(bdmarker.mMarker);bdmarker.mMarker=null;bdmarker.mIcon=null;bdmarker.mState=inState;this.mMap.addOverlay(bdmarker.getGMarker())}};BDMap.prototype.getGiataMarker=function(inGiata){for(i=0;i<this.mMarker.length;i++){var marker=this.mMarker[i];if(marker!=null&&marker.mGiataId==inGiata){return marker}}return null};BDMap.prototype.getMarker=function(inId){for(i=0;i<this.mMarker.length;i++){var marker=this.mMarker[i];if(marker&&marker.mId==inId){return marker}}return null};BDMap.prototype.setMinimumResolution=function(inZoom){G_PHYSICAL_MAP.getMinimumResolution=function(){return inZoom};G_NORMAL_MAP.getMinimumResolution=function(){return inZoom};G_SATELLITE_MAP.getMinimumResolution=function(){return inZoom};G_HYBRID_MAP.getMinimumResolution=function(){return inZoom}};BDMap.prototype.getMarkerBounds=function(){var bounds=new google.maps.LatLngBounds();for(i=0;i<this.mMarker.length;++i){if(this.mMarker[i]!=null&&this.mMarker[i].getPoint){bounds.extend(this.mMarker[i].getPoint())}}return bounds};BDMap.prototype.setSupportMouseScroll=function(inFlag){this.mSupportMouseScroll=inFlag};BDMap.prototype.setOverviewControl=function(inFlag){if(this.mMap!=null&&this.mOverviewControl){this.mMap.removeControl(this.mOverviewControl)}if(inFlag==0){this.mOverviewControl=null}else{if(inFlag==1){this.mOverviewControl=new google.maps.OverviewMapControl()}}if(this.mMap!=null&&this.mOverviewControl){this.mMap.addControl(this.mOverviewControl)}};BDMap.prototype.setScaleControl=function(inFlag){if(this.mMap!=null&&this.mScaleControl){this.mMap.removeControl(this.mScaleControl)}if(inFlag==0){this.mScaleControl=null}else{if(inFlag==1){this.mScaleControl=new google.maps.ScaleControl()}}if(this.mMap!=null&&this.mScaleControl){this.mMap.addControl(this.mScaleControl)}};BDMap.prototype.setZoomControl=function(inFlag){if(this.mMap!=null&&this.mZoomControl){this.mMap.removeControl(this.mZoomControl)}if(inFlag==-1&&this.mMap!=null){var gSize=this.mMap.getSize();if(gSize){if(gSize.height>299){inFlag=3}else{if(gSize.height>199){inFlag=2}else{inFlag=1}}}}if(inFlag==0){this.mZoomControl=null}else{if(inFlag==1){this.mZoomControl=new google.maps.SmallZoomControl()}else{if(inFlag==2){this.mZoomControl=new google.maps.SmallMapControl()}else{if(inFlag==3){this.mZoomControl=new google.maps.LargeMapControl3D()}}}}if(this.mMap!=null&&this.mZoomControl){this.mMap.addControl(this.mZoomControl)}};BDMap.prototype.setTypeControl=function(inFlag){if(this.mMap!=null&&this.mTypeControl&&inFlag==0){this.mMap.removeControl(this.mTypeControl)}if(inFlag==0){this.mTypeControl=null}else{this.mTypeControl=new google.maps.MenuMapTypeControl()}if(inFlag==1){this.mType=G_NORMAL_MAP}else{if(inFlag==2){this.mType=G_SATELLITE_MAP}else{if(inFlag==3){this.mType=G_HYBRID_MAP}else{if(inFlag==4){this.mType=G_PHYSICAL_MAP}}}}if(this.mMap!=null&&this.mTypeControl){this.mMap.addControl(this.mTypeControl);this.mMap.setMapType(this.mType)}};BDMap.prototype.center=function(zoom){if(this.mMap&&this.mCenter){if(zoom){this.mMap.setCenter(this.mCenter.getCenter(),this.mZoom)}else{this.mMap.setCenter(this.mCenter.getCenter())}}};BDMap.prototype.getBounds=function(){if(this.mMap){return this.mMap.getBounds()}return null};BDMap.prototype.setZoom=function(inZoom){if(inZoom&&inZoom>0){this.mZoom=Math.min(19,Math.max(1,inZoom))}};BDMap.prototype.zoom=function(){if(this.mMap&&this.mZoom!=this.mMap.getZoom()){this.mMap.setZoom(this.mZoom)}};BDMap.prototype.getZoom=function(){if(this.mMap){return this.mMap.getZoom()}return this.mZoom};BDMap.prototype.checkResize=function(){if(this.mMap){this.mMap.checkResize()}};BDMap.prototype.getAvailableTypes=function(){return this.mAvailableTypes};BDMap.prototype.setCenterPoint=function(inLat,inLong){if(inLat!=0&&inLong!=0){this.mCenter=new google.maps.LatLngBounds();this.mCenter.extend(new google.maps.LatLng(inLat,inLong))}};BDMap.prototype.addCenterPoint=function(inLat,inLong){if(inLat!=0&&inLong!=0){this.mCenter.extend(new google.maps.LatLng(inLat,inLong))}};BDMap.prototype.getCenterPoint=function(){if(this.mCenter){return this.mCenter.getCenter()}return null};BDMap.prototype.addMarker=function(inId,inLat,inLong,inName,inType,inState,inGiataId,inOptions){if(inLat!=0&&inLong!=0){var marker=new BDMarker(inId,inLat,inLong,inName,inType,inState,inGiataId,inOptions);this.addMarkerObject(marker);if(inOptions&&inOptions.iconType=="center"){this.mCenter.extend(marker.getPoint())}return marker}return null};BDMap.prototype.addMarkerObject=function(marker){if(marker){if(marker.setMap!=null){marker.setMap(this)}this.mMarker.push(marker);if(this.mMap){this.mMap.addOverlay(marker.getGMarker())}}};BDMap.prototype.removeMarkerObject=function(marker){if(marker){for(i=0;i<this.mMarker.length;++i){if(this.mMarker[i]!=null&&this.mMarker[i]==marker){this.mMap.removeOverlay(marker.getGMarker());this.mMarker[i]=null;break}}}};BDMap.prototype.show=function(){this.mMap=new google.maps.Map2(document.getElementById(this.mMapId));if(this.mTypeControl){this.mMap.addMapType(G_PHYSICAL_MAP);this.mMap.addControl(this.mTypeControl)}if(this.mZoomControl){this.mMap.addControl(this.mZoomControl)}if(this.mOverviewControl){this.mMap.addControl(this.mOverviewControl)}if(this.mScaleControl){this.mMap.addControl(this.mScaleControl)}this.mMap.enableDoubleClickZoom();this.mMap.enableContinuousZoom();if(this.mSupportMouseScroll){this.mMap.enableScrollWheelZoom();google.maps.Event.addDomListener(document.getElementById(this.mMapId),"DOMMouseScroll",function(event){if(event.cancelable){event.preventDefault()}return false});google.maps.Event.addDomListener(document.getElementById(this.mMapId),"mousewheel",function(event){if(event.cancelable){event.preventDefault()}return false})}if(this.mType){this.mMap.setMapType(this.mType)}this.center();this.zoom();this.mVisible=true};BDMap.prototype.unload=function(){if(this.mMap){google.maps.Unload();this.mMap=null;this.mVisible=false;this.mClusterer=null}};function MenuControl(inName,inItems){this.menuVisible=false;this.name=inName;this.items=inItems}MenuControl.prototype=new google.maps.Control();MenuControl.prototype.initialize=function(map){var container=document.createElement("div");container.className="mapmenu";var menuDiv=this.createMenuDiv_();container.appendChild(menuDiv);var menuitemContainer=document.createElement("div");menuitemContainer.id="t4e_menuitems";menuitemContainer.className="itemcontainer";for(var i=0;i<this.items.length;i++){menuitemContainer.appendChild(this.createMenuItemDiv_(this.items[i].name,this.items[i].func))}container.appendChild(menuitemContainer);map.getContainer().appendChild(container);return container};MenuControl.prototype.createMenuItemDiv_=function(inName,inFunc){var divElem=document.createElement("div");divElem.className="menuitem";var titleElem=document.createElement("div");titleElem.className="menuitemtitle";titleElem.appendChild(document.createTextNode(inName));google.maps.Event.addDomListener(divElem,"click",function(){control.toggleMainItem()});google.maps.Event.addDomListener(divElem,"click",inFunc);divElem.appendChild(titleElem);return divElem};MenuControl.prototype.createMenuDiv_=function(){var divElem=document.createElement("div");divElem.style.position="absolute";divElem.style.top="0px";divElem.style.right="0px";var mainDiv=document.createElement("div");mainDiv.className="main";mainDiv.id="t4e_main";var mainItem=document.createElement("div");mainItem.className="mainitem";var mainTitle=document.createElement("div");mainTitle.className="maintitle";mainTitle.appendChild(document.createTextNode(this.name));var mainImg=document.createElement("div");mainImg.className="mainimg";var downImg=document.createElement("img");downImg.src="http://maps.gstatic.com/intl/de_ALL/mapfiles/down-arrow.gif";mainImg.appendChild(downImg);mainItem.appendChild(mainTitle);mainItem.appendChild(mainImg);mainDiv.appendChild(mainItem);divElem.appendChild(mainDiv);control=this;google.maps.Event.addDomListener(divElem,"click",function(){control.toggleMainItem()});return divElem};MenuControl.prototype.toggleMainItem=function(){var elem=document.getElementById("t4e_menuitems");if(elem){if(this.menuVisible){elem.style.visibility="hidden"}else{elem.style.visibility="visible"}this.menuVisible=!this.menuVisible}};MenuControl.prototype.getDefaultPosition=function(){return new google.maps.ControlPosition(G_ANCHOR_TOP_RIGHT,new google.maps.Size(200,7))};function BDMarker(inId,inLat,inLong,inName,inType,inState,inGiataId,inOptions){this.mId=inId;this.mPoint=new google.maps.LatLng(inLat,inLong);this.mName=inName;this.mType=inType;this.mState=inState;this.mGiataId=inGiataId;this.mCenter=false||(inOptions&&inOptions.type=="center");this.mPoppable=(BDMapHandler.mInfoUrl!=null&&BDMapHandler.mInfoUrl.length>0)||(inOptions&&inOptions.poppable);this.mClickable=true||(inOptions&&inOptions.clickable);this.mDraggable=false||(inOptions&&inOptions.draggable);this.mIconType=(inOptions&&inOptions.iconType?inOptions.iconType:"normal");this.mVisible=true;this.mExternalInfoUrl=null;if(this.mType=="Position"||(inOptions&&inOptions.bookmarkType&&inOptions.bookmarkType=="ADDRESS")){this.mInfoText=inName;this.mClickable=false}}BDMarker.prototype.getGMarker=function(){var icon=this.getIcon();if(this.mMarker==null&&icon!=null){var map={icon:icon};if(!this.isPoppable()){map.title=this.mName}if(this.isDraggable()){map.draggable=this.mDraggable}map.zIndexProcess=orderOfImportance;this.mMarker=new google.maps.Marker(this.mPoint,map);if(this.mCenter){this.mMarker.importance=-1000}else{this.mMarker.importance=-(((6-(this.mState/100))*100000))}if(this.isPoppable()){google.maps.Event.bind(this.mMarker,"mouseover",this,this.onMouseOver);google.maps.Event.bind(this.mMarker,"mouseout",this,this.onMouseOutAsync)}if(this.isClickable()){google.maps.Event.bind(this.mMarker,"click",this,this.onClick)}}return this.mMarker};BDMarker.prototype.getIcon=function(){if(this.mIcon==null){this.mIcon=BDMapHandler.getIcon(this.mIconType,this.mType)}return this.mIcon};BDMarker.prototype.setMap=function(map){this.map=map};BDMarker.prototype.onMouseOver=function(){if(BDMapHandler.mCurrentMarker==null||BDMapHandler.mCurrentMarker.mId!=this.mId){if(BDMapHandler.mMarkerTimer){window.clearTimeout(BDMapHandler.mMarkerTimer)}onMouseOut();BDMapHandler.mCurrentMarker=this;BDMapHandler.mMarkerTimer=window.setTimeout("markerOnMouseOver()",300)}};BDMarker.prototype.onMouseOutAsync=function(){if(BDMapHandler.mMarkerOutTimer){window.clearTimeout(BDMapHandler.mMarkerOutTimer)}BDMapHandler.mMarkerOutTimer=window.setTimeout("onMouseOut()",100)};function onMouseOut(){$(".maptooltip").css("visibility","hidden")}function markerOnMouseOver(){var marker=BDMapHandler.mCurrentMarker;if(marker!=null&&marker.mInfoText==null){if(BDMapHandler.tooltipLoader){BDMapHandler.tooltipLoader=$.manageAjax.create("tooltipLoader",{queue:true,maxRequests:2,cacheResponse:true,abortOld:true})}$.manageAjax.add("tooltipLoader",{success:function(html){s=document.getElementById("spcontent");if(s){s.innerHTML=html;marker.mInfoText=html;marker.posTooltip()}},type:"POST",url:BDMapHandler.mInfoUrl,data:{id:marker.mId}})}var s=document.getElementById("sp");if(s==null){s=document.createElement("div");s.id="sp";s.className="maptooltip";a=document.createElement("div");a.id="sparrow";b=document.createElement("div");b.id="spcontent";b.className="maptooltipcontent";s.appendChild(a);s.appendChild(b);google.maps.Event.addDomListener(s,"mouseover",function(event){if(BDMapHandler.mMarkerOutTimer){window.clearTimeout(BDMapHandler.mMarkerOutTimer)}});google.maps.Event.addDomListener(s,"mouseout",function(event){if(BDMapHandler.mMarkerOutTimer){window.clearTimeout(BDMapHandler.mMarkerOutTimer)}BDMapHandler.mMarkerOutTimer=window.setTimeout("onMouseOut()",300)});var m=document.getElementById(marker.map.mMapId);if(m){m.appendChild(s)}}var b=document.getElementById("spcontent");if(marker.mInfoText!=null){b.innerHTML="<center>"+marker.mInfoText+"</center>"}else{b.innerHTML="<center>loading...</center>"}marker.posTooltip()}BDMarker.prototype.posTooltip=function(){var s=document.getElementById("sp");var topoffset=-1*getHeight(s)/2-12;var leftoffset=25;var rightoffset=25;var bounds=this.map.mMap.getBounds();var proj=this.map.mMap.getCurrentMapType().getProjection();var ttPos=proj.fromLatLngToPixel(new google.maps.LatLng(this.getGMarker().getLatLng().lat(),this.getGMarker().getLatLng().lng()),this.map.mMap.getZoom());var pt2=proj.fromLatLngToPixel(new google.maps.LatLng(bounds.getSouthWest().lat(),bounds.getSouthWest().lng()),this.map.mMap.getZoom());var pt3=proj.fromLatLngToPixel(new google.maps.LatLng(bounds.getNorthEast().lat(),bounds.getNorthEast().lng()),this.map.mMap.getZoom());s.style.top=((ttPos.y-pt3.y)+topoffset)+"px";var a=document.getElementById("sparrow");if(ttPos.x+240>pt3.x){s.style.right=((pt3.x-ttPos.x+1)+rightoffset)+"px";s.style.left="";if(a){a.className="maptooltiparrowright";a.style.height=(getHeight(s)-2)+"px";a.style.right=(-11+(at.ie?-1:0))+"px";a.style.left=""}}else{s.style.left=((ttPos.x-pt2.x-1)+leftoffset)+"px";s.style.right="";if(a){a.className="maptooltiparrowleft";a.style.height=(getHeight(s)-2)+"px";a.style.left=(-12+(at.ie?1:0))+"px";a.style.right=""}}s.style.visibility="visible"};BDMarker.prototype.onClick=function(){};BDMarker.prototype.setDraggable=function(inDraggable){this.mDraggable=inDraggable};BDMarker.prototype.isDraggable=function(){return this.mDraggable};BDMarker.prototype.setClickable=function(inClickable){this.mClickable=inClickable};BDMarker.prototype.isClickable=function(){return this.mClickable};BDMarker.prototype.setPoppable=function(inPoppable){this.mPoppable=inPoppable};BDMarker.prototype.isPoppable=function(){return this.mPoppable};BDMarker.prototype.getPoint=function(){return this.mPoint};BDMarker.prototype.setPoint=function(inPoint){if(inPoint){if(this.mMarker!=null){this.mMarker.setLatLng(inPoint)}this.mPoint=inPoint}};function orderOfImportance(marker,b){if(marker.importance!=null){return marker.importance}return 1}function BDClusterMarker(inLat,inLong,inCount,inS,inW,inN,inE){this.BDMarker=BDMarker;this.BDMarker(BDMapHandler.getId(),inLat,inLong);this.mS=inS;this.mW=inW;this.mN=inN;this.mE=inE;this.mCount=inCount;this.mName=this.mCount+" POIs"}BDClusterMarker.prototype=new BDMarker;BDClusterMarker.prototype.getIcon=function(){if(this.mIcon==null){var iconUrl="/images/map/gruen.png";if(this.mCount>400){iconUrl="/images/map/rot.png"}else{if(this.mCount>50){iconUrl="/images/map/blau.png"}}this.mIcon=new google.maps.Icon();var size=20+(Math.log(this.mCount)/Math.log(2)*8);this.mIcon.iconSize=new google.maps.Size(size,size);this.mIcon.iconAnchor=new google.maps.Point(size/2,size/2);this.mIcon.infoWindowAnchor=new google.maps.Point(28,7);this.mIcon.image=iconUrl;this.mIcon.label=this.mCount}return this.mIcon};BDClusterMarker.prototype.getGMarker=function(){var icon=this.getIcon();if(this.mMarker==null&&icon!=null){var map={icon:icon};map.labelText=this.mCount;map.labelOffset=new google.maps.Size(-18,-8);map.zIndexProcess=orderOfImportance;this.mMarker=new LabeledMarker(this.mPoint,map);this.mMarker.importance=-(this.mCount+1000000);google.maps.Event.bind(this.mMarker,"click",this,this.zoomToRect)}return this.mMarker};BDClusterMarker.prototype.zoomToRect=function(){if(this.map.mMap){var bounds=new google.maps.LatLngBounds(new google.maps.LatLng(this.mS,this.mW),new google.maps.LatLng(this.mN,this.mE));this.map.mMap.setCenter(bounds.getCenter(),this.map.mMap.getBoundsZoomLevel(bounds))}};function LabeledMarker(latlng,opt_opts){this.opts_=opt_opts;this.labelText_=opt_opts.labelText||"";this.labelClass_=opt_opts.labelClass||"LabeledMarker_markerLabel";this.labelOffset_=opt_opts.labelOffset||new google.maps.Size(0,0);this.clickable_=(opt_opts.clickable==false)?false:true;this.title_=opt_opts.title||"";this.labelVisibility_=true;this.ownVisibility_=true;if(opt_opts.draggable){opt_opts.draggable=false}google.maps.Marker.apply(this,arguments)}LabeledMarker.prototype=new google.maps.Marker(new google.maps.LatLng(0,0));LabeledMarker.prototype.initialize=function(map){google.maps.Marker.prototype.initialize.apply(this,arguments);this.map_=map;this.div_=document.createElement("div");this.div_.className=this.labelClass_;this.div_.innerHTML=this.labelText_;this.div_.style.position="absolute";if(this.clickable_){this.div_.style.cursor="pointer"}this.div_.title=this.title_;if(!this.ownVisibility_){this.hide()}this.applyLabelVisibility_();map.getPane(G_MAP_MARKER_PANE).appendChild(this.div_);if(this.clickable_){var eventPassthrus=["click","dblclick","mousedown","mouseup","mouseover","mouseout"];for(var i=0;i<eventPassthrus.length;i++){var name=eventPassthrus[i];google.maps.Event.addDomListener(this.div_,name,google.maps.Event.callback(google.maps.Event,google.maps.Event.trigger,this,name,this.getLatLng()))}}};LabeledMarker.prototype.redraw=function(force){google.maps.Marker.prototype.redraw.apply(this,arguments);this.redrawLabel_()};LabeledMarker.prototype.redrawLabel_=function(){var p=this.map_.fromLatLngToDivPixel(this.getLatLng());this.div_.style.left=(p.x+this.labelOffset_.width)+"px";this.div_.style.top=(p.y+this.labelOffset_.height)+"px";var z=this.importance;this.div_.style.zIndex=z+1};LabeledMarker.prototype.remove=function(){google.maps.Event.clearInstanceListeners(this.div_);if(this.div_.outerHTML){this.div_.outerHTML=""}if(this.div_.parentNode){this.div_.parentNode.removeChild(this.div_)}this.div_=null;google.maps.Marker.prototype.remove.apply(this,arguments)};LabeledMarker.prototype.copy=function(){var newMarker=new LabeledMarker(this.getLatLng(),this.opts_);newMarker.labelVisibility_=this.labelVisibility_;newMarker.ownVisibility_=this.ownVisibility_;return newMarker};LabeledMarker.prototype.show=function(){google.maps.Marker.prototype.show.apply(this,arguments);this.ownVisibility_=true;this.applyLabelVisibility_()};LabeledMarker.prototype.hide=function(){google.maps.Marker.prototype.hide.apply(this,arguments);this.ownVisibility_=false;this.applyLabelVisibility_()};LabeledMarker.prototype.setLabelVisibility=function(visibility){this.labelVisibility_=visibility;this.applyLabelVisibility_()};LabeledMarker.prototype.getLabelVisibility=function(){return this.labelVisibility_};LabeledMarker.prototype.applyLabelVisibility_=function(){if(this.div_){if((!this.isHidden())&&this.labelVisibility_){this.div_.style.display="block"}else{this.div_.style.display="none"}}};LabeledMarker.prototype.setLabelText=function(text){this.labelText_=text;this.div_.innerHTML=text;this.opts_.labelText=text};function ExternalMarker(inLat,inLong,inTooltip,inType,infoUrl,customMarker){this.BDMarker=BDMarker;this.BDMarker(null,inLat,inLong,inTooltip,inType,1);if(customMarker!=null&&customMarker.length>0){var icon=ExternalIconHandler.mIcons[customMarker];if(icon!=null){this.mIcon=new google.maps.Icon(icon)}else{this.mIcon=new google.maps.Icon(ExternalIconHandler.getBaseIcon())}}this.mExternalInfoUrl=infoUrl}ExternalMarker.prototype=new BDMarker;ExternalMarker.prototype.onClick=function(){if(this.mHTML==null){currentMarker=this;if(this.mExternalInfoUrl!=null){if(this.mExternalInfoUrl.length>0){url=BDMapHandler.mExtInfo;if(url.indexOf("?")==-1){url+="?"}else{url+="&"}url+="url="+this.mExternalInfoUrl;google.maps.DownloadUrl(url,function(doc){currentMarker.mHTML=doc;currentMarker.onClick()})}}}else{if(this.map!=null){return this.map.mMap.openInfoWindowHtml(this.getPoint(),this.mHTML)}else{return this.getGMarker().openInfoWindowHtml(this.mHTML)}}};ExternalMarker.prototype.onMouseOver=function(){};ExternalMarker.prototype.onMouseOutAsync=function(){};function MapLabel(position,text,opt_weight,opt_color,opt_background){this.position_=position;this.text_=text;this.weight_=opt_weight||2;this.color_=opt_color||"#888888";this.background_=opt_background||"#FFFFFF"}MapLabel.prototype=new google.maps.Overlay();MapLabel.prototype.initialize=function(map){var div=document.createElement("div");div.style.border=this.weight_+"px solid "+this.color_;div.style.color=this.color_;div.style.position="absolute";div.style.background=this.background_;div.style.padding="2px";div.style.fontSize="8pt";div.style.whiteSpace="nowrap";div.innerHTML=this.text_;map.getPane(G_MAP_MAP_PANE).appendChild(div);this.map_=map;this.div_=div};MapLabel.prototype.remove=function(){this.div_.parentNode.removeChild(this.div_)};MapLabel.prototype.copy=function(){return new MapLabel(this.position_,this.text_,this.weight_,this.color_,this.background_)};MapLabel.prototype.redraw=function(force){if(!force){return}var c1=this.map_.fromLatLngToDivPixel(this.position_);this.div_.style.left=c1.x+"px";this.div_.style.top=c1.y+"px"};
