///////////////////////////////////////////////////
//
//         Magellan Navigation Script 6.5
// 
//          Copyright BCL Technologies 
//             All Rights Reserved
//
//     This Code May Not Be Duplicated Without
//  The Express Written Consent of BCL Technologies
//
///////////////////////////////////////////////////
//-------------------------------------------------------------------------------

// global variable.
var gNodeList = new Array;
var gCurrImageObj = null;
var gnTOP_POS = 16;
var gnTop = gnTOP_POS;
var gnHiddenTop = gnTOP_POS;
var gsName = "bookmark";
var gBrowser = 0;
var IE = 1;
var NN = 2;
var MO = 3;
var OP = 4;

var gsTarget = "_blank";

var gBlankImg = new Image;
var gVertLineImg = new Image;
var gNodeImg = new Image;
var gLastNodeImg = new Image;

var gCloseFileImg = new Array;
var gOpenFileImg = new Array;
var gFileImg = new Array;

gCloseFileImg[0] = new Image;
gCloseFileImg[1] = new Image;
gOpenFileImg[0] = new Image;
gOpenFileImg[1] = new Image;
gFileImg[0] = new Image;
gFileImg[1] = new Image;


//-------------------------------------------------------------------------------

function list(sTitle, nDstPage, sURL, nID)
{
   this.sTitle = sTitle;
   this.nDstPage = nDstPage;
   this.bExpanded = false;
   this.bShow = false;
   this.parent = null;
   this.children = new Array;
   this.objectID = null;
   this.imageID = null;

   if(nID)
   {
      this.sURL = sURL;
      this.nID = nID;
   }
   else
   {
      // this is for older Magellan generated HTML.
      this.sURL = null;
      this.nID = sURL;
   }
}

//-------------------------------------------------------------------------------

function appendList(parentNode, childNode)
{
   childNode.parent = parentNode;
   parentNode.children[parentNode.children.length] = childNode;

   return childNode;
}

//-------------------------------------------------------------------------------
// this is a recursive function.

function displayList(nodeList, nDepth)
{
   var i, j, k;
   var parentNode, grandParentNode;

   for(i = 0; i < nodeList.length; i++)
   {
      if(gBrowser == IE)
      {
         if(nodeList[i].children.length > 0)
            document.write('<span id="node' + nodeList[i].nID + '" style="display:');
         else
            document.write('<span id="child' + nodeList[i].nID + '" style="display:');

         if(nodeList[i].parent != null)
            document.write('none">\n');
         else
            document.write('block">\n');
      }
      else if(gBrowser == NN)
      {
         if(nodeList[i].parent == null)
         {
            nodeList[i].bShow = true;

            if(i == 0 && nodeList[i].parent != null)
               gnTop = gnTop + nodeList[i].parent.objectID.clip.height;
            else if(i > 0)
               gnTop = gnTop + nodeList[i - 1].objectID.clip.height;
         }
         else
            nodeList[i].bShow = false;

         if(i == 0 && nodeList[i].parent != null)
            gnHiddenTop = gnHiddenTop + nodeList[i].parent.objectID.clip.height;
         else if(i > 0)
            gnHiddenTop = gnHiddenTop + nodeList[i - 1].objectID.clip.height;

         if(nodeList[i].children.length > 0)
            document.write('<layer id="node');
         else
            document.write('<layer id="child');

         if(nodeList[i].parent != null)
            document.write(nodeList[i].nID + '" top=' + gnHiddenTop + ' visibility="hide">\n');
         else
            document.write(nodeList[i].nID + '" top=' + gnTop + ' visibility="show">\n');
      }


      document.write('<table border=0 cellspacing=0 cellpadding=0>\n<tr>\n');
      document.write('<td valign="middle" nowrap>');

      for(j = nDepth - 1; j > 0; j--)
      {
         parentNode = nodeList[i];
         for(k = j; k > 0; k--)
            parentNode = parentNode.parent;

         grandParentNode = parentNode.parent;

         if(grandParentNode.children[grandParentNode.children.length - 1] == parentNode)
            document.write('<img src="' + gBlankImg.src + '" border=0>');
         else
            document.write('<img src="' + gVertLineImg.src + '" border=0>');
      }

      if(nDepth > 0)
      {
         if((i + 1) == nodeList.length)
            document.write('<img src="' + gLastNodeImg.src + '" border=0>');
         else
            document.write('<img src="' + gNodeImg.src + '" border=0>');
      }

      if(nodeList[i].children.length > 0)
      {
         document.write('<a href="#" onClick="JavaScript:openNode(' + nodeList[i].nID + '); return false">');
         document.write('<img src="' + gCloseFileImg[0].src + '" border=0 name="image' + nodeList[i].nID + '">');
         document.write('</a>');
      }
      else
         document.write('<img src="' + gFileImg[0].src + '" border=0 name="image' + nodeList[i].nID + '">');

      document.write('</td><td valign="middle" nowrap>');

      if(nodeList[i].nDstPage > -2)
         document.write('<a href="#" onClick="JavaScript:openPage3(' + nodeList[i].nDstPage + ', image' + nodeList[i].nID + '); return false">');
      else
         document.write('<a href="' + nodeList[i].sURL + '" target=' + gsTarget + '>');

      document.write('<font size=2 color="blue" face="Helvetica">' + nodeList[i].sTitle + '</font>');
      document.write('</a>');
      document.write('</td>');
      document.write('</tr>\n</table>\n');

      if(gBrowser == IE)
      {
         document.write('</span>\n');

         if(nodeList[i].children.length > 0)
            nodeList[i].objectID = document.all["node" + nodeList[i].nID]; 
         else
            nodeList[i].objectID = document.all["child" + nodeList[i].nID]; 

         nodeList[i].imageID = document.all["image" + nodeList[i].nID]; 
      }
      else if(gBrowser == NN)
      {
         document.write('</layer>\n');

         if(nodeList[i].children.length > 0)
            nodeList[i].objectID = document.layers["node" + nodeList[i].nID]; 
         else
            nodeList[i].objectID = document.layers["child" + nodeList[i].nID]; 

         nodeList[i].imageID = nodeList[i].objectID.document.images[nodeList[i].objectID.document.images.length-1]; 
      }

      if(nodeList[i].children.length > 0)
         displayList(nodeList[i].children, nDepth + 1);
   }
}
function openPage(pageNum) // back compatible function
{
	
	if (gBrowser == OP || gBrowser == IE || gBrowser == MO) 
		parent.main.window.location = gsFName + "_" + pageNum + gsExtName + "?gInitialPosX="+0+"&gInitialPosY="+0;
	else parent.main.window.location = gsFName + "_" + pageNum + gsExtName;
}


function openPage2(pageNum) // back compatible function
{

	if (gBrowser == OP || gBrowser == IE || gBrowser == MO) parent.main.window.location = gsFName + "_" + pageNum + gsExtName + "?gInitialPosX="+0+"&gInitialPosY="+0;
	else parent.main.window.location = gsFName + "_" + pageNum + gsExtName;
}


//-------------------------------------------------------------------------------

function openPage3(nPageNum, imageObj)
{
   if(nPageNum > 0)
   {
   
      changeSelectedIcon(imageObj);
      //che
      if ((typeof parent.nav != 'undefined') && (typeof parent.nav.openPage2 != 'undefined') )
      
	parent.nav.openPage2(nPageNum);     
      
      else if ((typeof window.opener != 'undefined') && (typeof window.opener.parent.main != 'undefined'))
      
      	window.opener.parent.main.updatePage(nPageNum);     	      	
      
      else if (typeof window.opener != 'undefined') 
      
        opener.updatePage(nPageNum);
      else 
      	openPage2(nPageNum);
      
   }
   else
      alert("This link has no destination.");
}

//-------------------------------------------------------------------------------

function openNode(nID)
{
   var node = searchNode(gNodeList, nID);
   if(node == null)
      return;

   if(node.bExpanded == false)
   {
      node.bExpanded = true;
      expandNode(node.children)
   }
   else
   {
      node.bExpanded = false;
      shrinkNode(node.children)
   }

   changeExpandIcon(node.imageID, node.bExpanded);

   if(gBrowser == NN)
   {
      gnTop = gnTOP_POS;
      adjustListPos(gNodeList);
   }
}

//-------------------------------------------------------------------------------

function expandNode(node)
{
   var i;

   for(i = 0; i < node.length; i++)
   {
      if(gBrowser == IE)
      {
         if(node[i].objectID.style.display == "none")
            if(node[i].parent == null || node[i].parent.bExpanded == true)
               node[i].objectID.style.display = "block";
      }
      else if(gBrowser == NN)
      {
         if(node[i].bShow == false)
            if(node[i].parent != null && node[i].parent.bExpanded == true)
               node[i].bShow = true;
      }

      if(node[i].children.length > 0 && node[i].bExpanded == true)
         expandNode(node[i].children);
   }
}

//-------------------------------------------------------------------------------

function shrinkNode(node)
{
   var i;

   for(i = 0; i < node.length; i++)
   {
      if(gBrowser == IE)
      {
         if(node[i].objectID.style.display == "block")
            node[i].objectID.style.display = "none";
      }
      else if(gBrowser == NN)
      {
         if(node[i].bShow == true)
            node[i].bShow = false;
      }

      if(node[i].children.length > 0)
         shrinkNode(node[i].children);
   }
}

//-------------------------------------------------------------------------------

function updateTree(nPageNum)
{
   var node = ProcessOpenedNode(gNodeList, nPageNum);

   if(gBrowser == NN)
   {
      gnTop = gnTOP_POS;
      adjustListPos(gNodeList);
   }
}

//-------------------------------------------------------------------------------
// this is a recursive function.

function ProcessOpenedNode(nodeList, nPageNum)
{
   var i, k;
   var node;

   for(i = 0; i < nodeList.length; i++)
   {
      if(nodeList[i].nDstPage == nPageNum)
      {
         if(nodeList[i].children.length > 0)
         {
            node = ProcessOpenedNode(nodeList[i].children, nPageNum);

            if(node != null)
            {
               nodeList[i].bExpanded = true; // expand parent.
               changeExpandIcon(nodeList[i].imageID, nodeList[i].bExpanded);

               for(k = 0; k < nodeList.length; k++)
               {
                  if(gBrowser == IE)
                  {
                     if(nodeList[k].objectID.style.display == "none")
                        nodeList[k].objectID.style.display = "block";
                  }
                  else if(gBrowser == NN)
                  {
                     if(nodeList[k].bShow == false)
                        nodeList[k].bShow = true;
                  }
               }
               changeSelectedIcon(node.imageID);

               return node;
            }
         }

         for(k = 0; k < nodeList.length; k++)
         {
            if(gBrowser == IE)
            {
               if(nodeList[k].objectID.style.display == "none")
                  nodeList[k].objectID.style.display = "block";
            }
            else if(gBrowser == NN)
            {
               if(nodeList[k].bShow == false)
                  nodeList[k].bShow = true;
            }
         }
         changeSelectedIcon(nodeList[i].imageID);

         return nodeList[i];
      }
      else if(nodeList[i].children.length > 0)
      {
         node = ProcessOpenedNode(nodeList[i].children, nPageNum);

         if(node != null)
         {
            nodeList[i].bExpanded = true; // expand parent.
            changeExpandIcon(nodeList[i].imageID, nodeList[i].bExpanded);

            for(k = 0; k < nodeList.length; k++)
            {
               if(gBrowser == IE)
               {
                  if(nodeList[k].objectID.style.display == "none")
                     nodeList[k].objectID.style.display = "block";
               }
               else if(gBrowser == NN)
               {
                  if(nodeList[k].bShow == false)
                     nodeList[k].bShow = true;
               }
            }
            changeSelectedIcon(node.imageID);

            return node;
         }
      }
   }

   return null;
}

//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------

function adjustListPos(nodeList)
{
   var i;
 
   for(i = 0; i < nodeList.length; i++)
   {
      if(nodeList[i].bShow == true)
      {
         if(i == 0 && nodeList[i].parent != null)
            gnTop = gnTop + nodeList[i].parent.objectID.clip.height;
         else if(i > 0)
            gnTop = gnTop + nodeList[i - 1].objectID.clip.height;

         nodeList[i].objectID.moveTo(nodeList[i].objectID.left, gnTop)
         nodeList[i].objectID.visibility = "show";
      }
      else
         nodeList[i].objectID.visibility = "hide";

      if(nodeList[i].children.length > 0)
         adjustListPos(nodeList[i].children);
   }
}

//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------

function changeExpandIcon(imageObj, bExpand)
{
   if(imageObj == null)
      return;

   if(bExpand == true)
   {
      if(imageObj.src == gCloseFileImg[1].src)
         imageObj.src = gOpenFileImg[1].src;
      else
         imageObj.src = gOpenFileImg[0].src;
   }
   else
   {
      if(imageObj.src == gOpenFileImg[1].src)
         imageObj.src = gCloseFileImg[1].src;
      else
         imageObj.src = gCloseFileImg[0].src;
   }
}

//-------------------------------------------------------------------------------

function changeSelectedIcon(imageObj)
{
   if(imageObj != null)
   {
      if(imageObj.src == gCloseFileImg[0].src)
         imageObj.src = gCloseFileImg[1].src;
      else if(imageObj.src == gOpenFileImg[0].src)
         imageObj.src = gOpenFileImg[1].src;
      else if(imageObj.src == gFileImg[0].src)
         imageObj.src = gFileImg[1].src;
   }

   if(gCurrImageObj != null && gCurrImageObj != imageObj)
   {
      if(gCurrImageObj.src == gCloseFileImg[1].src)
         gCurrImageObj.src = gCloseFileImg[0].src;
      else if(gCurrImageObj.src == gOpenFileImg[1].src)
         gCurrImageObj.src = gOpenFileImg[0].src;
      else if(gCurrImageObj.src == gFileImg[1].src)
         gCurrImageObj.src = gFileImg[0].src;
   }

   gCurrImageObj = imageObj;
}

//-------------------------------------------------------------------------------
// this is a recursive function.

function searchNode(nodeList, nID)
{
   var node;
   var i;
 
   for(i = 0; i < nodeList.length; i++)
   {
      if(nodeList[i].nID == nID)
         return nodeList[i];
      else if(nodeList[i].children.length > 0)
      {
         node = searchNode(nodeList[i].children, nID);
         if(node != null)
            return node;
      }
   }

   return null;
}

//-------------------------------------------------------------------------------

function initialize()
{
   if (navigator.userAgent.indexOf("Opera")!=-1 && document.getElementById) gBrowser=OP;    
   else if (document.all) gBrowser=IE;    
   else if (document.layers) gBrowser=NN;    
   else if (!document.all && document.getElementById) gBrowser=MO; 
   else return;
   

   // display list.
   displayList(gNodeList, 0, 0);
   // create dummy layer on the bottom so NN will have correct scrolling height.
   if(gBrowser == NN)
      document.write('<layer id="dummy" top=' + gnHiddenTop  + ' visibility="hide">\n');
   // select first item on the list.
   //che   
   if(gNodeList.length > 0)
      if (typeof parent.nav != 'undefined') 
      	if (typeof parent.nav.updateContents != 'undefined')       
      	   parent.nav.updateContents(parent.nav.gCurrPage);
}

//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------

