    document.onmousemove = refreshTimer;
    document.onmousedrag = null;
    function refreshTimer() {
      if (typeof mainTimer != 'undefined') {      clearTimeout(mainTimer); }
      mainTimer = setTimeout("expireTimer();",60000);
    }
    function expireTimer() {
      if (document.getElementById('mainMenu') && document.getElementById('mainMenu').style.display == 'none') {
        selectMain(0);
      }
    }
window.onload = function () {
      document.body.ondragstart = function () { return false; }
      document.body.onselectstart = function () { return false; }
      var anchors = document.getElementsByTagName("*");
      for (var i=0; i < anchors.length; i++) {
        var anchor = anchors[i];
        if (anchor.getAttribute("class") && anchor.getAttribute("class").match("_blank")) {
          anchor.target = "_blank";
        }
        if (anchor.getAttribute("className") && anchor.getAttribute("className").match("_blank")) {
          anchor.target = "_blank";
        }
      }
}
function initMain(name,alt,img) {
      var mainObj = new Object();
      mainObj.name = name;
      mainObj.alt = alt;
      mainObj.img = img;
      mainAry[mainAry.length] = mainObj;
}

function drawDreams() {
      maxAcross = mainAry.length / 3;
      var i = 1;
      var j = 1;
//      document.write("<div id=\"mainMenu\">\n");
      document.write("  <div class=\"mainMenuRow\">\n");
      for (var x in mainAry) {
        if (i > maxAcross) {
          document.write("  <\/div>\n");
          document.write("  <div class=\"mainMenuRow\">\n");
          i = 1;
        }
        document.write("    <div id=\"div"+j+"\" class=\"mainMenuCell\" onClick=\"selectMain('"+j+"');\">\n");
        document.write("      <img id=\"img"+j+"\" alt=\""+mainAry[x].alt+"\" src=\""+mainAry[x].img+"\" width=\"100%\"><br>"+mainAry[x].name+"<\/div>\n");
        i++;
        j++;
      }
      document.write("  <\/div>\n");
//      document.write("<\/div>\n");

}

function initDetail(main,head,delay,desc,source) {
      var detailObj = new Object();
      detailObj.main = main;
      detailObj.head = head;
      detailObj.delay = delay;
      detailObj.desc = desc;
      detailObj.source = source;
      detailAry[head] = detailObj;
}

function showDetails(mainId) {
      txt = document.getElementById('spanDetails');
      txt.innerHTML = "";
      for (var x in detailAry) {
        if (detailAry[x].main.indexOf(mainId) > -1) {
           if (detailAry[x].head.indexOf("...") > -1) { 
              var pgm = "selectSubMenu('"+detailAry[x].head+"')"; 
           } else {
              var pgm = "showDetail('"+detailAry[x].head+"',"+detailAry[x].delay+")"; 
           }
//           txt.innerHTML += "<span id=\"span"+detailAry[x].head+"\" class=\"detailsOptions\" onMouseOver=\"this.style.textDecoration='underline';\" onMouseOut=\"this.style.textDecoration='none';\" onClick=\""+pgm+"\">"+detailAry[x].head+"<\/span><br>\n";
           txt.innerHTML += "<li id=\"span"+detailAry[x].head+"\" class=\"detailsOptions\" onMouseOver=\"this.style.textDecoration='underline';\" onMouseOut=\"this.style.textDecoration='none';\" onClick=\""+pgm+"\">"+detailAry[x].head+"<\/li>\n";
        }
      }
}

function selectMain(menuId) {
      if (activeDream) {
        return true;
      } else {
        activeDream = true;
      }
      var centerX = document.body.clientWidth / 2;
      var centerY = document.body.clientHeight / 2;

      //begin the fuzz; center icon
      imgObj = document.getElementById('div0');
      mainObj = document.getElementById("div"+menuId);
      iconObj = document.getElementById('menuIcon');
      if (ie) {
	posX = mainObj.offsetLeft + mainObj.parentNode.offsetLeft;
        posY = mainObj.offsetTop + mainObj.parentNode.offsetTop;
      } else {
        posX = mainObj.offsetLeft;
        posY = mainObj.offsetTop;
      }
      imgObj.style.left = posX+"px";
      imgObj.style.top = posY+"px";
      imgObj.style.width = '100px';
      imgObj.style.height = '100px';
      document.getElementById('img0').src = document.getElementById('img'+menuId).src;
      document.getElementById('imgIcon').src = document.getElementById('img'+menuId).src;
      if (menuId != '0') {
      imgObj.style.display = "block";
      document.getElementById('menuName').innerHTML = "";
      document.getElementById('menuName2').innerHTML = "";
      document.getElementById('subMenuName').innerHTML = mainAry[menuId-1].name;
      }

      fuzzObj = document.getElementById('fuzz');
      fuzzObj.style.display = "block";
      document.getElementById('subMenu').style.display="block";
      travelX = document.body.clientWidth/2 - (parseInt(imgObj.offsetWidth)/2) - parseInt(posX) -60;
      travelY = document.body.clientHeight/2 + (parseInt(imgObj.offsetHeight)/2) - parseInt(posY) -60;
      if (ie) {
        travel2X = 0;
        travel2Y = 0;
        parentObj = iconObj;
        while (parentObj != document.body) {
          //if (parentObj == document.body) break;
	  travel2X += parentObj.offsetLeft;
          travel2Y += parentObj.offsetTop;
          parentObj = parentObj.parentNode;
        }
        travel2X = travel2X - document.body.clientWidth/2 + (parseInt(imgObj.offsetWidth)/2) + 65;
        travel2Y = travel2Y - document.body.clientHeight/2 - (parseInt(imgObj.offsetHeight)/2) + 60;
      } else {
        travel2X = parseInt(iconObj.offsetLeft) - document.body.clientWidth/2 + (parseInt(imgObj.offsetWidth)/2) + 65;
        travel2Y = parseInt(iconObj.offsetTop) - document.body.clientHeight/2 - (parseInt(imgObj.offsetHeight)/2) + 60;
      }
      document.getElementById('subMenu').style.display="none";

      for (var i = 0; i <= 20; i++) {
       setTimeout("fuzzObj.style.opacity = "+(i/20)+";",i*100);
       if (ie) {
         setTimeout("fuzzObj.style.filter = \"alpha (opacity="+(i*5)+")\";",i*100);
       }
       if (menuId != '0') {
        var dX = (travelX * i / 20) + posX;
        var dY = (travelY * i / 20) + posY;
        setTimeout("imgObj.style.left = '"+dX+"px';",i*100);
        setTimeout("imgObj.style.top = '"+dY+"px';",i*100);
        var dW = 100 + (6 * i);
        var dH = 100 + (6 * i);
        setTimeout("imgObj.style.width = '"+dW+"px';",i*100);
        setTimeout("imgObj.style.height = '"+dH+"px';",i*100);
       }
      }

      //hide main menu; show submenu
      if (menuId != '0') {
        showDetails(mainAry[(menuId-1)].name);
        setTimeout("document.getElementById('mainMenu').style.display='none';",2500);
        setTimeout("document.getElementById('details1').style.display='block';",2500);
      } else {
        showDetails();
        setTimeout("document.getElementById('mainMenu').style.display='block';",2500);
        setTimeout("document.getElementById('details1').style.display='none';",2500);
        setTimeout("document.getElementById('detailText').style.display='none';",2500);
      }

      //reduce the fuzz; begin to restore icon
      for (var i = 0; i <= 20; i++) {
       setTimeout("fuzzObj.style.opacity = "+((20-i)/20)+";",4000+(i*100));
       if (ie) {
         setTimeout("fuzzObj.style.filter = \"alpha (opacity="+((20-i)*5)+")\";",4000+(i*100));
       }
       if (menuId != '0') {
        var dX = (travel2X * i / 20) + posX + travelX;
        var dW = 100 - (4 * i);
        setTimeout("imgObj.style.left = '"+dX+"px';",3000+(i*100));
        setTimeout("imgObj.style.width = '"+dW+"px';",3000+(i*100));
        var dY = (travel2Y * i / 20) + posY + travelY;
        var dH = 100 - (4 * i);
        setTimeout("imgObj.style.top = '"+dY+"px';",3000+(i*100));
        setTimeout("imgObj.style.height = '"+dH+"px';",3000+(i*100));
       }
      }
      setTimeout("fuzzObj.style.display='none';",5500);
      setTimeout("imgObj.style.display='none';",5600);
      if (menuId != '0') {
        setTimeout("document.getElementById('subMenu').style.display='block';",5600);
        setTimeout("document.getElementById('rootMenu').style.display='block';",5620);
      } else {
        setTimeout("document.getElementById('subMenu').style.display='none';",5600);
      }
      setTimeout("activeDream = false;",5600);        
}

function goBack() {
      if (document.getElementById('menuName2').innerHTML.length > 0) {
        selectSubMenu(document.getElementById('menuName2').innerHTML.substring(4));
      } else if (document.getElementById('menuName').innerHTML.length > 0) {
        selectSubMenu(document.getElementById('menuName').innerHTML);
      } else {
        selectMain('0');
      }
}

function selectSubMenu(menuId) {
      if (activeDream) {
        return true;
      } else {
        activeDream = true;
      }

      //begin the fuzz; center icon
      fuzzObj = document.getElementById('fuzz');
      fuzzObj.style.display = "block";

      for (var i = 0; i <= 20; i++) {
       setTimeout("fuzzObj.style.opacity = "+(i/20)+";",i*100);
       if (ie) {
         setTimeout("fuzzObj.style.filter = \"alpha (opacity="+(i*5)+")\";",i*100);
       }
      }

      if (menuId.indexOf("...") > -1) {
        if (document.getElementById('menuName').innerHTML.length > 0) {
          setTimeout("document.getElementById('menuName2').innerHTML = document.getElementById('subMenuName').innerHTML;",2500);
        } else {
          setTimeout("document.getElementById('menuName').innerHTML = document.getElementById('subMenuName').innerHTML;",2500);
        }
        if (menuId == "Hair/Shaving...") { 
          setTimeout("document.getElementById('subMenuName').innerHTML = \" :: Hair\";",2510);
	} else if (menuId == "Privy members...") { 
          setTimeout("document.getElementById('subMenuName').innerHTML = \" :: Privy\";",2510);
	} else if (menuId == "Dreaming of the dead...") { 
          setTimeout("document.getElementById('subMenuName').innerHTML = \" :: Dead\";",2510);
	} else if (menuId == "Drinking Water...") { 
          setTimeout("document.getElementById('subMenuName').innerHTML = \" :: Water\";",2510);
        } else {
          setTimeout("document.getElementById('subMenuName').innerHTML = \" :: "+menuId.substring(0,menuId.indexOf("..."))+"\";",2510);
        }
      } else {
        if (document.getElementById('menuName2').innerHTML.length > 0) {
          setTimeout("document.getElementById('menuName2').innerHTML = \"\";",2500);
        }
        if (menuId == document.getElementById('menuName').innerHTML) {
          setTimeout("document.getElementById('menuName').innerHTML = \"\";",2500);
          setTimeout("document.getElementById('subMenuName').innerHTML = \""+menuId+"\";",2510);
        } else {
          setTimeout("document.getElementById('subMenuName').innerHTML = \" :: "+menuId+"\";",2510);
        }
      }
      setTimeout("showDetails('"+menuId+"');",2520);

      //reduce the fuzz; begin to restore icon
      for (var i = 0; i <= 20; i++) {
       setTimeout("fuzzObj.style.opacity = "+((20-i)/20)+";",3000+(i*100));
       if (ie) {
         setTimeout("fuzzObj.style.filter = \"alpha (opacity="+((20-i)*5)+")\";",3000+(i*100));
       }
      }
      setTimeout("fuzzObj.style.display='none';",5500);
      setTimeout("activeDream = false;",5500);        
}

function showDetail(detailId,delay) {

      if (!(delay)) { delay = 10000; }
      detailObj = document.getElementById('detailText');
      headaObj = document.getElementById('detailTextA');
      headObj = document.getElementById('detailHeading');
      descObj = document.getElementById('detailDescription');
      srcObj = document.getElementById('detailSource');
      headObj.style.opacity = 0;
      headaObj.style.opacity = 0;
      descObj.style.opacity = 0;
      srcObj.style.opacity = 0;
      if (ie) {
        headObj.style.filter = "alpha (opacity=0)";
        headaObj.style.filter = "alpha (opacity=0)";
        descObj.style.filter = "alpha (opacity=0)";
        srcObj.style.filter = "alpha (opacity=0)";
      }
      headObj.innerHTML = detailAry[detailId].head;
      descObj.innerHTML = detailAry[detailId].desc;
      srcObj.innerHTML = detailAry[detailId].source;

      fuzzObj = document.getElementById('fuzz');
      fuzzObj.style.display = "block";

      for (var i = 0; i <= 20; i++) {
        setTimeout("document.getElementById('details1').style.display='none';",1500);
        setTimeout("document.getElementById('detailText').style.display='block';",1500);
        setTimeout("fuzzObj.style.opacity = "+(i/20)+";",i*100);
        setTimeout("headaObj.style.opacity = "+(i/20)+";",2000+(i*100));
        setTimeout("headObj.style.opacity = "+(i/20)+";",2000+(i*100));
        setTimeout("descObj.style.opacity = "+(i/20)+";",5000+(i*100));
        setTimeout("srcObj.style.opacity = "+(i/20)+";",5000+(i*100));
        if (ie) {
         setTimeout("fuzzObj.style.filter = \"alpha (opacity="+(i*5)+")\";",i*100);
         setTimeout("headaObj.style.filter = \"alpha (opacity="+(i*5)+")\";",2000+(i*100));
         setTimeout("headObj.style.filter = \"alpha (opacity="+(i*5)+")\";",2000+(i*100));
         setTimeout("descObj.style.filter = \"alpha (opacity="+(i*5)+")\";",5000+(i*100));
         setTimeout("srcObj.style.filter = \"alpha (opacity="+(i*5)+")\";",5000+(i*100));
        }
      }

      //reduce the fuzz; begin to restore icon
      for (var i = 0; i <= 20; i++) {
        setTimeout("document.getElementById('details1').style.display='block';",delay+7500);
        setTimeout("headaObj.style.opacity = "+((20-i)/20)+";",delay+(i*100));
        setTimeout("headObj.style.opacity = "+((20-i)/20)+";",delay+(i*100));
        setTimeout("descObj.style.opacity = "+((20-i)/20)+";",delay+5000+(i*100));
        setTimeout("srcObj.style.opacity = "+((20-i)/20)+";",delay+5000+(i*100));
        setTimeout("fuzzObj.style.opacity = "+((20-i)/20)+";",delay+8000+(i*100));
        if (ie) {
         setTimeout("headaObj.style.filter = \"alpha (opacity="+((20-i)*5)+")\";",delay+(i*100));
         setTimeout("headObj.style.filter = \"alpha (opacity="+((20-i)*5)+")\";",delay+(i*100));
         setTimeout("descObj.style.filter = \"alpha (opacity="+((20-i)*5)+")\";",delay+5000+(i*100));
         setTimeout("srcObj.style.filter = \"alpha (opacity="+((20-i)*5)+")\";",delay+5000+(i*100));
         setTimeout("fuzzObj.style.filter = \"alpha (opacity="+((20-i)*5)+")\";",delay+8000+(i*100));
        }
      }

      setTimeout("document.getElementById('detailText').style.display='none';",delay+10500);
      setTimeout("fuzzObj.style.display='none';",delay+10500);

}


