var listParamsURL = "http://www.schloss-schule.at/presentation/list/courses.txt";

function getXmlHttpObject() {
 var xmlHttp=null;

 try {	// FF, O8+
  xmlHttp=new XMLHttpRequest();
  }
 catch (e) {
  try {	// IE
   xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
   }
  catch (e) {
   xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
  }
return xmlHttp;
}

function readFileHttp(fname, callback, movieHandle) {
 var xmlhttp = getXmlHttpObject();

 xmlhttp.onreadystatechange = function() {
  if ((xmlhttp.readyState==4) && (xmlhttp.status==200)) {	// loaded and OK?
   callback(xmlhttp.responseText, movieHandle);
   }
  }
  xmlhttp.open("GET", fname, true);
  xmlhttp.send(null);
}

function processParameters(text, movieHandle) {
  var splitText = text.split("\n");
  var i = 0;
  var counter = 1;

  if(text.length) {
   for (i=0;i<splitText.length;i+=2) {
    movieHandle.SetVariable("/:T" + counter, splitText[i]);
    if(splitText[i]=="ORNAMENTATION")
     i=i-1;
    else
     movieHandle.SetVariable("/:L" + counter, splitText[i+1]);
    counter=counter+1;
    }

  // we're done!
  movieHandle.SetVariable("/:paramSTATE", "READY");
  }
}

// get flash reference either through object or embed depending on browser
// and check scope first (inside or outside of frame?)

function getFlashMovieObject(frameID, movieName) {
 var frameRef = document.getElementById(frameID);

 if(frameRef==null) {

  // function called from inside frame
  // use "standard flash object ref" procedure

  if (window.document[movieName]) return window.document[movieName];
  if (navigator.appName.indexOf("Microsoft Internet")==-1) {
   if (document.embeds && document.embeds[movieName])
    return document.embeds[movieName]; 
   }
  else
    return document.getElementById(movieName);
  }
 else {

  // function called from outside of frame
  // -> get frame first

  if (frameRef.contentDocument) { // FF
    var frameRefDoc = frameRef.contentDocument;
    } else if (frameRef.contentWindow) { // IE5.5, IE6
      var frameRefDoc = frameRef.contentWindow.document;
      } else if (frameRef.document) { // IE5
        var frameRefDoc = frameRef.document;
        }

  // use "standard flash object ref" procedure, applied to frame reference...

  if (frameRefDoc[movieName]) return frameRefDoc[movieName];
  if (navigator.appName.indexOf("Microsoft Internet")==-1) {
   if (frameRefDoc.embeds && frameRefDoc.embeds[movieName])
    return frameRefDoc.embeds[movieName]; 
   }
  else
    return frameRefDoc.getElementById(movieName);
  }
}

// here we initiate retrieving of external list parameters for flash movie...
function loadListParams() {
 var flashMovie=getFlashMovieObject("content", "list");
 readFileHttp(listParamsURL, processParameters, flashMovie);
}

// this does away with the masking to avoid flicker...
function unhideFlashMovie(frameID, objID) {
 var maskRef = getObjRef(frameID, objID);

 maskRef.style.display = "none";
 }

function pollMenuReset() {
 var menu_loaded = getObjRef("menu", "frame_loaded");	// most importantly, check this first, as we start polling as soon as possible...
 var menuReset = null	// reference object later, when it's safe to do so...
 var menuReady = null	// reference object later, when it's safe to do so...
 var theMenu = null	// reference object later, when it's safe to do so...

 if(menu_loaded != null) {
   if(menu_loaded.value == "done") {
     menuReset = getObjRef("menu", "menu_reset");
     menuReady = getObjRef("menu", "menu_ready");
     if((menuReset!=null)&&(menuReady!=null)) {
       if(menuReady.value == "RESETPOLLINGREADY.") {	// only now it's save to go (main startup done for sure!)
         theMenu=getFlashMovieObject("menu", "ssmenu");
         if(menuReset.value.length) {	// there's a true reset coming in...
           theMenu.GotoFrame(94);	// that's where the receiving code is placed in the flash movie...
           theMenu.Play();		// start receiving
           theMenu.SetVariable("/:menuRESET", menuReset.value);	// transmit
           menuReset.value="";	// clean up
           }
         }
       }
     }
   }
 }

function startPollingMenuReset() {
 setInterval("pollMenuReset()", 150);
 }
