// AJAX3D2b.js 20061015


var web3Dbrowser = null;
var web3Dbrowsercontext = null;
var listener = null;
var listenersSetup = false;

window.onload = initX3Dbrowser;

function initX3Dbrowser()
{    
  web3Dbrowser = null;

  // Connect host DOM to X3D Browser SAI
  web3Dbrowser = document.objx3d.getBrowser();

  if (web3Dbrowser == null)
  {
    alert("Couldn't get X3D Browser object!");
    return;
  }
  // Connect SAI browserChanged event to DOM
  listener = new Object();
  listener.browserChanged = web3DbrowserChanged;
  // assign DOM  browserChanged() handler
  web3Dbrowser.addBrowserListener(listener);

  // Load target X3D scene 
  web3Dbrowser.loadUrlS ("AJAX3Dlogo2.x3d");
}

function web3DbrowserChanged(evt)
{
  web3Dbrowsercontext = null;
  theText = null;

  if (evt != 0)    // BROWSER_INITIALIZED = 0
  {
    alert("browserChanged(evt) != 0");
    return;
  }

  // target scene is loaded and running
  web3Dbrowsercontext = web3Dbrowser.getExecutionContext();
  if (web3Dbrowsercontext == null)
  {
    alert("Couldn't get executionContext object!");
    return;
  }

  // Add listeners 
  setupListeners();
}

function setListenerObserver(nodeName,fieldName,callback)
{
  var node = null;
  var field = null;

  node = web3Dbrowsercontext.getNode(nodeName);
  if (node)
  {
    field = node.getField(fieldName);
    if (field)
    {
      var observer = new Object;
      observer.readableFieldChanged = callback;
      observer.field = field;
      field.addFieldEventListener(observer);
      field = null;
      return observer;
    }
  }
}
