<!--
//
// This small OO code was written by KjM for the ACARS web interface
// The X-browser addEvent() function was written Scott Andrew
// 

// Shortcuts
var dcm = document;

// Wrapper for getElementById
function gE(id) {return dcm.getElementById(id);}

// Image Fetch Object
var iF = {

  // Cross browser event handling by Scrott Andrew
  addEvent: function(obj, evType, fn, useCapture) {
    if (obj.addEventListener) {
      obj.addEventListener(evType, fn, useCapture);
      return true;
    } else if (obj.attachEvent) {
      var r = obj.attachEvent('on'+evType,fn);
      return r;
    } else {
      obj['on'+evType] = fn;
    }
  },

  // Init image fetch 
  init: function() {

    // DOM supported?
    if (!dcm.getElementsByTagName) return;    

    // Create testimage
    iF.tstimg = new Image();
    iF.tstimg.src = "http://www.acarsd.org/webacars/empty.gif";
    iF.addEvent(iF.tstimg, 'load', iF.loaddone, false);
    iF.icons = 1; gE("iconoff").innerHTML = "Disable aircraft icons";

    // Set size of master window
    var a = gE("mainWindow");
    iF.mainheight = 650; iF.mainwidth = 600; iF.mapWindow = false; iF.flightmapWindow = false;
    iF.addEvent(window, "unload", iF.closeMapWindows, false);
    gE("ACARS").style.height = iF.mainheight;

    // Create icon widgets
    var d = gE("icons"); var html = "";
    for (var i = 4; i > 0; i--) {
      html += "<a href='JavaScript:iF.fullSize("+i+")'><img src='http://www.acarsd.org/webacars/empty.gif' class='acicon' id='vis"+i+"'></a><br><div class='iconfooter' id='ico"+i+"'>&nbsp;</div>";
    }
    d.innerHTML = html;
  },

  // Show fullsize version of an a/c icon
  fullSize: function(id) {
    var c = gE("ico"+id).innerHTML;
    var m = c.replace(/.*[[]+/,""); 
    m = m.substr(0,m.length-1); 
    if ((!m.length) || (m=="&nbsp")) return;

    // Show all available images for this aircraft
    iF.psp = window.open("http://www.planespotting.net/lookup.php?reg="+m,"PlaneSpotting","toolbar=1,location=1,directories=1,status=1,menubar=1,scrollbars=1,resizable=1,height=680,width=1024");
  },

  // Close Map Window if open
  closeMapWindows: function() {
    if (iF.mapWindow)       iF.mapwin.close();
    if (iF.flightmapWindow) iF.flightmapwin.close();
    iF.mapWindow = iF.flightmapWindow = false;
  },

  // Open flightmap window
  openFlightMapWin: function() {
    iF.flightmapwin = window.open("/?fid=17&cid="+clientid,"FLIGHTMAP","toolbar=no,location=no,history=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,height=650,width=1010");
    iF.flightmapWindow = true;
  },

  // Open map window
  openMapWin: function(r) {
    iF.mapwin = window.open("/?fid=12","MAP","toolbar=no,location=no,history=no,directories=no,status=no,menubar=no,scrollbars=no,resizable="+((r==null)?"no":"yes")+",height=647,width=880");
    iF.mapWindow = true;
  },

  // Icon is in display or in fetch
  iconOK: function(reg,full) {

    // This icon is already in display?
    for (i=1;i<=4;i++) {
      var im = gE("ico"+i);
      if (im.innerHTML.indexOf("["+reg+"]") != -1) return false;
    }

    // No full check
    if (!full) return true;

    // First in fetch array
    if ((iF.fArray) && (iF.fArray[0] == reg)) return false;
    return true;
  },
 
  // Enable or Disable aircraft icons
  iconsOnOff: function() {
    var i = gE("iconoff"); var a = gE("ACARS");
    if (iF.icons) {
      iF.icons = 0;
      i.innerHTML = "Enable aircraft icons";
      gE("icons").style.display="none";
      a.style.width = iF.mainwidth+200; a.style.height = iF.mainheight;
    } else {
      gE("icons").style.display="block";
      iF.icons = 1; a.style.width = iF.mainwidth; 
      a.style.height = iF.mainheight;
      i.innerHTML = "Disable aircraft icons";
    }
  },

  // Insert new image request into internal array
  fetch: function(reg,info) {

    // We can fetch this icon?
    if (!iF.iconOK(reg,1)) return;

    // Queue initialized?
    if (!iF.fArray) {
      iF.fArray = new Array(); iF.iArray = new Array();
    }

    // There is a running request?
    iF.fArray[iF.fArray.length] = reg;
    iF.iArray[iF.iArray.length] = info;
    if (iF.fArray.length > 1) return;

    // Load image
    iF.tstimg.src = "http://www.fysb.de/WEBICON/"+reg;
  },

  // Image loaded
  loaddone: function() {

    // Show only existing icons
    if (!iF.fArray) return;
    if ((iF.iconOK(iF.fArray[0],0)) && (iF.tstimg.width == 200)) {

      // Move all visible images up
      for (var i=4;i>1;i--) {
        var im = gE("vis"+i); var nw = gE("vis"+(i-1));
        im.src = nw.src;

        // Change descriptions
        var im = gE("ico"+i); var nw = gE("ico"+(i-1));
        im.innerHTML = nw.innerHTML;
      }

      // Show last image
      gE("vis1").src = iF.tstimg.src;
      gE("ico1").innerHTML = iF.iArray[0];
    }

    // Remove entry from the internal queue
    iF.fArray.shift(); iF.iArray.shift();

    // Get the next element from our queue
    if (iF.fArray.length) {
      iF.tstimg.src = "http://www.fysb.de/WEBICON/"+iF.fArray[0];
    }
  },

  // Open/Close PopIn Windows
  OpenClose: function(name,mode) {
    var i = gE(name);
    if (mode) {
      if (iF.lastopen) iF.OpenClose(iF.lastopen,0);
      iF.lastopen = name;
    } 

    // Show/Hide Window
    i.style.display=(mode)?"inline":"none";
    if (!mode) iF.lastopen = "";
  },
  
  // Needed for stupid MSIE
  noop: []
}

// Start Image Object Handler
iF.addEvent(window,'load',iF.init,false);

//-->
