diff options
Diffstat (limited to 'map3.js')
-rw-r--r-- | map3.js | 856 |
1 files changed, 856 insertions, 0 deletions
@@ -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> </td><td>' + convertCoords(locations[this.locid].point.lat()) + '</td></tr>'; + html += '<tr><td>Längengrad:</td><td> </td><td>' + convertCoords(locations[this.locid].point.lng()) + '</td></tr>'; + html += '<tr><td>Datenbank:</td><td> </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> </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> </td><td><a href="' + locations[this.locid].gallery_link + '" target="_blank">Link-Galerie/Knoten</td></tr>'; + } else { + html += '<tr><td>Galerie:</td><td> </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> </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> </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> </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> </td><td>' + convertCoords(point.y) + '</td><td> </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> </td><td>' + convertCoords(point.x)+ '</td><td> </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> ' + 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)); +//##//} |