//###### 2006-11-28

   var Elements = new Array();
   var ElementNames = new Array();
   var StableElements = new Array();

   function onScopeLoaded() {
     var maxDur = 0;
     var historyPath = top.window.document.getElementById("INFIXNav").contentWindow;
     if (document.all) {
       if (!historyPath) historyPath=top.window.document.frames["INFIXNavF"];
     }
     if (historyPath.INFIXe[0].eName=="[stable]") {
       if (window.top.stableDone) {
         top.window.history.back();
         return;
       }
     }
     if (Elements.length>0) {
       maxDur=hideElements(Elements[0]);
       if (maxDur>0) {
         setTimeout("buildScope();",maxDur*1000+100);
       } else {
	 buildScope();
       }
     } else {
       buildScope();
     }
   }

   function buildScope() {
     var historyPath = top.window.document.getElementById("INFIXNav").contentWindow;

     if (document.all) {
       if (!historyPath) historyPath=window.top.document.frames["INFIXNavF"]; // For IE5.0 ##### not infixnavf ???
     }
     
     if (Elements.length>0) {
       removeElements(Elements[0]);
     }

     Elements = historyPath.INFIXe;
     var rootE = Elements[0]; 
     
     createElements(rootE);
     createNameTable();
     showElements(rootE);

     if (Elements[0].eName=="[stable]") {
       window.top.stableDone=true;
     }
   }

   function createNameTable() {
     ElementNames = new Array();
     for (i=0;i<Elements.length;i++) {
       if (!ElementNames[Elements[i].eName]) {
         ElementNames[Elements[i].eName]=Elements[i];
       } 
     }
     for (i=0;i<StableElements.length;i++) {
       if (!ElementNames[StableElements[i].eName]) {
         ElementNames[StableElements[i].eName]=StableElements[i];
       } 
     }
   }

   function removeElements(elem) {
     if (elem.eChildren.length > 0) {
       for (var i=0;i<elem.eChildren.length;i++) {
         removeElements(elem.eChildren[i]);
       }
     }
     var dElem = document.getElementById("DIV"+elem.eName);
     if (dElem) {
       if (document.all) dElem.style.display="none"; // Add to prevent IE5.0 to crash
       dElem.parentNode.removeChild(dElem);
     }
     var mElem = document.getElementsByName("MAP"+elem.eName);
     if (mElem) {
       if (mElem.length>0) {
         mElem[0].parentNode.removeChild(mElem[0]);
       }
     }
     var jElem = document.getElementById("JS"+elem.eName);
     if (jElem) {
       jElem.parentNode.removeChild(jElem);
     }
   }

   function ChangeTo(doc) {
     if (window.opera) {
       window.top.INFIXNavF.location.href=doc+".html";
     } else {
       window.top.INFIXNavF.location.href=docDirPrefix+doc+".html";
     }
   }

   function createElements(elem) {
     createSingleElement(elem);
     for (var i=0;i<elem.eChildren.length;i++) {
       createElements(elem.eChildren[i]);
     }
   }
   
   function createSingleElement(elem) {
     if (elem.eMap) insertElementString(elem.eMap);
     if (elem.eType==4) {
       insertScript(elem.eScript,elem.eName);
     } else {
       insertElementString(elem.eString);
       attachEvents(elem);
     }
   }

   function IfxREShowElementStepA(elem) {
     var divELEM = document.getElementById("DIV"+elem.eName);
     
     if (elem.eType==5) {if (elem.eOnShow) eval(elem.eOnShow);}
     if (divELEM != null) {
        if (divELEM.filters) {
          if (elem.eFXShowHasBT) {
            divELEM.filters.blendTrans.stop();
            divELEM.filters.blendTrans.Duration = elem.eFXShowBTDuration;
            divELEM.filters.blendTrans.Apply();
          }
          if (elem.eFXShowHasRT) {
            divELEM.filters.revealTrans.stop();
            divELEM.filters.revealTrans.Transition = elem.eFXShowRT;
            divELEM.filters.revealTrans.Duration = elem.eFXShowRTDuration;
            divELEM.filters.revealTrans.Apply();
          }
        }
	if (elem.eOnShow) eval(elem.eOnShow);
	divELEM.style.visibility="visible";
        if (elem.eAfterShow) eval(elem.eAfterShow);
        if (divELEM.filters) {
          if (elem.eFXShowHasBT) {
            divELEM.filters.blendTrans.Play();
          }
          if (elem.eFXShowHasRT) {
            divELEM.filters.revealTrans.Play();
          }
        }
     }
   }

   function showElements(elem) {
     IfxREShowElementStepA(elem);
     for (var i=0;i<elem.eChildren.length;i++) {
       showElements(elem.eChildren[i]);
     }
     if (elem.eType==5) {if (elem.eAfterShow) eval(elem.eAfterShow);}
   }

   function IfxREShowSingleElement(elem) {
     IfxREShowElementStepA(elem);
     if (elem.eType==5) {if (elem.eAfterShow) eval(elem.eAfterShow);}
   }

   function hideElements(elem) {
     var curDur = 0;
     var maxDur = 0;
     var divELEM = document.getElementById("DIV"+elem.eName);

     if (elem.eType==5) {if (elem.eOnHide) eval(elem.eOnHide);}
     if (divELEM != null) {
        if (divELEM.filters) {
          if (elem.eFXHideHasBT) {
            divELEM.filters.blendTrans.stop();
            divELEM.filters.blendTrans.Duration = elem.eFXHideBTDuration;
            divELEM.filters.blendTrans.Apply();
            if (maxDur<elem.eFXHideBTDuration) maxDur=elem.eFXHideBTDuration;
          }
          if (elem.eFXHideHasRT) {
            divELEM.filters.revealTrans.stop();
            divELEM.filters.revealTrans.Transition = elem.eFXHideRT;
            divELEM.filters.revealTrans.Duration = elem.eFXHideRTDuration;
            divELEM.filters.revealTrans.Apply();
            if (maxDur<elem.eFXHideRTDuration) maxDur=elem.eFXHideRTDuration;
          }
        }
        if (elem.eOnHide) eval(elem.eOnHide);
	divELEM.style.visibility="hidden";
        if (elem.eAfterHide) eval(elem.eAfterHide);
        if (divELEM.filters) {
          if (elem.eFXHideHasBT) {
            divELEM.filters.blendTrans.Play();
          }
          if (elem.eFXHideHasRT) {
            divELEM.filters.revealTrans.Play();
          }
        }
     }
     for (var i=0;i<elem.eChildren.length;i++) {
       curDur=hideElements(elem.eChildren[i]);
       if (maxDur<curDur) maxDur=curDur;
     }
     if (elem.eType==5) {if (elem.eAfterHide) eval(elem.eAfterHide);}
     return maxDur;
   }

   function attachEvents(elem) {
     var dElem;
     if (elem.eEvents) {
       dElem = document.getElementById("DIV"+elem.eName);
       if (dElem) {  
         for (i=0;i<elem.eEvents.length;i++) {
           dElem[elem.eEvents[i].event] = eval(elem.eEvents[i].code);
         }
       }
     }
   }

   function insertElementString(eString) {
     if (document.all) {
        document.body.insertAdjacentHTML("beforeEnd",eString);
     } else {
        var range = document.createRange();
        range.setStartBefore(document.body.lastChild);
        var docFrag = range.createContextualFragment(eString);
        document.body.appendChild(docFrag);
     }
   }

   function insertScript(eString,eName) {
     var dHead=document.getElementsByTagName('head')[0];
     var nScript=document.createElement("script");
     nScript.type="text/javascript";
     if (window.opera) {
        nScript.innerText=eString;
     } else {
        nScript.text=eString;  //#### for opera: .innerText, not .text
     }
     nScript.id="JS"+eName;
     dHead.appendChild(nScript);
   }

   function showElement(elemName) {
     var elem = ElementNames[elemName];
     if (elem) {
       var divELEM = document.getElementById("DIV"+elemName);
       if (!divELEM) {
         var childNum = Elements[0].eChildren.length;
         Elements[0].eChildren[childNum] = elem;
         createElements(elem);
       }
       showElements(elem);
     }
   }

   function showSingleElement(elemName) {
     var elem = ElementNames[elemName];
     if (elem) {
       var divELEM = document.getElementById("DIV"+elemName);
       if (!divELEM) {
         var childNum = Elements[0].eChildren.length;
         Elements[0].eChildren[childNum] = elem;
         createSingleElement(elem);
       }
     }
     IfxREShowSingleElement(elem);
   }    

   function hideElement(elemName) {
     var elem = ElementNames[elemName];
     if (elem) {
       var divELEM = document.getElementById("DIV"+elemName);
       if (divELEM) {
         hideElements(elem);
       }
     }
   }

   function createElement(elemName) {
     var elem = ElementNames[elemName];
     var divELEM = document.getElementById("DIV"+elemName);
     if (!divELEM) {
       var childNum = Elements[0].eChildren.length;
       Elements[0].eChildren[childNum] = elem;
       createElements(elem);
     }
   }

   function isSupportedBrowser() {
     var appVer=parseInt(navigator.appVersion);
     var msieIndex = navigator.userAgent.indexOf("MSIE ");
     var rvIndex = navigator.userAgent.indexOf(" rv:");
     var macIndex = navigator.userAgent.indexOf("Mac");
     if (window.opera) {
       if (appVer>=9) {
         return true;
       } else if (navigator.userAgent.indexOf("Opera 8")>=0) {
         return true;
       } else if (navigator.userAgent.indexOf("Opera/8")>=0) {
	 return true;
       } else {
         return false;
       }
     } else if (navigator.userAgent.indexOf("Safari")>=0) {
       return false;
     } else if (msieIndex >= 0) {
       if (macIndex>=0) {
         return false;
       } else {
         var msieVer = parseInt(navigator.userAgent.substr(msieIndex+4,3));
         if (msieVer>=5) {
           return true;
         } else {
           return false;
         }
       }
     } else if (navigator.userAgent.indexOf("Firefox")>=0) {
       return true;
     } else if (rvIndex>=0) {
       var mozVer = parseFloat(navigator.userAgent.substr(rvIndex+4,4));
       if (mozVer >= 1.4) {
         return true;
       } else {
         return false;
       }
     }
     return false;
   }

   function makeStable() {

   }

