var primary = new Array();
var alternate = new Array();
var alleMarkierungen = new Array();
var allMarkers = new Object();
var maxSymbols = 90;
var allSymbols = false;
var verschoben = false;
var xmin = -180;
var xmax = 180;
var ymin = -90;
var ymax = 90;
var xmitte = 0;
var ymitte = 0;
var randomVar = 0;
var clientwidth, clientheight, mapwidth, mapheight, size, msgwindow, X, Y;
var winlink = false;
var echolink = false;
var irlp = false;
var relay = false;
var aprs = false;
var dstar = false;
var pskmail = false;
var pskmailstn = false;
var map1;
var positionen;
var initialized;
var TimeOutID;
var operation = 'query';
var start = 0;
var count = 40;
var mapImageObject, mapLayerObject;

function ringOffen() {
  var fenster = window.open("../../html/home/popups/popup_ringsurf.html", "ringsurf", "width=568,height=121,resizable=no,alwaysRaised=yes");
}


function ShowCallsFound() {
  var mycall = document.getElementById("call").value;
  new Effect.Appear(document.getElementById('calldiv'));
  //  new Draggable('calldiv');
  var updater = new Ajax.Updater('maindiv', '/php/findCall.php', {asynchronus: true, method: 'get', onComplete: showResponse, parameters: 'search=' + mycall});
  return false;
}

function showResponse(resp) {
  document.getElementById('maindiv').innerHTML = resp.responseText;
}

function XMLLocation(data, responseCode) {
  var xml = GXml.parse(data);
  var ipInfo = xml.documentElement.getElementsByTagName("Hostip");
  var land = GXml.value(ipInfo[0].getElementsByTagName("countryName")[0]);
  var geocoder = new GClientGeocoder();
  geocoder.getLatLng(land, function(point) {if (point) {map1.setCenter(point, 7);primary[29]=true;primary[56]=true;primary[74]=true;primary[82]=true;primary[84]=true;primary[85]=true;loadMap();}});
}

function googleXMLDatei(data, responseCode) {
  var xml = GXml.parse(data);
  var allMarkers = alleMarkierungen;
  var counters = xml.documentElement.getElementsByTagName("count");
  var zahl = parseInt(counters[0].getAttribute("number"));
  var markers = xml.documentElement.getElementsByTagName("marker");
  for (var i = 0; i< markers.length; i++) {
    var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
    var rufzeichen = decodeURIComponent(markers[i].getAttribute("call"));
    if (allMarkers[rufzeichen] == undefined) {
      allMarkers[rufzeichen] = new positionMarker(point, decodeURIComponent(markers[i].getAttribute("icon")).replace(/\+/g, ' '), rufzeichen, "noCol");
      map1.addOverlay(allMarkers[rufzeichen]);
      GEvent.addDomListener(allMarkers[rufzeichen].clickable, 'click', markerClick);
      GEvent.addDomListener(allMarkers[rufzeichen].clickable, "mouseover", oeffneFenster);
    } else {
      allMarkers[rufzeichen].setPoint(point);
    }
  }
  if (zahl < count) {
    start = 0;
    document.getElementById('loadingdiv').style.visibility = "hidden";
    document.getElementById('loadingProgressDiv').style.visibility = "hidden";
    document.getElementById('loadingTextDiv').style.visibility = "hidden";
    document.getElementById('loadingProgressDiv').style.width = "0px";
    if (!initialized) {
      GEvent.addListener(map1, "moveend", function() {prepareLoadMap();});
      GEvent.addListener(map1, "zoomend", function(a,b) {if (a < b) {loadMap();}});
      initialized = true;
    }
    TimeOutID = window.setTimeout("loadMap()", 120000);
  } else {
    start = start + zahl;
    var width = Math.round((start / positionen) * 150);
    document.getElementById('loadingProgressDiv').style.width = width + "px";
    var bounds = getBoundaries();
    GDownloadUrl("/php/googleSymbole1.php?symbols=" + encodeSymbols() + "&sw=" + bounds.getSouthWest().toUrlValue() + "&ne=" + bounds.getNorthEast().toUrlValue() + "&start=" + start + "&count=" + count, function(a,b) {googleXMLDatei(a,b);});
  }
}

function oeffneFenster(evt) {
  var rufzeichen = this.id;
  return map1.openInfoWindowHtml(alleMarkierungen[String(rufzeichen)].point, "<strong>" + rufzeichen + "</strong><br>Click Icon for <a href=\"javascript:void(showWindow('" + rufzeichen + "'))\">more Information.</a>");
}

function fensterOeffnen(punkt, callsign) {
  map1.openInfoWindowHtml(punkt, "<strong>" + callsign + "</strong><br>Click Icon for <a href=\"javascript:void(showWindow('" + callsign + "'))\">more Information.</a>");
}

function prepareLoadMap(){
  if (verschoben) {
    alleMarkierungen = new Array();
    map1.clearOverlays();
  }
  verschoben = !verschoben;
  loadMap();
} 

function getBoundaries() {
  var karte = map1;
  var hoehe = (karte.getBounds().getNorthEast().lat() - karte.getBounds().getSouthWest().lat()) / 2;
  if (karte.getBounds().getNorthEast().lng() < karte.getBounds().getSouthWest().lng()) {
    var breite = (360 + karte.getBounds().getNorthEast().lng() - karte.getBounds().getSouthWest().lng()) / 2; 
  } else {
    var breite = (karte.getBounds().getNorthEast().lng() - karte.getBounds().getSouthWest().lng()) / 2;
  }
  //  var sw = new GLatLng(karte.getBounds().getSouthWest().lat() - (hoehe / 2), karte.getBounds().getSouthWest().lng() - (breite / 2), false);
  //  var ne = new GLatLng(karte.getBounds().getNorthEast().lat() + (hoehe / 2), karte.getBounds().getNorthEast().lng() + (breite / 2), false);
  var sw = new GLatLng(karte.getBounds().getSouthWest().lat(), karte.getBounds().getSouthWest().lng(), false);
  var ne = new GLatLng(karte.getBounds().getNorthEast().lat(), karte.getBounds().getNorthEast().lng(), false);
  return new GLatLngBounds(sw, ne);
}

function showWindow(myquery) {
  ogcquery = 'http://www.positionsreport.de/php/getCallInfo.php?MyCallSign=' + myquery;
  if (msgwindow != null) {
    if (msgwindow.closed) {
      msgwindow = null;
    } else {
      msgwindow.document.open();
    }
  } 
  if (msgwindow == null) {
    msgwindow = window.open(ogcquery, '', 'width=980,height=580,resizable=no,scrollbars=no') ;
  } else {
    msgwindow.location = ogcquery;
  } 
  msgwindow.focus();
  return true;
}

function markerClick(evt) {
  return  showWindow(this.id);
}

function loadPage() {
  window.onresize = resizeMap;
  resizeMap();
  initialize();
  map1 = new GMap2(document.getElementById("googleMapDiv"));
  map1.setCenter(new GLatLng(0, 0), 3);
  globalKarte = map1;
  map1.addMapType(G_PHYSICAL_MAP);
  addCustomMaps(map1);
  map1.setMapType(G_PHYSICAL_MAP);
  map1.addControl(new GLargeMapControl());
  map1.addControl(new GScaleControl());
  map1.addControl(new GMapTypeControl());
  //  map1.addControl(new GOverviewMapControl(new GSize(200,200)));
  map1.addControl(new ShowMousePositionControl());
  map1.enableScrollWheelZoom();

  GDownloadUrl("/php/getIP.php", function(a,b) {XMLLocation(a,b);});
}

function selectAllIcons() {
  if (allSymbols) {
    alleMarkierungen = new Array();
    map1.clearOverlays();
    allSymbols = false;
    document.getElementById('allSelector').src = "../../../pictures/allIcons.gif";
  } else {
    allSymbols = true;
    document.getElementById('allSelector').src = "../../../pictures/allIconsx.gif";
  }
  loadMap();
}

function encodeSymbols() {
  var symbole = '';
  for (var i = 0; i <= maxSymbols; i++) {
    if (primary[i]) {
      if (!(symbole == '')) {
  	symbole = symbole + ',';
      }
      symbole = symbole + encodeURIComponent('/' + String.fromCharCode(i + 33));
    }
    if (alternate[i]) {
      if (!(symbole == '')) {
  	symbole = symbole + ',';
      }
      symbole = symbole + encodeURIComponent('\\' + String.fromCharCode(i + 33));
    }
  }
  if (echolink) {
    if (!(symbole == '')) {
  	symbole = symbole + ',';
      }
    symbole = symbole + 'E0';
  }
  if (irlp) {
    if (!(symbole == '')) {
  	symbole = symbole + ',';
      }
    symbole = symbole + 'I0';
  }
  if (relay) {
    if (!(symbole == '')) {
  	symbole = symbole + ',';
      }
    symbole = symbole + 'R0';
  }
  if (aprs) {
    if (!(symbole == '')) {
  	symbole = symbole + ',';
      }
    symbole = symbole + encodeURIComponent('I&');
  }
  if (dstar) {
    if (!(symbole == '')) {
  	symbole = symbole + ',';
      }
    symbole = symbole + encodeURIComponent('D&');
  }
  if (pskmail) {
    if (!(symbole == '')) {
  	symbole = symbole + ',';
      }
    symbole = symbole + encodeURIComponent('P&');
  }
  if (pskmailstn) {
    symbole = symbole + '&pskmail=true';
  } else {
    symbole = symbole + '&pskmail=false';
  }
  if (winlink) {
    symbole = symbole + '&winlink=true';
  } else {
    symbole = symbole + '&winlink=false';
  }
  if (allSymbols) {
    symbole = symbole + '&allSymbols=true';
  } else {
    symbole = symbole + '&allSymbols=false';
  }
  return symbole;
}

function setCount(data, responseCode) {
  var xml = GXml.parse(data);
  var counters = xml.documentElement.getElementsByTagName("zaehler");
  positionen = parseInt(counters[0].getAttribute("number"));
  var bounds = getBoundaries();
  GDownloadUrl("/php/googleSymbole1.php?symbols=" + encodeSymbols() + "&sw=" + bounds.getSouthWest().toUrlValue() + "&ne=" + bounds.getNorthEast().toUrlValue() + "&start=" + start + "&count=" + count, function(a,b) {googleXMLDatei(a,b);});
}

function loadMap() {
  var symbole = '';
  window.clearTimeout(TimeOutID);
  start = 0;
  resizeMap();
 
  randomVar = randomVar + 1;

  var bounds = getBoundaries();
  document.getElementById('loadingdiv').style.visibility = "visible";
  document.getElementById('loadingProgressDiv').style.visibility = "visible";
  document.getElementById('loadingTextDiv').style.visibility = "visible";
  GDownloadUrl("/php/googleSymbole1.php?symbols=" + encodeSymbols() + "&sw=" + bounds.getSouthWest().toUrlValue() + "&ne=" + bounds.getNorthEast().toUrlValue() + "&getCount=1", function(a,b) {setCount(a,b);});
  return true;
}
 
function resizeMap() {
  if (document.body.clientWidth != null) {
    // microsoft version
    clientwidth = document.body.clientWidth;
    clientheight = document.body.clientHeight; 
  } else {
    // netscape version
    clientwidth = (window.innerWidth -16);
    clientheight = window.innerHeight; 
  }

  mapwidth = clientwidth - 60;
  mapheight = clientheight - 73;
  
  document.getElementById('googleMapDiv').style.width = mapwidth;
  document.getElementById('googleMapDiv').style.height = mapheight;
}

function initialize() {
  new Effect.Opacity('loadingdiv', {duration:0.0, from:0.7, to:0.7});
  initialized = false;
  for (var i = 0; i <= maxSymbols; i++) {
    primary[i] = false;
    alternate[i] = false;
  }
  allSymbols = false;
}

function symClick(icon) {
  var table = icon.substring(0,3);
  var symStr = icon.substring(4,7);
  var symbol = parseInt(symStr, 10);
  if (icon == 'echolink') {
    var image = document.getElementById('echolink_icon_01');
    if (echolink) {
      image.src ="../../pictures/home/echolink_icons/echolink_icon_01.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/echolink_icon_aktiv_01.jpg";
    }
    echolink = !echolink;
  } else if (icon == 'irlp') {
    var image = document.getElementById('echolink_icon_02');
    if (irlp) {
      image.src ="../../pictures/home/echolink_icons/irlp_icon_02.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/irlp_icon_activ_02.jpg";
    }
    irlp = !irlp;
  } else if (icon == 'relay') {
    var image = document.getElementById('echolink_icon_03');
    if (relay) {
      image.src ="../../pictures/home/echolink_icons/relay_icon_03.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/relay_icon_activ_03.jpg";
    }
    relay = !relay;
  } else if (icon == 'winlink') {
    var image = document.getElementById('winlink_icon_01');
    if (winlink) {
      image.src ="../../pictures/home/winlink_icons/winlink_icon_01.jpg";
    } else {
      image.src ="../../pictures/home/winlink_icons/winlink_icon_aktiv_01.jpg";
    }
    winlink = !winlink;
  } else if (icon == 'aprs') {
    var image = document.getElementById('echolink_icon_04');
    if (aprs) {
      image.src ="../../pictures/home/echolink_icons/i_inakt.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/i_akt.jpg";
    }
    aprs = !aprs;
  } else if (icon == 'dstar') {
    var image = document.getElementById('echolink_icon_05');
    if (dstar) {
      image.src ="../../pictures/home/echolink_icons/d_inakt.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/d_akt.jpg";
    }
    dstar = !dstar;
  } else if (icon == 'pskmail') {
    var image = document.getElementById('echolink_icon_06');
    if (pskmail) {
      image.src ="../../pictures/home/echolink_icons/p_inakt.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/p_akt.jpg";
    }
    pskmail = !pskmail;
  } else if (icon == 'pskmailstn') {
    var image = document.getElementById('echolink_icon_07');
    if (pskmailstn) {
      image.src ="../../pictures/home/echolink_icons/p_inakt.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/p_akt.jpg";
    }
    pskmailstn = !pskmailstn;
  } else {
    var image = document.getElementById(icon);
    if (table == 'pri') {
      if (primary[symbol]) {
	image.src = '../../../pictures/home/aprs_icons/aprs_icons_inaktiv/' + icon + '.jpg';
      } else {
	image.src = '../../../pictures/home/aprs_icons/aprs_icons_aktiv/' + icon + '.jpg';
      }
      primary[symbol] = !primary[symbol];
    } else {
      if (alternate[symbol]) {
	image.src = '../../../pictures/home/aprs_icons/aprs_icons_inaktiv/' + icon + '.jpg';
      } else {
	image.src = '../../../pictures/home/aprs_icons/aprs_icons_aktiv/' + icon + '.jpg';
      }
      alternate[symbol] = !alternate[symbol];
    }
  }
  loadMap();
}

function resetIcons() {
  var pri;
  var alt;
  var icon;
  var image;
  alleMarkierungen = new Array();
  map1.clearOverlays();
  allSymbols = false;
  document.getElementById('allSelector').src = "../../../pictures/allIcons.gif";
  for (var i = 0; i <= maxSymbols; i++) {
    primary[i] = false;
    alternate[i] = false;
    icon = eval(i);
    if (i < 10) {
      icon = '0' + icon; 
    }
    if (i < 100) {
      icon = '0' + icon;
    }
    pri = 'pri_' + icon;
    alt = 'alt_' + icon;
    image = document.getElementById(pri);
    image.src = '../../../pictures/home/aprs_icons/aprs_icons_inaktiv/' + pri + '.jpg';
    image = document.getElementById(alt);
    image.src = '../../../pictures/home/aprs_icons/aprs_icons_inaktiv/' + alt + '.jpg';
  }
}

function changeImg(name, source) {
  name.src = source;
  return true;
}

function closediv(divToClose) {
  new Effect.Fade(divToClose);
  return true;
}

function aktualisiereDiv(path) {
  var icon;
  var pri;
  var alt;
  var image;
  if (path == 'aprs_div.html') {
    for (var i = 0; i <= maxSymbols; i++) {
      icon = eval(i);
      if (i < 10) {
        icon = '0' + icon; 
      }
      if (i < 100) {
        icon = '0' + icon;
      }
      pri = 'pri_' + icon;
      alt = 'alt_' + icon;
      if (primary[i]) {
        image = document.getElementById(pri);
        image.src = '../../../pictures/home/aprs_icons/aprs_icons_aktiv/' + pri + '.jpg';        
      } else {
        image = document.getElementById(pri);
        image.src = '../../../pictures/home/aprs_icons/aprs_icons_inaktiv/' + pri + '.jpg';
      }
      if (alternate[i]) {
        image = document.getElementById(alt);
        image.src = '../../../pictures/home/aprs_icons/aprs_icons_aktiv/' + alt + '.jpg';      
      } else {
        image = document.getElementById(alt);
        image.src = '../../../pictures/home/aprs_icons/aprs_icons_inaktiv/' + alt + '.jpg';
      }
    }     
    if (allSymbols) {
      document.getElementById('allSelector').src = "../../../pictures/allIconsx.gif";
    } else {
      document.getElementById('allSelector').src = "../../../pictures/allIcons.gif";
    }
  } else if (path == 'winlink_div.html') {
    var image = document.getElementById('winlink_icon_01');
    if (winlink) {
      image.src ="../../pictures/home/winlink_icons/winlink_icon_aktiv_01.jpg";
    } else {
      image.src ="../../pictures/home/winlink_icons/winlink_icon_01.jpg";
    }
  } else if (path == 'relay_div.html') {
    var image = document.getElementById('echolink_icon_01');
    if (echolink) {
      image.src ="../../pictures/home/echolink_icons/echolink_icon_aktiv_01.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/echolink_icon_01.jpg";
    }
    var image = document.getElementById('echolink_icon_02');
    if (irlp) {
      image.src ="../../pictures/home/echolink_icons/irlp_icon_activ_02.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/irlp_icon_02.jpg";
    }
    var image = document.getElementById('echolink_icon_03');
    if (relay) {
      image.src ="../../pictures/home/echolink_icons/relay_icon_activ_03.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/relay_icon_03.jpg";
    }
    var image = document.getElementById('echolink_icon_04');
    if (aprs) {
      image.src ="../../pictures/home/echolink_icons/i_akt.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/i_inakt.jpg";
    }
    var image = document.getElementById('echolink_icon_05');
    if (dstar) {
      image.src ="../../pictures/home/echolink_icons/d_akt.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/d_inakt.jpg";
    }
    var image = document.getElementById('echolink_icon_06');
    if (pskmail) {
      image.src ="../../pictures/home/echolink_icons/p_akt.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/p_inakt.jpg";
    } 
    var image = document.getElementById('echolink_icon_07');
    if (pskmailstn) {
      image.src ="../../pictures/home/echolink_icons/p_akt.jpg";
    } else {
      image.src ="../../pictures/home/echolink_icons/p_inakt.jpg";
    }
  }
}

function loadInDiv(updateDiv, path) {
  var updater = new Ajax.Updater(updateDiv, path, {asynchronus: false, method: 'get'});
  setTimeout("aktualisiereDiv(\'"+path+"\')", 100);
}

function loadDiv(updateDiv, path, frameDiv, handleDiv) {
  var updater = new Ajax.Updater(updateDiv, path, {asynchronus: false, method: 'get'});
  new Effect.Appear(frameDiv);
  new Draggable(frameDiv, {handle: handleDiv});
}

function loadCall() {
  var updater = new Ajax.Updater('callmain', '../../php/findCall_new.php', {asynchronus: false, method: 'get', parameters: 'search=' + document.getElementById("call").value});
}

function loadWinLinkCall() {
  var updater = new Ajax.Updater('callmain', '../../php/findCall_new.php', {asynchronus: false, method: 'get', parameters: 'search=' + document.getElementById("winCall").value + '&winlink=1'});
}

function loadRelayCall() {
  var updater = new Ajax.Updater('callmain', '../../php/findCall_new.php', {asynchronus: false, method: 'get', parameters: 'search=' + document.getElementById("relayCall").value + '&echolink=1'});
}
