summaryrefslogtreecommitdiff
path: root/map3.js
diff options
context:
space:
mode:
authorOthmar Gsenger <otti@ffgraz.net>2013-11-12 20:21:09 +0000
committerOthmar Gsenger <otti@ffgraz.net>2013-11-12 20:21:09 +0000
commit9f28da4440bfcea17490dc2f3a6ac900c762cfbd (patch)
tree757d27b26a3f58f7fe155bd0ed5cebf0123d685a /map3.js
parenta47c4eecff79c1d57650b46c437b628d873705b2 (diff)
added alternative version with google maps api v3. very basic support without the possibility to add new nodes
Diffstat (limited to 'map3.js')
-rw-r--r--map3.js856
1 files changed, 856 insertions, 0 deletions
diff --git a/map3.js b/map3.js
new file mode 100644
index 0000000..eff52d1
--- /dev/null
+++ b/map3.js
@@ -0,0 +1,856 @@
+var map = null;
+var linkinfo;
+var physicalMaxLevel;
+var geocoder = null;
+//##//var reloadcon = null;
+var countboxText = null;
+var overlays = new Array();
+overlays["new"] = null;
+overlays["ruler"] = new Array();
+overlays["locations"] = new Array();
+overlays["links"] = new Array();
+var locations = new Array();
+var links = new Array();
+var lines = new Array();
+var markers = new Array();
+
+function initialize(lat, lng, res) {
+ if (!checkBrowser()) {
+ return;
+ }
+ $('#visibox').hide();
+ $('#southeastcontainer').hide();
+ google.maps.visualRefresh=true;
+ var mapOptions = {
+ center: new google.maps.LatLng(lat, lng),
+ zoom: res,
+ mapTypeId: google.maps.MapTypeId.ROADMAP,
+ mapTypeControlOptions: {
+ mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID , google.maps.MapTypeId.SATELLITE , google.maps.MapTypeId.TERRAIN ],
+ style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
+ }
+ };
+ map = new google.maps.Map(document.getElementById("map"),
+ mapOptions);
+//##// map.disableDoubleClickZoom();
+//##// map.enableScrollWheelZoom();
+
+// map.removeMapType(G_HYBRID_MAP);
+// map.removeMapType(G_SATELLITE_MAP);
+//##// map.addMapType(G_PHYSICAL_MAP);
+// map.setMapType(G_HYBRID_MAP);
+
+//##// deaktiviert 2013112 goole maps api v3 incompatibel
+//##// // openStreetMap
+//##// var copyOSM = new GCopyrightCollection("<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a>");
+//##// var copyOGDGraz = new GCopyrightCollection("Open Government Data Graz");
+//##// copyOSM.addCopyright(new GCopyright(1, new GLatLngBounds(new google.maps.LatLng(-90,-180), new google.maps.LatLng(90,180)), 0, " "));
+//##// var tilesOsmarender = new GTileLayer(copyOSM, 1, 17, {tileUrlTemplate: 'http://tah.openstreetmap.org/Tiles/tile/{Z}/{X}/{Y}.png'});
+//##// var mapOsmarender = new GMapType([tilesOsmarender], G_NORMAL_MAP.getProjection(), "openSM", {urlArg: 'y'});
+//##// map.addMapType(mapOsmarender);
+//##// var tilesMapnik = new GTileLayer(copyOSM, 1, 17, {tileUrlTemplate: 'http://tile.openstreetmap.org/{Z}/{X}/{Y}.png'});
+//##// var mapMapnik = new GMapType([tilesMapnik], G_NORMAL_MAP.getProjection(), "Mapnik", {urlArg: 'x'});
+//##// map.addMapType(mapMapnik);
+// var tilesOpenGeoServer = new GTileLayer(copyOGDGraz, 1, 17, {tileUrlTemplate: 'http://services.opengeoserver.org/tiles/1.0.0/globe.aerial_EPSG3857/${Z}/${X}/${Y}.png?origin=nw'});
+// var mapOpenGeoServer = new GMapType([tilesOpenGeoServer], G_NORMAL_MAP.getProjection(), "OpenGeoServer");
+// map.addMapType(mapOpenGeoServer);
+
+//##// physicalMaxLevel = map.getCurrentMapType().getMaximumResolution();
+//##// if(res > physicalMaxLevel) {
+//##// map.setMapType(G_NORMAL_MAP);
+//##// map.setZoom(res);
+//##// }
+//##// map.addControl(new RulerControl());
+//##// reloadcon = new reloadcontrol();
+//##// map.addcontrol(reloadcon);
+//##// map.addControl(new GSmallMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(10,20)));
+//##// map.addControl(new GMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(50,10)));
+
+ google.maps.event.addListener(map, "addoverlay", onAddOverlay);
+ google.maps.event.addListener(map, "zoomend", onZoom);
+ google.maps.event.addListener(map, "click", onMapClick);
+
+ lineinfo = document.createElement("div");
+ document.getElementById("map").appendChild(lineinfo);
+ lineinfo.style.visibility = "hidden"
+
+ dnsinfo = document.createElement("div");
+ document.getElementById("map").appendChild(dnsinfo);
+ dnsinfo.style.visibility = "hidden"
+
+//##// var mt = map.getMapTypes();
+//##// for (var i=0; i<mt.length; i++) {
+//##// mt[i].getMinimumResolution = function() {return 0;}
+//##// mt[i].getMaximumResolution = function() {return 22;}
+//##// }
+
+//##// geocoder = new google.maps.Geocoder();
+
+ var countbox = document.getElementById("countbox");
+ countboxText = document.createTextNode("Aktiv: 0");
+ countbox.appendChild(countboxText);
+
+//##// reloadcon.started();
+//##// GDownloadUrl("data.php", onData);
+ $.get( "data.php",onData);
+}
+
+function checkBrowser() {
+//##// if (GBrowserIsCompatible()) {
+ return true;
+//##// } else {
+//##// var html = '<center><h3 style="color:red">Dein Browser ist leider nicht kompatibel mit der Google Maps API!</h3>';
+//##// html += 'Ich würde vorschlagen du surfst auf: '
+//##// html += '<a href="http://www.mozilla.com/firefox/">http://www.mozilla.com/firefox/</a></center>';
+//##// document.getElementById("map").innerHTML = html;
+//##// return false;
+//##// }
+}
+
+function onAddOverlay(overlay) {
+ switch(overlay.overlaytype) {
+ case "location": overlays["locations"].push(overlay); break;
+ case "link": overlays["links"].push(overlay); break;
+ case "new": {
+ if(overlays["newmarker"]) {
+ map.removeOverlay(overlays["newmarker"]);
+ }
+ overlays["newmarker"] = overlay;
+ break;
+ }
+ case "ruler": {
+ if(overlays["ruler"][overlay.overlaysubtype]) {
+ map.removeOverlay(overlays["ruler"][overlay.overlaysubtype]);
+ }
+ overlays["ruler"][overlay.overlaysubtype] = overlay;
+ break;
+ }
+ }
+}
+
+function onZoom(oldLevel, newLevel)
+{
+ if(newLevel > physicalMaxLevel) {
+ // map.setMapType(G_SATELLITE_MAP);
+ }
+}
+
+function onMapClick(overlay, point)
+{
+ if(!overlay) {
+ map.setCenter(point);
+ setNewMarker(point);
+ }
+}
+
+//##//function onData(data, responseCode) {
+//##// if (responseCode < 200 || responseCode > 299) {
+//##// reloadcon.finished();
+//##// return alert("Fehler: Konnte die Daten nicht laden!\n(Server Antwort-Code: " + responseCode + ")");
+//##// }
+//##// reloadcon.loaded();
+function onData(data) {
+//##// xmlData = GXml.parse(data);
+//##//alert("Data Loaded: " +data.slice( 0, 100 ));
+ //##//xmlData = $.parseXML(data.responseText);
+ xmlData = data;
+
+ for(var loc in overlays["locations"]) {
+ map.removeOverlay(overlays["locations"][loc]);
+ }
+ overlays["locations"] = [];
+ locations = [];
+ if (xmlData) {
+ drawLocations(xmlData);
+ }
+
+ for(var link in overlays["links"]) {
+ map.removeOverlay(overlays["links"][link]);
+ }
+ overlays["links"] = [];
+ links = [];
+ if (xmlData) {
+ drawLinks(xmlData);
+ }
+
+ if (xmlData) {
+ var element = xmlData.getElementsByTagName("count");
+ var count = element[0].getAttribute("number");
+ countboxText.data = "Aktiv: " + count;
+ }
+
+//##// reloadcon.finished();
+}
+
+function drawLocations(xmlData) {
+ var element = xmlData.getElementsByTagName("node");
+ for (var i = 0; i< element.length; i++) {
+ var id = parseInt(element[i].getAttribute("id"));
+ locations[id] = new Location(element[i]);
+
+ var marker = new google.maps.Marker({position: locations[id].point, icon: makeIcon(locations[id].state)});
+ marker.overlaytype = "location";
+ marker.locid = id;
+ google.maps.event.addListener(marker, "click", onLocationClick);
+//##// map.addOverlay(marker);
+ marker.setMap(map);
+ markers.push(marker);
+ }
+ if(document.visibleform.elements["offline"].checked) {
+ toggleVisible("offline");
+ }
+ if(document.visibleform.elements["online"].checked) {
+ toggleVisible("online");
+ }
+}
+
+function Location(element) {
+ var location = new Object();
+ location.name = element.getAttribute("name");
+ var lat = parseFloat(element.getAttribute("lat"));
+ var lng = parseFloat(element.getAttribute("lng"));
+ location.point = new google.maps.LatLng(lat, lng);
+ location.pixel_x = parseInt(element.getAttribute("pixel_x"));
+ location.pixel_y = parseInt(element.getAttribute("pixel_y"));
+ location.state = element.getAttribute("state");
+ location.gallery_link = element.getAttribute("gallery_link");
+ location.dnsnames = element.getAttribute("router_links");
+
+ return location;
+}
+
+function onLocationClick(latlng) {
+ var html = '<div class="locinfo">';
+ html += '<b>' + locations[this.locid].name + '</b>';
+ html += '<table class="locinfo">';
+ html += '<tr><td>Breitengrad:</td><td>&nbsp;</td><td>' + convertCoords(locations[this.locid].point.lat()) + '</td></tr>';
+ html += '<tr><td>Längengrad:</td><td>&nbsp;</td><td>' + convertCoords(locations[this.locid].point.lng()) + '</td></tr>';
+ html += '<tr><td>Datenbank:</td><td>&nbsp;</td><td><a href="http://manman.graz.funkfeuer.at/location/show/' + this.locid + '" target="_blank">Link-Database</td></tr>';
+ html += '<tr><td>Smokeping:</td><td>&nbsp;</td><td><a href="http://stats.graz.funkfeuer.at/smokeping/?target=Funkfeuer.' + locations[this.locid].name + '" target="_blank">Link-Smokeping</td></tr>';
+ if(locations[this.locid].gallery_link) {
+ html += '<tr><td>Galerie:</td><td>&nbsp;</td><td><a href="' + locations[this.locid].gallery_link + '" target="_blank">Link-Galerie/Knoten</td></tr>';
+ } else {
+ html += '<tr><td>Galerie:</td><td>&nbsp;</td><td><a href="http://gallery.funkfeuer.at/v/Graz/Knoten/" target="_blank">Link-Galerie</td></tr>';
+ }
+ if (locations[this.locid].dnsnames){
+ var dnsname = locations[this.locid].dnsnames.split(";");
+ for (var i = 0;i < dnsname.length; ++i){
+ if (dnsname[i]!==""){
+ if(dnsname[i].indexOf(" (")>=0) {
+ link=dnsname[i].substring(0,dnsname[i].indexOf(" ("));
+ } else {
+ link=dnsname[i];
+ }
+ html += '<tr><td> Router:</td><td>&nbsp;</td><td><a href="http://' + link+ '.ext.graz.funkfeuer.at/" target="_blank">'+dnsname[i]+'</td></tr>';
+ }
+ }
+ }
+ html += '</table>';
+ html += '</div>';
+ var infowindow = new google.maps.InfoWindow({
+ content: html
+ });
+ infowindow.open(map,this);
+//##// this.openInfoWindowHtml(html);
+}
+
+function onLineClick(line,latlng) {
+// var html ='<div id="linkbox" class="box">';
+ var html ='<div class="locinfo">';
+ html += '<b>'+line.name+'</b>';
+ html += '<table class="linkinfo">';
+ if (line.dnsfrom){
+ var dnsfrom = line.dnsfrom.split(";");
+ for (var i = 0;i < dnsfrom.length; ++i){
+ if(dnsfrom[i].indexOf(" (")>=0) {
+ link=dnsfrom[i].substring(0,dnsfrom[i].indexOf(" ("));
+ } else {
+ link=dnsfrom[i];
+ }
+ html += '<tr><td> Router:</td><td>&nbsp;</td><td><a href="http://' + link+ '.ext.graz.funkfeuer.at/" target="_blank">'+dnsfrom[i]+'</td></tr>';
+ }
+ }
+
+ if(line.dnsto){
+ var dnsto = line.dnsto.split(";");
+ for (var i = 0;i < dnsto.length; ++i){
+ if(dnsto[i].indexOf(" (")>=0) {
+ link=dnsto[i].substring(0,dnsto[i].indexOf(" ("));
+ } else {
+ link=dnsto[i];
+ }
+ html += '<tr><td> Router:</td><td>&nbsp;</td><td><a href="http://' + link+ '.ext.graz.funkfeuer.at/" target="_blank">'+dnsto[i]+'</td></tr>';
+ }
+ }
+ html += '</table>';
+ html += '</div>';
+ map.openInfoWindowHtml(latlng,html);
+}
+
+function convertCoords(x) {
+ var deg = Math.floor(x);
+ var min = (x - deg) * 60;
+ var sec = (min - Math.floor(min)) * 60;
+ return deg + "° " + Math.floor(min) + "' " + sec.toFixed(0) + "\"";
+}
+
+function drawLinks(xmlData) {
+ var element = xmlData.getElementsByTagName("link");
+ for (var i = 0; i< element.length; i++) {
+ var state;
+ var color;
+ var textcolor;
+ var width;
+ state="Unbekannt"
+ var id = element[i].getAttribute("from") + "-" + element[i].getAttribute("to");
+ links[id] = new Link(element[i]);
+
+ var line = new google.maps.Polyline({path: [links[id].frompoint, links[id].topoint], strokeColor: makeColor(Math.floor(links[id].value)), strokeWeight: makeWeight(Math.floor(links[id].value))});
+ line.name = id;
+ line.textcolor = textcolor;
+ line.state = state;
+ line.overlaytype = "link";
+ line.linkid = id;
+ line.dnsfrom = element[i].getAttribute("dnsfrom");
+ line.dnsto = element[i].getAttribute("dnsto");
+ line.Routerfrom = element[i].getAttribute("from");
+ line.Routerto = element[i].getAttribute("to");
+ google.maps.event.addListener(line, "mouseout", function() { lineinfo.style.visibility = "hidden"; });
+ google.maps.event.addListener(line, "mouseover", function(point) { showLinkInfo(this, point)});
+ google.maps.event.addListener(line, "click", function(point){onLineClick(this,point)});
+// google.maps.event.addListener(line, "click", function(latlng){map.openInfoWindowHtml(latlng, message)});
+
+//##// map.addOverlay(line);
+ line.setMap(map);
+ }
+ if(document.visibleform.elements["defaultroute"].checked) {
+ toggleVisible("defaultroute");
+ }
+ if(document.visibleform.elements["bad"].checked) {
+ toggleVisible("bad");
+ }
+ if(document.visibleform.elements["middle"].checked) {
+ toggleVisible("middle");
+ }
+ if(document.visibleform.elements["good"].checked) {
+ toggleVisible("good");
+ }
+ if(document.visibleform.elements["tunnel"].checked) {
+ toggleVisible("tunnel");
+ }
+ if(document.visibleform.elements["2.4channel"].checked) {
+ toggleVisible("2.4channel");
+ }
+ if(document.visibleform.elements["channel1"].checked) {
+ toggleVisible("channel1");
+ }
+ if(document.visibleform.elements["channel2"].checked) {
+ toggleVisible("channel2");
+ }
+ if(document.visibleform.elements["channel3"].checked) {
+ toggleVisible("channel3");
+ }
+ if(document.visibleform.elements["channel4"].checked) {
+ toggleVisible("channel4");
+ }
+ if(document.visibleform.elements["channel5"].checked) {
+ toggleVisible("channel5");
+ }
+ if(document.visibleform.elements["channel6"].checked) {
+ toggleVisible("channel6");
+ }
+ if(document.visibleform.elements["channel7"].checked) {
+ toggleVisible("channel7");
+ }
+ if(document.visibleform.elements["channel8"].checked) {
+ toggleVisible("channel8");
+ }
+ if(document.visibleform.elements["channel9"].checked) {
+ toggleVisible("channel9");
+ }
+ if(document.visibleform.elements["channel10"].checked) {
+ toggleVisible("channel10");
+ }
+ if(document.visibleform.elements["channel11"].checked) {
+ toggleVisible("channel11");
+ }
+ if(document.visibleform.elements["channel12"].checked) {
+ toggleVisible("channel12");
+ }
+ if(document.visibleform.elements["channel13"].checked) {
+ toggleVisible("channel13");
+ }
+ if(document.visibleform.elements["5channel"].checked) {
+ toggleVisible("5channel");
+ }
+ if(document.visibleform.elements["undef"].checked) {
+ toggleVisible("undef");
+ }
+}
+function showLinkInfo(link, point) {
+ var html = '<div id="linkbox" class="box" style="border-color: ' + link.color + '">';
+ if((links[link.name].frequence !== "undef") && (links[link.name].frequence !== "")){
+ html += '<strong>Frequenz:</strong> ' + links[link.name].frequence + '<br />';
+ } else {
+ html += '<strong>Frequenz:</strong> undef <br />';
+ }
+ if(links[link.name].channel !== "undef") {
+ html += '<strong>Kanal:</strong> ' + links[link.name].channel + '<br />';
+ } else {
+ html += '<strong>Kanal:</strong> undef <br />';
+ }
+ if (links[link.name].value !==-1){
+ html += '<strong>Mittlerer ETX:</strong> ' + links[link.name].value + '<br />';
+ } else {
+ html += '<strong>Mittlerer ETX:</strong> undef <br />';
+ }
+ html += '<strong>Name:</strong> ' + link.name + '<br />';
+//##// html += '<strong>Länge:</strong> ' + link.getLength().toFixed(0) + ' m<br />';
+ html += '</div>';
+ lineinfo.innerHTML = html;
+//##// var pos = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(180, 0));
+
+//##// pos.apply(lineinfo);
+ lineinfo.style.visibility = "visible";
+}
+
+function Link(element) {
+ var link = new Object();
+ link.from = element.getAttribute("from");
+ link.fromid = parseInt(element.getAttribute("fromid"));
+ var lat = parseFloat(element.getAttribute("latfrom"));
+ var lng = parseFloat(element.getAttribute("lngfrom"));
+ link.frompoint = new google.maps.LatLng(lat, lng);
+
+ link.to = element.getAttribute("to");
+ link.toid = parseInt(element.getAttribute("toid"));
+ lat = parseFloat(element.getAttribute("latto"));
+ lng = parseFloat(element.getAttribute("lngto"));
+ link.topoint = new google.maps.LatLng(lat, lng);
+
+ link.value = parseFloat(element.getAttribute("value"));
+ link.channel = element.getAttribute("channel");
+ link.defaultroute = element.getAttribute("defaultroute");
+ link.frequence = element.getAttribute("frequence");
+ return link;
+}
+
+function makeColor(value) {
+ switch(value) {
+ case -1: return '#0000FF';
+ case 0: return '#FF0000';
+ case 1: return '#33bb33';
+ case 2: return '#66bb33';
+ case 3: return '#ff9900';
+ case 4: return '#ffcc00';
+ case 5: return '#cccc33';
+ default: return '#666666'
+ }
+}
+
+function makeWeight(value) {
+ switch(value) {
+ case -1: return 2;
+ case 0: return 1;
+ case 1: return 3;
+ case 2: return 2;
+ case 3: return 1;
+ case 4: return 1;
+ case 5: return 1;
+ default: return 1;
+ }
+}
+
+function makeIcon(type) {
+//##// var icon = new GIcon();
+ var url;
+ switch(type) {
+ case 'ruler': url = "./img/marker_blue.png"; break;
+ case 'newnode': url = "./img/marker_darkred.png"; break;
+ case 'online': url = "./img/marker_online.png"; break;
+ case 'tunnel': url = "./img/marker_tunnel.png"; break;
+ case 'offline': url = "./img/marker_offline.png"; break;
+ }
+ return {
+ 'url': url,
+ // This marker is 20 pixels wide by 32 pixels tall.
+ size: new google.maps.Size(12, 20),
+ // The origin for this image is 0,0.
+ origin: new google.maps.Point(0,0),
+ // The anchor for this image is the base of the flagpole at 0,32.
+ anchor: new google.maps.Point(6, 20)
+ };
+//##// switch(type) {
+//##// case 'ruler': icon.image = "./img/marker_blue.png"; break;
+//##// case 'newnode': icon.image = "./img/marker_darkred.png"; break;
+//##// case 'online': icon.image = "./img/marker_online.png"; break;
+//##// case 'tunnel': icon.image = "./img/marker_tunnel.png"; break;
+//##// case 'offline': icon.image = "./img/marker_offline.png"; break;
+//##// }
+//##// icon.iconSize = new GSize(12,20);
+//##// icon.iconAnchor = new GPoint(6,20);
+//##// icon.infoWindowAnchor = new GPoint(5,1);
+//##// return icon
+}
+
+function toggleVisible(element) {
+ var elements = Object();
+ if (element=='bad' || element=='middle' || element=='good'){
+ document.visibleform.elements["2.4channel"].checked=false;
+ document.visibleform.elements["channel1"].checked=false;
+ document.visibleform.elements["channel2"].checked=false;
+ document.visibleform.elements["channel3"].checked=false;
+ document.visibleform.elements["channel4"].checked=false;
+ document.visibleform.elements["channel5"].checked=false;
+ document.visibleform.elements["channel6"].checked=false;
+ document.visibleform.elements["channel7"].checked=false;
+ document.visibleform.elements["channel8"].checked=false;
+ document.visibleform.elements["channel9"].checked=false;
+ document.visibleform.elements["channel10"].checked=false;
+ document.visibleform.elements["channel11"].checked=false;
+ document.visibleform.elements["channel12"].checked=false;
+ document.visibleform.elements["channel13"].checked=false;
+ document.visibleform.elements["5channel"].checked=false;
+ document.visibleform.elements["undef"].checked=false;
+ }
+ if (element=='2.4channel'){
+ document.visibleform.elements["channel1"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel2"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel3"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel4"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel5"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel6"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel7"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel8"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel9"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel10"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel11"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel12"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel13"].checked=document.visibleform.elements["2.4channel"].checked;
+ }
+ switch(element) {
+ case 'defaultroute': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].defaultroute == '0');"); break;
+ case 'offline': elements.overlays = overlays["locations"]; elements.select = new Function("id", "return (locations[overlays['locations'][id].locid].state == 'offline');"); break;
+ case 'online': elements.overlays = overlays["locations"]; elements.select = new Function("id", "return (locations[overlays['locations'][id].locid].state != 'offline');"); break;
+ case 'bad': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].value >= 6);"); break;
+ case 'middle': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].value >= 3 && links[overlays['links'][id].linkid].value < 6);"); break;
+ case 'good': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].value >= 0 && links[overlays['links'][id].linkid].value < 3);"); break;
+ case 'tunnel': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].value == -1);"); break;
+ case 'channel1': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '1');"); break;
+ case 'channel2': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '2');"); break;
+ case 'channel3': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '3');"); break;
+ case 'channel4': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '4');"); break;
+ case 'channel5': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '5');"); break;
+ case 'channel6': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '6');"); break;
+ case 'channel7': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '7');"); break;
+ case 'channel8': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '8');"); break;
+ case 'channel9': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '9');"); break;
+ case 'channel10': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '10');"); break;
+ case 'channel11': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '11');"); break;
+ case 'channel12': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '12');"); break;
+ case 'channel13': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '13');"); break;
+ case 'undef': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].frequence == 'undef');"); break;
+ case '2.4channel': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].frequence == '2.4');"); break;
+ case '5channel': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].frequence !=='2.4' && links[overlays['links'][id].linkid].frequence !=='undef');"); break;
+
+ }
+
+ if(document.visibleform.elements[element].checked) {
+ hideElements(elements);
+ } else {
+ showElements(elements);
+ }
+}
+
+function hideElements(elements) {
+ for(var o in elements.overlays)
+ if(elements.select(o)) elements.overlays[o].hide();
+}
+
+function showElements(elements) {
+ for(var o in elements.overlays)
+ if(elements.select(o)) elements.overlays[o].show();
+}
+
+function centerAndZoom(lat, lng) {
+ map.setCenter(new google.maps.LatLng(lat, lng), 17);
+}
+
+function addNewNodeText(point) {
+ var x_startpoint = 4080;
+ var lng_startpoint = 15.43844103813;
+ var dx_dlng = 50675.5176;
+ var y_startpoint = 4806;
+ var lat_startpoint = 47.07177327969;
+ var dy_dlat = 75505.521;
+
+ var pixel_x = parseInt(Math.floor(x_startpoint + (point.x - lng_startpoint) * dx_dlng));
+ var pixel_y = parseInt(Math.floor(y_startpoint - (point.y - lat_startpoint) * dy_dlat));
+
+ var link = 'https://manman.graz.funkfeuer.at/location/new?';
+ link += 'z_x=' + Math.floor(pixel_x % 100) + '&z_y=' + Math.floor(pixel_y % 100);
+ link += '&c=' + Math.floor(pixel_x / 100) + '&r=' + Math.floor(pixel_y / 100);
+
+ var html = '<b>Neuen Knoten eintragen<br />Nutzen sie den Zoombereich aus!</b><br /><br />';
+ html += '<table width="100%">';
+ html += '<tr><td>Breitengrad:</td><td>&nbsp;</td><td>' + convertCoords(point.y) + '</td><td>&nbsp;</td>';
+ html += '<td><form action="#" onsubmit="return false"><input type="button" value="hineinzoomen" ';
+ html += 'onclick="javascript:centerAndZoom(' + point.y + ',' + point.x + ')" /></form></td></tr>';
+ html += '<tr><td>Längengrad:</b></td><td>&nbsp;</td><td>' + convertCoords(point.x)+ '</td><td>&nbsp;</td>';
+ html += '<td><form action="#" onsubmit="return false"><input type="button" value="Standort eintragen" ';
+ html += 'onclick="window.open(\'' + link + '\')" /></form></td></tr>';
+ html += '</table>';
+ return html;
+}
+
+function setNewMarker(point) {
+/*
+ var marker = new GMarker(point,{icon: makeIcon('newnode'), draggable: true});
+ google.maps.event.addListener(marker, "dragstart",
+ function() {
+ this.autoclosed = true;
+ this.closeInfoWindow();
+ });
+
+ google.maps.event.addListener(marker, "dragend",
+ function(point) {
+ this.openInfoWindowHtml(addNewNodeText(point));
+ });
+
+ google.maps.event.addListener(marker, "infowindowclose",
+ function () {
+ if(this.autoclosed == true) {
+ this.autoclosed = false;
+ } else {
+ map.removeOverlay(overlays["newmarker"]);
+ overlays["newmarker"] = null;
+ }
+ });
+
+ marker.overlaytype = "newmarker";
+ map.addOverlay(marker);
+ marker.openInfoWindowHtml(addNewNodeText(point));
+*/
+ var marker = new GMarker(point,makeIcon('newnode'));
+ google.maps.event.addListener(marker,"infowindowclose",function () {
+ map.removeOverlay(marker);
+ });
+
+ map.addOverlay(marker);
+ marker.openInfoWindowHtml(addNewNodeText(point));
+}
+
+function fflogin(username, password) {
+ var postbody = "username=" + encodeURIComponent(username) + "&password=" + encodeURIComponent(password) + "&login=Einloggen#";
+//##// GDownloadUrl("login.php", onFFLogin, postbody);
+}
+
+function onFFLogin(data, responseCode) {
+ if (responseCode < 200 || responseCode > 299) {
+ return alert("Fehler: Konnte die Daten nicht laden!\n(Server Antwort-Code: " + responseCode + ")");
+ }
+ xmlData = GXml.parse(data);
+
+ var error = xmlData.getElementsByTagName("error");
+ if(error.length > 0) {
+ alert(error[0].getAttribute("string"));
+ }
+ else {
+ var status = xmlData.getElementsByTagName("status");
+ if(status[0].getAttribute("code") == "logged_in") {
+ var username = xmlData.getElementsByTagName("username")[0].getAttribute("name");
+ showFFLogout(username);
+
+//##// reloadcon.started();
+//##// GDownloadUrl("data.php", onData);
+ }
+ }
+}
+
+function showFFLogin() {
+ var html = '<form action="#" onsubmit="fflogin(this.username.value, this.password.value); this.reset(); return false">';
+ html += '<table><tr>';
+ html += '<td>Benutzername:</td>';
+ html += '<td><input name="username" size="23" type="text" tabindex="1"/></td>';
+ html += '<td rowspan="2" valign="bottom"><input name="login" type="submit" id="login" value="Einloggen" tabindex="3"></td>';
+ html += '</tr><tr>';
+ html += '<td>Passwort:</td>';
+ html += '<td><input name="password" type="password" tabindex="2" /></td>';
+ html += '</tr></table></form>';
+
+ document.getElementById("loginbox").innerHTML = html;
+}
+
+function fflogout() {
+ var postbody = "logout=Ausloggen#";
+//##// GDownloadUrl("login.php", onFFLogout, postbody);
+}
+
+function onFFLogout(data, responseCode) {
+ if (responseCode < 200 || responseCode > 299) {
+ return alert("Fehler: Konnte die Daten nicht laden!\n(Server Antwort-Code: " + responseCode + ")");
+ }
+ xmlData = GXml.parse(data);
+
+ var error = xmlData.getElementsByTagName("error");
+ if(error.length > 0) {
+ alert(error[0].getAttribute("string"));
+ }
+ else {
+ showFFLogin();
+
+//##// reloadcon.started();
+//##// GDownloadUrl("data.php", onData);
+ }
+}
+
+function showFFLogout(username) {
+ var html = '<form action="#" onsubmit="fflogout(); return false">';
+ html += 'Sie sind eingeloggt als:</br >';
+ html += '<b>'+username+'</b>&nbsp;&nbsp;&nbsp;'
+ html += '<input name="login" type="submit" id="logout" value="Ausloggen"></form>';
+
+ document.getElementById("loginbox").innerHTML = html;
+}
+
+function showAddress(address) {
+ if (geocoder) {
+// address += ", Graz, Austria";
+ geocoder.getLatLng(address,
+ function(point) {
+ if (!point) {
+ alert(address + " nicht gefunden");
+ } else {
+ map.setCenter(point);
+ setNewMarker(point);
+ }
+ });
+ }
+}
+
+//##//function ReloadControl() {
+//##//}
+//##//
+//##//ReloadControl.prototype = new GControl();
+//##//
+//##//ReloadControl.prototype.initialize = function(map) {
+//##// var container = document.createElement("div");
+//##// var btnDiv = document.createElement("div");
+//##// btnDiv.className = "btn";
+//##// btnDiv.id = "reloadbtn";
+//##// container.appendChild(btnDiv);
+//##// btnText = document.createTextNode("Daten neu laden");
+//##// btnDiv.appendChild(btnText);
+//##// google.maps.event.addDomListener(btnDiv, "click", function() {
+//##// reloadcon.started();
+//##// GDownloadUrl("data.php", onData);
+//##// });
+//##//
+//##// map.getContainer().appendChild(container);
+//##// return container;
+//##//}
+//##//
+//##//ReloadControl.prototype.started = function() {
+//##// btnText.data = "wird geladen...";
+//##//}
+//##//
+//##//ReloadControl.prototype.loaded = function() {
+//##// btnText.data = "wird verarbeitet...";
+//##//}
+//##//
+//##//ReloadControl.prototype.finished = function() {
+//##// btnText.data = "Daten neu laden";
+//##//}
+//##//
+//##//ReloadControl.prototype.getDefaultPosition = function() {
+//##// return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 7));
+//##//}
+
+
+//##//function RulerControl() {
+//##//}
+//##//
+//##//RulerControl.prototype = new GControl();
+//##//
+//##//RulerControl.prototype.initialize = function(map) {
+//##// var btnText;
+//##// var distBoxOuter;
+//##// var distBox;
+//##// var distText;
+//##//
+//##// function measure() {
+//##// if(overlays["ruler"]["marker1"] && overlays["ruler"]["marker2"]) {
+//##// var line = [overlays["ruler"]["marker1"].getPoint(), overlays["ruler"]["marker2"].getPoint()];
+//##// var dist = overlays["ruler"]["marker1"].getPoint().distanceFrom(overlays["ruler"]["marker2"].getPoint());
+//##// dist = dist.toFixed(0)+" m";
+//##// if(parseInt(dist) > 10000) {
+//##// dist = (parseInt(dist)/1000).toFixed(1) + " km";
+//##// }
+//##// distText.data = "Entfernung: " + dist;
+//##// var poly = new GPolyline(line,'#FFFF00', 3, 1)
+//##// poly.overlaytype = "ruler";
+//##// poly.overlaysubtype = "line";
+//##// map.addOverlay(poly);
+//##// }
+//##// }
+//##//
+//##// function clr(){
+//##// for(var o in overlays["ruler"]) {
+//##// map.removeOverlay(overlays["ruler"][o]);
+//##// }
+//##// overlays["ruler"] = [];
+//##// distBox.style.visibility = "hidden";
+//##// btnText.data = "Entfernung messen";
+//##// }
+//##//
+//##// var container = document.createElement("div");
+//##// var btnDiv = document.createElement("div");
+//##// btnDiv.className = "btn";
+//##// btnDiv.id = "rulerbtn";
+//##// container.appendChild(btnDiv);
+//##// btnText = document.createTextNode("Entfernung messen");
+//##// btnDiv.appendChild(btnText);
+//##// google.maps.event.addDomListener(btnDiv, "click", function() {
+//##// for(var o in overlays["ruler"]) {
+//##// if(overlays["ruler"][o]) {
+//##// clr();
+//##// return;
+//##// }
+//##// }
+//##//
+//##// btnText.data = "Messung beenden";
+//##// distText.data = "Entfernung: 0 m";
+//##// distBox.style.visibility = "visible";
+//##//
+//##// var pnt = map.getCenter();
+//##// marker1 = new GMarker(pnt, {icon: makeIcon('ruler'), draggable: true});
+//##// marker1.overlaytype = "ruler";
+//##// marker1.overlaysubtype = "marker1";
+//##// map.addOverlay(marker1);
+//##//
+//##// marker2 = new GMarker(pnt, {icon: makeIcon('ruler'), draggable: true});
+//##// marker2.overlaytype = "ruler";
+//##// marker2.overlaysubtype = "marker2";
+//##// map.addOverlay(marker2);
+//##//
+//##// google.maps.event.addListener(marker1, "drag", function() { measure(); });
+//##// google.maps.event.addListener(marker2, "drag", function() { measure(); });
+//##// });
+//##// distBoxOuter = document.createElement("div");
+//##// distBoxOuter.id = "distboxouter";
+//##// distBox = document.createElement("div");
+//##// distBox.className = "box";
+//##// distBox.id = "distbox";
+//##// distBox.style.visibility = "hidden";
+//##// distText = document.createTextNode("Entfernung: ? m");
+//##// distBox.appendChild(distText);
+//##// distBoxOuter.appendChild(distBox);
+//##// document.getElementById("map").appendChild(distBoxOuter);
+//##//
+//##// map.getContainer().appendChild(container);
+//##// return container;
+//##//}
+//##//
+//##//RulerControl.prototype.getDefaultPosition = function() {
+ //##//return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(7, 7));
+//##//}