';
var html ='
';
html += '
'+line.name+'';
html += '
';
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 += ' Router: | | '+dnsfrom[i]+' |
';
}
}
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 += ' Router: | | '+dnsto[i]+' |
';
}
}
html += '
';
html += '
';
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)});
line.setMap(map);
lines.push(marker);
}
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 = '
';
if((links[link.name].frequence !== "undef") && (links[link.name].frequence !== "")){
html += 'Frequenz: ' + links[link.name].frequence + '
';
} else {
html += 'Frequenz: undef
';
}
if(links[link.name].channel !== "undef") {
html += 'Kanal: ' + links[link.name].channel + '
';
} else {
html += 'Kanal: undef
';
}
if (links[link.name].value !==-1){
html += 'Mittlerer ETX: ' + links[link.name].value + '
';
} else {
html += 'Mittlerer ETX: undef
';
}
html += 'Name: ' + link.name + '
';
//##// html += 'Länge: ' + link.getLength().toFixed(0) + ' m
';
html += '
';
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 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)
};
}
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 = '
Neuen Knoten eintragen
Nutzen sie den Zoombereich aus!';
html += '
';
html += 'Breitengrad: | | ' + convertCoords(point.y) + ' | | ';
html += ' |
';
html += 'Längengrad: | | ' + convertCoords(point.x)+ ' | | ';
html += ' |
';
html += '
';
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();
$.get( "data.php",onData);
}
}
}
function showFFLogin() {
var html = '
';
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();
$.get( "data.php",onData);
}
}
function showFFLogout(username) {
var html = '
';
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));
//##//}