(function(a){a.TraminoMap=function(b){tmap=this;tmap.o=b;tmap.o.url_data=b.url_data||"/tramino/ajax/markerdata/";tmap.o.url_info=b.url_info||"/tramino/ajax/markerinfo/";this.initialisize=function(f){tmap.markerid_edit=undefined;tmap.marker_edit=undefined;tmap.marker_gdir=undefined;tmap.detailData=tmap.o.detailData||[];tmap.markerData=[];tmap.layer=[];if(tmap.o.map_listeinfo){a("#"+tmap.o.map_listeinfo).empty();}if(GBrowserIsCompatible()){tmap.map=new GMap2(document.getElementById(tmap.o.mapid));tmap.map.setUIToDefault();tmap.map.disableScrollWheelZoom();CustomGetTileUrl=function(m,i){return"http://a.tile.openstreetmap.org/"+i+"/"+m.x+"/"+m.y+".png";};var g=new GCopyright(1,new GLatLngBounds(new GLatLng(-90,-180),new GLatLng(90,180)),0," ");var j=new GCopyrightCollection('<a href="http://www.openstreetmap.org/">OpenStreetMap</a>');j.addCopyright(g);var l=[new GTileLayer(j,1,17)];l[0].getTileUrl=CustomGetTileUrl;var h=new GMapType(l,G_SATELLITE_MAP.getProjection(),"OSM");tmap.map.addMapType(h);if(tmap.o.map_type=="m"){tmap.map.setMapType(G_NORMAL_MAP);}else{if(tmap.o.map_type=="k"){tmap.map.setMapType(G_SATELLITE_MAP);}else{if(tmap.o.map_type=="h"){tmap.map.setMapType(G_HYBRID_MAP);}else{if(tmap.o.map_type=="p"){tmap.map.setMapType(G_PHYSICAL_MAP);}else{if(tmap.o.map_type=="o"){tmap.map.setMapType(h);}}}}}if(tmap.o.autosave){if(a.cookie.get("googlemap_center_lat")!=null&&a.cookie.get("googlemap_center_lng")!=null&&a.cookie.get("googlemap_center_zoom")!=null){tmap.map.setCenter(new GLatLng(a.cookie.get("googlemap_center_lat"),a.cookie.get("googlemap_center_lng")),a.cookie.get("googlemap_center_zoom"));}else{tmap.map.setCenter(new GLatLng(tmap.o.center_lat,tmap.o.center_lng),tmap.o.center_zoom);}GEvent.addListener(tmap.map,"moveend",function(){a.cookie.set("googlemap_center_lat",tmap.map.getCenter().lat());a.cookie.set("googlemap_center_lng",tmap.map.getCenter().lng());a.cookie.set("googlemap_center_zoom",tmap.map.getZoom());});if(a.cookie.get("googlemap_type")=="m"){tmap.map.setMapType(G_NORMAL_MAP);}else{if(a.cookie.get("googlemap_type")=="k"){tmap.map.setMapType(G_SATELLITE_MAP);}else{if(a.cookie.get("googlemap_type")=="h"){tmap.map.setMapType(G_HYBRID_MAP);}else{if(a.cookie.get("googlemap_type")=="p"){tmap.map.setMapType(G_PHYSICAL_MAP);}}}}GEvent.addListener(tmap.map,"maptypechanged",function(){a.cookie.set("googlemap_type",tmap.map.getCurrentMapType().getUrlArg());});}else{tmap.map.setCenter(new GLatLng(tmap.o.center_lat,tmap.o.center_lng),tmap.o.center_zoom);}tmap.markerCluster=new MarkerClusterer(tmap.map,null,{gridSize:20});tmap.gdir=new GDirections();tmap.bound=new GLatLngBounds();GEvent.addListener(tmap.gdir,"load",function(){tmap.map.addOverlay(tmap.gdir.getPolyline());tmap.map.setCenter(tmap.gdir.getBounds().getCenter(),tmap.map.getBoundsZoomLevel(tmap.gdir.getBounds()));if(tmap.gdir.marker1==undefined){var i=new GIcon();i.image="http://www.google.com/intl/en_de/mapfiles/icon-dd-play-trans.png";i.shadow="http://www.google.com/mapfiles/shadow50.png";i.iconSize=new GSize(24,38);i.shadowSize=new GSize(37,34);i.iconAnchor=new GPoint(9,34);i.infoWindowAnchor=new GPoint(19,2);i.infoShadowAnchor=new GPoint(18,25);var n=new GMarker(tmap.gdir.getMarker(0).getLatLng(),{draggable:true,autoPan:true,icon:i});GEvent.addListener(n,"drag",function(){tmap.map.removeOverlay(tmap.gdir.getPolyline());});GEvent.addListener(n,"dragend",function(){tmap.gdir.load("from: "+this.getLatLng().toUrlValue()+" to: "+tmap.gdir.marker2.getLatLng().toUrlValue(),{locale:"DE_de",getPolyline:true,preserveViewport:true});});tmap.map.addOverlay(n);tmap.gdir.marker1=n;i.image="http://www.google.com/intl/en_de/mapfiles/icon-dd-stop-trans.png";var m=new GMarker(tmap.gdir.getMarker(1).getLatLng(),{draggable:true,autoPan:true,icon:i});GEvent.addListener(m,"drag",function(){tmap.map.removeOverlay(tmap.gdir.getPolyline());});GEvent.addListener(m,"dragend",function(){tmap.gdir.load("from: "+tmap.gdir.marker1.getLatLng().toUrlValue()+" to:  "+this.getLatLng().toUrlValue(),{locale:"DE_de",getPolyline:true,preserveViewport:true});});tmap.map.addOverlay(m);tmap.gdir.marker2=m;}tmap.gdir.marker1.openInfoWindowHtml("<font style='font-size:11px;'>Von <i>"+tmap.gdir.getGeocode(0).address+"</i> nach <i>"+tmap.gdir.getGeocode(1).address+"</i><br/><b>"+tmap.gdir.getSummaryHtml()+"</b><br/><a href='http://maps.google.de/?ie=UTF8&hl=de&q="+tmap.gdir.getMarker(0).getLatLng().toUrlValue()+"+nach+"+tmap.gdir.getMarker(1).getLatLng().toUrlValue()+"'> Route in Google Maps öffnen</a> </font>");});GEvent.addListener(tmap.gdir,"error",function(){alert("Fehler in der Routenplanung: "+tmap.gdir.getStatus().code);});if(tmap.o.gdir_start){a("#"+tmap.o.mapid).append('<div style="border: 1px solid black; position: absolute; background-color: white; text-align: center; width: 5em; cursor: pointer; right: 1em; bottom:1.5em;" title="" id="routenplanerbutton"><div style="border-style: solid; border-color: white rgb(176, 176, 176) rgb(176, 176, 176) white; border-width: 1px; font-size: 12px;" onclick="'+tmap.o.mapvar+'.togglegdir(this);">Routenplaner zeigen</div></div>');a("#routenplanerbutton").hide();}if(f){var c=f.split(",");for(var d=0;d<c.length;++d){tmap.genMarkerJSON(c[d]);}}if(tmap.o.staticdata){a.each(a("ul#map_tramino_layermenu li"),function(n,o){if(a(o).hasClass("off")){var m=a(o).attr("ref");tmap.layer[m]="1";}});var e=jQuery.map(tmap.o.staticdata,function(o,m){if(tmap.layer[o.ref]){return null;}return o;});tmap.genMarker(e);}if(tmap.o.collectdata){var k=[];a.each(a(".geo"),function(m,n){var o={id:a(n).find("span.id").text(),name:a(n).find("span.name").text(),lat:a(n).find("span.latitude").text(),lng:a(n).find("span.longitude").text(),icon:a(n).find("span.icon").text()};if(a(n).find("span.id").text()){k.push(o);}});tmap.genMarker(k);}}tmap.map.disableScrollWheelZoom();};this.toggle=function(){a("#"+tmap.o.mapid).slideToggle("slow");};this.genMarkerJSON=function(d,c){if(d!=""){a.getJSON(tmap.o.url_data+"?typ="+d,function(e){tmap.genMarker(e,c);});}};this.genMarker=function(d,c){if(d==undefined){return 1;}a.each(d,function(g,h){if(tmap.markerData[h.id]==undefined){var e=new GIcon();e.iconSize=new GSize(28,37);e.iconAnchor=new GPoint(4,35);e.infoWindowAnchor=new GPoint(3,45);e.image="http://s1.tramino.de/gfx/geodata/icons/"+h.icon+".png";var f=new GMarker(new GLatLng(h.lat,h.lng),{title:h.name,icon:e});f.lines=[];if(typeof h.data!="undefined"){a.each(h.data,function(k,i){var l;if(i.typ=="l"){l=new GPolyline.fromEncoded({color:i.color,weight:4,opacity:0.5,points:i.poi,levels:i.level,zoomFactor:2,numLevels:18});var m=l.getBounds();tmap.bound.extend(m.getNorthEast());tmap.bound.extend(m.getSouthWest());}else{l=new GPolygon.fromEncoded({polylines:[{points:i.poi,levels:i.level,color:i.color,opacity:0.5,weight:4,numLevels:18,zoomFactor:2}],fill:true,color:i.color,opacity:0.2,outline:true});var j=l.getBounds();tmap.bound.extend(j.getNorthEast());tmap.bound.extend(j.getSouthWest());}tmap.map.addOverlay(l);f.lines.push(l);});}GEvent.addListener(f,"mouseover",function(){if(typeof f.lines!="undefined"){a.each(f.lines,function(n,m){m.setStrokeStyle({opacity:1});});}a("#googlemapspoiLabel").remove();var k=document.createElement("div");var j=document.createElement("span");var l=this.getTitle()||"";l=l.replace(/&amp;/g,"&");j.appendChild(document.createTextNode(l));k.appendChild(j);var i=this.WB;if(typeof i=="undefined"||typeof i=="function"){}else{k.style.top=(parseInt(i.style.top,10)+parseInt(i.style.height,10))+"px";k.style.left=(parseInt(i.style.left,10)+parseInt(parseInt(i.style.width,10)/2,10)-75)+"px";k.style.position="absolute";k.style.height="16px";k.style.width="150px";k.style.textAlign="center";k.id="googlemapspoiLabel";k.style.color="#eee";j.style.background="#000";j.style.border="1px solid #000";j.style.fontSize="13px";j.style.color="#eee";j.style.padding="2px";j.style.display="inline";a(i).after(k);}});GEvent.addListener(f,"mouseout",function(){a("#googlemapspoiLabel").remove();if(typeof f.lines!="undefined"){a.each(f.lines,function(j,i){i.setStrokeStyle({opacity:0.5});});}});GEvent.addListener(f,"click",function(){a("#googlemapspoiLabel").remove();tmap.marker_gdir=this;this.openExtInfoWindow(tmap.map,"traminoMapWindow",'<div class="TraminoGeomatch"><center><img src=http://s1.tramino.de/gfx/loading2.gif width=32 height=32 style="margin:5px;"/></center></div>',{beakOffset:15,paddingX:10,paddingY:10});a("#routenplanerbutton").show();thismarker=this;if(tmap.detailData[h.id]){if(tmap.detailData[h.id]==""){thismarker.closeInfoWindow();tmap.map.closeExtInfoWindow();}else{if(tmap.detailData[h.id].substring(0,1)=="#"){thismarker.openExtInfoWindow(tmap.map,"traminoMapWindow","<div id='"+tmap.detailData[h.id].substring(1)+"_infowindow'><div class='match'>"+a(tmap.detailData[h.id]).clone(true).html()+"</div></div>",{beakOffset:15,paddingX:10,paddingY:10});a(tmap.detailData[h.id]+"_infowindow").replaceWith(a(tmap.detailData[h.id]).clone(true));}else{thismarker.openExtInfoWindow(tmap.map,"traminoMapWindow",tmap.detailData[h.id],{beakOffset:15,paddingX:10,paddingY:10});}}}else{a.get(tmap.o.url_info+"?id="+h.id,function(i){if(i==""){thismarker.closeInfoWindow();tmap.map.closeExtInfoWindow();}else{thismarker.openExtInfoWindow(tmap.map,"traminoMapWindow",i,{beakOffset:15,paddingX:10,paddingY:10});}tmap.detailData[h.id]=i;});}});tmap.markerCluster.addMarker(f);tmap.bound.extend(f.getLatLng());tmap.markerData[h.id]=f;if(tmap.o.map_listeinfo&&a("#"+tmap.o.map_listeinfo)&&h.liste!=undefined){a("#"+tmap.o.map_listeinfo).prepend("<li onclick='GEvent.trigger("+tmap.o.mapvar+'.markerData["'+h.id+'"], "click");\' onmouseover=\'GEvent.trigger('+tmap.o.mapvar+'.markerData["'+h.id+'"], "mouseover");\' onmouseout=\'GEvent.trigger('+tmap.o.mapvar+'.markerData["'+h.id+'"], "mouseout");\'> <div style=\'float:left;width:24px;height:24px;background:url(http://s1.tramino.de/gfx/geodata/icons/'+h.icon+".png) -4px -4px;'></div> "+h.name+" </li>");}}});if(tmap.bound.isEmpty()||c){return 0;}else{tmap.map.setCenter(tmap.bound.getCenter(),tmap.map.getBoundsZoomLevel(tmap.bound));return 1;}};this.toggleLayer=function(d,e){if(tmap.layer[d]==undefined){tmap.layer[d]="1";a(e).addClass("off");}else{tmap.layer[d]=undefined;a(e).removeClass("off");}tmap.markerCluster.clearMarkers();tmap.markerData=[];tmap.map.clearOverlays();if(tmap.o.map_listeinfo&&a("#"+tmap.o.map_listeinfo)){a("#"+tmap.o.map_listeinfo).html(" ");}var c=jQuery.map(tmap.o.staticdata,function(g,f){if(tmap.layer[g.ref]){return null;}return g;});tmap.markerCluster=new MarkerClusterer(tmap.map,null,{gridSize:20});tmap.genMarker(c,1);};this.togglegdir=function(c){if(tmap.gdir.active==1){tmap.map.removeOverlay(tmap.gdir.getPolyline());tmap.map.removeOverlay(tmap.gdir.marker1);tmap.map.removeOverlay(tmap.gdir.marker2);delete tmap.gdir.marker1;delete tmap.gdir.marker2;tmap.gdir.active=0;c.innerHTML="Routenplaner zeigen";a("#routenplanerbutton").hide();}else{if(tmap.o.gdir_start&&tmap.marker_gdir){tmap.gdir.load("from: "+tmap.o.gdir_start+" to: "+tmap.marker_gdir.getLatLng().toUrlValue(16),{locale:"DE_de",getPolyline:true,preserveViewport:true});tmap.gdir.active=1;c.innerHTML="Routenplaner ausblenden";}}};this.editline=function(e,d,c){a.traminobox("<iframe border='0' frameborder='0' style='width:920px;height:600px;border:0px solid #fff' name='"+c+"_"+d+"_window' src='/tramino/content/poi//widgetedit/"+c+"_"+d+"/?mode=geodata'></iframe>","wide","Bearbeiten Sie die Geoinformationen","","","");};this.editmarker=function(d){if(tmap.markerid_edit!=undefined){tmap.markerid_edit.show();tmap.markerid_edit=undefined;tmap.map.removeOverlay(tmap.marker_edit);}tmap.markerid_edit=tmap.markerData[d];tmap.markerid_edit.geoid=d;tmap.markerid_edit.hide();tmap.map.closeInfoWindow();tmap.map.closeExtInfoWindow();var c=new GMarker(tmap.markerid_edit.getLatLng(),{draggable:true,autoPan:true});tmap.marker_edit=c;GEvent.addListener(c,"dragend",function(){tmap.markerid_edit.setLatLng(this.getLatLng());if(tmap.o.url_save){a.post(tmap.o.url_save,{geodata:this.getLatLng().toUrlValue(),action:"save",id:tmap.markerid_edit.geoid},function(e){});}else{alert("Speichern nicht möglich.");}tmap.markerid_edit.show();tmap.markerid_edit=undefined;tmap.map.removeOverlay(this);});tmap.map.addOverlay(c);GEvent.addListener(tmap.map,"moveend",function(){if(tmap.markerid_edit){tmap.markerid_edit.hide();}});};};})(jQuery);