(function(w){var je={util:{getNs:function(base,ns){if(base[ns]===undefined){base[ns]={};}
return base[ns];},replaceClass:function(obj,classold,classnew){if(obj&&obj.className&&obj.className.indexOf(classold)>=0){obj.className=obj.className.replace(new RegExp(classold,"g"),classnew);}else{this.addClass(obj,classnew);}},addClass:function(obj,classname){if(obj&&obj.className&&obj.className.indexOf(classname)>=0)return;obj.className+=" "+classname;},removeClass:function(obj,classname){this.replaceClass(obj,classname,'');},getAbsPos:function(obj){var posleft=obj.offsetLeft;var postop=obj.offsetTop;while(obj.offsetParent!=null){var par=obj.offsetParent;posleft+=par.offsetLeft;postop+=par.offsetTop;obj=par;}
return{x:posleft,y:postop};},getMouseXY:function(e){if(!e)e=window.event;var mousex,mousey,offsetX,offsetY;if(e)
{if(e.offsetX||e.offsetY){offsetX=e.offsetX;offsetY=e.offsetY;}
if(e.pageX||e.pageY){mousex=e.pageX;mousey=e.pageY;}
else if(e.clientX||e.clientY){mousex=e.clientX+document.body.scrollLeft;mousey=e.clientY+document.body.scrollTop;}}
return{x:mousex,y:mousey,ofx:offsetX,ofy:offsetY};},windowHeight:function(){if(self.innerHeight)
return self.innerHeight;if(document.documentElement&&document.documentElement.clientHeight)
return document.documentElement.clientHeight;if(document.body)
return document.body.clientHeight;return 0;}}};w.je=je;})(window);;(function(w){function MapManager(map,div_downbar,poi_control_div,transport,show_close,cms,callback){this.missingPics=null;this.missing_track_header=null;this.missing_poi=null;this.map=map;this.zoom_to_all();this.cms=(cms===undefined?false:cms);this.onfinishinit=(callback===undefined?function(){}:callback);this.transport=transport;this.pois_loaded=false;this.poi_control_div=poi_control_div;this.polyMan=new je.wis.PolylineManager(this.map,this.transport);this.warnMan=new je.wis.WarnManager(this.map);this.themen={};this.poiMan=new Poi_MarkerManager(this.map);this.loadPois();var tabdefs=[{title:'Profil',html:'<img id="pic_profile" src="media/profiles/r_61.gif"/>'},{title:'Tourbeschreibung',html:''},{title:'Bilder',html:''},{title:'Untergrund',html:''},{title:'Download',html:''}];this.tabMan=new tabbedhtml('bottom-tabs',div_downbar,tabdefs,show_close);var profile_icon=new google.maps.Icon();profile_icon.image='media/icons/haircross.png';profile_icon.iconSize=new GSize(14,14);profile_icon.iconAnchor=new GPoint(6,6);profile_icon.infoWindowAnchor=new GPoint(6,6);var center=this.map.getCenter();this.profilemarker=new google.maps.Marker(center,{icon:profile_icon,title:'aktuelle Position',clickable:false,hide:true});this.map.addOverlay(this.profilemarker);this.profilemarker.hide();var startpunkt_icon=new google.maps.Icon();startpunkt_icon.image='media/icons/start.gif';startpunkt_icon.iconSize=new GSize(22,22);startpunkt_icon.iconAnchor=new GPoint(11,11);startpunkt_icon.infoWindowAnchor=new GPoint(11,11);this.startpunktmarker=new google.maps.Marker(center,{icon:startpunkt_icon,title:'Startpunkt',clickable:false,hide:true,zIndexProcess:function(marker){return 100;}});this.map.addOverlay(this.startpunktmarker);this.startpunktmarker.hide();this.map.addOverlay(this.get_wms_overlay('sauerland:bwp_strecken_shape'));var _this=this;if(!this.cms){this.user_manager=new ProUserManager(this.transport);this.div_downloads=null;this.user_manager.onlogin=function(user){_this.show_downloads(true);};this.user_manager.onlogout=function(){_this.show_downloads(false);};}};MapManager.prototype.loadPois=function(){if(!this.cms){this.transport_cms=new Server_Transport();this.loadPoisDone(je.wis.data);}else{this.transport_cms=new Server_Transport();var _this=this;this.transport_cms.send_request('getpoiscats',(this.cms?{hidden:1}:{}),function(suc,res){if(suc&&res.success){_this.loadPoisDone(res.obj);}else{alert('Fehler: Pois/Kategorien konnten nicht geladen werden!');}});}};MapManager.prototype.loadPoisDone=function(obj){je.wis.data.personen=obj.personen;je.wis.data.cats=obj.cats;je.wis.data.pois=obj.pois;je.wis.data.msgs=obj.msgs;this.pois_loaded=true;for(var i in je.wis.data.trackdata_basic){var s=je.wis.data.trackdata_basic[i];s.hasWarning=this.warnMan.hasWarning(s);}
var _this=this;this.poi_control=new Poi_select_control(this.poi_control_div,je.wis.data.cats,'Legende');google.maps.Event.addListener(this.map,'zoomend',function(old_zoom,new_zoom){_this.poi_control.set_zoom(new_zoom);_this.poiMan.set_zoom(new_zoom);});this.poiMan.set_zoom(this.map.getZoom());this.poiMan.set_pois_cats(je.wis.data.pois,je.wis.data.cats);this.poi_control.onupdate=function(catid){_this.poiMan.toggle_cat(catid);};this.poi_control.onupdate_all=function(show){if(show){_this.poiMan.show_all();}else{_this.poiMan.hide_all();}};if(this.missing_pics!=null){this.tabMan.setTabContent(2,this.get_pic_tab(this.missing_pics));}
if(this.missing_track_header!=null){this.tabMan.setTabContent(1,this.get_trackheader_tab(this.missing_track_header));}
if(this.missing_poi!=null){this.displayPoi(this.missing_poi);}
this.poi_control.show_all(true);this.poi_control.set_zoom(this.map.getZoom());this.onfinishinit(this);};MapManager.prototype.get_wms_overlay=function(layer){var tilelayer=new google.maps.TileLayer(null,null,null,{isPng:true,opacity:1});tilelayer.getTileUrl=function(point,zoom){var mod=(point.x+point.y)%3;return'http://beta'+mod+'.joengel.de/geoserver/gwc/service/gmaps?layers='+layer+'&zoom='+zoom+'&x='+point.x+'&y='+point.y;};var myTileLayer=new GTileLayerOverlay(tilelayer);return myTileLayer;};MapManager.prototype.cleanMap=function(){this.polyMan.draw_lines([]);this.tabMan.close();this.map.closeInfoWindow();this.startpunktmarker.hide();};MapManager.prototype.displayPoi=function(pid){if(this.pois_loaded){var poi=this.poiMan.get_poi(pid);if(!poi)return;poi.onclick();}else{this.missing_poi=pid;}};MapManager.prototype.displayTour=function(s,zoom){if(zoom===undefined)zoom=false;this.akt_strecke=s;this.tabMan.open();var _this=this;var zoomfunc=(zoom?function(){_this.zoom_to_track(s);}:function(){});this.polyMan.draw_lines(s.vids,zoomfunc);if(s.startpunkt_pos){var latlng=new google.maps.LatLng(s.startpunkt_pos.lat,s.startpunkt_pos.lng);this.startpunktmarker.setLatLng(latlng);this.startpunktmarker.show();if(!zoom&&!this.map.getBounds().contains(latlng)){this.map.panTo(latlng);}}
this.tabMan.setTabContent(0,'<img src="'+s.imgurl+'" id="img_profile" onmouseover = "je.wis.start_profile_marker();" onmouseout="je.wis.hide_profile_marker()"/>');this.tabMan.setTabContentDom(4,this.get_download_tab_dom(s));this.tabMan.setTabContent(3,'<p>'+this.get_charakter_from_track(s)+'</p>');this.tabMan.setTabContent(1,this.get_trackheader_tab(s));this.tabMan.setTabContent(2,this.get_pic_tab(s));if(s.hasWarning){this.tabMan.clicked(1);this.tabMan.show();}};MapManager.prototype.reddot=function(){return' <span class="reddot">•</span> ';};MapManager.prototype.start_profile_marker=function(){var _this=this;document.getElementById("img_profile").onmousemove=function(e){_this.set_profile_marker(e);};};MapManager.prototype.hide_profile_marker=function(){document.getElementById("img_profile").onmousemove=function(){};this.profilemarker.hide();};MapManager.prototype.set_profile_marker=function(e){if(!this.akt_strecke||this.akt_strecke.kmlpoints==undefined)return;if(!google_online)return;var pos=je.util.getMouseXY(e);var imgpos=je.util.getAbsPos(document.getElementById('img_profile'));pos.x-=imgpos.x;pos.y-=imgpos.y;if(this.akt_strecke.kmlpoints[pos.x]!=undefined){if(this.profilemarker.isHidden())this.profilemarker.show();this.profilemarker.setLatLng(this.akt_strecke.kmlpoints[pos.x]);}};MapManager.prototype.zoom_to_track=function(s){if(!google_online)return;var bounds=new google.maps.LatLngBounds();var par=this.polyMan.get_polylines(s.vids);if(par.length>0){for(var i=0;i<par.length;i++){var pb=par[i].getBounds();bounds.extend(pb.getSouthWest());bounds.extend(pb.getNorthEast());}
this.zoom_to_bounds(bounds);}};MapManager.prototype.zoom_to_all=function(){this.zoom_to_bounds(new google.maps.LatLngBounds(new google.maps.LatLng(51.1243553161621,8.42436218261719),new google.maps.LatLng(51.4728507995605,8.75840473175049)));};MapManager.prototype.zoom_to_bounds=function(bounds){var zoom=this.map.getBoundsZoomLevel(bounds);this.map.setCenter(bounds.getCenter(),(zoom<11?11:zoom));};MapManager.prototype.get_download_tab_dom=function(trackdata){var div=document.createElement('div');if(this.akt_ebene_nr>1){this.user_manager.add_to_dom(div);}
this.div_downloads=document.createElement('div');this.div_downloads.innerHTML=this.get_download_tab(trackdata);this.div_downloads.style.display=(this.user_manager.user_logged_in()||this.akt_ebene_nr==1?'block':'none');div.appendChild(this.div_downloads);return div;};MapManager.prototype.get_download_tab=function(trackdata){return'<div class="download_col"><b>GPS-Dateien</b><ul><li><a href="#" onclick="je.wis.download_kml(); return false;">Google Earth (*.kml)</a></li>'
+'<li><a href="#" onclick="je.wis.download_gpx(); return false;">GPS Exchange Format (*.gpx)</a></li>'
+'<li><a href="#" onclick="je.wis.download_ovl(); return false;">ASCII Overlay (*.ovl)</a></li></ul></div>'
+'<div class="download_col"><b>PDF-Dateien</b><ul><li><a href="#" onclick="je.wis.download_roadbook('+trackdata.nr+'); return false;">Roadbook (*.pdf)</a></li>'
+'<li><a href="#" onclick="je.wis.download_karte('+trackdata.nr+'); return false;">Karte (*.pdf)</a></li></ul></div>';};MapManager.prototype.show_downloads=function(show){if(this.div_downloads){this.div_downloads.style.display=(show?'block':'none');}};MapManager.prototype.get_pic_tab=function(trackdata){if(!trackdata||!trackdata.poi_ids||trackdata.poi_ids.length==0){return'Keine Bilder vorhanden';}
if(!this.pois_loaded){this.missing_pics=trackdata;return'Bilder werden geladen ... bitte kurz warten';}
this.missing_pics=null;var erg=['<table><tbody><tr align="center">'];var erg2=['<table><tbody><tr align="center">'];var cats={22:1,2:1,9:1,10:1,11:1,12:1,1:1,3:1,4:1,5:1,6:1,7:1};var set_height=100.0;var modcount=0;var modcount2=0;var filenames={};for(var i=0;i<trackdata.poi_ids.length;i++){var poi=this.poiMan.get_poi(trackdata.poi_ids[i]);if(poi&&poi.pictures){for(var j=0;j<poi.pictures.length;j++){var pic=poi.pictures[j];var width=set_height*pic.width/pic.height;if(pic.overview==0)continue;if(pic.hidden==1)continue;if(filenames[pic.filename])continue;filenames[pic.filename]=true;var html='<td><img style="cursor: pointer;"  width="'+(width.toFixed(0))
+'" height="'+set_height+'" src="http://bergwanderpark.wwl-web.de/pics/'+pic.filename+'" alt="" title="'
+poi.POI_Name+'" onclick="je.wis.show_poi('+poi.id+')"/></td>';if(poi.wanderziel||cats[poi.POI_Kategorie]){erg[erg.length]=html;modcount++;if(modcount==4){erg[erg.length]='</tr><tr align="center">';modcount=0;}}else{erg2[erg2.length]=html;modcount2++;if(modcount2==4){erg2[erg2.length]='</tr><tr align="center">';modcount2=0;}}}}}
for(;modcount<5;modcount++){erg[erg.length]='<td></td>';}
for(;modcount2<5;modcount2++){erg2[erg2.length]='<td></td>';}
erg[erg.length]='</tr></tbody></table>';erg2[erg2.length]='</tr></tbody></table>';this.pics_extra=erg2.join('');erg[erg.length]='<div id="tab_pics_extra"><a href="#" onclick="je.wis.show_pics_extra(); return false;">Weitere Bilder anzeigen</a></div>';return erg.join('');};MapManager.prototype.show_pics_extra=function(){var div=document.getElementById('tab_pics_extra');if(!div)return;div.innerHTML=this.pics_extra;};MapManager.prototype.preloadLines=function(trackdata){var vidobj={};for(var i=0;i<trackdata.length;i++){for(var j=0;j<trackdata[i].vids.length;j++){vidobj[trackdata[i].vids[j]]=true;}}
vidar=[];for(var i in vidobj){vidar[vidar.length]=i;}
this.polyMan.preload_lines(vidar);};MapManager.prototype.get_track_warnings=function(s){var aktmsg=this.warnMan.getWarnings(s);var erg=[];for(var msg_id in aktmsg){var msg=aktmsg[msg_id];var cat=msg.cat;var tmp='<b><img src="'+cat.icon+'"/> '+cat.name+' ('+msg.ts_start_str+' - '+msg.ts_end_str+')</b><br/>'
+msg.text;for(var k in msg.wege){var weg=msg.wege[k];if(aktwege[weg.id]){tmp+=(k>0?this.reddot():'')+'<a href="#" onclick="show_warn('+weg.id+'); return false;">Weg '+(weg.id)+'</a>';}}
erg[erg.length]=tmp;}
return erg;};MapManager.prototype.get_trackheader_tab=function(s){if(!this.pois_loaded){this.missing_track_header=s;return'Tourbeschreibung wird geladen ... bitte kurz warten';}
this.missing_track_header=null;var poi=this.poiMan.get_poi(s.wziel);var laenge=s.laenge/1000;var erg=['<table class="track_header">'];if(this.akt_ebene_nr==2){erg[erg.length]='<tr><td class="track_header_left">'+(s.start_id==s.ziel_id?'Rundweg':'Etappenwanderung')
+'</td><td class="track_header_right">';erg[erg.length]=s.startort_name+(poi?this.reddot()+poi.POI_Name:'')
+(s.start_id!=s.ziel_id?this.reddot()+s.zielort_name:'')
+'</td></tr>';}else{erg[erg.length]='<tr><td class="track_header_left">Startpunkt</td><td class="track_header_right">';erg[erg.length]=s.startpunkt+'</td></tr>';}
var warn=this.get_track_warnings(s);if(warn.length>0){erg[erg.length]='<tr><td class="track_header_left">Hinweise</td><td class="track_header_right"><ul><li>'+warn.join('</li><li>')+'</li></ul></tr>';}
erg[erg.length]='<tr><td class="track_header_left">Länge'+this.reddot()+'Dauer'+this.reddot()
+'Anstieg</td><td class="track_header_right">'
+laenge.toFixed(1)+' km'+this.reddot()+s.timestr+' h'+this.reddot()+s.tc+' m</td></tr>';var tids=s.themen;if(tids.length>0){erg[erg.length]='<tr><td class="track_header_left">Themen</td><td class="track_header_right">';for(var i=0;i<tids.length;i++){var tid=tids[i];erg[erg.length]=(i>0?this.reddot():'')+this.themen[tid];}
erg[erg.length]='</td></tr>';}
var wziel=[];var eink=[];for(var i=0;i<s.poi_ids.length;i++){var poi=this.poiMan.get_poi(s.poi_ids[i]);if(poi){if(poi.wanderziel&&poi.POI_Kategorie!=9){wziel[wziel.length]=poi;}
else
if(poi.POI_Kategorie==9){eink[eink.length]=poi;}}}
if(wziel.length>0){erg[erg.length]='<tr><td class="track_header_left">Wanderziele</td><td class="track_header_right">';for(var i=0;i<wziel.length;i++){var poi=wziel[i];erg[erg.length]=(i>0?this.reddot():'')+'<a href="#" onclick="je.wis.show_poi('+poi.id+'); return false;">'+(poi.POI_Name==''?poi.get_Category().text:poi.POI_Name)+'</a>';}
erg[erg.length]='</td></tr>';}
if(eink.length>0){erg[erg.length]='<tr><td class="track_header_left">Einkehrmöglichkeiten</td><td class="track_header_right">';for(var i=0;i<eink.length;i++){var poi=eink[i];erg[erg.length]=(i>0?this.reddot():'')+'<a href="#" onclick="je.wis.show_poi('+poi.id+'); return false;">'+(poi.POI_Name==''?'Einkehr':poi.POI_Name)+'</a>';}
erg[erg.length]='</td></tr>';}
erg[erg.length]='</table>';if(s.textinfo){erg[erg.length]='<p>'+s.textinfo+'</p>';}
return erg.join('');};MapManager.prototype.get_charakter_from_track=function(s){var erg='';for(var i=0;i<s.lenong.length;i++){erg+='<tr><td><b>'+s.lenong[i].kat
+'</b></td><td align="right">'+s.lenong[i].len
+' km</td><td><div style="float: left; position: relative; width:'
+(s.lenong[i].prozent*4)+'px; height:13px; background-color: #'+s.lenong[i].color
+'"></div>&nbsp;'+s.lenong[i].prozent
+'&nbsp;%</td></tr>';}
return'<table cellpadding="2" border="0">'+erg+'</table>';};MapManager.prototype.getTrackUrl=function(){var erg=[];var vids=[];var s=this.akt_strecke;if(s.laenge&&s.path){var path=s.path;erg.push("p0="+path[0].nid);for(var i=0;i<path.length-1;i++){vids.push(path[i].vid);}
erg.push("&v="+vids.join(','));}
return erg.join('');};MapManager.prototype.download_kml=function(){var s=this.akt_strecke;this.transport.download_request('getkml',{start:s.path[0].nid,name:s.name},this.getTrackUrl());};MapManager.prototype.download_gpx=function(){var s=this.akt_strecke;this.transport.download_request('getgpx',{start:s.path[0].nid,name:s.name},this.getTrackUrl());};MapManager.prototype.download_ovl=function(){var s=this.akt_strecke;this.transport.download_request('getovl',{start:s.path[0].nid,name:s.name},this.getTrackUrl());};MapManager.prototype.download_roadbook=function(nr){this.transport.download_request('getroadbook',{nr:nr,ebene:this.akt_ebene_nr});};MapManager.prototype.download_karte=function(nr){this.transport.download_request('getkarte',{nr:nr,ebene:this.akt_ebene_nr});};var wis=je.util.getNs(w.je,'wis');wis.MapManager=MapManager;wis.data={personen:{},pois:{},cats:{},msgs:{}};})(window);;(function(w){function PolylineManager(map,transport){this.map=map;this.transport=transport;this.lines={};this.linecount=0;this.show={};this.loading={};};PolylineManager.prototype.draw_vid=function(vid){if(!google_online)return;var plines=this.lines[vid].lines;for(var i=0;i<plines.length;i++){this.map.addOverlay(plines[i]);}};PolylineManager.prototype.get_polylines=function(vids){var erg=[],i,j,vid,plines;for(i=0;i<vids.length;i++){vid=vids[i];if(this.lines[vid]!==undefined){plines=this.lines[vid].lines;for(j=0;j<plines.length;j++){erg.push(plines[j]);}}}
return erg;};PolylineManager.prototype.remove_vid=function(vid){if(!google_online)return;var plines=this.lines[vid].lines,i;for(i=0;i<plines.length;i++){this.map.removeOverlay(plines[i]);}};PolylineManager.prototype.preload_lines=function(vids,callback){var missing=[],i,vid;for(i=0;i<vids.length;i++){vid=vids[i];if(this.lines[vid]===undefined){if(this.loading[vid]===undefined){this.loading[vid]=true;missing.push(vid);}}}
if(missing.length>0){this.load_lines(missing,callback);}else{if(callback){callback(this);}}};PolylineManager.prototype.remove_vids=function(vids){var i,vid;for(i=0;i<vids.length;i++){vid=vids[i];if(this.show[vid]){this.show[vid]=false;if(!this.loading[vid]){this.remove_vid(vid);}}}};PolylineManager.prototype.add_vids=function(vids,callback){var missing=[];var i,vid;for(i=0;i<vids.length;i++){vid=vids[i];if(this.lines[vid]===undefined){this.show[vid]=true;if(this.loading[vid]===undefined){this.loading[vid]=true;missing.push(vid);}}else{if(!this.show[vid]){if(!this.loading[vid]){this.draw_vid(vid,false);}
this.show[vid]=true;}}}
if(missing.length>0){this.load_lines(missing,callback);}else{if(callback){callback(this);}}};PolylineManager.prototype.draw_lines=function(vids,callback){var missing=[];var shownew={};var i,vid;for(i=0;i<vids.length;i++){vid=vids[i];if(vid==null)continue;if(this.lines[vid]===undefined){this.show[vid]=true;if(this.loading[vid]===undefined){this.loading[vid]=true;missing.push(vid);}}else{if(!this.show[vid]){if(!this.loading[vid]){this.draw_vid(vid,false);}
this.show[vid]=true;}}
shownew[vid]=true;}
for(vid in this.show){if(this.show[vid]===true&&(shownew[vid]===undefined)){this.show[vid]=false;if(!this.loading[vid]){this.remove_vid(vid);}}}
if(missing.length>0){this.load_lines(missing,callback);}else{if(callback){callback(this);}}};PolylineManager.prototype.add_polyline=function(p){this.lines[p.vid]=p;};PolylineManager.prototype.load_lines=function(vids,callback){if(!google_online)return;var _this=this;this.transport.send_request('getpolylines',{vids:vids.join(',')},function(suc,res){_this.load_lines_done(suc,res,vids);if(callback){callback(_this);}});};PolylineManager.prototype.create_polylines=function(p){p.lines=[];for(var j=0;j<p.line_json.length;j++){p.lines.push(google.maps.Polyline.fromEncoded(p.line_json[j]));}};PolylineManager.prototype.set_stroke_style=function(vids,style){var i,j,lines,vid;for(i=0;i<vids.length;i++){vid=vids[i];if(this.lines[vid]&&this.show[vid]&&this.lines[vid].lines){lines=this.lines[vid].lines;for(j=0;j<lines.length;j++){lines[j].setStrokeStyle(style);}}}};PolylineManager.prototype.reset_stroke_style=function(vids){var i,j,p,lines,line_json,vid;for(i=0;i<vids.length;i++){vid=vids[i];if(this.lines[vid]&&this.show[vid]&&this.lines[vid].lines){p=this.lines[vid];lines=p.lines;line_json=p.line_json;for(j=0;j<lines.length;j++){lines[j].setStrokeStyle(line_json[j]);}}}};PolylineManager.prototype.load_lines_done=function(suc,res,vids){if(suc&&res.success){var plines=res.obj;for(var i=0;i<plines.length;i++){var p=plines[i];this.create_polylines(p);this.add_polyline(p);this.loading[p.vid]=false;if(this.show[p.vid]){this.draw_vid(p.vid,true);}}}else{for(var i=0;i<vids.length;i++){this.loading[vids[i]]=undefined;}
alert('Fehler beim Laden der Streckendaten');}};var wis=je.util.getNs(w.je,'wis');wis.PolylineManager=PolylineManager;})(window);;(function(w){function WarnManager(map){this.map=map;this.warnings={msg_wege:{},msg:{},wege:{}};this.overlays=[];};WarnManager.prototype.setWarnings=function(msgs){for(var i=0;i<this.overlays.length;i++){this.map.removeOverlay(this.overlays[i]);}
this.overlays=[];for(var msg_id in msgs.msg_wege){var mw=msgs.msg_wege[msg_id];for(var j=0;j<mw.length;j++){var weg_id=mw[j];msgs.msg[msg_id].wege[weg_id]=msgs.wege[weg_id];msgs.wege[weg_id].messages[msg_id]=msgs.msg[msg_id];}}
for(var msg_id in msgs.msg){msgs.msg[msg_id].cat=msgs.cats[msgs.msg[msg_id].cat_id];}
for(var weg_id in msgs.wege){var o=msgs.wege[weg_id].getMarker();this.overlays.push(o);this.map.addOverlay(o);}
this.warnings=msgs;};WarnManager.prototype.hasWarning=function(s){for(var j=0;j<s.vids.length;j++){var weg_id=s.vids[j];if(this.warnings.wege[weg_id]!==undefined){return true;}}
return false;};WarnManager.prototype.getWarnings=function(s){var wege=this.warnings.wege;var aktmsg={};var aktwege={};for(var i=0;i<s.vids.length;i++){var wegid=s.vids[i];if(wege[wegid]){aktwege[wegid]=true;var msgs=wege[wegid].messages;for(var j in msgs){var msg=msgs[j];aktmsg[msg.id]=msg;}}}
return aktmsg;};var wis=je.util.getNs(w.je,'wis');wis.WarnManager=WarnManager;})(window);;function JEWindow(id,title,width,height,html,dom){this.isIE=document.all;this.isNN=!document.all&&document.getElementById;this.isHot=false;this.ddEnabled=false;this.id=id;this.div=document.createElement('div');this.div.className='select-free';this.div.style.position='absolute';this.div.style.backgroundColor='#ffffff';this.div.style.top='200px';this.div.style.left='350px';this.div.style.width=''+width+'px';this.div.style.height=''+height+'px';this.div.style.border='1px solid black';this.div.innerHTML='<div style="width:100%; cursor:move; position:absolute; top:0; left:0;" id="'+id+'_titlebar">'
+'<h2>'+title+'</h2></div>'
+'<img id="'+id+'_hidelink" style="border:0; position: absolute; display: block; cursor: pointer; top:4px; right:4px;" src="media/close.gif" alt="schliessen" title="Fenster schliessen"/>'
+'<div id="'+id+'_content" style="position:absolute; top:27px; overflow:auto; margin:5px;"></div>'
+'<div id="'+id+'_resizebar" style="cursor:nw-resize; text-align: right;position:absolute; bottom:0; left:0px; width:100%; padding-right:4px;">'
+'<span style="font-size:14px; font-family:Arial,sans-serif; text-decoration:none;">///</span>'
+'</div>';document.body.appendChild(this.div);var _this=this;var dragtr=document.getElementById(id+'_titlebar');dragtr.onmousedown=function(event){_this.dd_init(event)};var hidelink=document.getElementById(id+'_hidelink');hidelink.onclick=function(){_this.hide();return false;};this.content=document.getElementById(id+'_content');this.content.style.height=''+(height-52)+'px';this.content.style.width=''+(width-10)+'px';if(dom){this.content.appendChild(dom);}else{this.content.innerHTML=html;}
var resizebar=document.getElementById(id+'_resizebar');resizebar.onmousedown=function(event){_this.resize_init(event)};};JEWindow.prototype.destroy=function(){document.body.removeChild(this.div);this.div=null;};JEWindow.prototype.dd_init=function(e){var topDog=this.isIE?"BODY":"HTML";this.whichDog=this.div;this.hotDog=this.isIE?event.srcElement:e.target;while(this.hotDog.id!=this.id+"_titlebar"&&this.hotDog.tagName!=topDog){this.hotDog=this.isIE?this.hotDog.parentElement:this.hotDog.parentNode;}
if(this.hotDog.id==this.id+"_titlebar"){this.offsetx=this.isIE?event.clientX:e.clientX;this.offsety=this.isIE?event.clientY:e.clientY;this.nowX=parseInt(this.whichDog.style.left);this.nowY=parseInt(this.whichDog.style.top);this.ddEnabled=true;var _this=this;document.onmousemove=function(e){_this.dd(e);};document.onmouseup=function(){_this.stop_drag();};}};JEWindow.prototype.resize_init=function(e){var topDog=this.isIE?"BODY":"HTML";this.whichDog=this.div;this.divDog=this.content;this.hotDog=this.isIE?event.srcElement:e.target;while(this.hotDog.id!=this.id+"_resizebar"&&this.hotDog.tagName!=topDog){this.hotDog=this.isIE?this.hotDog.parentElement:this.hotDog.parentNode;}
if(this.hotDog.id==this.id+"_resizebar"){this.offsetx=this.isIE?event.clientX:e.clientX;this.offsety=this.isIE?event.clientY:e.clientY;this.nowX=parseInt(this.whichDog.style.width);this.nowY=parseInt(this.whichDog.style.height);this.ddEnabled=true;var _this=this;document.onmousemove=function(e){_this.resize_drag(e);};document.onmouseup=function(){_this.stop_drag();};}};JEWindow.prototype.resize_drag=function(e){if(!this.ddEnabled)return;this.divDog.style.width=(this.isIE?this.nowX+event.clientX-this.offsetx-15:this.nowX+e.clientX-this.offsetx-15)+"px";this.divDog.style.height=(this.isIE?this.nowY+event.clientY-this.offsety-52:this.nowY+e.clientY-this.offsety-52)+"px";this.whichDog.style.width=(this.isIE?this.nowX+event.clientX-this.offsetx:this.nowX+e.clientX-this.offsetx)+"px";this.whichDog.style.height=(this.isIE?this.nowY+event.clientY-this.offsety:this.nowY+e.clientY-this.offsety)+"px";return false;};JEWindow.prototype.stop_drag=function(){this.ddEnabled=false;document.onmousemove=null;document.onmouseup=null;};JEWindow.prototype.dd=function(e){if(!this.ddEnabled)return;this.whichDog.style.position='absolute';this.whichDog.style.left=(this.isIE?this.nowX+event.clientX-this.offsetx:this.nowX+e.clientX-this.offsetx)+"px";this.whichDog.style.top=(this.isIE?this.nowY+event.clientY-this.offsety:this.nowY+e.clientY-this.offsety)+"px";return false;};JEWindow.prototype.hide=function(){this.div.style.visibility="hidden";};JEWindow.prototype.show=function(){this.div.style.visibility="visible";};;function List_model(data){this.data=data;};List_model.prototype.count_rows=function(){return this.data.length;};List_model.prototype.get_obj=function(row){return this.data[row];};List_model.prototype.set_obj=function(row,obj){this.data[row]=obj};function filterlist(id,container,data,genrow_func,filter){this.id=id;this.nodata_text='keine Daten vorhanden';this.filter=filter;this.container=container;this.genrow_func=genrow_func;this.model=data;this.selected_row=null;this.selected_class='';this.ondblclick=null;this.onclick=null;this.ondeselect=null;this.rowvalues=[];if(this.filter==undefined||this.filter==null)this.filter=this.filter_all;if(this.genrow_func==undefined||this.genrow_func==null)this.genrow_func=this.genrow_func_proto;this.toHtml();};filterlist.prototype.genrow_func_proto=function(id,obj,aktrow){return'<li id="'+id+'">'+obj+'</li>';};filterlist.prototype.filter_all=function(obj){return true;};filterlist.prototype.filter_none=function(obj){return false;};filterlist.prototype.generr_func=function(id){return'<li id="'+id+'">'+this.nodata_text+'</li>';};filterlist.prototype.get_obj=function(row){return this.rowvalues[row];};filterlist.prototype.toHtml=function(){var time_start=new Date();var erg=[];var pos_row=[];var aktrow=0;var obj;this.firstrow=null;this.rowvalues=[];for(var row=0;row<this.model.count_rows();row++){obj=this.model.get_obj(row);if(!this.filter(obj))continue;erg[erg.length]=this.genrow_func(this.id+'_row'+row,obj,aktrow);pos_row[pos_row.length]=row;if(this.firstrow==null)this.firstrow=row;this.rowvalues[aktrow]=obj;aktrow++;}
if(aktrow==0){erg[erg.length]=this.generr_func(this.id+'_err');}
this.container.innerHTML=erg.join('');var time_int1=new Date();for(var pos=0;pos<pos_row.length;pos++){this.container.childNodes[pos].onclick=this.getOnClick(pos_row[pos]);this.container.childNodes[pos].ondblclick=this.getOnDblClick(pos_row[pos]);}
if(this.selected_row!=null&&aktrow==0){this.selected_row=null;}
if(this.selected_row!=null){var rowdom=document.getElementById(this.id+'_row'+this.selected_row);if(rowdom){this.selected_class=rowdom.className;rowdom.className='row_selected';}}
var time_end=new Date();if(debug)google.maps.Log.write('to html: '+(time_int1.getTime()-time_start.getTime())+' '+(time_end.getTime()-time_int1.getTime()));};filterlist.prototype.clicked=function(row){if(this.onclick!=null){var erg=this.onclick(this.model.get_obj(row));if(erg===false)return false;}
if(row!=this.selected_row){if(this.selected_row!=null){var sel=this.selected_row;this.selected_row=null;var rowdom=document.getElementById(this.id+'_row'+sel);if(rowdom){rowdom.className=this.selected_class;}}
this.selected_row=row;this.selected_class=document.getElementById(this.id+'_row'+row).className;document.getElementById(this.id+'_row'+row).className='row_selected';}};filterlist.prototype.dblclicked=function(row){if(this.ondblclick!=null)this.ondblclick(this.model.get_obj(row));};filterlist.prototype.getOnClick=function(row){var this_=this;return function(){this_.clicked(row);};};filterlist.prototype.getOnDblClick=function(row){var this_=this;return function(){this_.dblclicked(row);};};filterlist.prototype.set_filter=function(filter,selectfirst){if(debug)google.maps.Log.write('Set_filter ');this.filter=filter;if(this.selected_row!=null){if(!this.filter(this.model.get_obj(this.selected_row))){if(this.ondeselect!=null)this.ondeselect(this.model.get_obj(this.selected_row));this.selected_row=null;}}
this.toHtml();if(this.selected_row==null&&selectfirst==true){this.clicked(this.firstrow);}};filterlist.prototype.set_model=function(list_model){this.model=list_model;this.selected_row=null;this.toHtml();};;function ProUser(gid,titel,vorname,nachname,email,activated,autocode){this.gid=gid;this.titel=titel;this.vorname=vorname;this.nachname=nachname;this.email=email;this.activated=activated;this.autocode=autocode;};function ProUserManager(transport){this.user=new ProUser();this.transport=transport;this.status=0;this.divcontainer=document.createElement('div');this.div=document.createElement('div');this.divcontainer.appendChild(this.div);this.div.style.paddingBottom='5px';this.display_login();this.disabled=false;this.onlogin=function(user){};this.onlogout=function(){};this.divwait=document.createElement('div');this.divwait.style.position='absolute';this.divwait.style.width='100%';this.divwait.style.height='100%';this.divwait.style.top='0px';this.divwait.style.left='0px';this.divwait.style.display='none';this.divwait.style.backgroundImage='url(media/white_75.png)';this.divwait.style.textAlign='center';this.divcontainer.appendChild(this.divwait);this.autologin_check();};ProUserManager.prototype.add_to_dom=function(dom){dom.appendChild(this.divcontainer);};ProUserManager.prototype.assert_status=function(status){if(status!=this.status){alert('ProUserManager: wrong status, expected: '+status+', found: '+this.status+'!');}};ProUserManager.prototype.disable=function(disable){this.disabled=disable;this.divwait.style.display=(disable?'block':'none');};ProUserManager.prototype.display_login=function(msg){this.assert_status(0);var _this=this;this.loginform=new ProUserManager.LoginForm(this.div);this.loginform.onlogin=function(email,password,auto){_this.login_start(email,password,auto)};this.loginform.onregister=function(){_this.status=3;_this.display_register();};this.loginform.onremindpass=function(email){_this.remindpass_start(email);};this.loginform.onshowtest=function(){_this.showtest();};if(msg)this.loginform.show_message(msg);};ProUserManager.prototype.display_register=function(msg){this.assert_status(3);var _this=this;this.registerform=new ProUserManager.RegisterForm(this.div);this.registerform.oncancel=function(){_this.status=0;_this.display_login();};this.registerform.onregister=function(parobj){_this.register_start(parobj);};if(msg)this.registerform.show_message(msg);};ProUserManager.prototype.display_activate=function(msg){this.assert_status(5);var _this=this;this.activateform=new ProUserManager.ActivateForm(this.div);this.activateform.oncancel=function(){_this.status=0;_this.display_login("Aktivierung abgebrochen");};this.activateform.onactivate=function(code){_this.activate_start(code);};this.activateform.onresend=function(){_this.resend_mail_start()};if(msg)this.activateform.show_message(msg);};ProUserManager.prototype.display_status=function(msg){this.assert_status(2);var _this=this;this.statusform=new ProUserManager.StatusForm(this.div,this.user);this.statusform.onlogout=function(){_this.logout_start();};if(msg)this.statusform.show_message(msg);};ProUserManager.prototype.autologin_createcookie=function(remove){this.assert_status(2);var expires=new Date();expires.setTime(expires.getTime()+1000*60*60*24*(remove?-1:180));document.cookie="bwpal="+escape(this.user.gid+'_'+this.user.autocode)
+";expires="+expires.toGMTString()
+";path=/";};ProUserManager.prototype.autologin_check=function(){var nameEQ="bwpal=";var ca=document.cookie.split(';');var value='';for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0){value=c.substring(nameEQ.length,c.length);break;}}
var erg=value.match(/^([0-9]+)_(.+)$/);if(erg&&erg.length>1){this.autologin_start(erg[1],erg[2])}};ProUserManager.prototype.autologin_removecookie=function(){this.autologin_createcookie(true);};ProUserManager.prototype.autologin_start=function(gid,code){this.disable(true);this.assert_status(0);var _this=this;this.status=11;this.transport.send_request('autologin',{gid:gid,code:code},function(suc,res){_this.autologin_result(suc,res)});};ProUserManager.prototype.autologin_result=function(suc,res){this.assert_status(11);this.disable(false);if(!suc){this.status=0;return false;}
if(!res.success){this.status=0;return false;}
this.user=res.obj;if(this.user.activated){this.status=2;this.display_status();this.onlogin(this.user);return true;}else{this.status=0;return false;}};ProUserManager.prototype.showtest=function(){if(this.disabled)return false;this.assert_status(0);var _this=this;this.status=21;this.assert_status(21);this.testform=new ProUserManager.TestForm(this.div);this.testform.oncancel=function(){_this.status=0;_this.display_login("");};};ProUserManager.prototype.login_start=function(email,password,auto){if(this.disabled)return false;this.disable(true);this.assert_status(0);var _this=this;this.status=1;this.transport.send_request('login',{email:email,password:password,auto:auto},function(suc,res){_this.login_result(suc,res)});};ProUserManager.prototype.login_result=function(suc,res){this.assert_status(1);this.disable(false);if(!suc){this.status=0;this.loginform.show_message('<b class="error">Anmeldung fehlgeschlagen: keine Netzwerkverbindung!</b>');return false;}
if(!res.success){this.status=0;this.loginform.show_message('<b class="error">Anmeldung fehlgeschlagen: '+res.msg+'</b>');return false;}
this.user=res.obj;if(this.user.activated){this.status=2;this.display_status();this.onlogin(this.user);if(this.user.autocode!=''){this.autologin_createcookie();}
return true;}else{this.status=5;this.display_activate();return true;}};ProUserManager.prototype.register_start=function(parobj){if(this.disabled)return false;this.disable(true);this.assert_status(3);var _this=this;this.status=4;this.transport.send_request('register',parobj,function(suc,res){_this.register_result(suc,res)});};ProUserManager.prototype.register_result=function(suc,res){this.assert_status(4);this.disable(false);if(!suc){this.status=3;this.registerform.show_message('<b class="error">Registrierung fehlgeschlagen: keine Netzwerkverbindung!</b>');return false;}
if(!res.success){this.status=3;this.registerform.show_message('<b class="error">Registrierung fehlgeschlagen: '+res.msg+'</b>');return false;}
this.user=res.obj;this.status=5;this.display_activate();};ProUserManager.prototype.activate_start=function(code){if(this.disabled)return false;this.disable(true);this.assert_status(5);var _this=this;this.status=6;this.transport.send_request('activate',{gid:this.user.gid,code:code},function(suc,res){_this.activate_result(suc,res)});};ProUserManager.prototype.activate_result=function(suc,res){this.assert_status(6);this.disable(false);if(!suc){this.status=5;this.activateform.show_message('<b class="error">Aktivierung fehlgeschlagen: keine Netzwerkverbindung!</b>');return false;}
if(!res.success){this.status=5;this.activateform.show_message('<b class="error">Aktivierung fehlgeschlagen: '+res.msg+'</b>');return false;}
this.user=res.obj;this.status=2;this.onlogin(this.user);this.display_status();};ProUserManager.prototype.resend_mail_start=function(){if(this.disabled)return false;this.disable(true);this.assert_status(5);var _this=this;this.status=7;this.transport.send_request('resendmail',{gid:this.user.gid},function(suc,res){_this.resend_mail_result(suc,res)});};ProUserManager.prototype.resend_mail_result=function(suc,res){this.assert_status(7);this.disable(false);this.status=5;if(!suc){this.activateform.show_message('<b class="error">Aktion fehlgeschlagen: keine Netzwerkverbindung!</b>');return false;}
if(!res.success){this.activateform.show_message('<b class="error">Aktion fehlgeschlagen: '+res.msg+'</b>');return false;}
this.activateform.show_message('<b class="info">Aktivierungs-Mail wurde erneut verschickt</b>');};ProUserManager.prototype.remindpass_start=function(email){if(this.disabled)return false;this.disable(true);this.assert_status(0);var _this=this;this.status=9;this.transport.send_request('remindpass',{email:email},function(suc,res){_this.remindpass_result(suc,res)});};ProUserManager.prototype.remindpass_result=function(suc,res){this.assert_status(9);this.disable(false);this.status=0;if(!suc){this.loginform.show_message('<b class="error">Aktion fehlgeschlagen: keine Netzwerkverbindung!</b>');return false;}
if(!res.success){this.loginform.show_message('<b class="error">Aktion fehlgeschlagen: '+res.msg+'</b>');return false;}
this.loginform.show_message('<b class="info">Passwort-Mail verschickt</b>');};ProUserManager.prototype.logout_start=function(){if(this.disabled)return false;this.disable(true);this.assert_status(2);var _this=this;this.status=10;this.transport.send_request('logout',{gid:this.user.gid},function(suc,res){_this.logout_result(suc,res)});};ProUserManager.prototype.logout_result=function(suc,res){this.assert_status(10);this.disable(false);if(!suc){this.status=2;this.statusform.show_message('<b class="error">Abmelden fehlgeschlagen: keine Netzwerkverbindung!</b>');return false;}
if(!res.success){this.status=2;this.statusform.show_message('<b class="error">Abmelden fehlgeschlagen: '+res.msg+'</b>');return false;}
this.status=0;this.user=null;this.onlogout();this.display_login('<b class="info">Sie wurden vom System abgemeldet</b>');};ProUserManager.TestForm=function(div){this.div=div;this.div.innerHTML='';var h3=document.createElement('h3');h3.innerHTML='Beispiel-Daten';this.div.appendChild(h3);var p=document.createElement('p');p.innerHTML='Achtung, diese Daten entsprechen nicht der aktuell ausgewählten Strecke!';this.div.appendChild(p);var d_div=document.createElement('div');d_div.innerHTML=get_download_tab(trackdata_basic[8]);this.div.appendChild(d_div);var a=document.createElement('a');a.innerHTML='Zurück';a.href='#';var _this=this;this.oncancel=function(){};get_aktstrecke=function(){return trackdata_basic[8];};a.onclick=function(){get_aktstrecke=function(){return ebene2.akt_strecke;};_this.oncancel();return false;};this.div.appendChild(a);};ProUserManager.LoginForm=function(div){this.div=div;this.div.innerHTML='<h3>Bitte melden Sie sich an!</h3>'
+'<p>Nach kostenloser Registrierung können Sie hier:</p>'
+'<ul class="list"><li>GPS-Daten downloaden</li>'
+'<li>Streckenkarten ansehen und ausdrucken</li>'
+'<li>Roadbooks ansehen und ausdrucken</li></ul>'
+'<a href="#" id="loginform_showtest">Beispiel-Daten</a>'
+'<div id="loginform_msg"></div><form id="loginform"><fieldset>E-Mail: <input type="text" id="loginform_email"/> '
+'Passwort: <input type="password" id="loginform_pass"/><br/> '
+'<input type="checkbox" id="loginform_auto" value="1"> Auf diesem Computer automatisch einloggen<br/>'
+'<input type="submit" id="loginform_submit" value="Login"></fieldset></form>'
+'Falls Sie noch nicht beim Wanderportal registriert sind, können Sie sich hier kostenlos neu <a href="#" id="loginform_register">anmelden</a>.<br/>'
+'<a href="#" id="loginform_remindpass">Passwort vergessen?</a>';var domar=this.div.getElementsByTagName('form');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'loginform':this.form=dom;break;}}
this.input_email=this.form['loginform_email'];this.input_pass=this.form['loginform_pass'];this.input_submit=this.form['loginform_submit'];this.input_auto=this.form['loginform_auto'];domar=this.div.getElementsByTagName('a');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'loginform_register':this.link_register=dom;break;case'loginform_remindpass':this.link_remindpass=dom;break;case'loginform_showtest':this.link_showtest=dom;break;}}
domar=this.div.getElementsByTagName('div');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'loginform_msg':this.div_msg=dom;break;}}
var _this=this;this.form.onsubmit=function(){return _this.submit();};this.link_register.onclick=function(){_this.onregister();return false;};this.link_remindpass.onclick=function(){return _this.remindpass();};this.link_showtest.onclick=function(){_this.onshowtest();return false;};this.onlogin=function(email,password){};this.onregister=function(){};this.onremindpass=function(email){};this.onshowtest=function(){};};ProUserManager.prototype.user_logged_in=function(){return(this.status==2);};ProUserManager.LoginForm.prototype.remindpass=function(){if(this.input_email.value==''){alert('Bitte E-Mailadresse eingeben');return false;}
this.onremindpass(this.input_email.value);return false;};ProUserManager.LoginForm.prototype.submit=function(){if(this.input_email.value==''||this.input_pass.value==''){alert('Bitte Mailadresse und Passwort zur Anmeldung eingeben');return false;}
this.onlogin(this.input_email.value,this.input_pass.value,(this.input_auto.checked?1:0));return false;};ProUserManager.LoginForm.prototype.show_message=function(message){this.div_msg.innerHTML=message;};ProUserManager.RegisterForm=function(div){this.div=div;this.email_regexp=/^.+@.+[.][a-z]+/i;this.div.innerHTML='<h3>Registrieren Sie sich kostenlos beim Bergwanderpark-Wanderportal um</h3>'
+'<ul class="list"><li>GPS-Daten downzuloaden</li>'
+'<li>die Streckenkarte anzusehen und auszudrucken</li>'
+'<li>das Roadbook anzusehen und auszudrucken</li>'
+'<li>über Neuigkeiten und Weiterentwicklungen über den Berwanderpark-Newsletter informiert zu werden</li></ul>'
+'<p>Die Registrierung ist kostenlos, Ihre Daten werden vertraulich behandelt und nicht an Dritte weitergegeben.</p>'
+'<div id="registerform_msg"></div><form id="registerform"><fieldset>'
+'<table><tr valign="top"><td><table><tr><td>'
+'Anrede:</td><td><select id="registerform_titel"><option>Frau</option><option>Herr</option></select> '
+'</td></tr><tr><td>'
+'* Vorname:</td><td><input type="text" id="registerform_vorname"/> '
+'</td></tr><tr><td>'
+'* Nachname:</td><td><input type="text" id="registerform_nachname"/> '
+'</td></tr></table></td><td><table><tr><td>'
+'* E-Mail:</td><td><input type="text" id="registerform_email"/> '
+'</td></tr><tr><td>'
+'* E-Mail (Wiederholung):</td><td><input type="text" id="registerform_email_rep"/> '
+'</td></tr><tr><td>'
+'* Passwort:</td><td><input type="password" id="registerform_pass"/> '
+'</td></tr><tr><td>'
+'* Passwort (Wiederholung):</td><td><input type="password" id="registerform_pass_rep"/> '
+'</td></tr></table></td></tr></table>'
+'Die markierten Felder(*) sind Pflichtfelder, bitte füllen Sie diese korrekt aus.<br/>'
+'<input type="checkbox" id="registerform_agb" value="1"/>Ich akzeptiere die <a href="impressum.php#Nutzungsbedingungen" target="_impressum">Nutzungsbedingungen</a>. Ich habe die <a href="impressum.php#Datenschutzerklaerung" target="_impressum">Datenschutzerklärung</a> gelesen und willige in die Verwendung meiner personenbezogenen Daten ein.'
+'<input type="submit" id="registerform_submit" value="Registrieren"></fieldset></form>'
+'<a href="#" id="registerform_cancel" title="Klicken Sie hier, um den Registrierungsvorgang abzubrechen">Registrierung abbrechen</a>';var domar=this.div.getElementsByTagName('form');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'registerform':this.form=dom;break;}}
this.select_titel=this.form['registerform_titel'];this.input_vorname=this.form['registerform_vorname'];this.input_nachname=this.form['registerform_nachname'];this.input_email=this.form['registerform_email'];this.input_email_rep=this.form['registerform_email_rep'];this.input_pass=this.form['registerform_pass'];this.input_pass_rep=this.form['registerform_pass_rep'];this.input_agb=this.form['registerform_agb'];this.input_submit=this.form['registerform_sumbit'];domar=this.div.getElementsByTagName('div');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'registerform_msg':this.div_msg=dom;break;}}
domar=this.div.getElementsByTagName('a');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'registerform_cancel':this.link_cancel=dom;break;}}
var _this=this;this.form.onsubmit=function(){return _this.submit();};this.link_cancel.onclick=function(){_this.oncancel();return false;};this.oncancel=function(){};this.onregister=function(parobj){};};ProUserManager.RegisterForm.prototype.submit=function(){if(this.input_email.value==''||this.input_pass.value==''||this.input_vorname.value==''||this.input_nachname.value==''||this.input_email_rep.value==''||this.input_pass_rep.value==''){alert('Bitte alle notwendigen Felder ausfüllen');return false;}
if(this.input_email.value!=this.input_email_rep.value){alert('Mailadressen stimmen nicht überein, bitte auf Tippfehler prüfen');return false;}
if(!this.email_regexp.test(this.input_email.value)){alert('Keine gültige Mailadresse angegeben');return false;}
if(this.input_pass.value!=this.input_pass_rep.value){alert('Fehler bei der Wiederholung des Passworts, bitte neu eintippen');this.input_pass.value='';this.input_pass_rep.value='';return false;}
if(!this.input_agb.checked){alert('Sie müssen den AGB zustimmen, um sich registrieren zu können');return false;}
var parobj={titel:this.select_titel.value,vorname:this.input_vorname.value,nachname:this.input_nachname.value,email:this.input_email.value,email_rep:this.input_email_rep.value,password:this.input_pass.value,password_rep:this.input_pass_rep.value};this.onregister(parobj);return false;};ProUserManager.RegisterForm.prototype.show_message=function(message){this.div_msg.innerHTML=message;};ProUserManager.ActivateForm=function(div){this.div=div;this.div.innerHTML='<h3>Bitte Anmeldung bestätigen</h3>'
+'<p>Sie haben eine E-Mail erhalten. Darin ist ein Link enthalten, mit dem Sie Ihre Anmeldung abschließend bestätigen können.</p>'
+'<div id="activateform_msg"></div><form id="activateform"><fieldset>'
+'Code: <input type="text" id="activateform_code"/> '
+'<input type="submit" id="activateform_submit" value="Aktivieren"></fieldset></form>'
+'<a href="#" id="activateform_resend" title="Klicken Sie hier, falls die Aktivierungs-Email nicht erhalten haben (vorher ggf. den Spam-Ordner prüfen)">Aktivierungs-Email erneut anfordern</a><br/>'
+'<a href="#" id="activateform_cancel" title="Klicken Sie hier, um den Aktivierungsvorgang abzubrechen">Aktivierung abbrechen</a>';var domar=this.div.getElementsByTagName('form');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'activateform':this.form=dom;break;}}
domar=this.div.getElementsByTagName('a');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'activateform_cancel':this.link_cancel=dom;break;case'activateform_resend':this.link_resend=dom;break;}}
this.input_code=this.form['activateform_code'];this.input_submit=this.form['activateform_sumbit'];domar=this.div.getElementsByTagName('div');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'activateform_msg':this.div_msg=dom;break;}}
var _this=this;this.form.onsubmit=function(){return _this.submit();};this.link_cancel.onclick=function(){_this.oncancel();return false;};this.link_resend.onclick=function(){_this.onresend();return false;};this.oncancel=function(){};this.onresend=function(){};this.onactivate=function(code){};};ProUserManager.ActivateForm.prototype.submit=function(){this.onactivate(this.input_code.value);return false;};ProUserManager.ActivateForm.prototype.show_message=function(message){this.div_msg.innerHTML=message;};ProUserManager.StatusForm=function(div,user){this.div=div;this.div.innerHTML='<div id="statusform_msg"></div><div id="statusform">'
+'Sie sind angemeldet als '+user.vorname+' '+user.nachname
+' <a href="#" id="statusform_logout">Abmelden</a></div>'
domar=this.div.getElementsByTagName('div');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'statusform_msg':this.div_msg=dom;break;}}
domar=this.div.getElementsByTagName('a');for(var i=0;i<domar.length;i++){var dom=domar[i];switch(dom.id){case'statusform_logout':this.link_logout=dom;break;}}
var _this=this;this.link_logout.onclick=function(){_this.onlogout();};this.onlogout=function(){};};ProUserManager.StatusForm.prototype.show_message=function(message){this.div_msg.innerHTML=message;};;function tabbedhtml(id,container,tabdefs,show_close){if(show_close===undefined)show_close=true;this.show_close=show_close;this.id=id;this.container=container;this.tabdefs=tabdefs;this.tabactive=null;this.showstatus=false;this.openstatus=false;this.content=null;this.closeobj;this.showobj;this.hideobj;this.init();};tabbedhtml.prototype.setTab=function(i,title,html){this.tabdefs[i]={title:title,html:html};this.init();};tabbedhtml.prototype.setTabContent=function(i,html){this.tabdefs[i].html=html;if(i==this.tabactive)this.display_content(this.tabactive);};tabbedhtml.prototype.setTabContentDom=function(i,dom){this.tabdefs[i].dom=dom;if(i==this.tabactive)this.display_content(this.tabactive);};tabbedhtml.prototype.getOnClick=function(i){var this_=this;return function(){this_.clicked(i);};};tabbedhtml.prototype.get_title_header=function(id){return'<ul id="'+id+'">';};tabbedhtml.prototype.get_title_footer=function(){return'</ul>';};tabbedhtml.prototype.get_title=function(id,title){return'<li id="'+id+'">'+title+'</li>';};tabbedhtml.prototype.get_closing=function(id){return'<li id="'+id+'" class="close"><img src="media/close.gif" title="schliessen" alt="X"/></li>';};tabbedhtml.prototype.get_show=function(id){return'<li id="'+id+'"><img src="media/up.gif" title="maximieren" alt="/\\"/></li>';};tabbedhtml.prototype.get_hide=function(id){return'<li id="'+id+'"><img src="media/down.gif" title="minimieren" alt="\\/"/></li>';};tabbedhtml.prototype.get_content_header=function(id){return'<div id="'+id+'">';};tabbedhtml.prototype.get_content_footer=function(){return'</div>';};tabbedhtml.prototype.init=function(){erg=this.get_title_header(this.id+'_titlebar');for(var i=0;i<this.tabdefs.length;i++){erg+=this.get_title(this.id+'_'+i,this.tabdefs[i].title);}
erg+=this.get_show(this.id+'_show');erg+=this.get_hide(this.id+'_hide');if(this.show_close){erg+=this.get_closing(this.id+'_close');}
erg+=this.get_title_footer();erg+=this.get_content_header(this.id+'_content');erg+=this.get_content_footer();this.container.innerHTML=erg;this.content=document.getElementById(this.id+'_content');je.util.addClass(this.content,"hide");for(var i=0;i<this.tabdefs.length;i++){var obj=document.getElementById(this.id+'_'+i);this.tabdefs[i].domobj=obj;obj.onclick=this.getOnClick(i);}
if(this.show_close){document.getElementById(this.id+'_close').onclick=this.getOnClick(-1);}
this.showobj=document.getElementById(this.id+'_show')
this.showobj.onclick=this.getOnClick(-2);this.hideobj=document.getElementById(this.id+'_hide');this.hideobj.onclick=this.getOnClick(-3);this.content=document.getElementById(this.id+'_content');this.close();};tabbedhtml.prototype.hide=function(){je.util.addClass(this.content,"hide");this.content.style.display='none';this.hideobj.style.display='none';this.showobj.style.display='block';this.showstatus=false;};tabbedhtml.prototype.show=function(){if(!this.openstatus){this.open();}
if(this.tabactive==null){this.clicked(0);}
je.util.removeClass(this.content,"hide");this.content.style.display='block';this.hideobj.style.display='block';this.showobj.style.display='none';this.showstatus=true;};tabbedhtml.prototype.clicked=function(i){if(i<0){switch(i){case-1:this.close();break;case-2:if(this.tabactive==null){this.clicked(0);}else{this.show();}
break;case-3:this.hide();break;}
return;}
if(i==this.tabactive){if(this.showstatus){this.hide();}else{this.show();}}else{if(this.tabactive!=null){je.util.removeClass(this.tabdefs[this.tabactive].domobj,"selected");}
je.util.addClass(this.tabdefs[i].domobj,'selected');this.display_content(i);this.tabactive=i;if(!this.showstatus){this.show();}}};tabbedhtml.prototype.display_content=function(i){if(this.tabdefs[i].dom){while(this.content.hasChildNodes()){this.content.removeChild(this.content.lastChild);}
this.content.appendChild(this.tabdefs[i].dom);}else{if(this.tabactive&&this.tabdefs[this.tabactive]&&this.tabdefs[this.tabactive].dom){while(this.content.hasChildNodes()){this.content.removeChild(this.content.lastChild);}}
this.content.innerHTML=this.tabdefs[i].html;}};tabbedhtml.prototype.close=function(){if(!this.openstatus);this.hide();this.container.style.display='none';this.openstatus=false;if(this.tabactive!=null){je.util.removeClass(this.tabdefs[this.tabactive].domobj,"selected");}
this.tabactive=null;};tabbedhtml.prototype.open=function(){if(this.openstatus)return;this.hide();this.container.style.display='block';this.openstatus=true;this.showstatus=false;};;function Ed_Base(){this.dom=null;this.obj=null;this.value=null};Ed_Base.prototype.getDom=function(){return this.dom;};Ed_Base.prototype.disable=function(disable){try{this.dom.disabled=disable;}catch(e){}};Ed_Base.prototype.enable=function(){this.disable(false);};Ed_Base.prototype.onchange=function(){};Ed_Base.prototype.setValue=function(value){this.value=value};Ed_Base.prototype.getValue=function(){return this.value;};Ed_Base.prototype.isValid=function(){return true;};Ed_Base.prototype.setFocus=function(){if(this.dom&&this.dom.focus)this.dom.focus();};Ed_Base.prototype.remove=function(){this.dom=null};Ed_Base.prototype.setObj=function(obj){this.obj=obj;};Ed_Base.prototype.styleDom=function(styles){for(var name in styles){this.dom.style[name]=styles[name];}};function Ed_Button_Control(text,label){var _this=this;this.onclick=function(){};this.dom=document.createElement('div');this.dom.appendChild(document.createTextNode(text));var input=document.createElement('input');input.type="submit";input.value=label;input.onclick=function(){_this.onclick();return false;}
this.dom.appendChild(input);this.dom.appendChild(document.createElement('hr'));};Ed_Button_Control.prototype=new Ed_Base();function Ed_Add_Weg_Control(map,transport){var _this=this;this.map=map;this.is_disabled=false;this.onaddweg=function(weg){};this.transport=transport;this.dom=document.createElement('div');this.check=new Ed_Bool_Editor();this.dom.appendChild(this.check.getDom());this.dom.appendChild(document.createTextNode(' Weg durch Klick in der Karte hinzufügen'));this.check.onchange=function(){var val=this.getValue();_this.change_status(val!=0);};this.dom.appendChild(document.createElement('hr'));};Ed_Add_Weg_Control.prototype=new Ed_Base();Ed_Add_Weg_Control.prototype.remove=function(){if(this.check.getValue()>0){this.change_status(false);}};Ed_Add_Weg_Control.prototype.disable=function(disable){this.is_disabled=disable;this.check.disable(disable);};Ed_Add_Weg_Control.prototype.change_status=function(enable){var mapdiv=this.map.getContainer();if(enable){je.util.addClass(mapdiv,'select');this.listener=google.maps.Event.bind(this.map,'click',this,this.onclick);this.check.setValue(true);}else{je.util.removeClass(mapdiv,'select');google.maps.Event.removeListener(this.listener);this.check.setValue(false);}};Ed_Add_Weg_Control.prototype.onclick=function(overlay,latlng,overlay_latlng){if(this.is_disabled)return;var _this=this;if(overlay)return;this.transport.send_request('searchweg',{lat:latlng.lat(),lng:latlng.lng()},function(suc,obj){_this.onclick_result(suc,obj)});};Ed_Add_Weg_Control.prototype.onclick_result=function(suc,obj){if(obj.obj&&obj.success){var weg=obj.obj.weg;weg.polylines=obj.obj.polyline[0].lines;this.onaddweg(weg);}};function Ed_Select_Viewer(){this.dom=document.createTextNode('');this.value=null;this.data=new Obj_Data_Adapter([],0,1);};Ed_Select_Viewer.prototype=new Ed_Base();Ed_Select_Viewer.prototype.setValue=function(value){this.value=value;if(value==null||value==undefined)this.dom.data='';for(var i=this.data.getCount()-1;i>=0;i--){if(this.data.getValue(i)==value){this.dom.data=this.data.getText(i);return;}}};Ed_Select_Viewer.prototype.getValue=function(){return this.value;};Ed_Select_Viewer.prototype.setDataFromAr=function(ar){this.setData(new Obj_Data_Adapter(ar,0,1));};Ed_Select_Viewer.prototype.setData=function(data){this.data=data;this.setValue(this.value);};function Ed_Select_Editor(){this.dom=document.createElement('select');this.classes=false;var _this=this;this.dom.onchange=function(){_this.onchange_();};};Ed_Select_Editor.prototype=new Ed_Base();Ed_Select_Editor.prototype.checkClass=function(){if(this.classes){this.dom.className=this.dom.options[this.dom.selectedIndex].className;}};Ed_Select_Editor.prototype.onchange_=function(){this.checkClass();this.onchange();};Ed_Select_Editor.prototype.setValue=function(val){this.dom.value=val;this.checkClass();};Ed_Select_Editor.prototype.getValue=function(){return this.dom.value;};Ed_Select_Editor.prototype.setDataFromAr=function(ar){this.setData(new Obj_Data_Adapter(ar,0,1));};Ed_Select_Editor.prototype.setData=function(data){var val=this.dom.value;var setval=false;this.dom.length=0;var count=data.getCount();for(var i=0;i<count;i++){var option=new Option(data.getText(i),data.getValue(i));if(data.getClass(i)){this.classes=true;option.className=data.getClass(i);}
this.dom.options[this.dom.options.length]=option;setval|=(data.getValue(i)==val);}
if(setval)this.dom.value=val;this.checkClass();};function Ed_CheckSelect_Editor(){this.dom=document.createElement('ul');var _this=this;this.cbxobj={};};Ed_CheckSelect_Editor.prototype=new Ed_Base();Ed_CheckSelect_Editor.prototype.setValue=function(val){if(!val)return;var i,vals={};for(i=0;i<val.length;i++){vals[val[i]]=true;}
for(i in this.cbxobj){this.cbxobj[i].checked=(vals[i]!==undefined);}};Ed_CheckSelect_Editor.prototype.disable=function(disable){var i;for(i in this.cbxobj){this.cbxobj[i].disabled=disable;}};Ed_CheckSelect_Editor.prototype.getValue=function(){var cbxobj=this.cbxobj,i,val=[];for(i in cbxobj){if(cbxobj[i].checked)val.push(i);}
return val;};Ed_CheckSelect_Editor.prototype.setDataFromAr=function(ar){this.setData(new Obj_Data_Adapter(ar,0,1));};Ed_CheckSelect_Editor.prototype.setData=function(data){var _this=this,count=data.getCount(),i,li,cbx,childs=this.dom.childNodes,val=this.getValue();while(childs.length>0){this.dom.removeChild(childs[0]);}
for(i=0;i<count;i++){li=document.createElement('li');cbx=document.createElement('input');cbx.type='checkbox';cbx.style.width='14px';cbx.onclick=function(){_this.onchange();};this.cbxobj[data.getValue(i)]=cbx;li.appendChild(cbx);li.appendChild(document.createTextNode(' '+data.getText(i)));this.dom.appendChild(li);}
this.setValue(val);};function Ed_CheckSelect_Viewer(){this.dom=document.createElement('ul');var _this=this;this.data=new Obj_Data_Adapter([],0,1);};Ed_CheckSelect_Viewer.prototype=new Ed_Base();Ed_CheckSelect_Viewer.prototype.setValue=function(val){this.value=val;if(!val)return;var i,vals={},count=this.data.getCount(),li,childs=this.dom.childNodes;for(i=0;i<val.length;i++){vals[val[i]]=true;}
while(childs.length>0){this.dom.removeChild(childs[0]);}
for(i=0;i<count;i++){if(vals[this.data.getValue(i)]!==undefined){li=document.createElement('li');li.appendChild(document.createTextNode(this.data.getText(i)));this.dom.appendChild(li);}}};Ed_CheckSelect_Viewer.prototype.setDataFromAr=function(ar){this.setData(new Obj_Data_Adapter(ar,0,1));};Ed_CheckSelect_Viewer.prototype.setData=function(data){this.data=data;};function Obj_Data_Adapter(objar,keyval,keytext,keyclass,filter){var tmpar;if(objar instanceof Array){tmpar=objar;}else{tmpar=[];for(var key in objar){if(filter&&!filter(objar[key]))continue;tmpar.push(objar[key]);}}
this.objar=tmpar;this.keyval=keyval;this.keytext=keytext;this.keyclass=keyclass;this.getCount=function(){return this.objar.length;};this.getValue=function(row){return this.objar[row][this.keyval];};this.getText=function(row){return this.objar[row][this.keytext];};this.getClass=function(row){return(this.keyclass?this.objar[row][this.keyclass]:undefined)};this.sort=function(sortfunc){this.objar.sort(sortfunc);};};function Ed_String_Viewer(){this.dom=document.createTextNode('');};Ed_String_Viewer.prototype=new Ed_Base();Ed_String_Viewer.prototype.setValue=function(val){this.dom.data=val;this.value=val;};function Ed_WegIconText_Viewer(){this.dom=document.createElement('div');this.span=document.createElement('span');this.img=document.createElement('img');this.img.style.height='14px';};Ed_WegIconText_Viewer.prototype=new Ed_Base();Ed_WegIconText_Viewer.prototype.setValue=function(val){this.value=val;this.span.innerHTML=val;this.dom.appendChild(this.span);if(val){this.img.src='media/wege/'+val+'.gif';this.dom.appendChild(this.img);}};function Ed_WegIcon_Editor(){this.dom=document.createElement('div');this.input=new Ed_String_Editor();this.img=new Ed_WegIcon_Viewer();this.input.styleDom({width:'60px'});this.dom.setAttribute('type','text');var _this=this;this.input.onchange=function(){_this.img.setValue(_this.input.getValue());_this.onchange();};this.dom.appendChild(this.input.getDom());this.dom.appendChild(document.createTextNode(' '));this.dom.appendChild(this.img.getDom());};Ed_WegIcon_Editor.prototype=new Ed_Base();Ed_WegIcon_Editor.prototype.setValue=function(val){this.input.setValue(val);this.img.setValue(val);};Ed_WegIcon_Editor.prototype.getValue=function(){return this.input.getValue();};Ed_WegIcon_Editor.prototype.disable=function(disable){this.input.disable(disable);};function Ed_String_Editor(){this.dom=document.createElement('input');this.dom.setAttribute('type','text');var _this=this;this.dom.onchange=function(){_this.onchange();};this.dom.onkeyup=function(){if(_this.dom.value!=_this.value){_this.value=_this.dom.value;_this.onchange();}};};Ed_String_Editor.prototype=new Ed_Base();Ed_String_Editor.prototype.setValue=function(val){this.dom.value=val;this.value=val;};Ed_String_Editor.prototype.getValue=function(){return this.dom.value;};function Ed_Int_Editor(){this.dom=document.createElement('input');this.dom.setAttribute('type','text');var _this=this;this.dom.onchange=function(){_this.onchange();};this.dom.onkeyup=function(){if(_this.dom.value!=_this.value){_this.value=_this.dom.value;_this.onchange();}};};Ed_Int_Editor.prototype=new Ed_Base();Ed_Int_Editor.prototype.setValue=function(val){this.dom.value=val;this.value=val;};Ed_Int_Editor.prototype.getValue=function(){return parseInt(this.dom.value);};Ed_Int_Editor.prototype.isValid=function(){return!isNaN(parseInt(this.dom.value));};function Ed_Datum_Editor(){this.dom=document.createElement('div');this.input=document.createElement('input');this.input.setAttribute('type','text');this.input.style.width='90px';this.dom.appendChild(this.input);this.cal=new tcal.Tcal({e_input:this.input});this.cal.e_icon.style.verticalAlign='middle';this.dom.appendChild(this.cal.e_icon);var _this=this;var _onchange=function(){if(_this.isValid()){_this.input.style.backgroundColor='';}else{_this.input.style.backgroundColor='#ff6666';}
_this.onchange();};this.cal.onchange=_onchange;this.input.onchange=_onchange;this.input.onkeyup=_onchange;};Ed_Datum_Editor.prototype=new Ed_Base();Ed_Datum_Editor.prototype.disable=function(disable){this.input.disabled=disable;if(disable){this.tmp_handler=this.cal.e_icon.onclick;this.cal.e_icon.onclick=function(){};}else{this.cal.e_icon.conclick=this.tmp_handler;}};Ed_Datum_Editor.prototype.setValue=function(val){this.input.value=val;};Ed_Datum_Editor.prototype.getValue=function(){return this.input.value;};Ed_Datum_Editor.prototype.isValid=function(){return this.cal.f_isValid(this.getValue());};Ed_Datum_Editor.prototype.setFocus=function(){this.input.select();this.input.focus();};function Ed_Text_Viewer(){this.dom=document.createElement('div');this.dom.style.maxHeight='120px';this.dom.style.overflow='auto';};Ed_Text_Viewer.prototype=new Ed_Base();Ed_Text_Viewer.prototype.setValue=function(val){this.dom.innerHTML=val;this.value=val;};function Ed_Text_Editor(){this.dom=document.createElement('textarea');var _this=this;this.dom.onchange=function(){_this.onchange();};this.dom.onkeyup=function(){if(_this.dom.value!=_this.value){_this.value=_this.dom.value;_this.onchange();}};};Ed_Text_Editor.prototype=new Ed_Base();Ed_Text_Editor.prototype.setValue=function(val){this.dom.value=val;this.value=val;};Ed_Text_Editor.prototype.getValue=function(){return this.dom.value;};function Ed_Bool_Viewer(){this.value=null;this.dom=document.createTextNode('');};Ed_Bool_Viewer.prototype=new Ed_Base();Ed_Bool_Viewer.prototype.setValue=function(val){this.value=val;this.dom.data=(val?'JA':'NEIN');};Ed_Bool_Viewer.prototype.getValue=function(){return this.value;};function Ed_Bool_Editor(){this.dom=document.createElement('input');this.dom.setAttribute('type','checkbox');this.dom.style.width='auto';var _this=this;this.dom.onclick=function(){_this.onchange();};}
Ed_Bool_Editor.prototype=new Ed_Base();Ed_Bool_Editor.prototype.setValue=function(val){this.dom.checked=(val?true:false);};Ed_Bool_Editor.prototype.getValue=function(){return this.dom.checked?1:0;};function Ed_Bool_Editor_Label(label){this.dom=document.createElement('span');this.input=document.createElement('input');this.input.setAttribute('type','checkbox');this.input.style.width='auto';this.label=document.createElement('label');this.label.innerHTML=label;this.dom.appendChild(this.input);this.dom.appendChild(this.label);var _this=this;this.dom.onclick=function(){_this.onchange();};}
Ed_Bool_Editor_Label.prototype=new Ed_Base();Ed_Bool_Editor_Label.prototype.disable=function(disable){this.input.disabled=disable;this.label.style.color=(disable?'#777777':'#000000');};Ed_Bool_Editor_Label.prototype.setValue=function(val){this.input.checked=(val?true:false);};Ed_Bool_Editor_Label.prototype.getValue=function(){return this.input.checked?1:0;};function Ed_Wegeattrib_Viewer(url){this.dom=document.createElement('div');this.value=[];this.url=(url?url:'media/wege/');this.show_km=false;this.show_ende=false;this.mousepos=-1;};Ed_Wegeattrib_Viewer.prototype=new Ed_Base();Ed_Wegeattrib_Viewer.prototype.setValue=function(val){this.value=val;var html=['<ul>'],weg,rev,attr,to,i;for(i=0;i<val.length;i++){weg=val[i][0];rev=val[i][1];if(weg==null){html.push('<li>(Endpunkt)</li>');}else{attr=this.obj.get_weg_attrib(weg,rev);to=this.obj.get_weg_to(weg,rev);html.push('<li style="list-style-type: none">',to.nr,' ',attr.ziel,' ',(this.show_km?attr.km+'km ':''),(attr.zeichen?'<img height="14" src="'+this.url+attr.zeichen+'.gif" title="'+attr.zeichen+'" alt="'+attr.zeichen+'"/>':''),'</li>');}}
if(this.show_ende){html.push('<li style="list-style-type: none">(Endpunkt)</li>');}
html.push('</ul>');this.dom.innerHTML=html.join('');};Ed_Wegeattrib_Viewer.prototype.setClickHandler=function(handler){function getOnClick(weg,rev){return function(){handler(weg,rev);return false;}};var i,weg,rev,ul,li,wegrev;ul=this.dom.getElementsByTagName('ul')[0];for(i=0;i<this.value.length;i++){wegrev=this.value[i];weg=wegrev[0];rev=wegrev[1];li=ul.childNodes[i];li.onclick=getOnClick(weg,rev);}
if(this.show_ende){ul.childNodes[this.value.length].onclick=getOnClick(null,null);}};Ed_Wegeattrib_Viewer.prototype.setMouseHandler=function(handler){function getOnMouseOver(obj,pos){return function(){if(obj.mousepos!==pos){obj.mousepos=pos;handler(pos,true);}
return false;}};function getOnMouseOut(obj,pos){return function(){if(obj.mousepos===pos){obj.mousepos=-1;handler(pos,false);}
return false;}};var i,ul,li;ul=this.dom.getElementsByTagName('ul')[0];for(i=0;i<this.value.length;i++){li=ul.childNodes[i];li.onmouseover=getOnMouseOver(this,i);li.onmouseout=getOnMouseOut(this,i);}};function Ed_WegIcon_Viewer(url){this.dom=document.createElement('img');this.dom.style.height='14px';this.url=(url?url:'media/wege/');this.value=null;};Ed_WegIcon_Viewer.prototype=new Ed_Base();Ed_WegIcon_Viewer.prototype.setValue=function(val){try{this.dom.src=this.url+val+'.gif';}catch(e){}
this.dom.alt=val;this.dom.title=val;this.value=val;};function Ed_Wegeattrib_Editor(ctr,url){function EdRow(show_km){var _this=this;this.mouse_in=false;this.show_km=show_km;this.dom=document.createElement('tr');this.controls={nr:new Ed_String_Viewer(),km:new Ed_String_Editor(),ziel:new Ed_String_Editor(),zeichen:new Ed_String_Editor(),zeichen_img:new Ed_WegIcon_Viewer()};for(var c in this.controls){this.controls[c].onchange=function(){_this.onchange();};}
this.controls.zeichen.onchange=function(){_this.controls.zeichen_img.setValue(_this.controls.zeichen.getValue());_this.onchange();};this.dom.onmouseover=function(){if(!_this.mouse_in){_this.mouse_in=true;_this.onmouseover(_this);}};this.dom.onmouseout=function(){if(_this.mouse_in){_this.mouse_in=false;_this.onmouseout(_this);}}
this.onmouseover=function(obj){};this.onmouseout=function(obj){};};EdRow.prototype=new Ed_Base();EdRow.prototype.setValue=function(val){var td1,td2,td3,td4,td5,c;c=this.controls.nr;td1=document.createElement('td');c.setValue(val.nr);td1.appendChild(c.getDom());c=this.controls.km;c.setValue(val.km);if(this.show_km){td2=document.createElement('td');c.styleDom({width:'25px'});td2.appendChild(c.getDom());}
c=this.controls.ziel;td3=document.createElement('td');c.setValue(val.ziel);c.styleDom({width:'140px'});td3.appendChild(c.getDom());c=this.controls.zeichen;td4=document.createElement('td');c.setValue(val.zeichen);c.styleDom({width:'40px'});td4.appendChild(c.getDom());c=this.controls.zeichen_img;td5=document.createElement('td');c.setValue(val.zeichen);td5.appendChild(c.getDom());var tr=this.dom;tr.appendChild(td1);if(this.show_km){tr.appendChild(td2);}
tr.appendChild(td3);tr.appendChild(td4);tr.appendChild(td5);this.value=val;};EdRow.prototype.getValue=function(val){this.value.km=this.controls.km.getValue();this.value.ziel=this.controls.ziel.getValue();this.value.zeichen=this.controls.zeichen.getValue();return this.value;};EdRow.prototype.disable=function(disable){for(var cid in this.controls){this.controls[cid].disable(disable);}};this.dom=document.createElement('div');this.value=[];this.rows=[];this.url=(url?url:'media/wege/');this.polyMan=ctr.cms_ctr.mapMan.polyMan;this.show_km=false;Ed_Wegeattrib_Editor.EdRow=EdRow;};Ed_Wegeattrib_Editor.prototype=new Ed_Base();Ed_Wegeattrib_Editor.prototype.setValue=function(val){this.value=val;var _this=this;var i,weg,rev,wegrev,tbody,attr,to,row,rows=[],weg_ids=[];var table=document.createElement('table');tbody=document.createElement('tbody');var trth=document.createElement('tr');var th=document.createElement('th');th.innerHTML='Ziel';trth.appendChild(th);if(this.show_km){th=document.createElement('th');th.innerHTML='km';trth.appendChild(th);}
th=document.createElement('th');th.innerHTML='Beschriftung';trth.appendChild(th);th=document.createElement('th');th.innerHTML='Zeichen';th.colSpan='2';trth.appendChild(th);tbody.appendChild(trth);table.appendChild(tbody);for(i=0;i<val.length;i++){wegrev=val[i];weg=wegrev[0];rev=wegrev[1];attr=this.obj.get_weg_attrib(weg,rev);to=this.obj.get_weg_to(weg,rev);attr.nr=to.nr;attr.weg_id=weg.id;weg_ids.push(weg.id);row=new Ed_Wegeattrib_Editor.EdRow(this.show_km);row.setValue(attr);row.onchange=function(){_this.onchange();};tbody.appendChild(row.getDom());rows.push(row);row.onmouseover=function(r){_this.highlight_weg(r.value.weg_id,true);};row.onmouseout=function(r){_this.highlight_weg(r.value.weg_id,false);};}
this.dom.appendChild(table);this.rows=rows;this.polyMan.draw_lines(weg_ids);};Ed_Wegeattrib_Editor.prototype.getValue=function(val){var i,weg,attr_tmp;for(i=0;i<this.value.length;i++){this.rows[i].getValue();}
return this.value;};Ed_Wegeattrib_Editor.prototype.disable=function(disable){for(var rowid in this.rows){this.rows[rowid].disable(disable);}};Ed_Wegeattrib_Editor.prototype.highlight_weg=function(weg_id,highlight){if(highlight){this.polyMan.set_stroke_style([weg_id],{color:'#ff0000',weight:5});}else{this.polyMan.reset_stroke_style([weg_id]);}};Ed_Wegeattrib_Editor.prototype.remove=function(){this.dom=null;this.polyMan.draw_lines([]);this.polyMan=null;this.rows=null;};function Ed_Pictures_Viewer(scale,url){this.dom=document.createElement('div');this.dom.className='picturelist'
this.value=[];this.scale=(scale===undefined?0.4:scale);this.url=(url?url:'http://bergwanderpark.wwl-web.de/pics/');};Ed_Pictures_Viewer.prototype=new Ed_Base();Ed_Pictures_Viewer.prototype.setValue=function(val){this.value=val;if(val==null||val==undefined)return;var html='';for(var i=0;i<val.length;i++){html+=['<img src="',this.url,val[i].filename,'" width="',val[i].width*this.scale,'" height="',val[i].height*this.scale,'" ',(val[i].hidden?'class="hidden" ':(val[i].overview?'':'class="overview" ')),'alt=""/> '].join('');}
this.dom.innerHTML=html;};Ed_Pictures_Viewer.prototype.getValue=function(){return this.value;};function Ed_PicURL_Viewer(){this.dom=document.createElement('div');this.dom.className='picurl';this.value='';};Ed_PicURL_Viewer.prototype=new Ed_Base();Ed_PicURL_Viewer.prototype.setValue=function(val){this.value=val;if(val==null||val==undefined||val=='')return;this.dom.innerHTML='<img src="'+val+'" height="190" alt=""/> ';}
Ed_PicURL_Viewer.prototype.getValue=function(){return this.value;};function Ed_Picture_List_Editor(user){this.user=user;this.dom=document.createElement('div');this.list=document.createElement('ol');this.dom.appendChild(this.list);this.form=document.createElement('form');this.form.method='POST';this.form.enctype='multipart/form-data';this.form.encoding='multipart/form-data';var _this=this;this.form.onsubmit=function(){_this.onchange();return _this.onupload(_this.form);};this.dom.appendChild(document.createElement('hr'));this.dom.appendChild(this.form);this.form.innerHTML='<fieldset><input style="width:auto" type="hidden" name="do" value="uploadpic"/>Neu:&nbsp;<input style="width:auto" type="file" name="uploadpic"><input name="doit" style="width:auto" type="submit" value="Upload"/></fieldset>'
this.dom.appendChild(document.createElement('hr'));if(user.role=='admin'){this.form2=document.createElement('form');this.form2.innerHTML='<fieldset><input style="width:auto" type="hidden" name="do" value="searchpic"/>Auswahl:&nbsp;<select style="width:auto"><option>je</option></select><select style="width:auto"><option>10.11.2008</option></select><select style="width:auto"><option>Nr. 1 - Bild 1</option><option>Nr. 2 - Bild 2</option></select><input style="width:auto" type="submit" value="Auswählen"/></fieldset>';this.dom.appendChild(this.form2);}
this.value=[];this.onchange=function(){};this.onupload=function(form){};};Ed_Picture_List_Editor.prototype=new Ed_Base();Ed_Picture_List_Editor.prototype.setValue=function(value){this.value=value;var list=document.createElement('ol');this.dom.replaceChild(list,this.list);this.list=list;this.list.style.marginLeft='0px';this.list.style.paddingLeft='0px';for(var i=0;i<value.length;i++){var li=document.createElement('li');li.style.marginLeft='0px';li.style.paddingLeft='0px';var img=document.createElement('img');img.src='pics/'+value[i].filename;img.width=value[i].width*0.9;img.height=value[i].height*0.9;img.style.padding='2px';if(value[i].hidden){img.className='hidden';}else{if(!value[i].overview){img.className='overview';}}
li.appendChild(img);li.appendChild(document.createElement('br'));var overview=new Ed_Bool_Editor();li.appendChild(overview.getDom());li.appendChild(document.createTextNode('mit Route anzeigen '))
overview.setValue(value[i].overview);overview.onchange=this._get_overview_func(overview,i);var a=document.createElement('a');a.href='#';a.onclick=this._get_delete_func(i);a.appendChild(document.createTextNode((value[i].hidden?' wiederherstellen':' löschen')));li.appendChild(a);this.list.appendChild(li);}};Ed_Picture_List_Editor.prototype._delete_row=function(row){if(this.user.isAdmin()){this.value[row].hidden=1-this.value[row].hidden;this.setValue(this.value);}else{var valnew=[];for(var i=0;i<this.value.length;i++){if(i!=row){valnew[valnew.length]=this.value[i];}}
this.setValue(valnew);}
this.onchange();return false;};Ed_Picture_List_Editor.prototype._set_overview=function(row,overview){this.value[row].overview=overview;this.setValue(this.value);this.onchange();return false;};Ed_Picture_List_Editor.prototype.getValue=function(){return this.value;};Ed_Picture_List_Editor.prototype.disable=function(disable){if(this.form){this.form.doit.disabled=(disable);}};Ed_Picture_List_Editor.prototype._get_delete_func=function(row){var _this=this;return function(){return _this._delete_row(row);};};Ed_Picture_List_Editor.prototype._get_overview_func=function(control,row){var _this=this;return function(){return _this._set_overview(row,control.getValue());};};function Ed_Wege_List_Editor(ctr){var _this=this;this.ctr=ctr;this.user=ctr.user;this.dom=document.createElement('div');this.add_weg=new Ed_Add_Weg_Control(ctr.map,ctr.transport);this.dom.appendChild(this.add_weg.getDom());this.add_weg.onaddweg=function(weg){_this.doadd_weg(weg);}
this.table=document.createElement('table');this.tbody=document.createElement('tbody');this.table.appendChild(this.tbody);this.dom.appendChild(this.table);this.value=[];this.onchange=function(){};};Ed_Wege_List_Editor.prototype=new Ed_Base();Ed_Wege_List_Editor.prototype.doadd_weg=function(weg){if(this.value[weg.id]){alert('Dieser Weg ist schon ausgewählt!');return;}
var obj=this.ctr.oe.obj;weg.messages[obj.id]=obj;this.ctr.msg_data.add_overlay_weg(weg);this.value[weg.id]=weg;this.setValue(this.value);this.onchange();};Ed_Wege_List_Editor.prototype.setValue=function(value){var _this=this;this.value=value;var tbody=document.createElement('tbody');this.table.replaceChild(tbody,this.tbody);this.tbody=tbody;for(var weg_id in value){var weg=value[weg_id];var tr=document.createElement('tr');tr.onmouseover=function(weg,tr){return function(){_this.highlight_weg(weg,tr,true)};}(weg,tr);tr.onmouseout=function(weg,tr){return function(){_this.highlight_weg(weg,tr,false)};}(weg,tr);var td1=document.createElement('td');td1.onclick=function(weg){return function(){weg.onclick();};}(weg);var td2=document.createElement('td');td1.style.borderTop='1px solid #888888';td2.style.borderTop='1px solid #888888';this.append_weg_dom(weg,td1);var a=document.createElement('a');a.href='#';a.onclick=this._get_delete_func(weg_id);a.title='Weg entfernen';a.appendChild(document.createTextNode('[X]'));td2.appendChild(a);tr.appendChild(td1);tr.appendChild(td2);this.tbody.appendChild(tr);}};Ed_Wege_List_Editor.prototype.highlight_weg=function(weg,tr,show){for(var i=0;i<weg.polylines.length;i++){var p=weg.polylines[i];if(show){tr.style.backgroundColor='#ff6633';p.setStrokeStyle({color:'#aa0000',weight:6,opacity:1});}else{tr.style.backgroundColor='transparent';p.setStrokeStyle({color:'#ff6633',weight:2,opacity:0.9});}}};Ed_Wege_List_Editor.prototype.append_weg_dom=function(weg,dom){dom.innerHTML='Weg '+weg.id+' ('+weg.from_nr+' - '+weg.to_nr+') Owner '+weg.from_owner+' '+weg.to_owner+' ';};Ed_Wege_List_Editor.prototype._delete_row=function(row){var weg=this.value[row];if(weg.has_messages()){weg.getMarker().hide();}
for(var i=0;i<weg.polylines.length;i++){weg.polylines[i].hide();}
delete(this.value[row]);this.setValue(this.value);this.onchange();return false;};Ed_Wege_List_Editor.prototype.getValue=function(){return this.value;};Ed_Wege_List_Editor.prototype.remove=function(){this.add_weg.remove();};Ed_Wege_List_Editor.prototype._get_delete_func=function(row){var _this=this;return function(){return _this._delete_row(row);};};function Ed_Kategorie_Viewer(){this.dom=document.createTextNode('');this.value=null;};Ed_Kategorie_Viewer.prototype=new Ed_Base();Ed_Kategorie_Viewer.prototype.setValue=function(val){if(val==null||val==undefined)this.dom.data='';if(je.wis.data.cats[val]==undefined){if(debug)google.maps.Log.write('Error: val '+val+' '+je.wis.data.cats.toSource());}
this.dom.data=(je.wis.data.cats[val].text);this.value=val;};Ed_Kategorie_Viewer.prototype.getValue=function(){return this.value;};function Ed_Kategorie_Editor(){this.dom=document.createElement('select');this.dom.options[0]=new Option('-- Auswählen --','select');for(var katid in je.wis.data.cats){this.dom.options[this.dom.options.length]=new Option(je.wis.data.cats[katid].text,je.wis.data.cats[katid].id);}
var _this=this;this.dom.onchange=function(){_this.onchange();};};Ed_Kategorie_Editor.prototype=new Ed_Base();Ed_Kategorie_Editor.prototype.setValue=function(val){if(val==null||val==undefined||val==0){this.dom.selectedIndex=0;return;}
this.dom.value=val;};Ed_Kategorie_Editor.prototype.getValue=function(){if(this.dom.selectedIndex>0)return parseInt(this.dom.value);return null;};function Ed_Dateneingabe_Viewer(){this.dom=document.createTextNode('');this.value=null;};Ed_Dateneingabe_Viewer.prototype=new Ed_Base();Ed_Dateneingabe_Viewer.prototype.setValue=function(val){if(val==null||val==undefined||val==0){this.dom.data='';return;}
this.dom.data=(je.wis.data.personen[val].text);this.value=val;};Ed_Dateneingabe_Viewer.prototype.getValue=function(){return this.value;};function Ed_Dateneingabe_Editor(){this.dom=document.createElement('select');this.dom.options[0]=new Option('-- Auswählen --','select');for(var katid in je.wis.data.personen){this.dom.options[this.dom.options.length]=new Option(je.wis.data.personen[katid].text,je.wis.data.personen[katid].code_id);}
var _this=this;this.dom.onchange=function(){_this.onchange();};};Ed_Dateneingabe_Editor.prototype=new Ed_Base();Ed_Dateneingabe_Editor.prototype.setValue=function(val){if(val==null||val==undefined||val==0){this.dom.selectedIndex=0;return;}
this.dom.value=val;};Ed_Dateneingabe_Editor.prototype.getValue=function(){if(this.dom.selectedIndex>0)return parseInt(this.dom.value);return null;};function Obj_Editor(div,obj,fsetup,user){this.div=div;this.user=user;this.obj=this._copy(obj);this.fsetup=fsetup;this.controls={};this.edit=false;this.action=null;this.dom=this.generateDom('view');this.setValue(this.obj);this.div.appendChild(this.dom);this.dirty=false;this.onsave=function(obj){};this.onchange=function(obj){};};Obj_Editor.prototype.setObject=function(obj){this.obj=this._copy(obj);this.setValue(this.obj);if(this.action!=null){this.displayAction(this.action);}};Obj_Editor.prototype.getObject=function(){return this.obj;};Obj_Editor.prototype._copy=function(obj){var erg={};for(var i in obj){erg[i]=obj[i];}
return erg;};Obj_Editor.prototype.disable=function(disable){for(var fname in this.controls){this.controls[fname].disable(disable);}};Obj_Editor.prototype.displayAction=function(action){if(!this.isValid()){alert('Bitte Fehler beheben!');return false;}
this.getValue();if(!this.fsetup.may_action(action,null,this.obj,this.user)){alert(action+' not allowed!');return false;}
var domnew=this.generateDom(action);this.setValue(this.obj);this.div.replaceChild(domnew,this.dom);this.dom=domnew;return true;};Obj_Editor.prototype.removeControls=function(){for(var cid in this.controls){this.controls[cid].remove();delete this.controls[cid];}
this.controls={};}
Obj_Editor.prototype.startEdit=function(){if(!this.fsetup.may_edit(null,this.obj,this.user))return false;var domnew=this.generateDom('edit');this.setValue(this.obj);this.div.replaceChild(domnew,this.dom);this.dom=domnew;};Obj_Editor.prototype.generateDom=function(action){this.action=action;var _this=this;var fsetup=this.fsetup;this.removeControls();var form=document.createElement('form');form.setAttribute("action","");form.onsubmit=function(){_this.submit();return false;};var table=document.createElement('table');table.style.width='100%';form.appendChild(table);var mode=this.fsetup.pages[action].mode;var groups=this.fsetup.pages[action].groups;for(var g=0;g<groups.length;g++){var tbody=document.createElement('tbody');var group=this.fsetup.groups[groups[g]];var haselements=false;if(group.header){var tr=document.createElement('tr');var td=document.createElement('td');td.colSpan="2";td.innerHTML='<hr/><b>'+group.bez+'</b>';tr.appendChild(td);tbody.appendChild(tr);}
for(var f=0;f<group.fields.length;f++){var fname=group.fields[f];var action_allow=this.fsetup.get_allow_action(mode,fname,this.obj,this.user);if(action_allow=='')continue;if(action_allow=='view'&&!this.obj[fname]){continue;}
var field=fsetup.fields[fname];var tr=document.createElement('tr');var td2=document.createElement('td');if(field.skip_test&&field.skip_test(this.obj))continue;if(field.colsp2){td2.colSpan="2";}else{var td1=document.createElement('td');td1.style.width='80px';td1.appendChild(document.createTextNode(field.fldlabel));tr.appendChild(td1);}
var cname=(field.fname?field.fname:fname);this.controls[cname]=this.fsetup.get_control_action(action_allow,fname);if(field.setobj){this.controls[cname].setObj(this.obj);}
try{this.controls[cname].onchange=function(){_this.dirty=true;_this.onchange(_this.obj);};if(field.events){for(var event_name in field.events){var map_name=field.events[event_name];this.controls[cname][event_name]=function(map_name){return function(){var arg=[_this.obj];for(var i=0;i<arguments.length;i++){arg[i+1]=arguments[i];}
_this[map_name].apply(_this,arg);}}(map_name);}}}catch(e){}
td2.appendChild(this.controls[cname].getDom());tr.appendChild(td2);tbody.appendChild(tr);haselements=true;}
if(haselements){table.appendChild(tbody);}}
return form;};Obj_Editor.prototype.setValue=function(obj){for(var fname in this.controls){this.controls[fname].setValue(obj[fname]);}
this.obj=obj;};Obj_Editor.prototype.getValue=function(){for(var fname in this.controls){this.obj[fname]=this.controls[fname].getValue();}
return this.obj;};Obj_Editor.prototype.isValid=function(){for(var fname in this.controls){if(!this.controls[fname].isValid()){this.controls[fname].setFocus();return false;}}
return true;}
Obj_Editor.prototype.submit=function(){if(!this.isValid()){alert("Formular kann nicht gespeichert werden, bitte Fehler beheben.");return false;}
this.getValue();this.onsave(this.obj);this.dirty=false;};function Obj_Editor_Status(div,mayedit){var _this=this;this.onsave=function(){};this.oncancel=function(){};this.div=div;if(mayedit){this.input_save=document.createElement('input');this.input_save.type="submit";this.input_save.value="Speichern";this.input_save.disabled=true;this.input_save.style.width='auto';this.input_save.onclick=function(){_this.onsave();};this.div.appendChild(this.input_save);this.input_cancel=document.createElement('input');this.input_cancel.type="submit";this.input_cancel.value="Abbrechen";this.input_cancel.onclick=function(){_this.oncancel();};this.input_cancel.style.width='auto';this.div.appendChild(this.input_cancel);}
this.tn_msg=document.createTextNode("");this.div.appendChild(this.tn_msg);};Obj_Editor_Status.prototype.setDirty=function(dirty){if(debug)google.maps.Log.write('setDirty: disabled='+(!dirty));this.input_save.disabled=(!dirty);};Obj_Editor_Status.prototype.setMsg=function(msg){this.tn_msg.data=msg;};Obj_Editor_Status.prototype.disable=function(disable){if(this.input_save)this.input_save.disabled=disable;if(this.input_cancel)this.input_cancel.disabled=disable;};function Obj_Editor_Control(div,obj,fsetup,user,title){var _this=this;this.onsave=function(obj){};this.oncancel=function(obj){};this.disabled=false;this.div=div;this.user=user;this.div_menu=document.createElement('div');this.div_menu.className='cms_menu';this.div_title=document.createElement('div');this.div_data=document.createElement('div');this.div_data.className='oe_controller_data';this.div_status=document.createElement('div');this.div.appendChild(this.div_menu);this.div.appendChild(this.div_title);this.div.appendChild(this.div_data);this.div.appendChild(this.div_status);this.menu=new Menuform(this.div_menu);this.menu._init=function(user){this._remove_all();for(var page in fsetup.pages){var p=fsetup.pages[page];if(fsetup.may_view('page_'+page,obj,user)){this._add_menu(page,p.fldlabel);}}};this.menu.user_changed(user);this.menu.select_page('view');this.menu.onselect=function(page){_this.setPage(page);};this.div_title.appendChild(document.createTextNode(title));this.editor=new Obj_Editor(this.div_data,obj,fsetup,user);this.editor.onsave=function(obj){_this.onsave(obj);};this.statuscontrol=new Obj_Editor_Status(this.div_status,fsetup.may_edit(null,obj,user));this.statuscontrol.onsave=function(){_this.save();};this.statuscontrol.oncancel=function(){_this.oncancel(_this.obj);};this.editor.onchange=function(obj){_this.statuscontrol.setDirty(true)};}
Obj_Editor_Control.prototype.save=function(){this.editor.submit();};Obj_Editor_Control.prototype.setPage=function(page){if(this.menu.getPage()==page)return;if(this.editor.displayAction(page)){this.menu.select_page(page);}};Obj_Editor_Control.prototype.setMsg=function(msg){this.statuscontrol.setMsg(msg);};Obj_Editor_Control.prototype.isDirty=function(){return this.editor.dirty;};Obj_Editor_Control.prototype.disable=function(disable){this.disabled=disable;this.editor.disable(disable);this.statuscontrol.disable(disable);};Obj_Editor_Control.prototype.setDirty=function(dirty){this.statuscontrol.setDirty((dirty==undefined?false:dirty));this.editor.dirty=(dirty==undefined?false:dirty);}
Obj_Editor_Control.prototype.setObject=function(obj,dirty){this.editor.setObject(obj);this.statuscontrol.setDirty((dirty==undefined?false:dirty));};Obj_Editor_Control.prototype.getObject=function(){return this.editor.getObject();};Obj_Editor_Control.prototype.remove=function(){this.editor.removeControls();while(this.div.hasChildNodes()){this.div.removeChild(this.div.firstChild);}};;function User(id,username,text,role,ort_ids,modules){this.id=id;this.text=text;this.username=username;this.role=role;this.ort_ids={};this.modules={};for(var i=0;i<ort_ids.length;i++){this.ort_ids[ort_ids[i]]=true;}
for(i=0;i<modules.length;i++){this.modules[modules[i]]=true;}};User.prototype.isAdmin=function(){return this.role=='admin';};User.prototype.get_ort_id=function(){var ort_id=1;for(ort_id in this.ort_ids){return ort_id;}
return ort_id;};function Menuform(div){this.liar={};this.div=div;this.list=document.createElement('ul');this.page=null;this.div.appendChild(this.list);this.onselect=function(page){};this.deselect=function(){};};Menuform.prototype._init=function(user){this.page=null;this._remove_all();if(user==null)return;if(user.modules['pois']||user.role=='spho'||user.role=='admin'){this._add_menu('pois','POIs','Pois bearbeiten');}
if(user.modules['wegw']||user.role=='spho'||user.role=='admin'){this._add_menu('wegw','Wegw.','Wegweiser bearbeiten');}
if(user.modules['msg']||user.role=='admin'){this._add_menu('msg','Sperr.','Wegsperrungen/Warnhinweise');}
if(user.modules['tour']||user.role=='admin'){this._add_menu('tour','Touren','Touren der Basic-Ebene');}};Menuform.prototype._remove_all=function(){while(this.list.hasChildNodes()){this.list.removeChild(this.list.firstChild);}
this.liar={};};Menuform.prototype._add_menu=function(page,alias,title){var li=document.createElement('li');var _this=this;if(!alias)alias=page
li.innerHTML=alias;if(title)li.title=title;li.style.textDecoration='underline';li.style.cursor='pointer';li.onclick=function(){_this._choose(page);}
this.liar[page]=li;this.list.appendChild(li);};Menuform.prototype._choose=function(page){if(page!=this.page){this.onselect(page);}};Menuform.prototype.select_page=function(page){this.deselect();var li=this.liar[page];li.style.fontWeight='bold';li.className='selected';this.deselect=function(){li.style.fontWeight='normal';li.className='';}
this.page=page;};Menuform.prototype.getPage=function(){return this.page;};Menuform.prototype.user_changed=function(user){this._init(user);};function Loginform(div){var _this=this;this.onlogin=function(user,pass){};this.onlogout=function(){};this.user=null;this.errortext='';this.div=div;this.div_form=document.createElement('div');this.div_status=document.createElement('div');this.div_form.style.display='block';this.div_status.style.display='none';this.div_status.style.borderTop='1px solid #000000';this.div_status.style.marginTop='20px';var h2=document.createElement('h2');h2.innerHTML='Anmeldung';this.div_form.appendChild(h2);this.form=document.createElement('form');this.form.setAttribute("action","");this.form.onsubmit=function(){_this._onsubmit();return false;}
this.form.innerHTML='<fieldset id="fieldset_login"><table><tr><td>'
+'<label for="login_user">User</label></td><td>'
+'<input type="text" id="login_user"/></td></tr>'
+'<tr><td><label for="login_pass">Passwort</label></td>'
+'<td><input type="password" id="login_pass"/></td></tr>'
+'<tr><td></td><td><input name="submit" type="submit" value="Anmelden"/></td></tr></table>'
+'<div id="login_error">'+this.errortext+'</div></fieldset>';this.div_status.innerHTML='Angemeldet als '+
this.div_form.appendChild(this.form);this.div.appendChild(this.div_status);this.div.appendChild(this.div_form);};Loginform.prototype.login=function(user){var _this=this;this.user=user;this.form.login_user.blur();this.form.login_pass.blur();this.div_form.style.display='none';this.div_status.style.display='block';this.div_status.innerHTML='User: '+user.username+' <a href="#" id="login_link_abmelden">abmelden</a>';document.getElementById('login_link_abmelden').onclick=function(){_this.onlogout();return false;}};Loginform.prototype.disable=function(disable){this.form.submit.disabled=disable;};Loginform.prototype.logout=function(reason){this.user=null;this.div_form.style.display='block';this.div_status.style.display='none';if(reason)this._add_error(reason);};Loginform.prototype._add_error=function(text){this.errortext+=text;var div=document.getElementById('login_error');if(div){div.innerHTML=this.errortext;}};Loginform.prototype._onsubmit=function(){this.errortext='';var user=this.form.login_user.value;var pass=this.form.login_pass.value;this.onlogin(user,pass);this.form.login_pass.value='';};Loginform.prototype.loginfailed=function(reason){this._add_error(reason);};function Server_Transport(ctr){this.active_nr=0;this.active_max=4;this.ctr=ctr;this.sid=false;this.url='php/server_cms.php';this.wait_nr=0;this.user=undefined;this.ontimeout=function(){};};Server_Transport.prototype.indicate_wait=function(wait){this.wait_nr+=(wait?1:-1);document.getElementsByTagName("BODY")[0].style.cursor=(this.wait_nr>0?'wait':'auto');};Server_Transport.prototype.get_input=function(form,fname){if(form.elements[fname])return form.elements[fname];var input=document.createElement('input');input.type="hidden";input.name=fname;form.appendChild(input);return input;};Server_Transport.prototype.send_form_aim_request=function(form,action,parobj,onload){form.action=this.url;var _this=this;var field=null;field=this.get_input(form,'do');field.value=action;for(var key in parobj){field=this.get_input(form,key);field.value=parobj[key];}
if(this.sid){field=this.get_input(form,'PHPSESSID');field.value=this.sid;}
return AIM.submit(form,{onComplete:function(result){_this.onloadaim(result,onload)}});};Server_Transport.prototype.send_request=function(action,parobj,onload){if(this.active_nr>=this.active_max){alert('Fehler: Es sind gerade '+this.active_nr+' Datentransfers aktiv! Vorgang abgebrochen!');onload(false,null);return false;}
this.active_nr++;var _this=this;var argar=[];argar[argar.length]='do='+encodeURIComponent(action);for(var key in parobj){argar[argar.length]=key+"="+encodeURIComponent(parobj[key]);}
if(this.sid){argar[argar.length]='PHPSESSID='+this.sid;}
this.indicate_wait(true);google.maps.DownloadUrl(this.url,function(content,code){_this.onload(content,code,onload);},argar.join('&'));};Server_Transport.prototype.download_request=function(action,parobj,add_args){var argar=[];argar[argar.length]='do='+encodeURIComponent(action);for(var key in parobj){argar[argar.length]=key+"="+encodeURIComponent(parobj[key]);}
if(this.sid){argar[argar.length]='PHPSESSID='+this.sid;}
this.download_iframe(this.url+'?'+argar.join('&')+(add_args?'&'+add_args:''));};Server_Transport.prototype.download_iframe=function(url){var _this=this;var iframe=document.createElement('iframe');iframe.src=url;iframe.style.display='none';document.body.appendChild(iframe);};Server_Transport.prototype.download_iframe_result=function(iframe){document.body.removeChild(iframe);};Server_Transport.prototype.onload=function(content,code,onload){this.active_nr--;this.indicate_wait(false);if(debug)google.maps.Log.write('onload '+content);if(code<0){onload(false,null);}else{this.onloadaim(content,onload);}};Server_Transport.prototype.onloadaim=function(content,onload){this.indicate_wait(false);if(debug)google.maps.Log.write('onload '+content);var result=null;try{eval(content);}
catch(e){if(debug){alert('Exception '+e.toSource());google.maps.Log.write(content);}
result={sid:this.sid,success:false,msg:'FEHLER! '+e.message,debug:content,obj:null};}
if(debug&&document.getElementById('div_log'))document.getElementById('div_log').innerHTML+=result.debug+"<hr>";if(result==null){result={sid:this.sid,success:false,msg:'FEHLER! result is null',debug:content,obj:null};}
if(result.sid){this.sid=result.sid;}
if(onload){onload(true,result);}
if(this.user&&result.sid&&this.user.id!=result.uid){this.ontimeout();}};function Cms_controller(div,map){var _this=this;this.loggedin=false;this.issaving=false;this.oe=null;this.sid=null;this.user=null;this.page=null;this.map=map;this.div=div;this.menudiv=document.createElement('div');this.menudiv.id='ebenen_control';this.logindiv=document.createElement('div');this.contentdiv=document.createElement('div');this.div.appendChild(this.menudiv);this.div.appendChild(this.contentdiv);this.div.appendChild(this.logindiv);this.loginform=new Loginform(this.logindiv);this.loginform.disable(true);this.loginform.onlogin=function(user,pass){_this.login(user,pass);}
this.loginform.onlogout=function(){_this.logout();}
this.menuform=new Menuform(this.menudiv);this.menuform.onselect=function(page){_this.choosePage(page);}
this.search_transport=new Server_Transport();this.search_transport.url='php/server_search.php';this.mapMan=new je.wis.MapManager(map,document.getElementById('downbar'),document.getElementById('poi_control'),this.search_transport,true,true,function(mapMan){_this.finish_init(mapMan);});this.transport=this.mapMan.transport_cms;this.transport.ontimeout=function(){alert('<b>Sie wurden wegen Zeitüberschreitung vom System abgemeldet</b>');};Poi.prototype.onclick=function(){_this.startedit_poi(this.id);};};Cms_controller.prototype.get_date_str=function(){var dat=new Date();var min=dat.getMinutes();if(min<10)min='0'+min;var hour=dat.getHours();if(hour<10)hour='0'+hour;var sec=dat.getSeconds();if(sec<10)sec='0'+sec;return(dat.getFullYear())+'-'+(dat.getMonth()+1)+'-'+dat.getDate()+' '+hour+':'+min+':'+sec;};Cms_controller.prototype.finish_init=function(mapMan){this.loginform.disable(false);this.poi_control=mapMan.poi_control;};Cms_controller.prototype.startedit_poi=function(id){if(this.menuform.page=='pois'){this.page.startedit(id);}else{var poi=this.mapMan.poiMan.get_poi(id);poi.open_infowindow(this.map);}};Cms_controller.prototype.get_poiskat=function(){return je.wis.data.cats;};Cms_controller.prototype.get_map=function(){return this.map;};Cms_controller.prototype.show_form=function(form){while(this.div.hasChildNodes()){this.div.removeChild(div.firstChild);}
this.div.appendChild(form);};Cms_controller.prototype.login=function(user,pass){var _this=this;this.transport.send_request('login',{user:user,pass:pass},function(suc,obj){_this.login_result(suc,obj);});};Cms_controller.prototype.login_result=function(success,obj){if(success&&obj.success){this.user=obj.obj;this.loginform.login(this.user);this.menuform.user_changed(this.user);this.transport.user=this.user;this.choosePage('pois');}else{this.loginform.loginfailed('<span class="login_err">Login not successful!</span>');}};Cms_controller.prototype.logout=function(message){this.get_map().closeInfoWindow();this.transport.user=undefined;this.transport.send_request('logout',{},null);this.loginform.logout(message?message:'Sie haben Sich abgemeldet');this.menuform.user_changed(null);this.user=null;if(this.page)this.page.remove();this.page=null;};Cms_controller.prototype.choosePage=function(text){var _this=this;switch(text){case'pois':if(this.page)this.page.remove();this.page=null;delete this.page;this.page=new Poi_controller(this);this.menuform.select_page(text);break;case'msg':if(this.page)this.page.remove();delete this.page;this.page=new Msg_controller(this);this.menuform.select_page(text);break;case'tour':if(this.page)this.page.remove();delete this.page;this.page=new Tour_controller(this);this.menuform.select_page(text);break;case'wegw':if(this.page)this.page.remove();delete this.page;this.page=new Wegw_controller(this);this.menuform.select_page(text);break;default:return false;}
return true;};function Obj_Setup_Base(){this.objdefs={};this.groups={};this.pages={};this.fields={};};Obj_Setup_Base.prototype.get_control_action=function(action,field){switch(action){case'edit':return this.fields[field].geteditor();case'view':return this.fields[field].getviewer();}};Obj_Setup_Base.prototype.get_allow_action=function(action,field,obj,user){if(action=='edit'){if(this.may_edit(field,obj,user))return'edit';}
return(this.may_view(field,obj,user)?'view':'');};Obj_Setup_Base.prototype.may_action=function(action,field,obj,user){if(action=='edit'&&obj.POI_Kategorie&&(!je.wis.data.cats[obj.POI_Kategorie].cms))return false;var checkar=this.objdefs;if(user!=null){if(user.role=='admin')return true;}
if(field!=null){if(this.fields[field]==undefined)return false;checkar=this.fields[field];}
if(user==null){return checkar[action]=='all';}
switch(checkar[action]){case'all':return true;case'user':return(user.id==obj.get_owner_id()||user.role=='spho'||user.role=='admin');case'ort':return(user.ort_ids[obj.get_ort_id()]||user.role=='spho'||user.role=='admin');case'spho':return user.role=='spho'||user.role=='admin';case'admin':return user.role=='admin';}
return false;};Obj_Setup_Base.prototype.may_view=function(field,obj,user){return this.may_action('view',field,obj,user);};Obj_Setup_Base.prototype.may_edit=function(field,obj,user){return this.may_action('edit',field,obj,user);};Obj_Setup_Base.prototype.getStringViewer=function(){return new Ed_String_Viewer();};Obj_Setup_Base.prototype.getStringEditor=function(){return new Ed_String_Editor();};;function Message(id,cat_id,titel,text,ts_start,ts_end,ts_start_str,ts_end_str,disp_start_str,disp_end_str,owner_id,creadate,modifier,date_mod){this.id=id;this.cat_id=cat_id;this.titel=titel;this.text=text;this.ts_start=ts_start;this.ts_end=ts_end;this.ts_start_str=ts_start_str;this.ts_end_str=ts_end_str;this.disp_start_str=disp_start_str;this.disp_end_str=disp_end_str;this.owner_id=owner_id;this.creadate=creadate;this.modifier=modifier;this.date_mod=date_mod;this.cat=null;this.wege={};};Message.prototype.get_owner_id=function(){return this.owner_id;};Message.prototype.getInfoDom=function(){var dom=document.createElement('div');dom.innerHTML='<h3><img src="'+this.cat.icon+'" align="texttop"/> '+this.cat.name+'</h3><p>'+this.ts_start_str+'-'+this.ts_end_str+'<br/>'+this.text+'</p>';return dom;};Message.Cat=function(id,name,icon,width,height,gesperrt){this.id=id;this.name=name;this.icon=icon;this.width=width;this.height=height;this.gesperrt=gesperrt;this.gicon=null;};Message.Cat.prototype.getIcon=function(){if(this.gicon)return this.gicon;this.gicon=new google.maps.Icon();this.gicon.image=this.icon;this.gicon.iconSize=new google.maps.Size(this.width,this.height);this.gicon.iconAnchor=new google.maps.Point(this.width/2,this.height/2);this.gicon.infoWindowAnchor=new google.maps.Point(this.width-2,2);return this.gicon;};Message.Weg=function(id,lat,lng,from_id,to_id,from_nr,to_nr,from_owner,to_owner){this.id=id;this.lat=lat;this.lng=lng;this.from_owner=from_owner;this.to_owner=to_owner;this.from_id=from_id;this.to_id=to_id;this.from_nr=from_nr;this.to_nr=to_nr;this.messages={};this.gmarker=null;this.polylines={};};Message.Weg.prototype.has_messages=function(){for(var i in this.messages){return true;}
return false;};Message.Weg.prototype.getInfoDom=function(){var dom=document.createElement('div');dom.style.width="480px";var h2=document.createElement('h2');h2.innerHTML='Aktuelle Hinweise für Weg '+this.id;dom.appendChild(h2);var ul=document.createElement('ul');for(var msg_id in this.messages){var msg=this.messages[msg_id];var li=document.createElement('li');li.appendChild(msg.getInfoDom());ul.appendChild(li);}
dom.appendChild(ul);return dom;};Message.Weg.prototype.onclick=function(){this.gmarker.openInfoWindow(this.getInfoDom());};Message.Weg.prototype.getMarker=function(){if(this.gmarker)return this.gmarker;var msg=null;var max_cat_id=0;for(var msg_id in this.messages){if(this.messages[msg_id].cat_id>max_cat_id){msg=this.messages[msg_id];max_cat_id=msg.cat_id;}}
var latlng=new google.maps.LatLng(this.lat,this.lng);var cat=msg.cat;var icon=cat.getIcon();this.gmarker=new google.maps.Marker(latlng,{icon:icon,title:cat.name});google.maps.Event.bind(this.gmarker,'click',this,this.onclick);this.gmarker.parent_obj=this;return this.gmarker;};Message.Manager=function(msgs){this.map=null;this.marker=[];this.polylines=[];this.msg={};this.cats={};this.wege={};if(msgs)this.set_data(msgs);return this;};Message.Manager.prototype.set_data=function(msgs){if(this.map)this.remove_overlay();this.msg=msgs.msg;this.wege=msgs.wege;this.cats=msgs.cats;for(var msg_id in msgs.msg_wege){var mw=msgs.msg_wege[msg_id];for(var j=0;j<mw.length;j++){var weg_id=mw[j];msgs.msg[msg_id].wege[weg_id]=msgs.wege[weg_id];msgs.wege[weg_id].messages[msg_id]=msgs.msg[msg_id];}}
for(var msg_id in msgs.msg){msgs.msg[msg_id].cat=msgs.cats[msgs.msg[msg_id].cat_id];}
if(msgs.polylines){for(var i=0;i<msgs.polylines.length;i++){var p=msgs.polylines[i];p.lines=[];for(var j=0;j<p.line_json.length;j++){p.lines.push(google.maps.Polyline.fromEncoded(p.line_json[j]));}
this.wege[p.vid].polylines=p.lines;}}
if(this.map)this.add_overlay(this.map);return this;};Message.Manager.prototype.add_overlay_weg=function(weg){if(this.map){if(weg.has_messages()){var m=weg.getMarker();this.marker.push(m);this.map.addOverlay(m);}
for(var i=0;i<weg.polylines.length;i++){var p=weg.polylines[i];this.polylines.push(p);this.map.addOverlay(p);}}};Message.Manager.prototype.add_overlay=function(map){this.map=map;for(var weg_id in this.wege){this.add_overlay_weg(this.wege[weg_id]);};return this;};Message.Manager.prototype.remove_overlay=function(){for(var i=0;i<this.marker.length;i++){this.map.removeOverlay(this.marker[i]);};for(var i=0;i<this.polylines.length;i++){this.map.removeOverlay(this.polylines[i]);};return this;};Msg_controller=function(cms_ctr){var _this=this;this.map=cms_ctr.get_map();this.cms_ctr=cms_ctr;this.user=cms_ctr.user;this.transport=cms_ctr.transport;this.msg_data=new Message.Manager();this.msg_data.map=this.map;this.div=document.createElement('div');this.div_oe=document.createElement('div');this.form=document.createElement('form');this.form.setAttribute("action","");this.form.style.position='relative';this.form.onsubmit=function(){_this._submit();return false;};this.form.innerHTML='    <h2>Auswahl Sperrung</h2>\
 <input name="msg_create" type="button" value="Neue" style="position: absolute; right:3px; top:3px; "/>\
   <table style="width: 100%;" border="0" cellpadding="0" cellspacing="0">\
      <tbody><tr><td class="formel" colspan="2"><select name="msg_select" style="width:98%"><option value="none">-- Auswählen --</option>\
      <option value="1">17.1.09-20.2.09 Sperrung Titel 1</option>\
      <option value="1">22.3.09-20.4.09 Warnhinweis Titel 2</option>\
      </select></td>\
   </tbody></table>';this.div.appendChild(this.form);this.div.appendChild(this.div_oe);this.msgsetup=new Msg_Setup(this);this.msg_select=new Ed_Select_Editor();cms_ctr.contentdiv.appendChild(this.div);this.form.msg_create.onclick=function(){_this.create();return false;}
var p=this.form.msg_select.parentNode;p.removeChild(this.form.msg_select);var dom=this.msg_select.getDom();dom.style.width='99%';p.appendChild(dom);this.get_msg_data();};Msg_controller.prototype.remove=function(){this.msg_data.remove_overlay();this.cms_ctr.contentdiv.removeChild(this.div);if(this.oe){this.oe.remove();}};Msg_controller.prototype.get_msg_data=function(){var _this=this;this.transport.send_request('getmessages',{all:1},function(suc,res){if(suc&&res.success){_this.msg_data.set_data(res.obj);_this.set_msg_select_data();}else{alert('Fehler: Message-Daten konnten nicht geladen werden!');}});};Msg_controller.prototype.get_msg_cat=function(){return this.msg_data.cats;};Msg_controller.prototype.set_msg_select_data=function(){var data=[['none','-- Auswählen --']];var _this=this;for(var msg_id in this.msg_data.msg){var msg=this.msg_data.msg[msg_id];data[data.length]=[msg_id,msg.ts_start_str+'-'+msg.ts_end_str+': '+msg.titel];}
this.msg_select.setDataFromAr(data);this.msg_select.onchange=function(){if(this.getValue()=='none'){_this.get_msg_data();}else{_this.startedit(this.getValue());}}};Msg_controller.prototype.startedit=function(id){if(this.oe!=null){if(this.oe.isDirty()){alert("es wird grade schon editiert!");return false;}else{this.oe.remove();this.oe=null;}}
if(this.issaving)return false;var _this=this;this.transport.send_request('getmessages',{id:id},function(suc,obj){_this.startedit_result(suc,obj);});};Msg_controller.prototype.startedit_result=function(suc,obj){if(!suc||!obj.success){alert(suc?"Msg konnte nicht geladen werden!\nFehlermeldung: "+obj.msg:'Fehler beim Laden!');return false;}
this.msg_data.set_data(obj.obj);for(var msg_id in obj.obj.msg){break;}
this.edit(obj.obj.msg[msg_id]);};Msg_controller.prototype.edit=function(obj){var _this=this;this.oe=new Obj_Editor_Control(this.div_oe,obj,this.msgsetup,this.user,'Message '+obj.id);this.div_oe.className='cms_infodiv';this.oe.onsave=function(obj){_this.startsave(obj);}
this.oe.oncancel=function(obj){if(_this.oe.isDirty()){if(confirm('Sollen die vorgenommenen Änderungen gespeichert werden?')){_this.oe.save();}
_this.oe.remove();_this.oe=null;}};};Msg_controller.prototype.get_date_str=function(){var dat=new Date();return dat.getFullYear()+'-'+(dat.getMonth()+1)+'-'+dat.getDate();};Msg_controller.prototype.create=function(){if(this.oe){if(this.oe.isDirty()){alert("es wird grade schon editiert!");return false;}
this.oe.remove();}
if(this.issaving)return false;var creadate=this.cms_ctr.get_date_str();var owner=this.user.id;var datenow=this.get_date_str();var obj=new Message(0,1,'Neue Nachricht','',0,0,datenow,datenow,datenow,datenow,owner,creadate,owner,creadate);this.edit(obj);this.oe.setPage('edit');};Msg_controller.prototype.startsave=function(obj){var _this=this;this.issaving=true;this.oe.disable(true);var parobj={};for(var i in obj){if((typeof obj[i])=='function')continue;switch(i){case'marker':break;case'wege':var wege=[]
for(var weg_id in obj.wege){wege[wege.length]=weg_id;}
parobj.wege=wege.join(',');break;default:parobj[i]=obj[i];}}
this.transport.send_request('savemessage',parobj,function(suc,obj){_this.startsave_result(suc,obj)});};Msg_controller.prototype.startsave_result=function(suc,obj){try{if(obj.obj&&obj.success){var msgs=obj.obj;if(this.oe!=null){this.oe.disable(false);this.msg_data.set_data(msgs);for(var msg_id in msgs.msg){break;}
this.oe.setObject(msgs.msg[msg_id],false);this.oe.setMsg(obj.msg);}}else{alert("Speichern fehlgeschlagen\nFehlermeldung: "+obj.msg);if(this.oe!=null){this.oe.disable(false);}}}catch(e){var tmp=[];for(var key in e){tmp[tmp.length]=key+": "+e[key]+"\n";}
alert("Fehler: "+tmp.join(''));}
this.issaving=false;if(!suc){alert("Speichern fehlgeschlagen!");return false;}
return true;};function Msg_Setup(ctr){var _this=this;this.objdefs={view:'all',edit:'all',del:'user',create:'user',wege:'all'};this.groups={general:{header:false,fields:['titel','text','cat_id']},time:{header:true,bez:'Zeiträume',fields:['ts_start_str','ts_end_str','disp_start_str','disp_end_str']},rights:{header:true,bez:'Rechte',fields:['owner_id','modifier','date_mod','creadate']},wege:{header:false,fields:['wege']}};this.pages={view:{mode:'view',fldlabel:'Anzeigen',groups:['general','time','rights']},edit:{mode:'edit',fldlabel:'Bearbeiten',groups:['general','time','rights']},wege:{mode:'edit',fldlabel:'Wege',groups:['wege']}};this.fields={page_view:{view:'all'},page_edit:{view:'all'},page_wege:{view:'all'},titel:{view:'all',edit:'user',fldlabel:'Titel',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},text:{view:'all',edit:'user',fldlabel:'Text',geteditor:function(){return new Ed_Text_Editor();},getviewer:function(){return new Ed_Text_Viewer();}},cat_id:{view:'all',edit:'all',fldlabel:'Kategorie',geteditor:function(){var control=new Ed_Select_Editor();control.setData(new Obj_Data_Adapter(ctr.get_msg_cat(),'id','name'));return control;},getviewer:function(){var control=new Ed_Select_Viewer();control.setData(new Obj_Data_Adapter(ctr.get_msg_cat(),'id','name'));return control;}},disp_start_str:{view:'admin',edit:'admin',fldlabel:'Anzeigen ab',getviewer:_this.getStringViewer,geteditor:function(){return new Ed_Datum_Editor();}},disp_end_str:{view:'admin',edit:'admin',fldlabel:'Anzeigen bis',getviewer:_this.getStringViewer,geteditor:function(){return new Ed_Datum_Editor();}},ts_start_str:{view:'all',edit:'user',fldlabel:'Aktiv ab',getviewer:_this.getStringViewer,geteditor:function(){return new Ed_Datum_Editor();}},ts_end_str:{view:'all',edit:'user',fldlabel:'Aktiv bis',getviewer:_this.getStringViewer,geteditor:function(){return new Ed_Datum_Editor();}},owner_id:{view:'user',edit:'spho',fldlabel:'Zugehörigkeit',geteditor:function(){return new Ed_Dateneingabe_Editor();},getviewer:function(){return new Ed_Dateneingabe_Viewer();}},creadate:{view:'user',edit:'admin',fldlabel:'Datum',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},modifier:{view:'user',edit:'admin',fldlabel:'Verändert von',geteditor:function(){return new Ed_Dateneingabe_Editor();},getviewer:function(){return new Ed_Dateneingabe_Viewer();}},date_mod:{view:'user',edit:'admin',fldlabel:'Änderungsdatum',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},wege:{colsp2:true,view:'all',edit:'user',fldlabel:'Wege',geteditor:function(){return new Ed_Wege_List_Editor(ctr);},getviewer:function(){return new Ed_Wege_List_Editor(ctr);}}};};Msg_Setup.prototype=new Obj_Setup_Base();;function MinMaxControl(){this.min=false;this.onminimize=function(){};this.onmaximize=function(){};this.isminimized=function(){return this.min;};this.dom=document.createElement('div');this.dom.style.width="20px";this.minsym=document.createElement('img');this.maxsym=document.createElement('img');this.minsym.src='media/up.gif';this.maxsym.src='media/down.gif';this.maxsym.style.display="none";this.minsym.style.cursor="pointer";this.minsym.title="Minimineren";this.maxsym.title="Maximieren";this.minsym.alt='/\\';this.maxsym.alt='\\/';this.maxsym.style.cursor="pointer";var _this=this;this.minsym.onclick=function(){_this.minimize();};this.maxsym.onclick=function(){_this.maximize();};this.dom.appendChild(this.minsym);this.dom.appendChild(this.maxsym);this.appendToDom=function(dom){dom.appendChild(this.dom);};this.minimize=function(){if(this.min)return;this.min=true;this.maxsym.style.display="";this.minsym.style.display="none";this.onminimize();};this.maximize=function(){if(!this.min)return;this.min=false;this.minsym.style.display="";this.maxsym.style.display="none";this.onmaximize();};this.hide=function(){this.dom.style.display='none';};this.getDom=function(){return this.dom;};};function OrtAuswahlControl(){this.contr1=new Ed_Select_Editor();this.contr2=new Ed_Select_Editor();this.orte={};this.ortsteile={};this.set_oid=false;this.set_tid=false;this.data=[];this.isstart=true;this.value=null;this.dom=document.createElement('div');this.dom.appendChild(this.contr1.getDom());this.dom.appendChild(document.createElement('br'));this.dom.appendChild(this.contr2.getDom());this.disable=function(disable){this.contr1.disable(disable);this.contr2.disable(disable)};this.getDom=function(){return this.dom;};this.onchange=function(){};this.setOrte=function(orte){this.orte=orte;};this.setOrtsteile=function(ortsteile){this.ortsteile=ortsteile;};this.getValue=function(){var val2=this.contr2.getValue();if(val2!='no')return val2;return this.contr1.getValue();};var _this=this;this.contr1.onchange=function(){var val=_this.value;var val1=_this.contr1.getValue();if(val1=='no'){_this.set_oid=false;_this.set_tid=false;}else{if(val1.charAt(0)=='o'){_this.set_oid=parseInt(val1.substr(1));_this.set_tid=false;}else{_this.set_oid=false;_this.set_tid=parseInt(val1.substr(1));}}
_this.setData(_this.data);if(_this.getValue()!=val){_this.onchange();}};this.contr2.onchange=function(){var val2=_this.contr2.getValue();var data=_this.data;if(val2!='no'){for(var i=0;i<data.length;i++){if(data[i].id==val2){_this.contr1.setValue('t'+data[i].tid);break;}}}
_this.onchange();};this.setData=function(data){var val1=this.contr1.getValue();this.data=data;var count=data.length;var oids={};var tids={};var tids_startpunkt={};var start_orte=[{id:'no',name:'Ort/Gemeinde auswählen',oid:null,tid:null,cn:'default'}];var start_punkte=[{id:'no',name:(this.isstart?'Startpunkt auswählen':'Zielpunkt auswählen'),oid:null,tid:null,cn:'default'}];for(var i=0;i<count;i++){var oid=data[i].oid;var tid=data[i].tid;var name=data[i].name;var id=data[i].id;oids[oid]=true;if(tids[tid]==undefined){tids[tid]=1;}else{tids[tid]++;}
tids_startpunkt[tid]=data[i].id;if(((!this.set_oid)||(this.set_oid==oid))&&((!this.set_tid)||(this.set_tid==tid))){start_punkte[start_punkte.length]=data[i];}}
var oid_old=0
for(var tid in this.ortsteile){if(tids[tid]){var oid=this.ortsteile[tid].ort_id;if(oid_old!=oid){start_orte[start_orte.length]={id:'o'+oid,name:'Gemeinde '+this.orte[oid].name};}
oid_old=oid;start_orte[start_orte.length]={id:'t'+tid,name:' - '+this.ortsteile[tid].name};}}
this.contr1.setData(new Obj_Data_Adapter(start_orte,'id','name','cn'));this.contr2.setData(new Obj_Data_Adapter(start_punkte,'id','name','cn'));if(this.set_tid&&tids[this.set_tid]==1){this.contr2.setValue(tids_startpunkt[this.set_tid]);}
if(val1!=this.contr1.getValue()&&val1!='no'){this.contr1.setValue('no');_this.set_oid=false;_this.set_tid=false;this.setData(data);}
this.value=this.getValue();};}
function MinMaxForm(title,hideminmax){this.dom=document.createElement('div');this.dom.style.position='relative';this.h2=document.createElement('h2');this.h2.appendChild(document.createTextNode(title));this.minmax=new MinMaxControl();var div2=document.createElement('div');div2.style.position="absolute";div2.style.right='1px';div2.style.top='3px';div2.style.width='20px';this.div=document.createElement('div');this.dom.appendChild(this.h2);this.minmax.appendToDom(div2);this.dom.appendChild(div2);this.dom.appendChild(this.div);var _this=this;this.minmax.onminimize=function(){_this.div.style.display="none";_this.onminimize();};this.minmax.onmaximize=function(){_this.div.style.display="";_this.onmaximize();};this.minimize=function(){this.minmax.minimize();};this.maximize=function(){this.minmax.maximize();};this.appendToDom=function(dom){dom.appendChild(this.dom);};this.appendChild=function(dom){this.div.appendChild(dom);};this.getDom=function(){return this.div;};this.setTitle=function(title){this.h2.removeChild(this.h2.firstChild);this.h2.appendChild(document.createTextNode(title));};this.onminimize=function(){};this.onmaximize=function(){};if(hideminmax){this.minmax.hide();}};function SearchForm(transport,data_all){function RowDomColSpan2(dom){this.tr=document.createElement('tr');var td1=document.createElement('td');td1.style.textAlign='center';td1.colSpan='2';td1.appendChild(dom);this.tr.appendChild(td1);this.append=function(tbody){tbody.appendChild(this.tr);return this;};};function RowDom(dom1,dom2){this.tr=document.createElement('tr');var td1=document.createElement('td');td1.appendChild(dom1);var td2=document.createElement('td');td2.appendChild(dom2);this.tr.appendChild(td1);this.tr.appendChild(td2);this.append=function(tbody){tbody.appendChild(this.tr);return this;};};function Row(titel,control){try{this.tr=document.createElement('tr');var td1=document.createElement('td');td1.className='titel';td1.innerHTML='<h3>'+titel+'</h3>';var td2=document.createElement('td');td2.className='formel';td2.appendChild(control.getDom());this.tr.appendChild(td1);this.tr.appendChild(td2);this.append=function(tbody){tbody.appendChild(this.tr);return this;};this.show=function(show){this.tr.style.display=(show?'':'none');}}catch(e){alert('Exception '+e);}};function StartSearchControl(){this.button=document.createElement('button');this.button.id="button_search";this.onsearch=function(){};var _this=this;this.button.onclick=function(){_this.onsearch();};this.disable=function(disable){try{this.button.disabled=disable;}catch(e){}};this.getDom=function(){return this.button;};};function ExtraControl(){var _this=this;this.showstat=true;this.div=document.createElement('div');this.div.appendChild(document.createTextNode('Optionen:'));this.div.style.position='absolute';this.div.style.right='1px';this.div.style.top='-23px';this.div.style.width='82px';this.div.style.color='white';this.mm=new MinMaxControl();this.mm.minimize();this.mm.appendToDom(this.div);var div2=this.mm.getDom();div2.style.position='absolute';div2.style.top='0px';div2.style.right='0px';this.mm.onmaximize=function(){_this.show(true);};this.mm.onminimize=function(){_this.show(false);};this.onshow=function(show){};this.show=function(show){if(this.showstat!=show){this.onshow(show);}
this.showstat=show;};this.getDom=function(){return this.div;};};this.enabled=true;this.transport=transport;this.data_all=false;this.onloaddata=function(){};this.onsearch=function(parobj){};this.data={art:[['0','Rundwanderung'],['1','Streckenwanderung']],ort_start:[],ort_ziel:[],laenge:[{id:'0',text:'keine Vorgabe',min:1,max:30},{id:'1',text:'bis 5km',min:1,max:5},{id:'2',text:'5-10km',min:5,max:10},{id:'3',text:'10-15km',min:10,max:15},{id:'4',text:'15-30km',min:15,max:30}],einkehr:[{id:'no',name:'keine Einkehr',poiid:null},{id:'all',name:'Einkehr anbieten',poiid:null}],wanderziel:[{id:'no',name:'keine Vorgabe',poiid:null},{id:'p30',name:' - Kahler Asten',poiid:30},{id:'p40',name:' - Bremberg',poiid:40}],thema:[{id:'no',name:'keine Vorgabe'},{id:'t1',name:'Panorama'},{id:'t2',name:'Sonnenweg'}],hoehenmeter:[['0','keine Vorgabe'],['1','Höhenmeter vermeiden'],['2','Bergwanderung']],untergrund:[['0','keine Vorgabe'],['1','naturbelassene Wege bevorzugen'],['2','Asphalt vermeiden'],['3','Asphalt bevorzugen'],['4','keine anspruchsvollen Strecken'],['5','kinderwagentauglich']]}
this.controls={art:new Ed_Select_Editor(),oepnv:new Ed_Bool_Editor_Label('Haltestelle bei Start/Ziel'),ort_start:new OrtAuswahlControl(),ort_ziel:new OrtAuswahlControl(),laenge:new Ed_Select_Editor(),wanderziel:new Ed_Select_Editor(),einkehr:new Ed_Select_Editor(),thema:new Ed_Select_Editor(),hoehenmeter:new Ed_Select_Editor(),untergrund:new Ed_Select_Editor()};this.controls.art.setDataFromAr(this.data.art);this.controls.ort_start.setData(this.data.ort_start);this.controls.ort_ziel.isstart=false;this.controls.ort_ziel.setData(this.data.ort_ziel);this.controls.laenge.setData(new Obj_Data_Adapter(this.data.laenge,'id','text'));this.controls.einkehr.setData(new Obj_Data_Adapter(this.data.einkehr,'id','name'));this.controls.wanderziel.setData(new Obj_Data_Adapter(this.data.wanderziel,'id','name'));this.controls.thema.setData(new Obj_Data_Adapter(this.data.thema,'id','name'));this.controls.hoehenmeter.setDataFromAr(this.data.hoehenmeter);this.controls.untergrund.setDataFromAr(this.data.untergrund);this.table=document.createElement('table');this.table.cellPadding='0';this.table.cellSpacing='0';var tbody1=document.createElement('tbody');var tbody2=document.createElement('tbody');var tbody3=document.createElement('tbody');var control_extra=new ExtraControl();var control_search=new StartSearchControl();this.rows={art:new Row('Art',this.controls.art),oepnv:new Row('ÖPNV',this.controls.oepnv),ort_start:new Row('Start',this.controls.ort_start),ort_ziel:new Row('Ziel',this.controls.ort_ziel),laenge:new Row('Länge',this.controls.laenge),wanderziel:new Row('Wanderziel',this.controls.wanderziel),einkehr:new Row('Einkehr',this.controls.einkehr),thema:new Row('Thema',this.controls.thema),hoehenmeter:new Row('Höhenmeter',this.controls.hoehenmeter),untergrund:new Row('Untergrund',this.controls.untergrund),controls:new RowDomColSpan2(control_search.getDom())};this.rows.art.append(tbody1);this.rows.oepnv.append(tbody1);this.rows.ort_start.append(tbody1);this.rows.laenge.append(tbody1);this.rows.ort_ziel.append(tbody1);this.rows.wanderziel.append(tbody2);this.rows.einkehr.append(tbody2);this.rows.thema.append(tbody2);this.rows.hoehenmeter.append(tbody2);this.rows.untergrund.append(tbody2);this.rows.controls.append(tbody3);this.table.appendChild(tbody1);this.table.appendChild(tbody2);this.table.appendChild(tbody3);var _this=this;this.show_extras=function(show){control_extra.show(show);};control_extra.onshow=function(show){tbody2.style.display=(show?'':'none');};control_search.onsearch=function(){_this.onsearch(_this.get_parobj());};this.controls.art.onchange=function(){var val=_this.controls.art.getValue();_this.rows.ort_ziel.show(val=='1');_this.update_data();};this.controls.oepnv.onchange=function(){_this.update_data();};this.controls.ort_start.onchange=function(){_this.update_data();};this.controls.ort_ziel.onchange=function(){_this.update_data();};this.controls.laenge.onchange=function(){_this.update_data();};this.rows.ort_ziel.show(false);this.show_extras(false);this.div=document.createElement('div');this.div.style.position='relative';this.div.appendChild(control_extra.getDom());this.div.appendChild(this.table);this.getDom=function(){return this.div;};if(data_all){this.set_data(data_all);}else{this.update_data();}};SearchForm.prototype.get_startortname=function(stid){for(var i=0;i<this.data_all.ort_start.length;i++){if(this.data_all.ort_start[i].id==stid){return this.data_all.ort_start[i].name;}}
return'';};SearchForm.prototype.get_themaname=function(tid){for(var i=0;i<this.data_all.thema.length;i++){if(this.data_all.thema[i].id=='t'+tid){return this.data_all.thema[i].name;}}
return'';};SearchForm.prototype.get_themenobj=function(){var erg={};for(var i=0;i<this.data_all.thema.length;i++){var t=this.data_all.thema[i];if(t.id==='no')continue;var tid=t.id.substr(1,t.id.length-1);erg[tid]=t.name;}
return erg;};SearchForm.prototype.disable=function(disable){for(var ckey in this.controls){var c=this.controls[ckey];c.disable(disable);}
this.enabled=!disable;};SearchForm.prototype.get_parobj=function(){var parobj={art:this.controls.art.getValue(),oepnv:this.controls.oepnv.getValue(),ort_start:this.controls.ort_start.getValue(),ort_ziel:this.controls.ort_ziel.getValue(),laenge_min:this.data.laenge[this.controls.laenge.getValue()].min,laenge_max:this.data.laenge[this.controls.laenge.getValue()].max,einkehr:this.controls.einkehr.getValue(),wanderziel:this.controls.wanderziel.getValue(),thema:this.controls.thema.getValue(),hm:this.controls.hoehenmeter.getValue(),untergrund:this.controls.untergrund.getValue()};if(!this.data_all){parobj.firsttime='1';}
return parobj;};SearchForm.prototype.show_all=function(parobj){return((parobj.art==0&&((parobj.ort_start=='no'||parobj.ort_start=='o1')&&(parobj.laenge_max>=10)))||(parobj.art==1&&(parobj.laenge_max>15)&&(((parobj.ort_start=='no'||parobj.ort_start=='o1')||(parobj.ort_ziel=='no'||parobj.ort_ziel=='o1'))&&(parobj.laenge_max>=10))))&&(this.data_all);};SearchForm.prototype.update_data=function(){if(!this.enabled){return false;}
this.disable(true);var _this=this;var parobj=this.get_parobj();if(this.show_all(parobj)){this.disable(false);this.set_data(this.data_all);}else{this.transport.send_request('searchform',parobj,function(suc,res){_this.update_data_onload(suc,res);});}};SearchForm.prototype.update_data_onload=function(suc,res){this.disable(false);if(suc&&res&&res.success){this.set_data(res.obj);this.onloaddata();}else{alert('error update_data_onload'+res.toSource());}};SearchForm.prototype.set_data=function(data){if(!this.data_all){this.data_all=data;this.controls.ort_start.setOrte(data.orte);this.controls.ort_start.setOrtsteile(data.ortsteile);this.controls.ort_ziel.setOrte(data.orte);this.controls.ort_ziel.setOrtsteile(data.ortsteile);}
if(data.ort_start){this.data.ort_start=data.ort_start;this.controls.ort_start.setData(this.data.ort_start);}if(data.ort_ziel){this.data.ort_ziel=data.ort_ziel;this.controls.ort_ziel.setData(this.data.ort_ziel);}
if(data.einkehr){this.data.einkehr=data.einkehr;this.controls.einkehr.setData(new Obj_Data_Adapter(this.data.einkehr,'id','name'));}
if(data.wanderziel){this.data.wanderziel=data.wanderziel;this.controls.wanderziel.setData(new Obj_Data_Adapter(this.data.wanderziel,'id','name'));}
if(data.thema){this.data.thema=data.thema;this.controls.thema.setData(new Obj_Data_Adapter(this.data.thema,'id','name'));}};function display_search_form(id,data_all){var div=document.getElementById(id);div.innerHTML='<h2>Wanderwünsche</h2>';var sf=new SearchForm(new Server_Transport(),data_all);div.appendChild(sf.getDom());return sf;};;(function(wi){function unload(){window.onresize=null;google.maps.Unload();};var akt_ebene=null;var google_online=true;var debug=false;var map;var cancelSingleClick=false;var clickhandle;var trackdata;var wait=false;var mapstate="view";var flist_tracks;var oldselect=null;var sf=null;var tlist=null;var search_transport=null;var ebenen_control=null;var themen_basic={1:'Panorama',2:'Kultur',3:'Natur',4:'Familien',5:'Profiweg',6:'Prädikats- und Premiumweg'};var themen_pro={};var mapMan=null;function ebene_template(nr){this.nr=nr;this.isinit=false;this.map=null;this.init_lat=null;this.init_lng=null;this.init_zoom=null;this.backgrounds=[];this.strecken=[];this.init=function(map){this.map=map;if(this.isinit)return;this.init_center=new google.maps.LatLng(this.init_lat,this.init_lng);};this.show=function(){this.go_home();this.init_filterlist();};this.hide=function(){};this.go_home=function(){if(this.init_center==null)return;mapMan.zoom_to_all();this.map.savePosition();};this.init_filterlist=function(){flist_tracks.set_model(new List_model(this.strecken));};}
function handleResize(){var wheight=je.util.windowHeight();if(wheight<=600){document.getElementById('sidebar_content_wrapper').style.height='344px';document.getElementById('map').style.height='600px';}else{document.getElementById('sidebar_content_wrapper').style.height=(wheight-256)+'px';document.getElementById('map').style.height='100%';}};function load(ebene){search_transport=new Server_Transport();search_transport.url='php/server_search.php';sf=display_search_form('sidebar_content2',searchform_start.obj);themen_pro=sf.get_themenobj();sf.onsearch=function(parobj){do_search(parobj);};if(google_online&&GBrowserIsCompatible()){map=init_map(51.367065001016385,8.581008911132812,12);je.wis.map=map;mapMan=new je.wis.MapManager(map,document.getElementById('downbar'),document.getElementById('poi_control'),search_transport,true);}else{window.location.href='jsneeded.php';return;}
ebenen_control=new EbenenControl(document.getElementById('ebenen_control'));ebenen_control.onchange=function(i){change_ebene(i);};je.wis.ebenen_control=ebenen_control;tlist=new MinMaxForm('Ihre Auswahl',true);tlist.appendToDom(document.getElementById('content_auswahl'));tlist.getDom().innerHTML='<div id="tourlist-wrapper"><ul id="tourlist"><li class="odd"></li></ul></div>';flist_tracks=new filterlist('flist_tracks',document.getElementById('tourlist'),new List_model([]),null,null);for(var i in trackdata_basic){ebene1.strecken[ebene1.strecken.length]=trackdata_basic[i];}
je.wis.data.trackdata_basic=trackdata_basic;ebene1.init(map);init_formfunctions();ebene2.init(map);ebene1.show();akt_ebene=ebene1;if(ebene==2){ebenen_control.goto_ebene(2);}};function get_stat_tab(trackdata){if(!trackdata||!trackdata.stats){return'Keine Textinfo vorhanden';}
var tmp=['<table><tr><th>Key</th><th>Value</th></tr>'];for(var key in trackdata.stats){tmp[tmp.length]='<tr><td>'+key+':</td><td>'+trackdata.stats[key]+'</td></tr>';}
tmp[tmp.length]='</table>';return tmp.join('');};function get_score_tab(trackdata){if(!trackdata||!trackdata.scores){return'Keine Scoreinfo vorhanden';}
var tmp=['<b>Score: '+(trackdata.score*100.0)+'</b><hr>'];tmp[tmp.length]=['<table><tr><th>Name</th><th>Value</th><th>Penalty</th><th>Comment</th></tr>'];for(var i=0;i<trackdata.scores.length;i++){var score=trackdata.scores[i];tmp[tmp.length]='<tr><td>'+score.name+'</td><td>'+score.value+'</td><td>'+score.score+'</td><td>'+score.comment+'</td></tr>';}
tmp[tmp.length]='</table>';return tmp.join('');};function show_pics_extra(){mapMan.show_pics_extra();};var ebene1=new ebene_template(1);ebene1.init_lat=51.195266789368134;ebene1.init_lng=8.537063598632812;ebene1.init_zoom=12;ebene1.genrow_func=function(id,s,aktrow){var laenge=s.laenge/1000;return'<li id="'+id+'" class="'+(aktrow%2?'odd':'even')+'"><div class="flist_left"><b>'+s.name+'</b><br/>'+'Start: '+s.startpunkt+'<br/>'+
(laenge.toFixed(1))+' km, '+'  '+s.tc+' hm '+'</div><div class="flist_right">'+'<div class="auswahl_list_zoom" onclick="je.wis.zoom_to_row1('+aktrow+')" title="Strecke zoomen"></div>'+'<div class="auswahl_list_info" onclick="je.wis.show_tab()" title="Informationen anzeigen"></div></div>'+'</li>';};function get_aktstrecke(){return mapMan.akt_strecke;};function show_tab(){mapMan.tabMan.show();};ebene1.init_filterlist=function(){tlist.setTitle('Ihre Auswahl');mapMan.themen=themen_basic;mapMan.akt_ebene_nr=1;flist_tracks.genrow_func=this.genrow_func;flist_tracks.nodata_text='Leider konnte mit Ihren Angaben keine Tour gefunden werden. Bitte verändern Sie einen oder mehrere Auswahlparameter.';flist_tracks.onclick=function(s){mapMan.displayTour(s);};flist_tracks.ondeselect=function(s){mapMan.tabMan.close();};flist_tracks.filter=flist_tracks.filter_all;flist_tracks.set_model(new List_model(this.strecken));flist_tracks.ondblclick=function(s){mapMan.zoom_to_track(s);mapMan.tabMan.show();};};ebene1.hide=function(){mapMan.cleanMap();};var ebene2=new ebene_template(2);ebene2.background_urls=[];ebene2.init_lat=51.195266789368134;ebene2.init_lng=8.537063598632812;ebene2.init_zoom=12;ebene2.hide=function(){mapMan.cleanMap();};ebene2.genrow_func=function(id,s,aktrow){var laenge=s.laenge/1000;var poi=mapMan.poiMan.get_poi(s.wziel);return'<li id="'+id+'" class="'+(aktrow%2?'odd':'even')+'"><div class="flist_left"><b>'+'Route '+(aktrow+1)+
(poi?': '+poi.POI_Name:'')+'</b><br/>'+'Start: '+sf.get_startortname('s'+s.start_id)+'<br/>'+
((s.start_id!=s.ziel_id)?('Ziel: '+sf.get_startortname('s'+s.ziel_id)+'<br/>'):'')+
(laenge.toFixed(1))+' km, '+'  '+s.tc+' hm '+'</div><div class="flist_right">'+'<div class="auswahl_list_zoom" onclick="je.wis.zoom_to_row2('+aktrow+')" title="Strecke zoomen"></div>'+'<div class="auswahl_list_info" onclick="je.wis.show_tab()" title="Informationen anzeigen"></div></div>'+'</li>';};ebene2.init_filterlist=function(){mapMan.themen=themen_pro;mapMan.akt_ebene_nr=2;tlist.setTitle('Wandervorschläge');flist_tracks.genrow_func=this.genrow_func;flist_tracks.nodata_text='';flist_tracks.ondblclick=function(s){mapMan.zoom_to_track(s);mapMan.tabMan.show();}
flist_tracks.onclick=function(s){mapMan.displayTour(s);};flist_tracks.ondeselect=function(s){mapMan.tabMan.close();};flist_tracks.filter=flist_tracks.filter_all;flist_tracks.set_model(new List_model([]));};function set_map_state(state){mapstate=state;document.getElementById("map").className=state;};function init_map(lat,lng,zoom){var map=new google.maps.Map2(document.getElementById("map"));var center=new google.maps.LatLng(lat,lng);map.setCenter(center,zoom);map.addControl(new google.maps.LargeMapControl3D());map.enableContinuousZoom();map.enableScrollWheelZoom();var keybh=new google.maps.KeyboardHandler(map);var boxStyleOpts={opacity:.2,border:"2px solid red"};var otherOpts={buttonHTML:"<img src='media/zoom_in.gif' />",buttonZoomingHTML:"<img src='media/zoom_in_sel.gif' />",buttonStartingStyle:{width:'21px',height:'22px'}};map.addControl(new DragZoomControl(boxStyleOpts,otherOpts),new google.maps.ControlPosition(G_ANCHOR_TOP_LEFT,new GSize(170,7)));map.addControl(new ZoomToAllControl(gohome),new google.maps.ControlPosition(G_ANCHOR_TOP_LEFT,new GSize(191,7)));map.addControl(new google.maps.ScaleControl());map.addMapType(G_PHYSICAL_MAP);map.setMapType(G_PHYSICAL_MAP);map.addControl(new google.maps.MapTypeControl());var overview=new google.maps.OverviewMapControl();overview.setMapType(G_NORMAL_MAP);map.addControl(overview);GEvent.addListener(map,"maptypechanged",function(){window.setTimeout(function(){overview.setMapType(G_NORMAL_MAP);});});if(debug){google.maps.Event.addListener(map,"moveend",function(){var center=map.getCenter();google.maps.Log.write("Position: Lat: "+center.lat()+" Lng: "+center.lng()+" zoom: "+map.getZoom());});}
return map};function download_kml(){return mapMan.download_kml();};function download_gpx(){return mapMan.download_gpx();};function download_ovl(){return mapMan.download_ovl();};function download_roadbook(nr){return mapMan.download_roadbook(nr);};function download_karte(nr){return mapMan.download_karte(nr);};function show_poi(pid){var poi=mapMan.poiMan.get_poi(pid);if(!poi)return;poi.onclick();};function show_warn(weg_id){var weg=warnings.wege[weg_id];if(!weg)return;weg.onclick();};var flength=get_filter_length(0,null);var foname=get_filter_ort(null);var fthema=get_filter_thema(null);var fzielgruppe=get_filter_zielgruppe(null);var filter_all=function(s){return flength(s)&&foname(s)&&fthema(s)&&fzielgruppe(s);}
function get_filter_ort(oid){var filter;if(oid==null||oid==''||oid=='all'){filter=function(s){return true;};}else{filter=function(s){return s.ort_id==oid;};}
return filter;};function get_filter_thema(thema){var filter;if(thema==null||thema==''||thema=='all'){filter=function(s){return true;};}else{filter=function(s){var t=s.themen;for(var i=0;i<t.length;i++){if(t[i]==thema)return true;}
return false;};}
return filter;};function get_filter_zielgruppe(zielgruppe){var filter;if(zielgruppe==null||zielgruppe==''||zielgruppe=='all'){filter=function(s){return true;};}else{filter=function(s){var z=s.zielgruppen;for(var i=0;i<z.length;i++){if(z[i]==zielgruppe)return true;}
return false;};}
return filter;};function get_filter_length(von,bis){var filter;if(bis==null){filter=function(s){return s.laenge>=von*1000;};}else{filter=function(s){return(s.laenge>=von*1000&&s.laenge<=bis*1000);};}
return filter;};function filter_update(){flist_tracks.set_filter(filter_all,false);};function init_formfunctions(){document.getElementById('filter_startpunkt').onchange=function(){foname=get_filter_ort(this.value);filter_update();};document.getElementById('filter_thema').onchange=function(){fthema=get_filter_thema(this.value);filter_update();};document.getElementById('filter_zielgruppe').onchange=function(){fzielgruppe=get_filter_zielgruppe(this.value);filter_update();};document.getElementById('filter_laenge').onchange=function(){switch(this.value){case'all':flength=get_filter_length(0,null);break;case'1':flength=get_filter_length(0,10);break;case'2':flength=get_filter_length(10,20);break;case'3':flength=get_filter_length(20,null);break;}
filter_update();};};function zoom_to_row1(row){var s=flist_tracks.get_obj(row);mapMan.zoom_to_track(s);};function zoom_to_row2(row){var s=trackdata[row];mapMan.zoom_to_track(s);};function gohome(){akt_ebene.go_home();};function change_ebene(i){if(akt_ebene.nr==i)return;if(i==2){je.util.addClass(document.getElementsByTagName("body")[0],"ebene2");akt_ebene=ebene2;ebene1.hide();ebene2.show();}else{je.util.removeClass(document.getElementsByTagName("body")[0],"ebene2");akt_ebene=ebene1;ebene2.hide();ebene1.show();}};function do_search(parobj){ebene2.hide();set_map_state('wait');sf.disable(true);je.util.addClass(document.getElementsByTagName('body')[0],'loading');search_transport.send_request('search',parobj,function(succ,res){flist_tracks.nodata_text='Leider konnte mit Ihren Angaben keine Tour gefunden werden. Bitte verändern Sie einen oder mehrere Auswahlparameter.';sf.disable(false);set_map_state('view');je.util.removeClass(document.getElementsByTagName('body')[0],'loading');if(succ&&res.success){var vids=[];trackdata=res.obj;flist_tracks.set_model(new List_model(trackdata));mapMan.preloadLines(trackdata);for(var i=0;i<trackdata.length;i++){var t=trackdata[i];t.startort_name=sf.get_startortname('s'+t.start_id);t.zielort_name=sf.get_startortname('s'+t.ziel_id);}}else{alert('Fehler bei der Datenübertragung!');}});};function EbenenControl(div){this.ebene=1;this.ul=document.createElement('ul');var this_=this;this.onchange=function(i){};var li=document.createElement('li');li.innerHTML='Basic';li.onclick=function(){this_.goto_ebene(1);};this.ul.appendChild(li);li=document.createElement('li');li.innerHTML='P r o';li.onclick=function(){this_.goto_ebene(2);};this.ul.appendChild(li);div.appendChild(this.ul);this.deselect=function(){};this.goto_ebene=function(i){this.deselect();var li=this.ul.childNodes[i-1];this.deselect=function(){li.className='';};li.className='selected';if(this.ebene!=i){this.ebene=i;this.onchange(i);}};this.goto_ebene(1);};function start_profile_marker(){mapMan.start_profile_marker();};function hide_profile_marker(){mapMan.hide_profile_marker();};var wis=je.util.getNs(wi.je,'wis');wis.ebenen_control=ebenen_control;wis.handleResize=handleResize;wis.start_profile_marker=start_profile_marker;wis.hide_profile_marker=hide_profile_marker;wis.load=load;wis.show_poi=show_poi;wis.map=map;wis.show_pics_extra=show_pics_extra;wis.zoom_to_row1=zoom_to_row1;wis.zoom_to_row2=zoom_to_row2;wis.show_tab=show_tab;wis.download_kml=download_kml;wis.download_gpx=download_gpx;wis.download_ovl=download_ovl;wis.download_karte=download_karte;wis.download_roadbook=download_roadbook;wis.unload=unload;wi.google_online=google_online;wi.debug=debug;wi=null;wis=null;})(window);;eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('5 4(b,a){1.q=a;1.o=a.M||"";1.G=a.1i||"1c";1.r=a.X||k P(0,0);1.t=(a.1u==m)?m:n;1.w=a.C||"";1.f=n;1.e=n;6(a.u){a.u=m}8.d(1,9)}4.3=k 8(k O(0,0));4.3.L=5(b){8.3.L.d(1,9);1.K=b;1.2=1x.1t("1q");1.2.1m=1.G;1.2.A=1.o;1.2.7.1f="1e";6(1.t){1.2.7.1d="1b"}1.2.C=1.w;6(!1.e){1.s()}1.h();b.16(15).12(1.2);6(1.t){g a=[\'Y\',\'W\',\'V\',\'U\',\'T\',\'S\'];R(g i=0;i<a.Q;i++){g c=a[i];j.10(1.2,c,j.11(j,j.1z,1,c,1.l()))}}};4.3.J=5(a){8.3.J.d(1,9);1.v()};4.3.v=5(){g p=1.K.1y(1.l());g z=1w.1s(1.l().1r());1.2.7.1p=(p.x+1.r.1l)+"B";1.2.7.1j=(p.y+1.r.1h)+"B";1.2.7.1g=z};4.3.N=5(){j.1k(1.2);6(1.2.H){1.2.H=""}6(1.2.E){1.2.E.1n(1.2)}1.2=1o;8.3.N.d(1,9)};4.3.1a=5(){g a=k 4(1.l(),1.q);a.f=1.f;a.e=1.e;I a};4.3.D=5(){8.3.D.d(1,9);1.e=n;1.h()};4.3.s=5(){8.3.s.d(1,9);1.e=m;1.h()};4.3.19=5(a){1.f=a;1.h()};4.3.18=5(){I 1.f};4.3.h=5(){6(1.2){6((!1.17())&&1.f){1.2.7.F=\'1v\'}14{1.2.7.F=\'13\'}}};4.3.Z=5(a){1.o=a;1.2.A=a;1.q.M=a};',62,98,'|this|div_|prototype|LabeledMarker|function|if|style|GMarker|arguments||||apply|ownVisibility_|labelVisibility_|var|applyLabelVisibility_||GEvent|new|getLatLng|false|true|labelText_||opts_|labelOffset_|hide|clickable_|draggable|redrawLabel_|title_||||innerHTML|px|title|show|parentNode|display|labelClass_|outerHTML|return|redraw|map_|initialize|labelText|remove|GLatLng|GSize|length|for|mouseout|mouseover|mouseup|mousedown|dblclick|labelOffset|click|setLabelText|addDomListener|callback|appendChild|none|else|G_MAP_MARKER_PANE|getPane|isHidden|getLabelVisibility|setLabelVisibility|copy|pointer|LabeledMarker_markerLabel|cursor|absolute|position|zIndex|height|labelClass|top|clearInstanceListeners|width|className|removeChild|null|left|div|lat|getZIndex|createElement|clickable|block|GOverlay|document|fromLatLngToDivPixel|trigger'.split('|'),0,{}));function MarkerManager(map,opt_opts){var me=this;me.map_=map;me.mapZoom_=map.getZoom();me.projection_=map.getCurrentMapType().getProjection();opt_opts=opt_opts||{};me.tileSize_=MarkerManager.DEFAULT_TILE_SIZE_;var mapTypes=map.getMapTypes();var mapMaxZoom=mapTypes[0].getMaximumResolution();for(var i=0;i<mapTypes.length;i++){var mapTypeMaxZoom=mapTypes[i].getMaximumResolution();if(mapTypeMaxZoom>mapMaxZoom){mapMaxZoom=mapTypeMaxZoom;}}
me.maxZoom_=opt_opts.maxZoom||mapMaxZoom;me.trackMarkers_=opt_opts.trackMarkers;me.show_=opt_opts.show||true;var padding;if(typeof opt_opts.borderPadding==="number"){padding=opt_opts.borderPadding;}else{padding=MarkerManager.DEFAULT_BORDER_PADDING_;}
me.swPadding_=new GSize(-padding,padding);me.nePadding_=new GSize(padding,-padding);me.borderPadding_=padding;me.gridWidth_=[];me.grid_=[];me.grid_[me.maxZoom_]=[];me.numMarkers_=[];me.numMarkers_[me.maxZoom_]=0;GEvent.bind(map,"moveend",me,me.onMapMoveEnd_);me.removeOverlay_=function(marker){if(marker.onmap){marker.onmap=false;map.removeOverlay(marker);me.shownMarkers_--;}};me.addOverlay_=function(marker){if(me.show_){if(!marker.onmap){map.addOverlay(marker);me.shownMarkers_++;marker.onmap=true;}}};me.resetManager_();me.shownMarkers_=0;me.shownBounds_=me.getMapGridBounds_();}
MarkerManager.DEFAULT_TILE_SIZE_=1024;MarkerManager.DEFAULT_BORDER_PADDING_=100;MarkerManager.MERCATOR_ZOOM_LEVEL_ZERO_RANGE=256;MarkerManager.prototype.resetManager_=function(){var me=this;var mapWidth=MarkerManager.MERCATOR_ZOOM_LEVEL_ZERO_RANGE;for(var zoom=0;zoom<=me.maxZoom_;++zoom){me.grid_[zoom]=[];me.numMarkers_[zoom]=0;me.gridWidth_[zoom]=Math.ceil(mapWidth/me.tileSize_);mapWidth<<=1;}};MarkerManager.prototype.clearMarkers=function(){var me=this;me.processAll_(me.shownBounds_,me.removeOverlay_);me.resetManager_();};MarkerManager.prototype.getTilePoint_=function(latlng,zoom,padding){var pixelPoint=this.projection_.fromLatLngToPixel(latlng,zoom);return new GPoint(Math.floor((pixelPoint.x+padding.width)/this.tileSize_),Math.floor((pixelPoint.y+padding.height)/this.tileSize_));};MarkerManager.prototype.addMarkerBatch_=function(marker,minZoom,maxZoom){var mPoint=marker.getPoint();marker.MarkerManager_minZoom=minZoom;if(this.trackMarkers_){GEvent.bind(marker,"changed",this,this.onMarkerMoved_);}
var gridPoint=this.getTilePoint_(mPoint,maxZoom,GSize.ZERO);for(var zoom=maxZoom;zoom>=minZoom;zoom--){var cell=this.getGridCellCreate_(gridPoint.x,gridPoint.y,zoom);marker.onmap=false;cell.push(marker);gridPoint.x=gridPoint.x>>1;gridPoint.y=gridPoint.y>>1;}};MarkerManager.prototype.isGridPointVisible_=function(point){var me=this;var vertical=me.shownBounds_.minY<=point.y&&point.y<=me.shownBounds_.maxY;var minX=me.shownBounds_.minX;var horizontal=minX<=point.x&&point.x<=me.shownBounds_.maxX;if(!horizontal&&minX<0){var width=me.gridWidth_[me.shownBounds_.z];horizontal=minX+width<=point.x&&point.x<=width-1;}
return vertical&&horizontal;};MarkerManager.prototype.onMarkerMoved_=function(marker,oldPoint,newPoint){var me=this;var zoom=me.maxZoom_;var changed=false;var oldGrid=me.getTilePoint_(oldPoint,zoom,GSize.ZERO);var newGrid=me.getTilePoint_(newPoint,zoom,GSize.ZERO);while(zoom>=0&&(oldGrid.x!==newGrid.x||oldGrid.y!==newGrid.y)){var cell=me.getGridCellNoCreate_(oldGrid.x,oldGrid.y,zoom);if(cell){if(me.removeFromArray_(cell,marker)){me.getGridCellCreate_(newGrid.x,newGrid.y,zoom).push(marker);}}
if(zoom===me.mapZoom_){if(me.isGridPointVisible_(oldGrid)){if(!me.isGridPointVisible_(newGrid)){me.removeOverlay_(marker);changed=true;}}else{if(me.isGridPointVisible_(newGrid)){me.addOverlay_(marker);changed=true;}}}
oldGrid.x=oldGrid.x>>1;oldGrid.y=oldGrid.y>>1;newGrid.x=newGrid.x>>1;newGrid.y=newGrid.y>>1;--zoom;}
if(changed){me.notifyListeners_();}};MarkerManager.prototype.removeMarker=function(marker){var me=this;var zoom=me.maxZoom_;var changed=false;var point=marker.getPoint();var grid=me.getTilePoint_(point,zoom,GSize.ZERO);while(zoom>=0){var cell=me.getGridCellNoCreate_(grid.x,grid.y,zoom);if(cell){me.removeFromArray_(cell,marker);}
if(zoom===me.mapZoom_){if(me.isGridPointVisible_(grid)){me.removeOverlay_(marker);changed=true;}}
grid.x=grid.x>>1;grid.y=grid.y>>1;--zoom;}
if(changed){me.notifyListeners_();}
me.numMarkers_[marker.MarkerManager_minZoom]--;};MarkerManager.prototype.addMarkers=function(markers,minZoom,opt_maxZoom){var maxZoom=this.getOptMaxZoom_(opt_maxZoom);for(var i=markers.length-1;i>=0;i--){this.addMarkerBatch_(markers[i],minZoom,maxZoom);}
this.numMarkers_[minZoom]+=markers.length;};MarkerManager.prototype.getOptMaxZoom_=function(opt_maxZoom){return opt_maxZoom||this.maxZoom_;};MarkerManager.prototype.getMarkerCount=function(zoom){var total=0;for(var z=0;z<=zoom;z++){total+=this.numMarkers_[z];}
return total;};MarkerManager.prototype.getMarker=function(lat,lng,zoom){var me=this;var mPoint=new GLatLng(lat,lng);var gridPoint=me.getTilePoint_(mPoint,zoom,GSize.ZERO);var marker=new GMarker(mPoint);var cellArray=me.getGridCellNoCreate_(gridPoint.x,gridPoint.y,zoom);if(cellArray!=undefined){for(var i=0;i<cellArray.length;i++)
{if(lat==cellArray[i].getLatLng().lat()&&lng==cellArray[i].getLatLng().lng())
{marker=cellArray[i];}}}
return marker;};MarkerManager.prototype.addMarker=function(marker,minZoom,opt_maxZoom){var me=this;var maxZoom=this.getOptMaxZoom_(opt_maxZoom);marker.onmap=false;me.addMarkerBatch_(marker,minZoom,maxZoom);var gridPoint=me.getTilePoint_(marker.getPoint(),me.mapZoom_,GSize.ZERO);if(me.isGridPointVisible_(gridPoint)&&minZoom<=me.shownBounds_.z&&me.shownBounds_.z<=maxZoom){me.addOverlay_(marker);me.notifyListeners_();}
this.numMarkers_[minZoom]++;};GBounds.prototype.containsPoint=function(point){var outer=this;return(outer.minX<=point.x&&outer.maxX>=point.x&&outer.minY<=point.y&&outer.maxY>=point.y);};MarkerManager.prototype.getGridCellCreate_=function(x,y,z){var grid=this.grid_[z];if(x<0){x+=this.gridWidth_[z];}
var gridCol=grid[x];if(!gridCol){gridCol=grid[x]=[];return(gridCol[y]=[]);}
var gridCell=gridCol[y];if(!gridCell){return(gridCol[y]=[]);}
return gridCell;};MarkerManager.prototype.getGridCellNoCreate_=function(x,y,z){var grid=this.grid_[z];if(x<0){x+=this.gridWidth_[z];}
var gridCol=grid[x];return gridCol?gridCol[y]:undefined;};MarkerManager.prototype.getGridBounds_=function(bounds,zoom,swPadding,nePadding){zoom=Math.min(zoom,this.maxZoom_);var bl=bounds.getSouthWest();var tr=bounds.getNorthEast();var sw=this.getTilePoint_(bl,zoom,swPadding);var ne=this.getTilePoint_(tr,zoom,nePadding);var gw=this.gridWidth_[zoom];if(tr.lng()<bl.lng()||ne.x<sw.x){sw.x-=gw;}
if(ne.x-sw.x+1>=gw){sw.x=0;ne.x=gw-1;}
var gridBounds=new GBounds([sw,ne]);gridBounds.z=zoom;return gridBounds;};MarkerManager.prototype.getMapGridBounds_=function(){var me=this;return me.getGridBounds_(me.map_.getBounds(),me.mapZoom_,me.swPadding_,me.nePadding_);};MarkerManager.prototype.onMapMoveEnd_=function(){var me=this;me.objectSetTimeout_(this,this.updateMarkers_,0);};MarkerManager.prototype.objectSetTimeout_=function(object,command,milliseconds){return window.setTimeout(function(){command.call(object);},milliseconds);};MarkerManager.prototype.visible=function(){return this.show_?true:false;};MarkerManager.prototype.isHidden=function(){return!this.show_;};MarkerManager.prototype.show=function(){this.show_=true;this.refresh();};MarkerManager.prototype.hide=function(){this.show_=false;this.refresh();};MarkerManager.prototype.toggle=function(){this.show_=!this.show_;this.refresh();};MarkerManager.prototype.refresh=function(){var me=this;if(me.shownMarkers_>0){me.processAll_(me.shownBounds_,me.removeOverlay_);}
if(me.show_){me.processAll_(me.shownBounds_,me.addOverlay_);}
me.notifyListeners_();};MarkerManager.prototype.updateMarkers_=function(){var me=this;me.mapZoom_=this.map_.getZoom();var newBounds=me.getMapGridBounds_();if(newBounds.equals(me.shownBounds_)&&newBounds.z===me.shownBounds_.z){return;}
if(newBounds.z!==me.shownBounds_.z){me.processAll_(me.shownBounds_,me.removeOverlay_);if(me.show_){me.processAll_(newBounds,me.addOverlay_);}}else{me.rectangleDiff_(me.shownBounds_,newBounds,me.removeCellMarkers_);if(me.show_){me.rectangleDiff_(newBounds,me.shownBounds_,me.addCellMarkers_);}}
me.shownBounds_=newBounds;me.notifyListeners_();};MarkerManager.prototype.notifyListeners_=function(){GEvent.trigger(this,"changed",this.shownBounds_,this.shownMarkers_);};MarkerManager.prototype.processAll_=function(bounds,callback){for(var x=bounds.minX;x<=bounds.maxX;x++){for(var y=bounds.minY;y<=bounds.maxY;y++){this.processCellMarkers_(x,y,bounds.z,callback);}}};MarkerManager.prototype.processCellMarkers_=function(x,y,z,callback){var cell=this.getGridCellNoCreate_(x,y,z);if(cell){for(var i=cell.length-1;i>=0;i--){callback(cell[i]);}}};MarkerManager.prototype.removeCellMarkers_=function(x,y,z){this.processCellMarkers_(x,y,z,this.removeOverlay_);};MarkerManager.prototype.addCellMarkers_=function(x,y,z){this.processCellMarkers_(x,y,z,this.addOverlay_);};MarkerManager.prototype.rectangleDiff_=function(bounds1,bounds2,callback){var me=this;me.rectangleDiffCoords_(bounds1,bounds2,function(x,y){callback.apply(me,[x,y,bounds1.z]);});};MarkerManager.prototype.rectangleDiffCoords_=function(bounds1,bounds2,callback){var minX1=bounds1.minX;var minY1=bounds1.minY;var maxX1=bounds1.maxX;var maxY1=bounds1.maxY;var minX2=bounds2.minX;var minY2=bounds2.minY;var maxX2=bounds2.maxX;var maxY2=bounds2.maxY;var x,y;for(x=minX1;x<=maxX1;x++){for(y=minY1;y<=maxY1&&y<minY2;y++){callback(x,y);}
for(y=Math.max(maxY2+1,minY1);y<=maxY1;y++){callback(x,y);}}
for(y=Math.max(minY1,minY2);y<=Math.min(maxY1,maxY2);y++){for(x=Math.min(maxX1+1,minX2)-1;x>=minX1;x--){callback(x,y);}
for(x=Math.max(minX1,maxX2+1);x<=maxX1;x++){callback(x,y);}}};MarkerManager.prototype.removeFromArray_=function(array,value,opt_notype){var shift=0;if(!array)return 0;for(var i=0;i<array.length;++i){if(array[i]===value||(opt_notype&&array[i]===value)){array.splice(i--,1);shift++;}}
return shift;};;function Poi_cat(id,text,image,imagemap,transparent,sizex,sizey,get_title,min_zoom,anchorx,anchory,sortid,cms,legend){this.id=id;this.text=text;this.image=image;this.imagemap=imagemap;this.transparent=transparent;this.sizex=sizex;this.sizey=sizey;this.get_title=get_title;this.min_zoom=min_zoom;this.sortid=sortid;this.cms=cms;this.legend=legend;if(google_online){this.icon=new google.maps.Icon();this.icon.image=this.image;this.icon.iconSize=new google.maps.Size(this.sizex,this.sizey);this.icon.iconAnchor=new google.maps.Point(anchorx,anchory);this.icon.infoWindowAnchor=new google.maps.Point(anchorx+4,anchory-4);if(this.transparent!=''){}
if(this.imagemap!=''){this.icon.imagemap=this.imagemap;}}};Poi_cat.prototype.getIcon=function(){return this.icon;};Poi_cat.prototype.getZIndex=function(){return(30-this.sortid);};function Pic(filename,width,height,hidden,overview){this.filename=filename;this.width=width;this.height=height;this.hidden=hidden;this.overview=overview;};function Poi(id,Dateneingabe,owner,ort_id,POI_Kategorie,POI_Name,POI_Zusatzinfo,Bemerk_Intern,Bemerk_Betreiber,Nachbearbeitung,kontakt_name,kontakt_strasse_nr,kontakt_plz,kontakt_ort,kontakt_tel,kontakt_fax,kontakt_mail,kontakt_url,kontakt_zusatz,creadate,lat,lng,min_zoom,modifier,date_mod,wanderziel,hidden,deleted,live_bild,ausdehnung,pictures){this.id=id;this.Dateneingabe=Dateneingabe;this.owner=owner;this.ort_id=ort_id;this.POI_Kategorie=POI_Kategorie;this.POI_Name=POI_Name;this.POI_Zusatzinfo=POI_Zusatzinfo;this.Bemerk_Intern=Bemerk_Intern;this.Bemerk_Betreiber=Bemerk_Betreiber;this.Nachbearbeitung=Nachbearbeitung;this.kontakt_name=kontakt_name;this.kontakt_strasse_nr=kontakt_strasse_nr;this.kontakt_plz=kontakt_plz
this.kontakt_ort=kontakt_ort;this.kontakt_tel=kontakt_tel;this.kontakt_fax=kontakt_fax;this.kontakt_mail=kontakt_mail;this.kontakt_url=kontakt_url;this.kontakt_zusatz=kontakt_zusatz;this.creadate=creadate;this.lat=lat;this.lng=lng;this.min_zoom=min_zoom;this.live_bild=live_bild;this.modifier=modifier;this.date_mod=date_mod;this.wanderziel=wanderziel;this.hidden=hidden;this.deleted=deleted;this.ausdehnung=ausdehnung;this.pictures=((pictures==null||pictures==undefined||pictures=='')?[]:pictures);this.create_Marker();this.listener=null;};Poi.prototype.get_owner_id=function(){return this.owner;};Poi.prototype.get_ort_id=function(){return this.ort_id;};Poi.prototype.create_Marker=function(){if(google_online&&this.lat&&this.lng){var _this=this;var cat=this.get_Category();this.marker=new google.maps.Marker(new google.maps.LatLng(this.lat,this.lng),{title:(this.POI_Name==''?cat.text:this.POI_Name),icon:cat.getIcon(),zIndexProcess:(this.wanderziel?function(){return(50-cat.sortid);}:function(){return cat.getZIndex()})});var _this=this;this.listener=google.maps.Event.addListener(this.marker,'click',function(){_this.onclick()});}};Poi.prototype.remove_Marker=function(){if(this.listener){google.maps.Event.removeListener(this.listener);}
this.marker=null;};Poi.prototype.getZIndex=function(){var cat=this.get_Category();if(cat){return cat.sortid;}else{return 0;}};Poi.prototype.get_Category=function(){return je.wis.data.cats[this.POI_Kategorie];};Poi.prototype.get_Min_zoom=function(){if(this.wanderziel){return 11;}
var minz=((this.min_zoom=='null'||this.min_zoom==null||this.min_zoom==0)?this.get_Category().min_zoom:this.min_zoom);return minz;};Poi.prototype.addPicture=function(pic){this.pictures[this.pictures.length]=pic;};Poi.prototype.onclick=function(){this.open_infowindow();};Poi.prototype.open_infowindow=function(map){var html='';var latlng=this.marker.getLatLng();if(this.POI_Kategorie==24||this.POI_Kategorie==27){html='<div class="cms_infowindow"><h2>'+this.POI_Name+'</h2>';html+='<p><a target="_new" href="http://efa.vrr.de/vrr/XSLT_TRIP_REQUEST2?language=de&itdLPxx_hideNavigationBar=1&sessionID=0&itdLPxx_transpCompany=rlg&name_origin='
+this.POI_Zusatzinfo+'&type_origin=stop">zur VRL-Fahrplanauskunft (als Start)</a></p>'
+'<p><a target="_new" href="http://efa.vrr.de/vrr/XSLT_TRIP_REQUEST2?language=de&itdLPxx_hideNavigationBar=1&sessionID=0&itdLPxx_transpCompany=rlg&name_destination='
+this.POI_Zusatzinfo+'&type_destination=stop">zur VRL-Fahrplanauskunft (als Ziel)</a></p>'
+'<p><a target="_new" href="http://efa.vrr.de/vrr/XSLT_DM_REQUEST?language=de&itdLPxx_hideNavigationBar=1&name_dm='+
+this.POI_Zusatzinfo+'&type_dm=stop&sessionID=0&itdLPxx_transpCompany=rlg&mode=direct">aktuelle Abfahrten an der Haltestelle</a></p>'
+'</div>';}else{html='<div class="cms_infowindow"><table cellpadding="0" cellspacing="0" width="100%">'
+(this.POI_Name?'<tr><td colspan="2"><h2>'+this.POI_Name+'</td></tr>':'')
+'<tr><td width="65">Kategorie</td><td>'+this.get_Category().text+(this.wanderziel?' (Wanderziel)':'')+'</td></tr>'
+(this.POI_Zusatzinfo?'<tr><td>Zusatzinfo</td><td>'+this.POI_Zusatzinfo+'</td></tr>':'')
+(this.kontakt_strasse?'<tr><td>Strasse</td><td>'+this.kontakt_strasse_nr+'</td></tr>':'')
+((this.kontakt_plz||this.kontakt_ort)?'<tr><td>Plz Ort</td><td>'+this.kontakt_plz+' '+this.kontakt_ort+'</td></tr>':'')
+(this.kontakt_tel?'<tr><td>Tel</td><td>'+this.kontakt_tel+'</td></tr>':'')
+(this.kontakt_fax?'<tr><td>Fax</td><td>'+this.kontakt_fax+'</td></tr>':'')
+(this.kontakt_mail?'<tr><td>Mail</td><td><a href="mailto:'+this.kontakt_mail+'">'+this.kontakt_mail+'</a></td></tr>':'')
+(this.kontakt_url?'<tr><td>Url</td><td><a target="_new" href="http://'+this.kontakt_url+'">'+this.kontakt_url+'</a></td></tr>':'')
+(this.kontakt_zusatz?'<tr><td>Zusatz</td><td>'+this.kontakt_zusatz+'</td></tr>':'')
+'</table>';if(this.pictures.length>0||this.live_bild){html+='<ul>';if(this.live_bild){html+='<li><div style="width:333px; height:250px;"><img src="'+this.live_bild+'" width="333"/></div></li>';}
for(var i=0;i<this.pictures.length;i++){html+='<li><img width="'+this.pictures[i].width+'" height="'+this.pictures[i].height+'" src="http://bergwanderpark.wwl-web.de/pics/'+this.pictures[i].filename+'"/></li>'}
html+='</ul>';}
html+="</div>";}
if(map){map.openInfoWindowHtml(latlng,html);}else{je.wis.map.openInfoWindowHtml(latlng,html);}};function Poi_MarkerManager(map,pois,cats){this.onpoischanged=function(p_old,p_new){};this.map=map;this.pois=pois;this.cats=cats
this.show={};this.hidden=false;this.poi_ar={};this.max_zoom=-1;this.mm_ar={};this.default_poi=this.create_Default_Poi();this.build_arrays();};Poi_MarkerManager.prototype._get_mm=function(cid){if(!this.mm_ar[cid]){this.mm_ar[cid]=new MarkerManager(this.map,{borderPadding:30});}
return this.mm_ar[cid];};Poi_MarkerManager.prototype.create_Default_Poi=function(){return{id:0,Dateneingabe:null,owner:null,ort_id:null,POI_Kategorie:1,POI_Name:'',POI_Zusatzinfo:'',Bemerk_Intern:'',Bemerk_Betreiber:'',Nachbearbeitung:0,kontakt_name:'',kontakt_strasse_nr:'',kontakt_plz:'',kontakt_ort:'',kontakt_tel:'',kontakt_fax:'',kontakt_mail:'',kontakt_url:'',kontakt_zusatz:'',creadate:'',lat:null,lng:null,min_zoom:0,modifier:null,date_mod:'',wanderziel:0,hidden:0,deleted:0,live_bild:'',ausdehnung:0,pictures:[]};};Poi_MarkerManager.prototype.create_poi=function(pobj){var p=new Poi();for(var key in this.default_poi){p[key]=(pobj[key]==undefined?this.default_poi[key]:pobj[key]);}
p.create_Marker();return p;};Poi_MarkerManager.prototype.get_poi=function(pid){return this.pois[pid];};Poi_MarkerManager.prototype.set_pois_cats=function(pois,cats){this.cats=cats;this.pois=pois;for(var cid in this.mm_ar){this.mm_ar[cid].clearMarkers();}
this.max_zoom=-1;this.poi_ar={};this.build_arrays();this.init_view();this.onpoischanged(null,null);};Poi_MarkerManager.prototype._remove=function(poi){if(!poi)return;if(poi.marker){if(poi.get_Min_zoom()<=this.max_zoom){this._get_mm(poi.POI_Kategorie).removeMarker(poi.marker);}}else{if(debug){if(debug)google.maps.log.write('_remove: !poi.marker!');}}
var cid=poi.POI_Kategorie;var minz=poi.get_Min_zoom();this._get_mm(poi.POI_Kategorie).removeFromArray_(this.poi_ar[cid][minz],poi.marker);};Poi_MarkerManager.prototype.remove=function(poi){if(!poi){if(debug)google.maps.log.write('remove: !poi!');return;}
this._remove(poi);delete this.pois[poi.id];this.onpoischanged(poi,null);};Poi_MarkerManager.prototype._add=function(poi){this._add_to_arrays(poi);if(poi.get_Min_zoom()<=this.max_zoom){this._get_mm(poi.POI_Kategorie).addMarker(poi.marker,poi.get_Min_zoom());}};Poi_MarkerManager.prototype.add=function(poi){this.pois[poi.id]=poi;this._add(poi);this.onpoischanged(null,poi);};Poi_MarkerManager.prototype.update=function(p_old,p_new){this._remove(p_old);this._add(p_new);if(p_old.id!=p_new.id){delete this.pois[p_old.id];}
this.pois[p_new.id]=p_new;this.onpoischanged(p_old,p_new);};Poi_MarkerManager.prototype._add_to_arrays=function(poi){var cid=poi.POI_Kategorie;if(this.poi_ar[cid]==undefined){this.poi_ar[cid]={};}
var minz=poi.get_Min_zoom();if(this.poi_ar[cid][minz]==undefined){this.poi_ar[cid][minz]=[];}
this.poi_ar[cid][minz][this.poi_ar[cid][minz].length]=poi.marker;};Poi_MarkerManager.prototype.build_arrays=function(){for(var pid in this.pois){var poi=this.pois[pid];this._add_to_arrays(poi);}
for(var cid in this.show){if(this.cats[cid]===undefined)delete(this.show[cid]);}
for(cid in this.cats){if(this.show[cid]===undefined)this.show[cid]=false;}};Poi_MarkerManager.prototype.toggle_cat=function(cid){if(this.show[cid]&&!this.hidden){this.hide_cat(cid);}else{this.show_cat(cid);}};Poi_MarkerManager.prototype.show_cat=function(cid){if(this.show[cid])return;this.show[cid]=true;this.hidden=false;this._get_mm(cid).show();};Poi_MarkerManager.prototype.hide_cat=function(cid){if(!this.show[cid])return;if(this.hidden)return;this.show[cid]=false;this._get_mm(cid).hide();};Poi_MarkerManager.prototype.hide_all=function(){for(var cid in this.mm_ar){if(this.show[cid]){this.mm_ar[cid].hide();this.show[cid]=false;}}
this.hidden=true;};Poi_MarkerManager.prototype.show_all=function(){for(var cid in this.mm_ar){if(!this.show[cid]){this.mm_ar[cid].show();this.show[cid]=true;}}
this.hidden=false;};Poi_MarkerManager.prototype.init_view=function(){for(var cid in this.cats){this.show[cid]=true;}
this.set_zoom(this.map.getZoom());};Poi_MarkerManager.prototype.set_zoom=function(zoom_new){if(zoom_new<=this.max_zoom)return;for(var cid in this.cats){var need_ref=false;var mm=this._get_mm(cid);for(var minz in this.poi_ar[cid]){if(minz>this.max_zoom&&minz<=zoom_new){mm.addMarkers(this.poi_ar[cid][minz],minz);need_ref=true;}
if(need_ref){mm.refresh();}}}
this.max_zoom=zoom_new;};Poi_controller=function(cms_ctr){var _this=this;this.issaving=false;this.isloading=false;this.ismoving=false;this.map=cms_ctr.get_map();this.cms_ctr=cms_ctr;this.user=cms_ctr.user;this.transport=cms_ctr.transport;this.poi_control=cms_ctr.poi_control;this.poisetup=new Poi_Setup(this);this.poisform=new Poisform(cms_ctr.contentdiv,cms_ctr.user,je.wis.data.cats);this.div=document.createElement('div');this.div.id='auswahl-wrapper';this.div.className='sidebar';this.div.innerHTML='<h2>Suchergebnis</h2><div id="tourlist-wrapper"><ul id="tourlist"><li class="odd"></li></ul></div>';cms_ctr.contentdiv.appendChild(this.div);this.flist=new filterlist('flist_pois',document.getElementById('tourlist'),new List_model([]),null,null);this.flist.genrow_func=function(id,poi,aktrow){var tmp=['<li id="',id,'" class="',(aktrow%2?'odd':'even'),'"><b>',poi.POI_Name,'</b><br/>',poi.POI_Zusatzinfo,"<br/>Kat:",poi.get_Category().text,'</li>'];return tmp.join('');};this.flist.ondblclick=function(poi){};this.flist.onclick=function(poi){_this.poi_control.set_cat(poi.POI_Kategorie,true);return _this.startedit(poi.id);};this.flist.ondeselect=function(s){oldselect=null;}
this.flist.set_model(new List_model([]));this.flist.set_filter(this.poisform.get_filter());this.poisform.onchange=function(filter){_this.flist.set_filter(filter,false);};this.poisform.oncreate=function(){_this.startcreate();};var _poimm=cms_ctr.mapMan.poiMan;_poimm.onpoischanged=function(p_old,p_new){if(debug){google.maps.Log.write('p_old:'+(p_old==null?'null':p_old.id+' '+p_old.POI_Kategorie+' '+p_old.POI_Name+' '+p_old.POI_Zusatzinfo)
+"\np_new: "+(p_new==null?'null':p_new.id+' '+p_new.POI_Kategorie+' '+p_new.POI_Name+' '+p_new.POI_Zusatzinfo)
+"\np_db: "+(p_new==null?'null':_poimm.pois[p_new.id].POI_Kategorie+' '+_poimm.pois[p_new.id].POI_Name+' '+_poimm.pois[p_new.id].POI_Zusatzinfo));}
if(p_old==null||p_new==null||p_old.id!=p_new.id){var pois=[];for(var poi in _poimm.pois){pois[pois.length]=_poimm.pois[poi];}
_this.flist.set_model(new List_model(pois));}else{if(p_old.POI_Kategorie!=p_new.POI_Kategorie||p_old.POI_Name!=p_new.POI_Name||p_old.POI_Zusatzinfo!=p_new.POI_Zusatzinfo){for(var i=0;i<_this.flist.model.count_rows();i++){if(_this.flist.model.get_obj(i).id==p_new.id){_this.flist.model.set_obj(i,p_new);break;}}
_this.flist.toHtml();}else{if(debug)google.maps.Log.write('Nothing relevant chagend');}}};_poimm.onpoischanged(null,null);this.flist.toHtml();};Poi_controller.prototype.remove=function(){this.poisform.remove();this.poisform=null;this.cms_ctr.contentdiv.removeChild(this.div);this.flist=null;};Poi_controller.prototype.startsave=function(poi){var _this=this;this.issaving=true;this.oe.disable(true);var parobj={};for(var i in poi){if((typeof poi[i])=='function')continue;switch(i){case'marker':break;case'pictures':var pics=[]
for(var i=0;i<poi.pictures.length;i++){pics[i]='('+poi.pictures[i].filename+','+poi.pictures[i].hidden+','+poi.pictures[i].overview+')';}
parobj.pictures=pics.join(',');break;default:parobj[i]=poi[i];}}
this.transport.send_request('savepoi',parobj,function(suc,obj){_this.startsave_result(suc,obj)});};Poi_controller.prototype.startsave_result=function(suc,obj){var poimm=this.cms_ctr.mapMan.poiMan;try{if(obj.obj&&obj.success){var poi=obj.obj;if(this.oe!=null){this.oe.disable(false);this.oe.setObject(poi,false);this.oe.setMsg(obj.msg);}
poimm.update((poimm.pois[0]!==undefined?poimm.pois[0]:poimm.pois[poi.id]),poi);}else{alert("Speichern fehlgeschlagen\nFehlermeldung: "+obj.msg);if(this.oe!=null){this.oe.disable(false);}}}catch(e){var tmp=[];for(var key in e){tmp[tmp.length]=key+": "+e[key]+"\n";}
alert("Fehler: "+tmp.join(''));}
this.issaving=false;if(!suc){alert("Speichern fehlgeschlagen!");return false;}
return true;};Poi_controller.prototype.startdelete=function(poi){var _this=this;var parobj={id:poi.id,owner:poi.owner};this.oe.disable(true);if(confirm('Diesen POI wirklich löschen (Die Aktion kann nicht rückgängig gemacht werden)?')){if(poi.id==0){this.oe.remove();this.oe=null;return;}
this.transport.send_request('deletepoi',parobj,function(suc,obj){_this.startdelete_result(suc,obj);});}else{this.oe.disable(false);}};Poi_controller.prototype.startdelete_result=function(suc,obj){if((!suc)||(!obj.success)){alert('Löschen fehlgeschlagen!');this.oe.disable(false);return false;}
var oid=this.oe.getObject().id;delete(this.oe);this.map.closeInfoWindow();var poimm=this.cms_ctr.mapMan.poiMan;poimm.remove(poimm.pois[oid]);this.oe=null;};Poi_controller.prototype.startmove=function(poi){var _this=this;this.ismoving=true;this.mm=new movemarker(this.map,poi.marker.getLatLng());this.mm.oncancel=function(){_this.ismoving=false;this.map.openInfoWindow(poi.marker.getLatLng(),_this.oe.div);}
this.mm.onsave=function(latlng){_this.ismoving=false;_this.oe.setDirty(true);poi.marker.setLatLng(latlng);poi.lat=latlng.lat();poi.lng=latlng.lng();_this.oe.editor.setValue(poi);this.map.openInfoWindow(poi.marker.getLatLng(),_this.oe.div);}};Poi_controller.prototype.startedit=function(id){if(this.oe!=null){if(this.oe.isDirty()){alert("es wird grade schon editiert!");return false;}}
if(this.ismoving)return false;if(this.issaving)return false;if(this.isloading)return false;this.isloading=true;var _this=this;this.transport.send_request('getpoi',{id:id},function(suc,obj){_this.startedit_result(suc,obj);});};Poi_controller.prototype.startedit_result=function(suc,obj){this.isloading=false;if(!suc||!obj.success){alert(suc?"Poi konnte nicht geladen werden!\nFehlermeldung: "+obj.msg:'Fehler beim Laden!');return false;}
var _this=this;var poimm=this.cms_ctr.mapMan.poiMan;var poi=obj.obj;poimm.update(poimm.pois[poi.id],poi);if(this.map.getZoom()<poi.get_Min_zoom()){this.map.setCenter(poi.marker.getLatLng(),poi.get_Min_zoom());}
this.edit(poi);};Poi_controller.prototype.startcreate=function(){if(this.oe){if(this.oe.isDirty()){alert("es wird grade schon editiert!");return false;}}
if(this.ismoving)return false;if(this.issaving)return false;var dat=new Date();var min=dat.getMinutes();if(min<10)min='0'+min;var hour=dat.getHours();if(hour<10)hour='0'+hour;var sec=dat.getSeconds();if(sec<10)sec='0'+sec;var creadate=(dat.getFullYear())+'-'+(dat.getMonth()+1)+'-'+dat.getDate()+' '+hour+':'+min+':'+sec;var latlng=this.map.getCenter();var lat=latlng.lat();var lng=latlng.lng();var ort_id=this.poisform.get_gemeinde();var kat=this.poisform.get_kategorie();var poimm=this.cms_ctr.mapMan.poiMan;var poi=poimm.create_poi({Dateneingabe:this.user.id,owner:this.user.id,ort_id:ort_id,POI_Kategorie:(kat!='all'?parseInt(kat):23),POI_Name:'neuer POI',creadate:creadate,lat:lat,lng:lng,pictures:[]});poimm.add(poi);this.edit(poi);this.oe.setDirty(true);this.oe.setPage('edit');this.startmove(poi);};Poi_controller.prototype.picupload_start=function(poi,form){var _this=this;if(this.ismoving)return false;if(this.issaving)return false;this.oe.disable(true);this.issaving=true;this.transport.send_form_aim_request(form,'uploadpic',{},function(succ,res){_this.picupload_result(succ,res);});};Poi_controller.prototype.picupload_result=function(succ,res){this.issaving=false;this.oe.disable(false);if(!succ){this.oe.setMsg("Fehler beim Upload!");return false;}
if(!res.success){this.oe.setMsg(res.msg);return false;}
var pic=res.obj;this.oe.obj.addPicture(pic);this.oe.setObject(this.oe.obj,true);this.oe.setMsg(res.msg);return true;};Poi_controller.prototype.edit=function(poi){var _this=this;var poimm=this.cms_ctr.mapMan.poiMan;var dom=document.createElement('div');dom.className='cms_infowindow';this.oe=new Obj_Editor_Control(dom,poi,this.poisetup,this.user,'Poi '+poi.id+' '+poi.POI_Name);this.oe.onsave=function(obj){_this.startsave(obj);}
this.oe.oncancel=function(obj){if(_this.oe.isDirty()){if(confirm('Sollen die vorgenommenen Änderungen gespeichert werden?')){_this.oe.save();_this.oe.remove();_this.oe=null;}else{var poi=poimm.pois[_this.oe.getObject().id];if(poi){if(poi.id===0){delete(_this.oe);poimm.remove(poi);}else{poi.marker.setLatLng(new google.maps.LatLng(poi.lat,poi.lng));}}
_this.oe.remove();_this.oe=null;}}
_this.map.closeInfoWindow();};this.oe.editor.onmove=function(obj){_this.startmove(obj);};this.oe.editor.ondelete=function(obj){_this.startdelete(obj);};this.oe.editor.onpicupload=function(obj,form){_this.picupload_start(obj,form);};this.map.openInfoWindow(poi.marker.getLatLng(),dom);var listener=google.maps.Event.addListener(this.map,'infowindowbeforeclose',function(){if(_this.ismoving){return;}
google.maps.Event.removeListener(listener);if(_this.issaving){return;}
if(_this.oe&&_this.oe.isDirty()){if(confirm('Sollen die vorgenommenen Änderungen gespeichert werden?')){_this.oe.save();_this.oe.remove();_this.oe=null;}else{var poi=poimm.pois[_this.oe.getObject().id];if(poi){if(poi.id===0){delete(_this.oe);poimm.remove(poi);}else{poi.marker.setLatLng(new google.maps.LatLng(poi.lat,poi.lng));}}
_this.oe.remove();_this.oe=null;}}});};function Poisform(div,user,poi_cats){var _this=this;this.user=user;this.div=div;this.form=document.createElement('form');this.form.setAttribute("action","");this.form.style.position='relative';this.form.onsubmit=function(){_this._submit();return false;};this.form.innerHTML='    <h2>Auswahl POI</h2>\
 <input name="pois_create" type="button" value="Neuer POI" style="position: absolute; right:3px; top:3px; "/>\
   <table style="width: 100%;" border="0" cellpadding="0" cellspacing="0">\
      <tbody><tr><td><h3>Kategorie</h3></td>\
       <td class="formel"><select id="pois_filter_kategorie">\
        <option value="all">-- Alle --</option>'+'       </select></td></tr>'+'      <tr><td><h3>Gemeinde</h3></td><td class="formel"><select id="pois_filter_gemeinde">'+'        <option value="all">-- Alle --</option>'+'       </select></td></tr>'+'      <tr><td><h3>Freitext</h3></td><td class="formel"><input style="width:96%" id="pois_filter_freitext" type="text">'+'</td></tr>'+'     </tbody></table>';this.div.appendChild(this.form);this.filter_kat=this.form.pois_filter_kategorie;this.filter_gem=this.form.pois_filter_gemeinde;this.init_filter_gem();this.filter_frei=this.form.pois_filter_freitext;this.form.pois_create.onclick=function(){_this.oncreate();}
this.cats=poi_cats;for(var katid in this.cats){if(!this.cats[katid].cms)continue;this.filter_kat.options[this.filter_kat.options.length]=new Option(this.cats[katid].text,this.cats[katid].id);}
this.onchange=function(filter){};this.oncreate=function(){};this._filter_alltrue=function(o){return true;};this._filter_allfalse=function(o){return false;};this.filter_kat.onchange=function(){_this._submit();};this.filter_gem.onchange=function(){_this._submit();};this.form.pois_filter_freitext.onkeyup=function(){_this._submit();};};Poisform.prototype.get_gemeinde=function(){return this.filter_gem.value;};Poisform.prototype.get_kategorie=function(){return this.filter_kat.value;};Poisform.prototype.init_filter_gem=function(){var f=this.filter_gem;if(this.user.role!='admin'){f.length=0;}
for(var ortid in je.wis.data.orte){if(this.user.role=='user'&&!this.user.ort_ids[ortid])continue;f.options[f.options.length]=new Option(je.wis.data.orte[ortid].name,''+ortid);}};Poisform.prototype.remove=function(){this.div.removeChild(this.form);};Poisform.prototype._submit=function(){this.onchange(this.get_filter());};Poisform.prototype._get_katfilter=function(){var kat=this.filter_kat.value;if(kat=='all')return this._filter_alltrue;return function(pois){if(pois==null)return false;return(kat==pois.POI_Kategorie);};};Poisform.prototype._get_userfilter=function(){if(this.user!=null){var user=this.user;if(user.role=='admin'||user.role=='spho')return this._filter_alltrue;return function(poi){if(poi==null)return false;return(user.ort_ids[poi.ort_id]);};}else{return this._filter_allfalse;}};Poisform.prototype._get_gemfilter=function(){var gem=this.filter_gem.value;if(gem=='all')return this._filter_alltrue;var gemint=parseInt(gem);return function(poi){if(poi==null)return false;return poi.ort_id==gemint;};};Poisform.prototype._get_freifilter=function(){var frei=this.filter_frei.value;if(frei=='')return this._filter_alltrue;var regexp=new RegExp(frei,'i');return function(poi){return regexp.test(poi.POI_Name)||regexp.test(poi.POI_Zusatzinfo);};};Poisform.prototype.get_filter=function(){if(this.form.pois_filter_kategorie.value=='all'&&this.form.pois_filter_freitext.value=='')return this._filter_allfalse;var _this=this;var gemfilter=this._get_gemfilter();var katfilter=this._get_katfilter();var freifilter=this._get_freifilter();var userfilter=this._get_userfilter();return function(poi){return(poi.POI_Kategorie!=24&&userfilter(poi)&&gemfilter(poi)&&katfilter(poi)&&freifilter(poi));};};function Poi_Setup(ctr){var _this=this;this.objdefs={view:'all',edit:'ort',pics:'ort',move:'ort',duplicate:'ort',del:'ort',create:'ort',actions:'ort'};this.groups={general:{header:false,fields:['POI_Name','wanderziel','POI_Kategorie','POI_Zusatzinfo','Bemerk_Intern','Bemerk_Betreiber','live_bild']},kontakt:{header:true,bez:'Kontaktdaten',fields:['kontakt_strasse_nr','kontakt_plz','kontakt_ort','kontakt_tel','kontakt_fax','kontakt_mail','kontakt_url','kontakt_zusatz']},position:{header:true,bez:'Position',fields:['lat','lng','min_zoom','ausdehnung']},rights:{header:true,bez:'Rechte',fields:['ort_id','hidden','deleted','owner','modifier','date_mod','Dateneingabe','creadate']},pictures:{header:false,fields:['pictures']},pictures_edit:{header:false,fields:['pictures_edit']},actions:{header:false,fields:['action_move','action_delete']}};this.pages={view:{mode:'view',fldlabel:'Anzeigen',groups:['pictures','general','kontakt','rights','position']},edit:{mode:'edit',fldlabel:'Bearbeiten',groups:['general','kontakt','rights','position']},pics:{mode:'edit',fldlabel:'Bilder',groups:['pictures_edit']},actions:{mode:'edit',fldlabel:'Aktionen',groups:['actions']}};this.fields={action_move:{view:'ort',edit:'ort',fldlabel:'',colsp2:true,geteditor:function(){return new Ed_Button_Control('POI auf neue Position verschieben: ','Verschieben!');},events:{onclick:'onmove'}},action_delete:{view:'ort',edit:'ort',fldlabel:'',colsp2:true,geteditor:function(){return new Ed_Button_Control('POI löschen: ','Löschen!');},events:{onclick:'ondelete'}},page_view:{view:'all'},page_edit:{view:'ort'},page_pics:{view:'ort'},page_actions:{view:'ort'},pictures:{view:'all',edit:'ort',fldlabel:'Bilder',geteditor:function(){return new Ed_Pictures_Viewer();},getviewer:function(){return new Ed_Pictures_Viewer();},skip_test:function(obj){return(obj.pictures.length==0);},colsp2:true},pictures_edit:{view:'all',fname:'pictures',edit:'ort',fldlabel:'',geteditor:function(){return new Ed_Picture_List_Editor(ctr.user);},getviewer:function(){return new Ed_Picture_List_Editor(ctr.user);},events:{onupload:'onpicupload'},colsp2:true},ort_id:{view:'all',edit:'spho',fldlabel:'Gemeinde',geteditor:function(){var control=new Ed_Select_Editor();control.setData(new Obj_Data_Adapter(je.wis.data.orte,'id','name'));return control;},getviewer:function(){var control=new Ed_Select_Viewer();control.setData(new Obj_Data_Adapter(je.wis.data.orte,'id','name'));return control;}},POI_Name:{view:'all',edit:'ort',fldlabel:'Name',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},POI_Zusatzinfo:{view:'all',edit:'ort',fldlabel:'Zusatzinfos fürs Portal',geteditor:function(){return new Ed_Text_Editor();},getviewer:function(){return new Ed_Text_Viewer();}},POI_Kategorie:{view:'all',edit:'ort',fldlabel:'Kategorie',geteditor:function(){return new Ed_Kategorie_Editor();},getviewer:function(){return new Ed_Kategorie_Viewer();}},kontakt_name:{view:'all',edit:'ort',fldlabel:'Name',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},kontakt_strasse_nr:{view:'all',edit:'ort',fldlabel:'Strasse',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},kontakt_plz:{view:'all',edit:'ort',fldlabel:'PLZ',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},kontakt_ort:{view:'all',edit:'ort',fldlabel:'Ort',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},kontakt_tel:{view:'all',edit:'ort',fldlabel:'Tel m. Vorwahl',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},kontakt_fax:{view:'all',edit:'ort',fldlabel:'Fax m. Vorwahl',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},kontakt_mail:{view:'all',edit:'ort',fldlabel:'Mail',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},kontakt_url:{view:'all',edit:'ort',fldlabel:'URL/Internet',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},kontakt_zusatz:{view:'all',edit:'ort',fldlabel:'Zusatzinformationen (zB Öffnungszeiten)',geteditor:function(){return new Ed_Text_Editor();},getviewer:function(){return new Ed_Text_Viewer();}},live_bild:{view:'all',edit:'ort',fldlabel:'Live-Bild (URL)',geteditor:_this.getStringEditor,getviewer:function(){return new Ed_PicURL_Viewer();}},Bemerk_Intern:{view:'spho',edit:'spho',fldlabel:'Bem. Intern',geteditor:function(){return new Ed_Text_Editor();},getviewer:function(){return new Ed_Text_Viewer();}},Bemerk_Betreiber:{view:'spho',edit:'spho',fldlabel:'Info für Betreiber',geteditor:function(){return new Ed_Text_Editor();},getviewer:function(){return new Ed_Text_Viewer();}},Dateneingabe:{view:'ort',edit:'admin',fldlabel:'Datenerfassung',geteditor:function(){return new Ed_Dateneingabe_Editor();},getviewer:function(){return new Ed_Dateneingabe_Viewer();}},Nachbearbeitung:{view:'spho',edit:'spho',fldlabel:'Nachbearbeitung',geteditor:function(){return new Ed_Bool_Editor();},getviewer:function(){return new Ed_Bool_Viewer();}},hidden:{view:'ort',edit:'ort',fldlabel:'Ausgeblendet',geteditor:function(){return new Ed_Bool_Editor();},getviewer:function(){return new Ed_Bool_Viewer();}},deleted:{view:'admin',edit:'admin',fldlabel:'Gelöscht',geteditor:function(){return new Ed_Bool_Editor();},getviewer:function(){return new Ed_Bool_Viewer();}},wanderziel:{view:'ort',edit:'ort',fldlabel:'POI ist Wanderziel',geteditor:function(){return new Ed_Bool_Editor();},getviewer:function(){return new Ed_Bool_Viewer();}},owner:{view:'ort',edit:'spho',fldlabel:'POI-Zugehörigkeit',geteditor:function(){return new Ed_Dateneingabe_Editor();},getviewer:function(){return new Ed_Dateneingabe_Viewer();}},modifier:{view:'ort',edit:'admin',fldlabel:'Verändert von',geteditor:function(){return new Ed_Dateneingabe_Editor();},getviewer:function(){return new Ed_Dateneingabe_Viewer();}},date_mod:{view:'ort',edit:'admin',fldlabel:'Änderungsdatum',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},min_zoom:{view:'admin',edit:'admin',fldlabel:'Min_Zoom',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},ausdehnung:{view:'admin',edit:'admin',fldlabel:'Ausdehnung',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},lng:{view:'admin',edit:'admin',fldlabel:'lng',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},lat:{view:'admin',edit:'admin',fldlabel:'lat',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor},creadate:{view:'ort',edit:'admin',fldlabel:'Datum',getviewer:_this.getStringViewer,geteditor:_this.getStringEditor}};};Poi_Setup.prototype=new Obj_Setup_Base();;function Poi_select_control(div,poi_cats,title){var _this=this;this.div=div;this.show=true;var div2=document.createElement('div');this.div2=div2;div2.id='poi_legend_control_header';div2.style.cursor='pointer';this.img=document.createElement('img');this.img.style.cssFloat='left';this.img.style.styleFloat='left';div2.onclick=function(){_this.showhide();return false;};div2.appendChild(this.img);var div3=document.createElement('div');div3.style.borderStyle='solid';div3.style.borderColor='white rgb(176, 176, 176) rgb(176, 176, 176) white';div3.style.borderWidth='1px';div3.style.fontSize='12px';div3.style.textAlign='center';div3.appendChild(document.createTextNode((title?title:'POIs')));div2.appendChild(div3);div2.style.width='99px';div2.style.height='20px';div2.style.overflow='hidden';div2.style.border='1px solid black';this.div.appendChild(div2);this.cats=poi_cats;this.cats_sort=[];for(var cid in this.cats){this.cats_sort.push(this.cats[cid]);}
this.cats_sort.sort(function(cat1,cat2){return cat1.sortid-cat2.sortid;});this.cats_input={};this.cats_warn={};this.cats_show={};this.list=document.createElement('ul');this.list.id='poi_legend_control';this.list.style.display='none';this.div.appendChild(this.list);var input=document.createElement("input");input.setAttribute("type","checkbox");input.title='Alle';input.onclick=function(){_this._toggle_all()};input.id='poi_select_cat_all';this.cats_input['all']=input;var ilabel=document.createElement("label");ilabel.setAttribute("for","poi_select_cat_all");ilabel.appendChild(document.createTextNode('Alle'))
var li=document.createElement("li");li.appendChild(input);li.appendChild(ilabel);this.list.appendChild(li);this.showhide();var i,n,id,input,ilabel,li,cat,dummy,warn;for(n=0;n<this.cats_sort.length;n++){cat=this.cats_sort[n];i=cat.id;id='poi_select_cat_'+i;input=document.createElement("input");input.setAttribute("type","checkbox");input.id=id;input.title=cat.text;input.onclick=this.get_toggle_func(i);input.className='input';ilabel=document.createElement("label");ilabel.setAttribute("for","poi_select_cat_"+i);ilabel.innerHTML=['<span class="img"><img src="',cat.image,'" alt="',cat.text,'" title="',cat.text,'" /></span> ',cat.text].join('');li=document.createElement("li");li.className='poi_legend';if(cat.legend){this.cats_show[i]=false;this.cats_input[i]=input;li.appendChild(input);}else{dummy=document.createElement('div');dummy.innerHTML=' ';dummy.className='input';li.appendChild(dummy);}
li.appendChild(ilabel);warn=this._get_warn_dom();this.cats_warn[i]=warn;li.appendChild(warn);this.list.appendChild(li);}};Poi_select_control.prototype._get_warn_dom=function(){var dom=document.createElement('span');dom.innerHTML=' ! ';dom.style.color='#ff0000';dom.title='Bei dieser Zoomstufe nicht sichtbar';dom.style.fontSize='13px';dom.style.fontWeight='bold';dom.style.display='none';return dom;};Poi_select_control.prototype._toggle_all=function(){var input=this.cats_input['all'];var check=(input.checked);for(var cat_id in this.cats_input){this.cats_show[cat_id]=check;this.cats_input[cat_id].checked=check;}
this.onupdate_all(check);};Poi_select_control.prototype.get_toggle_func=function(cat_id){var _this=this;return function(){_this.toggle_cat(cat_id);};};Poi_select_control.prototype.showhide=function(){if(this.show){this.list.style.display="none";this.img.src='media/legende_down_2.gif';this.div2.title="Legende anzeigen";}else{this.list.style.display="block";this.img.src='media/legende_up_2.gif';this.div2.title="Legende ausblenden";}
this.show=(!this.show);};Poi_select_control.prototype.set_cat=function(catid,show){if(this.ischecked(catid)!=show){this.toggle_cat(catid,null);this.cats_input[catid].checked=show;}};Poi_select_control.prototype.ischecked=function(catid){return this.cats_show[catid];};Poi_select_control.prototype.toggle_cat=function(cat_id){this.cats_show[cat_id]=!this.cats_show[cat_id];this.onupdate(cat_id);if(!this.cats_show[cat_id]){this.cats_input['all'].checked=false;}};Poi_select_control.prototype.onupdate=function(cat_id){};Poi_select_control.prototype.onupdate_all=function(show){};Poi_select_control.prototype.set_zoom=function(zoom){for(cat_id in this.cats_input){if(cat_id=='all')continue;var c=this.cats[cat_id];var minz=c.min_zoom;this.cats_input[cat_id].disabled=(zoom<minz);this.cats_warn[cat_id].style.display=((zoom<minz)?'':'none');}};Poi_select_control.prototype.show_all=function(show){this.cats_input['all'].checked=show;this._toggle_all();};;function DragZoomControl(opts_boxStyle,opts_other,opts_callbacks){this.globals={draggingOn:false,cornerTopDiv:null,cornerRightDiv:null,cornerBottomDiv:null,cornerLeftDiv:null,mapPosition:null,outlineDiv:null,mapWidth:0,mapHeight:0,mapRatio:0,startX:0,startY:0,borderCorrection:0};this.globals.style={opacity:.2,fillColor:"#000",border:"2px solid blue"};var style=this.globals.style;for(var s in opts_boxStyle){style[s]=opts_boxStyle[s];}
var borderStyleArray=style.border.split(' ');style.outlineWidth=parseInt(borderStyleArray[0].replace(/\D/g,''));style.outlineColor=borderStyleArray[2];style.alphaIE='alpha(opacity='+(style.opacity*100)+')';this.globals.backStack=[];this.globals.options={buttonHTML:'zoom ...',buttonStartingStyle:{width:'52px',border:'1px solid black',padding:'2px'},buttonStyle:{background:'#FFF'},backButtonHTML:'zoom back',backButtonStyle:{background:'#FFF',display:'none'},buttonZoomingHTML:'Drag a region on the map',buttonZoomingStyle:{background:'#FF0'},overlayRemoveTime:6000,backButtonEnabled:false,stickyZoomEnabled:false};for(var s in opts_other){this.globals.options[s]=opts_other[s]}
if(opts_callbacks==null){opts_callbacks={}}
this.globals.callbacks=opts_callbacks;}
DragZoomControl.prototype=new GControl();DragZoomControl.prototype.saveMapContext=function(text){if(this.globals.options.backButtonEnabled){this.saveBackContext_(text,true);this.globals.backButtonDiv.style.display='block';}};DragZoomControl.prototype.initiateZoom=function(){this.buttonclick_()};DragZoomControl.prototype.initiateZoomBack=function(){if(this.globals.options.backButtonEnabled)this.backbuttonclick_()};DragZoomControl.prototype.initButton_=function(buttonContainerDiv){var G=this.globals;var buttonDiv=document.createElement('div');buttonDiv.innerHTML=G.options.buttonHTML;buttonDiv.id='gzoom-control';buttonDiv.title='Freihand-Zoom';DragZoomUtil.style([buttonDiv],{cursor:'pointer',zIndex:200});DragZoomUtil.style([buttonDiv],G.options.buttonStartingStyle);DragZoomUtil.style([buttonDiv],G.options.buttonStyle);buttonContainerDiv.appendChild(buttonDiv);return buttonDiv;};DragZoomControl.prototype.initBackButton_=function(buttonContainerDiv){var G=this.globals;var backButtonDiv=document.createElement('div');backButtonDiv.innerHTML=G.options.backButtonHTML;backButtonDiv.id='gzoom-back';DragZoomUtil.style([backButtonDiv],{cursor:'pointer',zIndex:200});DragZoomUtil.style([backButtonDiv],G.options.buttonStartingStyle);DragZoomUtil.style([backButtonDiv],G.options.backButtonStyle);buttonContainerDiv.appendChild(backButtonDiv);return backButtonDiv;};DragZoomControl.prototype.setButtonMode_=function(mode){var G=this.globals;if(mode=='zooming'){G.buttonDiv.innerHTML=G.options.buttonZoomingHTML;DragZoomUtil.style([G.buttonDiv],G.options.buttonStartingStyle);DragZoomUtil.style([G.buttonDiv],G.options.buttonZoomingStyle);}else{G.buttonDiv.innerHTML=G.options.buttonHTML;DragZoomUtil.style([G.buttonDiv],G.options.buttonStartingStyle);DragZoomUtil.style([G.buttonDiv],G.options.buttonStyle);}};DragZoomControl.prototype.initialize=function(map){var G=this.globals;var me=this;var mapDiv=map.getContainer();var buttonContainerDiv=document.createElement("div");DragZoomUtil.style([buttonContainerDiv],{cursor:'pointer',zIndex:150});var buttonDiv=this.initButton_(buttonContainerDiv);var backButtonDiv=this.initBackButton_(buttonContainerDiv);mapDiv.appendChild(buttonContainerDiv);var zoomDiv=document.createElement("div");zoomDiv.id='gzoom-map-cover';zoomDiv.innerHTML='<div id="gzoom-outline" style="position:absolute;display:none;"></div><div id="gzoom-cornerTopDiv" style="position:absolute;display:none;"></div><div id="gzoom-cornerLeftDiv" style="position:absolute;display:none;"></div><div id="gzoom-cornerRightDiv" style="position:absolute;display:none;"></div><div id="gzoom-cornerBottomDiv" style="position:absolute;display:none;"></div>';DragZoomUtil.style([zoomDiv],{position:'absolute',display:'none',overflow:'hidden',cursor:'crosshair',top:'0px',zIndex:101});mapDiv.appendChild(zoomDiv);google.maps.Event.addDomListener(buttonDiv,'click',function(e){me.buttonclick_(e);});google.maps.Event.addDomListener(backButtonDiv,'click',function(e){me.backbuttonclick_(e);});google.maps.Event.addDomListener(zoomDiv,'mousedown',function(e){me.coverMousedown_(e);});google.maps.Event.addDomListener(document,'mousemove',function(e){me.drag_(e);});google.maps.Event.addDomListener(document,'mouseup',function(e){me.mouseup_(e);});G.mapPosition=DragZoomUtil.getElementPosition(mapDiv);G.outlineDiv=DragZoomUtil.gE("gzoom-outline");G.buttonDiv=DragZoomUtil.gE("gzoom-control");G.backButtonDiv=DragZoomUtil.gE("gzoom-back");G.mapCover=DragZoomUtil.gE("gzoom-map-cover");G.cornerTopDiv=DragZoomUtil.gE("gzoom-cornerTopDiv");G.cornerRightDiv=DragZoomUtil.gE("gzoom-cornerRightDiv");G.cornerBottomDiv=DragZoomUtil.gE("gzoom-cornerBottomDiv");G.cornerLeftDiv=DragZoomUtil.gE("gzoom-cornerLeftDiv");G.map=map;G.borderCorrection=G.style.outlineWidth*2;this.setDimensions_();this.initStyles_();G.mapCover.onselectstart=function(){return false};return buttonContainerDiv;};DragZoomControl.prototype.getDefaultPosition=function(){return new google.maps.ControlPosition(G_ANCHOR_TOP_LEFT,new google.maps.Size(25,300));};DragZoomControl.prototype.coverMousedown_=function(e){var G=this.globals;var pos=this.getRelPos_(e);G.startX=pos.left;G.startY=pos.top;DragZoomUtil.style([G.mapCover],{background:'transparent',opacity:1,filter:'alpha(opacity=100)'});DragZoomUtil.style([G.outlineDiv],{left:G.startX+'px',top:G.startY+'px',display:'block',width:'1px',height:'1px'});G.draggingOn=true;G.cornerTopDiv.style.top=(G.startY-G.mapHeight)+'px';G.cornerTopDiv.style.display='block';G.cornerLeftDiv.style.left=(G.startX-G.mapWidth)+'px';G.cornerLeftDiv.style.top=G.startY+'px';G.cornerLeftDiv.style.display='block';G.cornerRightDiv.style.left=G.startX+'px';G.cornerRightDiv.style.top=G.startY+'px';G.cornerRightDiv.style.display='block';G.cornerBottomDiv.style.left=G.startX+'px';G.cornerBottomDiv.style.top=G.startY+'px';G.cornerBottomDiv.style.width='0px';G.cornerBottomDiv.style.display='block';if(G.callbacks.dragstart!=null){G.callbacks.dragstart(G.startX,G.startY);}
return false;};DragZoomControl.prototype.drag_=function(e){var G=this.globals;if(G.draggingOn){var pos=this.getRelPos_(e);rect=this.getRectangle_(G.startX,G.startY,pos,G.mapRatio);if(rect.left){addX=-rect.width;}else{addX=0;}
if(rect.top){addY=-rect.height;}else{addY=0;}
DragZoomUtil.style([G.outlineDiv],{left:G.startX+addX+'px',top:G.startY+addY+'px',display:'block',width:'1px',height:'1px'});G.outlineDiv.style.width=rect.width+"px";G.outlineDiv.style.height=rect.height+"px";G.cornerTopDiv.style.height=((G.startY+addY)-(G.startY-G.mapHeight))+'px';G.cornerLeftDiv.style.top=(G.startY+addY)+'px';G.cornerLeftDiv.style.width=((G.startX+addX)-(G.startX-G.mapWidth))+'px';G.cornerRightDiv.style.top=G.cornerLeftDiv.style.top;G.cornerRightDiv.style.left=(G.startX+addX+rect.width+G.borderCorrection)+'px';G.cornerBottomDiv.style.top=(G.startY+addY+rect.height+G.borderCorrection)+'px';G.cornerBottomDiv.style.left=(G.startX-G.mapWidth+((G.startX+addX)-(G.startX-G.mapWidth)))+'px';G.cornerBottomDiv.style.width=(rect.width+G.borderCorrection)+'px';if(G.callbacks.dragging!=null){G.callbacks.dragging(G.startX,G.startY,rect.endX,rect.endY)}
return false;}};DragZoomControl.prototype.mouseup_=function(e){var G=this.globals;if(G.draggingOn){var pos=this.getRelPos_(e);G.draggingOn=false;var rect=this.getRectangle_(G.startX,G.startY,pos,G.mapRatio);if(rect.left)rect.endX=rect.startX-rect.width;if(rect.top)rect.endY=rect.startY-rect.height;this.resetDragZoom_();var nwpx=new google.maps.Point(rect.startX,rect.startY);var nepx=new google.maps.Point(rect.endX,rect.startY);var sepx=new google.maps.Point(rect.endX,rect.endY);var swpx=new google.maps.Point(rect.startX,rect.endY);var nw=G.map.fromContainerPixelToLatLng(nwpx);var ne=G.map.fromContainerPixelToLatLng(nepx);var se=G.map.fromContainerPixelToLatLng(sepx);var sw=G.map.fromContainerPixelToLatLng(swpx);var zoomAreaPoly=new google.maps.Polyline([nw,ne,se,sw,nw],G.style.outlineColor,G.style.outlineWidth+1,.4);try{G.map.addOverlay(zoomAreaPoly);setTimeout(function(){G.map.removeOverlay(zoomAreaPoly)},G.options.overlayRemoveTime);}catch(e){}
polyBounds=zoomAreaPoly.getBounds();var ne=polyBounds.getNorthEast();var sw=polyBounds.getSouthWest();var se=new google.maps.LatLng(sw.lat(),ne.lng());var nw=new google.maps.LatLng(ne.lat(),sw.lng());zoomLevel=G.map.getBoundsZoomLevel(polyBounds);center=polyBounds.getCenter();G.map.setCenter(center,zoomLevel);if(G.callbacks.dragend!=null){G.callbacks.dragend(nw,ne,se,sw,nwpx,nepx,sepx,swpx);}
if(G.options.stickyZoomEnabled){this.initCover_();if(G.options.backButtonEnabled)this.saveBackContext_(G.options.backButtonHTML,false);G.backButtonDiv.style.display='none';}}};DragZoomControl.prototype.setDimensions_=function(){var G=this.globals;var mapSize=G.map.getSize();G.mapWidth=mapSize.width;G.mapHeight=mapSize.height;G.mapRatio=G.mapHeight/G.mapWidth;DragZoomUtil.style([G.mapCover,G.cornerTopDiv,G.cornerRightDiv,G.cornerBottomDiv,G.cornerLeftDiv],{left:'0px',width:G.mapWidth+'px',height:G.mapHeight+'px'});};DragZoomControl.prototype.initStyles_=function(){var G=this.globals;DragZoomUtil.style([G.mapCover,G.cornerTopDiv,G.cornerRightDiv,G.cornerBottomDiv,G.cornerLeftDiv],{filter:G.style.alphaIE,opacity:G.style.opacity,background:G.style.fillColor});G.outlineDiv.style.border=G.style.border;};DragZoomControl.prototype.buttonclick_=function(){var G=this.globals;G.backButtonDiv.style.display='none';if(G.mapCover.style.display=='block'){this.resetDragZoom_();if(G.options.backButtonEnabled){this.restoreBackContext_();if(G.backStack.length==0)G.backButtonDiv.style.display='none';}}else{this.initCover_();if(G.options.backButtonEnabled)this.saveBackContext_(G.options.backButtonHTML,false);}};DragZoomControl.prototype.backbuttonclick_=function(){var G=this.globals;if(G.options.backButtonEnabled&&G.backStack.length>0){this.restoreBackContext_();if(G.callbacks['backbuttonclick']!=null){G.callbacks.backbuttonclick(G.methodCall);}}};DragZoomControl.prototype.saveBackContext_=function(text,methodCall){var G=this.globals;var backFrame={};backFrame["center"]=G.map.getCenter();backFrame["zoom"]=G.map.getZoom();backFrame["maptype"]=G.map.getCurrentMapType();backFrame["text"]=G.backButtonDiv.innerHTML;backFrame["methodCall"]=methodCall;G.backStack.push(backFrame);G.backButtonDiv.innerHTML=text;};DragZoomControl.prototype.restoreBackContext_=function(){var G=this.globals;var backFrame=G.backStack.pop();G.map.setCenter(backFrame["center"],backFrame["zoom"],backFrame["maptype"]);G.backButtonDiv.innerHTML=backFrame["text"];G.methodCall=backFrame["methodCall"];if(G.backStack.length==0)G.backButtonDiv.style.display='none';};DragZoomControl.prototype.initCover_=function(){var G=this.globals;G.mapPosition=DragZoomUtil.getElementPosition(G.map.getContainer());this.setDimensions_();this.setButtonMode_('zooming');DragZoomUtil.style([G.mapCover],{display:'block',background:G.style.fillColor});DragZoomUtil.style([G.outlineDiv],{width:'0px',height:'0px'});if(G.callbacks['buttonclick']!=null){G.callbacks.buttonclick();}};DragZoomControl.prototype.getRelPos_=function(e){var pos=DragZoomUtil.getMousePosition(e);var G=this.globals;return{top:(pos.top-G.mapPosition.top),left:(pos.left-G.mapPosition.left)};};DragZoomControl.prototype.getRectangle_=function(startX,startY,pos,ratio){var left=false;var top=false;var dX=pos.left-startX;var dY=pos.top-startY;if(dX<0){dX=dX*-1;left=true;}
if(dY<0){dY=dY*-1;top=true;}
delta=dX>dY?dX:dY;return{startX:startX,startY:startY,endX:startX+delta,endY:startY+parseInt(delta*ratio),width:delta,height:parseInt(delta*ratio),left:left,top:top}};DragZoomControl.prototype.resetDragZoom_=function(){var G=this.globals;DragZoomUtil.style([G.mapCover,G.cornerTopDiv,G.cornerRightDiv,G.cornerBottomDiv,G.cornerLeftDiv],{display:'none',opacity:G.style.opacity,filter:G.style.alphaIE});G.outlineDiv.style.display='none';this.setButtonMode_('normal');if(G.options.backButtonEnabled&&(G.backStack.length>0))G.backButtonDiv.style.display='block';};var DragZoomUtil={};DragZoomUtil.gE=function(sId){return document.getElementById(sId);}
DragZoomUtil.getMousePosition=function(e){var posX=0;var posY=0;if(!e)var e=window.event;if(e.pageX||e.pageY){posX=e.pageX;posY=e.pageY;}else if(e.clientX||e.clientY){posX=e.clientX+
(document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft);posY=e.clientY+
(document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop);}
return{left:posX,top:posY};};DragZoomUtil.getElementPosition=function(element){var leftPos=element.offsetLeft;var topPos=element.offsetTop;var parElement=element.offsetParent;while(parElement!=null){leftPos+=parElement.offsetLeft;topPos+=parElement.offsetTop;parElement=parElement.offsetParent;}
return{left:leftPos,top:topPos};};DragZoomUtil.style=function(elements,styles){if(typeof(elements)=='string'){elements=DragZoomUtil.getManyElements(elements);}
for(var i=0;i<elements.length;i++){for(var s in styles){elements[i].style[s]=styles[s];}}};DragZoomUtil.getManyElements=function(idsString){var idsArray=idsString.split(',');var elements=[];for(var i=0;i<idsArray.length;i++){elements[elements.length]=DragZoomUtil.gE(idsArray[i])};return elements;};;function ZoomToAllControl(gohome){this.gohome=gohome;}
ZoomToAllControl.prototype=new GControl();ZoomToAllControl.prototype.initialize=function(map){var container=document.createElement("div");var zoomIMG=document.createElement("img");zoomIMG.src="media/zoom_out.gif";zoomIMG.title="Startansicht";container.style.overflow='hidden';container.style.cursor='pointer';container.style.width='22px';container.style.height='22px';zoomIMG.style.width='22px';zoomIMG.style.height='22px';container.appendChild(zoomIMG);google.maps.Event.bindDom(zoomIMG,"click",this,this.gohome);map.getContainer().appendChild(container);return container;}
ZoomToAllControl.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(7,7));}