var commwindow = null;
var okToCallInstaller = false;
var okToCloseInstaller = false;
var timer = null;
var timer2 = null;
var timer3 = null;
var savedComponents;
var savedTraceState;
var JavaScriptTraceState = false;
var savedWidth;
var savedHeight;

window.onload = send_Ready ;

function jsready() {
  document.CachedAppletSupporter.JSReady();
}

function JSReadyConfirm() {
  clearInterval(timer3);
}


function send_Ready() {
  timer3 = setInterval("jsready();", 250);
}

function installComplete(componentName, returnCode, closeWindow, windowToClose) {
  cAlert("installComplete(" + componentName + "," + returnCode + "," + closeWindow + "," + windowToClose + ")");
  focus();
  if (commwindow == null) {
    commwindow = windowToClose;
  }
  document.CachedAppletSupporter.installComplete(componentName, returnCode);
}

function trace(traceMessage) {
  cAlert("ready to call applet trace(" + traceMessage + ")");
  document.CachedAppletSupporter.trace(traceMessage);
}

function installComponent(componentName, width, height, traceObject) {
  savedComponents = new Object(componentName);
  savedTraceState = new Object(traceObject);
  savedWidth      = new Object(width);
  savedHeight     = new Object(height);
  timer = setInterval("installComponent1();", 800);
}

function installComponent1() {
  clearInterval(timer);
  cAlert("installComponent(" + savedComponents + "," + savedWidth + "," + savedHeight + "," + savedTraceState + ")");
  if (commwindow == null || commwindow.closed) {
    if (JavaScriptTraceState) {
      commwindow=window.open("Installer.html", "InstallerWindow"); // a window with a toolbar, etc.
    }
    else {
      commwindow=window.open("Installer.html", "InstallerWindow", "width=" + savedWidth + ",height=" + savedHeight);
    }
  }
  timer = setInterval("installComponent2();", 100);
}

function installComponent2() {
  cAlert("installComponent2()");
  if (okToCallInstaller) {
    clearInterval(timer);
    commwindow.setTraceState(savedTraceState);
    commwindow.installComponent(savedComponents);
  }
}

function closeInstaller()
{
  timer2 = setInterval("closeInstaller1();", 250);
}

function closeInstaller1() {
  cAlert("closeInstaller()");
  if (okToCloseInstaller) {
    clearInterval(timer2);
    if (commwindow != null) {
      commwindow.close();
      commwindow = null;
    }
  }
}

function loadWrappedApplet(appletToLoad) {
  cAlert("loadWrappedApplet(" + appletToLoad + ")");
  var ii;
  var tempApplet;
  var appletName = "CachedAppletLoader";
  var tempAppletName;

  document.applets[appletName].loadWrappedApplet(appletToLoad);
  ii = 1;
  while (true) {
    tempAppletName = appletName + ii;
    tempApplet = document.applets[tempAppletName];
    if (tempApplet == null) {
      break;
    }
    else {
      tempApplet.loadWrappedApplet(appletToLoad);
    }
    ii++;
  }
}

function postMessage(message) {
  cAlert("postMessageApplet(" + message + ")");
  var ii;
  var tempApplet;
  var appletName = "CachedAppletLoader";
  var tempAppletName;

  document.applets[appletName].postMessage(message);
  ii = 1;
  while (true) {
    tempAppletName = appletName + ii;
    tempApplet = document.applets[tempAppletName];
    if (tempApplet == null) {
      break;
    }
    else {
      tempApplet.postMessage(message);
    }
    ii++;
  }
}

function clearMessage() {
  cAlert("clearMessage");
  var ii;
  var tempApplet;
  var appletName = "CachedAppletLoader";
  var tempAppletName;

  document.applets[appletName].clearMessage();
  ii = 1;
  while (true) {
    tempAppletName = appletName + ii;
    tempApplet = document.applets[tempAppletName];
    if (tempApplet == null) {
      break;
    }
    else {
      tempApplet.clearMessage();
    }
    ii++;
  }
}

function showRemovalPage(width, height) {

  // create HODRemove.html filename from HODCached.html file location

  var HODREMOVEHTML_STRING = "HODRemove.html";

  var inputString = new String(location);
  var removePage;
  var removewindow;

  removePage = inputString.substring(0, inputString.lastIndexOf("/") + 1) + HODREMOVEHTML_STRING;

  if (JavaScriptTraceState) {
    removewindow=window.open(removePage, "RemoverWindow"); // a window with a toolbar, etc.
  }
  else {
    removewindow=window.open(removePage, "RemoverWindow", "width=" + width + ",height=" + height);
  }
}

function cAlert(alertMessage) {
  if (JavaScriptTraceState) {
    alert(alertMessage);
  }
}

function setOkToCallInstaller(value) {
  if (value) {
     document.CachedAppletSupporter.installerStarted();
  }
  okToCallInstaller = value;
}



