var msgwindow;
var gebiete;
var globalKarte;
var alleMarkierungen = new Array();
var alleMarkierungen2 = new Array();
var alleMarkierungen3 = new Array();
var TiemOutID;
var map1;
var latStart;
var lngStart;
var zoomStart;

function docountry() {
  var country = document.getElementById('country');
  var tmp = country.options[country.selectedIndex].value;
  if (!(tmp == '*')) {
    var land = parseInt(tmp);
    globalKarte.setCenter(new GLatLng(gebiete[land][1], gebiete[land][0]), gebiete[land][2]);
  }
  return false;
}

function showWindow(myquery) {
  var ogcquery;
  ogcquery = 'http://www.intermar-yachttrack.de/yacht_info/getCallWindow.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 openSysop(){
  sysop = document.getElementById('sysopbox');
  sysop.innerHTML = '<div id="obendiv"><img src="home_schliessen.jpg" align="right" style="cursor: pointer;" onClick="closeCalldiv();"></div><div id="hauptdiv"><iframe frameborder="0" width="410" height="440" src="http://www.intermar-ev.net/verwaltung/kuefu.php"></iframe></div>';
  new Effect.Appear('sysopbox');
  new Draggable('sysopbox');
  return false;
}
 
function openTicker() {
  ticker = document.getElementById('tickerbox');
  ticker.innerHTML = '<div id="tickeroben"><img src="home_schliessen.jpg" align="right" style="cursor: pointer;" onClick="closeTickerdiv();"></div><div id="tickerhaupt"><iframe frameborder="0" width="750" height="220" src="http://www.intermar-yachttrack.de/body_home_liveticker.php"></iframe></div>';
  new Effect.Appear('tickerbox');
  new Draggable('tickerbox');
  return false;
}

function openLogbuch() {
  log = document.getElementById('logbox');
  log.innerHTML = '<div id="logoben"><img src="home_schliessen.jpg" align="right" style="cursor: pointer;" onClick="closeLogdiv();"></div><div id="loghaupt"><iframe frameborder="0" width="730" height="400" src="http://www.intermar-yachttrack.de/showShipList.php"></iframe></div>';
  new Effect.Appear('logbox');
  new Draggable('logbox');
  return false;
}

function openElink(){
  elink = document.getElementById('elinkbox');
  elink.innerHTML = '<div id="elinkoben"><img src="home_schliessen.jpg" align="right" style="cursor: pointer;" onClick="closeElinkdiv();"></div><div id="elinkhaupt"><iframe frameborder="0" width="216" height="430" src="http://www.intermar-ev.net/verwaltung/showKuefu.php"></iframe></div>';
  new Effect.Appear('elinkbox');
  new Draggable('elinkbox');
  return false;
}
 
function openYacht() {
  var mycall = document.getElementById("call").value;
  new Effect.Appear(document.getElementById('calldiv'));
  document.getElementById('maindiv').innerHTML = '<span class="yacht_info_text_anzeige_kl"><span class="txtreg">Please Wait...</span></span>';
  var updater = new Ajax.Updater('maindiv', '/findYacht.php', {asynchronus: true, method: 'get', onComplete: showResponse, parameters: 'search=' + mycall});
  return false;
}

function showResponse(resp) {
  document.getElementById('maindiv').innerHTML = resp.responseText;
  new Draggable('calldiv');
}
 
function closeYachtdiv() {
  new Effect.Fade('calldiv');
  document.getElementById('maindiv').innerHTML = '';
  return true;
}
 
function closeCalldiv() {
  new Effect.Fade('sysopbox');
  document.getElementById('sysopbox').innerHTML = '';
  return true;
}

function closeElinkdiv() {
  new Effect.Fade('elinkbox');
  document.getElementById('elinkbox').innerHTML = '';
  return true;
}

function closeTickerdiv() {
  new Effect.Fade('tickerbox');
  document.getElementById('tickerbox').innerHTML = '';
  return true;
}

function closeLogdiv() {
  new Effect.Fade('logbox');
  document.getElementById('logbox').innerHTML = '';
  return true;
}

function markerClick(evt) {
  return showWindow(this.id);
}

function setSize() {
  if (document.body.clientWidth != null) {
    // microsoft version
    document.getElementById("map").style.height = document.body.clientHeight - 51;
    document.getElementById("map").style.width = document.body.clientWidth;
 
  }
  else {
    // netscape version
    document.getElementById("map").style.width = window.innerWidth;
    document.getElementById("map").style.height = window.innerHeight - 51; 
  }
}

function setMap(extLat, extLng, extZoom, extMapType) {
  map1.setCenter(new GLatLng(extLat, extLng), extZoom);
  map1.setMapType(extMapType);
}

function loadPage() {
  gebiete = new Array()
    gebiete[1] = new Array(6.7655,47.4135,4),
    gebiete[2] = new Array(14.3285,37.8815,5),
    gebiete[3] = new Array(-1.4333,39.2565,6),
    gebiete[4] = new Array(14.583,38.88,6),
    gebiete[5] = new Array(26.733,36.658,6),
    gebiete[6] = new Array(8.963,37.0065,4),
    gebiete[7] = new Array(-45.8675,25.619,4),
    gebiete[8] = new Array(-25.3845,-25.2805,4),
    gebiete[9] = new Array(-100.3833,0.59,5),
    gebiete[10] = new Array(-54.623,-38.425,4),
    gebiete[11] = new Array(75.5705,-5.3495,4),
    gebiete[12] = new Array(-117.639,-22.71,4),
    gebiete[13] = new Array(136.622,-16.678,4),
    gebiete[14] = new Array(-15.61,28.5,8),
    gebiete[15] = new Array(-23.92,16.065,8),
    gebiete[16] = new Array(-77.5,19,5),
    gebiete[17] = new Array(-75.798,19.948,6),
    gebiete[18] = new Array(-92.423,16.825,6),
    gebiete[19] = new Array(-80.9748,11.4413,6),
    gebiete[20] = new Array(-63.75,14.475,6),
    gebiete[21] = new Array(-0.025,55.268,6),
    gebiete[22] = new Array(17.1825,60.4215,5),
    gebiete[23] = new Array(9.408,51.48,6),
    gebiete[24] = new Array(4.8335,52.205,8),
    gebiete[25] = new Array(5.34,52.673,9);
  setSize();
  map1 = new GMap2(document.getElementById("map"));
  map1.setCenter(new GLatLng(0, 0), 3);
  globalKarte = map1;
  map1.addMapType(G_PHYSICAL_MAP);
  addCustomMaps(map1);
  map1.setMapType(seamap);
  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();
  createAllOverlays(); 
  globalKarte.openInfoWindowHtml(new GLatLng(0, 0), "<table><tr><td><img src=\"OpenSeaMap-Logo135x135.png\" height=\"70\" width=\"70\"></td><td>Bitte unterst&uuml;tzen Sie das <a href=\"http://www.openseamap.org\">OpenSeaMap</a> Projekt<br>Zeichnen Sie Hafenpläne und teilen Sie Ihre Erfahrung<br>Diese Karte ist mit Hilfe des <a href=\"http://www.openseamap.org\">OpenSeaMap</a> Projektes erstellt worden</td></tr></table>");
  //  globalKarte.openInfoWindowHtml(new GLatLng(0, 0), "Bitte unterst&uuml;tzen Sie das <a href=\"http://www.openseamap.org\">OpenSeaMap</a> Projekt<br>Diese Karte ist mit Hilfe des <a href=\"http://www.openseamap.org\">OpenSeaMap</a> Projektes erstellt worden");
}

function createAllOverlays() {
  map1.clearOverlays();
  //  map1.addOverlay(new GTileLayerOverlay(seaOverlay));
  alleMarkierungen = new Array();
  alleMarkierungen2 = new Array();
  var request = GXmlHttp.create();
  request.open("GET", "myfile.php", true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var icoSize = new GSize(20, 19);
      var anchorpoint = new GPoint(10, 10);
      var infoPoint = new GPoint(10, 1);
      var xmlDoc = request.responseXML;
      var markers = xmlDoc.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")));
	if (markers[i].getAttribute("oldlat") != null) {
	  var polyOptions = {geodesic:true};
          var oldpoint = new GLatLng(parseFloat(markers[i].getAttribute("oldlat")), parseFloat(markers[i].getAttribute("oldlng")))
	  if (markers[i].getAttribute("newlat") != null) {
            var newpoint = new GLatLng(parseFloat(markers[i].getAttribute("newlat")), parseFloat(markers[i].getAttribute("newlng")))
            var polyline = new GPolyline([newpoint, point, oldpoint], "#FFFFFF", 1, 0.5, polyOptions);
 	  } else {
            var polyline = new GPolyline([point, oldpoint], "#FFFFFF", 1, 0.5, polyOptions);
	  }
	  map1.addOverlay(polyline);
          var marker = new positionMarker(oldpoint, decodeURIComponent(markers[i].getAttribute("icon")).replace(/\+/g, ' '), decodeURIComponent(markers[i].getAttribute("call")), "alt");
          marker.setTime(markers[i].getAttribute("oldtime"));
          marker.setDist(markers[i].getAttribute("dist"));
          marker.setSpeed(markers[i].getAttribute("speed"));
	  map1.addOverlay(marker);
          alleMarkierungen2[decodeURIComponent(markers[i].getAttribute("call"))] = marker;
          GEvent.addDomListener(marker.clickable, "mouseover", oeffneFenster2);
	  if (markers[i].getAttribute("newlat") != null) {
            var marker = new positionMarker(newpoint, decodeURIComponent(markers[i].getAttribute("icon")), decodeURIComponent(markers[i].getAttribute("call")).replace(/\+/g, ' '), "neu");
            marker.setTime(markers[i].getAttribute("newtime"));
	    map1.addOverlay(marker);
            alleMarkierungen3[decodeURIComponent(markers[i].getAttribute("call"))] = marker;
            GEvent.addDomListener(marker.clickable, "mouseover", oeffneFenster3);
 	  }
        }
	var marker = new positionMarker(point, decodeURIComponent(markers[i].getAttribute("icon")), decodeURIComponent(markers[i].getAttribute("call")).replace(/\+/g, ' '), markers[i].getAttribute("mark"));
	if (markers[i].getAttribute("time")	!= null) {
 	  marker.setTime(markers[i].getAttribute("time"));
        } else {
 	  marker.setTime("");
	}
	map1.addOverlay(marker);
	alleMarkierungen[decodeURIComponent(markers[i].getAttribute("call"))] = marker;
	GEvent.addDomListener(marker.clickable, 'click', markerClick);
	GEvent.addDomListener(marker.clickable, "mouseover", oeffneFenster);
      }
    }
  }
  request.send(null);
  TimeOutID = window.setTimeout("createAllOverlays()", 600000);
}

function oeffneFenster3(evt) {
  var rufzeichen = this.id;
  return globalKarte.openInfoWindowHtml(alleMarkierungen3[String(rufzeichen)].point, "<strong>" + rufzeichen + "</strong><br>plotted position at<br>" + alleMarkierungen3[String(rufzeichen)].time + " UTC");
}

function oeffneFenster2(evt) {
  var rufzeichen = this.id;
  return globalKarte.openInfoWindowHtml(alleMarkierungen2[String(rufzeichen)].point, "<strong>" + rufzeichen + "</strong><br>last position at<br>" + alleMarkierungen2[String(rufzeichen)].time + "<br>Distance: " + alleMarkierungen2[String(rufzeichen)].dist + " sm<br>avg. Speed: " + alleMarkierungen2[String(rufzeichen)].speed + " knots");
}

function oeffneFenster(evt) {
  var rufzeichen = this.id;
  return globalKarte.openInfoWindowHtml(alleMarkierungen[String(rufzeichen)].point, "<strong>" + rufzeichen + "</strong><br>Click Icon for <a href=\"javascript:void(showWindow('" + rufzeichen + "'))\">more Information.</a><br>" + alleMarkierungen[String(rufzeichen)].time);
}

function fensterOeffnen(punkt, callsign) {
  map1.openInfoWindowHtml(punkt, "<strong>" + callsign + "</strong><br>Click Icon for <a href=\"javascript:void(showWindow('" + callsign + "'))\">more Information.</a>");
}
