//+-------------------------------------------------------------------+
//| yx_folder                       Version 2                         |
//| Copyright 1999  Xin Yang        yangxin@iname.com                 |
//| Created 11/01/1999              Last Modified 11/18/1999          |
//| Web Site:                       http://yx.webprovider.com         |
//+-------------------------------------------------------------------+
//| Copyright 1999  Xin Yang        All Rights Reserved.              |
//|                                                                   |
//| yx_folder-v2.js may be used and hosted free of charge by anyone   |
//| for personal purpose so long as this copyright notice remain      |
//| intact.                                                           |
//|                                                                   |
//| Obtain permission before selling the code for this program or     |
//| hosting this software on a commercial web or redistributing this  |
//| software over the Internet or in any other medium. In all cases   |
//| copyright must remain intact.                                     |
//+-------------------------------------------------------------------+

var isNN = (navigator.appName.toLowerCase().indexOf("netscape") != -1);

var tocFrame = null;
//var tocFrameName = "toc";
//var contentFrameName = "content";

//var backgroundColor = "#ffffff";
//var backgroundImage = "";
//var fontSize = 1;
//var fontColor = "#000000";
//var fontFace = '"arial,verdana,times"';
//var fontStyleOpen = "<b>";
//var fontStyleClose = "</b>";

var imageString1 = "<img src='";
var imageString2 = "' width=9 height=9 border=0>";

var imageFolderOpen = "images/yx_folderOpen.gif";
var imageFolderClose = "images/yx_folderClose.gif";
var imageLinkSpot = "images/yx_linkSpot.gif";
var imageCommandSpot = "images/yx_commandSpot.gif";
var imageSpace = "images/yx_oneLevel.gif";

var flagFolder = "F";
var flagFolderLink = "X";
var flagLink = "L";
var flagCommand = "C";

var folderDepth = 0;
var nodeCount = -1;
var folderNode = new Array();
var folderCount = -1;
var folderTree = new Array();
var folderSwitch = new Array();
var yy=0;

function folderNodeUnit() {
  this.type = "";
  this.name = "";
  this.description = "";
  this.url = "";
  this.command = "";
  this.folder = -1;
}

function readFolder(folder) {
  var folderLength = folder.length
  var subFolder = null;
  var thisFolder = ++folderCount;

  folderTree[thisFolder] = new Array();
  folderSwitch[thisFolder] = false;

  for (var i = 0; i < folderLength; i++) {
    folderTree[thisFolder][i] = ++nodeCount;
    folderNode[nodeCount] = new folderNodeUnit();
    folderNode[nodeCount].type = folder[i][0];
    folderNode[nodeCount].name = folder[i][1];
    folderNode[nodeCount].description = folder[i][2];

    if (folderNode[nodeCount].type == flagFolderLink) {
      folderNode[nodeCount].url = folder[i][4];
      folderNode[nodeCount].folder = folderCount + 1;
      subFolder = eval(folder[i][3]);
      readFolder(subFolder);
    }
    else if (folderNode[nodeCount].type == flagFolder) {
      folderNode[nodeCount].folder = folderCount + 1;
      subFolder = eval(folder[i][3]);
      readFolder(subFolder);
    }
    else if (folderNode[nodeCount].type == flagLink) {
      folderNode[nodeCount].url = folder[i][3];
    }
    else if (folderNode[nodeCount].type == flagCommand) {
      folderNode[nodeCount].command = folder[i][3];
    }
    else
      alert("Read Folder Error");
  }
}

function clickFolder(nodeIndex) {
   yy = parent.main.scrollit();
  if (folderNode[nodeIndex].type == flagFolder || folderNode[nodeIndex].type == flagFolderLink) {
    folderSwitch[folderNode[nodeIndex].folder] = !folderSwitch[folderNode[nodeIndex].folder];
    if (isNN)
      setTimeout("showFolder()",1)
    else
      showFolder();
 
  }
  else
    alert("Folder Error");
    parent.frames.main.toc.scroll(1,yy)
}

function clickCommand(nodeIndex) {
  if (folderNode[nodeIndex].type == flagCommand)
    eval(folderNode[nodeIndex].command)
  else
    alert("Command Error");
}

function showNode(folderNo) {
  var folderLength = folderTree[folderNo].length;
  var nodeIndex = 0;
  var mouseHoverString = "";
  var mouseHoverString1 = ' onMouseOver="window.status=' + "'";
  var mouseHoverString2 = "'" + '; return true;" onMouseOut="window.status=window.defaultStatus; return true;">';
  var linkString1 = fontStyleOpen + '<font face=' + fontFace + ' size=' + fontSize + '><a href="';
  var linkString2 = '</a></font>' + fontStyleClose;

  for (var i = 0; i < folderLength; i++) {
    nodeIndex = folderTree[folderNo][i];
    mouseHoverString = mouseHoverString1 + folderNode[nodeIndex].description + mouseHoverString2;

    tocFrame.document.write("<tr align=left valign=middle><td><nobr>");

    for (var j = 0; j < folderDepth; j++)
      tocFrame.document.write(imageString1 + imageSpace + imageString2 + imageString1 + imageSpace + imageString2);

    tocFrame.document.write('<a href="');
    if (folderNode[nodeIndex].type == flagFolder || folderNode[nodeIndex].type == flagFolderLink)
      tocFrame.document.write('javascript:clickFolder(' + nodeIndex + ')"')
    else if (folderNode[nodeIndex].type == flagLink)
      tocFrame.document.write(folderNode[nodeIndex].url + '" target=' + contentFrameName)
    else
      tocFrame.document.write('javascript:clickCommand(' + nodeIndex + ')"')
    tocFrame.document.write(mouseHoverString);

    tocFrame.document.write(imageString1);
    if (folderNode[nodeIndex].type == flagFolderLink || folderNode[nodeIndex].type == flagFolder) {
      if (folderSwitch[folderNode[nodeIndex].folder])
        tocFrame.document.write(imageFolderOpen)
      else
        tocFrame.document.write(imageFolderClose);
    }
    else if (folderNode[nodeIndex].type == flagLink)
      tocFrame.document.write(imageLinkSpot)
    else
      tocFrame.document.write(imageCommandSpot);
    tocFrame.document.write(imageString2);

    tocFrame.document.write("</a>");
    tocFrame.document.write(imageString1 + imageSpace + imageString2);

    tocFrame.document.write(linkString1);
    if (folderNode[nodeIndex].type == flagFolder)
      tocFrame.document.write('javascript:clickFolder(' + nodeIndex + ')"')
    else if (folderNode[nodeIndex].type == flagFolderLink)
      tocFrame.document.write(folderNode[nodeIndex].url + '" target=' + contentFrameName + ' onclick="clickFolder(' + nodeIndex + ')"')
    else if (folderNode[nodeIndex].type == flagLink)
      tocFrame.document.write(folderNode[nodeIndex].url + '" target=' + contentFrameName)
    else
      tocFrame.document.write('javascript:clickCommand(' + nodeIndex + ')"')
    tocFrame.document.write(mouseHoverString);
    tocFrame.document.write(folderNode[nodeIndex].name + linkString2);
    tocFrame.document.writeln("</nobr></td></tr>");

    if (folderNode[nodeIndex].type == flagFolderLink || folderNode[nodeIndex].type == flagFolder)
      if (folderSwitch[folderNode[nodeIndex].folder]) {
        folderDepth++;
        showNode(folderNode[nodeIndex].folder);
        folderDepth--;
      }
  }
}

function showFolder() {
  var commentOpen = "<!" + "--";
  var commentClose = "//-" + "->";

  with (tocFrame.document) {
    open("text/html");
    writeln("<html>");
    writeln("<head>");
    writeln("<script language='javascript'>");
    writeln(commentOpen);
    writeln("function clickCommand(nodeIndex) { parent.clickCommand(nodeIndex); }")
    writeln("function clickFolder(nodeIndex) { parent.clickFolder(nodeIndex); }")
    writeln(commentClose);
    writeln("</script>");
    writeln("<style type='text/css'>");
    writeln(commentOpen);
    writeln("a {text-decoration:none}")
    writeln(commentClose);
    writeln("</style>");
    writeln("</head>");
    writeln("<body" + ((backgroundColor!="")?(" bgcolor=" + backgroundColor):"") + ((backgroundImage!="")?(" background=" + backgroundImage):"") + ((fontColor!="")?(" link=" + fontColor):"") + ((fontColorActive!="")?(" alink=" + fontColorActive):"") + ((fontColor!="")?(" vlink=" + fontColor):"") + ">");
    writeln("<table align=left cellpadding=5 cellspacing=0 border=0><tr><td>");
    writeln("<table align=left cellpadding=0 cellspacing=0 border=0>");
  }

  showNode(0);

  with (tocFrame.document) {
    writeln("</table>");
    writeln("</td></tr></table>");
    writeln("</body>");
    writeln("</html>");
    close();
  }
  parent.frames.main.toc.scroll(1,yy)
}

function setFrames() {
  tocFrame = eval("window.frames." + tocFrameName);
}

function buildFolder(folderRoot) {
  setFrames();
  readFolder(folderRoot);
  showFolder();
}

function openAll() {
  for (var i = 0; i <= folderCount; i++)
    folderSwitch[i] = true;
  showFolder();
parent.frames.main.toc.scroll(1,0)
}

function closeAll() {
  for (var i = 0; i <= folderCount; i++)
    folderSwitch[i] = false;
  showFolder();
parent.frames.main.toc.scroll(1,0)
}


function scrollit() {
var temp = navigator.appName;
temp = temp.toLowerCase();

	if (temp == 'microsoft internet explorer')
		y=parent.frames.main.toc.document.body.scrollTop
	else
		y=parent.frames.main.toc.pageYOffset

return y;		

}




