  var blueBall = new Image(14,14)
  blueBall.src = "blueball.gif"
  var redBall = new Image(14,14)
  redBall.src = "redball.gif"

  function init()
  {
    if (document.addEventListener) {
      document.addEventListener("mouseover", movrEvent, false)
      document.addEventListener("mouseout", moutEvent, false)
    } else
    if (document.attachEvent) {
      document.attachEvent("onmouseover", movrEventIE)
      document.attachEvent("onmouseout", moutEventIE)
    }

    var c = getCookie("style");
    if (c != null && c.length > 0 && c != "parchment") {
      setSS(c);
    }

    c = getCookie("allnote");
    if (c && c == "block")
      setAllNoteDisplay(c);
  }

  function setSS(title)
  {
    if (document.getElementsByTagName) {
      var l = document.getElementsByTagName("link");
      for (var i = 0; i < l.length; i++) {
        var ll = l[i];
        var r = ll.getAttribute("rel");
        var t = ll.getAttribute("title");
        if (r.indexOf("style") != -1 && t)  {
          ll.disabled = true;
          if (t == title)
            ll.disabled = false;
        }
      }
    }
  }

  function setActiveStyleSheet(title)
  {
    var oldtitle = getActiveStyleSheet();
    setSS(title);
    if (title != oldtitle) {
      var exp = new Date(); /* cookie will expire in 100 days */
      var period = exp.getTime() + (100 * 24 * 60 * 60 * 1000);
      exp.setTime(period);
      document.cookie = "style=" + title + "; expires=" + exp.toGMTString();
    }
  }

  function getActiveStyleSheet()
  {
    if (document.getElementsByTagName) {
      var l = document.getElementsByTagName("link");
      for (var i = 0; i < l.length; i++) {
        var ll = l[i];
        var r = ll.getAttribute("rel");
        var t = ll.getAttribute("title");
        if (r.indexOf("style") != -1 && t && !ll.disabled)
          return(t);
      }
    }
    return(null);
  }

  function movrEvent(evt)
  {
    if (evt.target.tagName == "IMG" && evt.target.className == "noteimg")
      evt.target.src = redBall.src
  }

  function moutEvent(evt)
  {
    if (evt.target.tagName == "IMG" && evt.target.className == "noteimg")
      evt.target.src = blueBall.src
  }

  function movrEventIE()
  {
    if (event.srcElement.tagName == "IMG") {
      var p = event.srcElement.parentNode
      if (p != null && p.tagName == "A")
      {
        event.srcElement.src = redBall.src
      }
    }
  }

  function moutEventIE()
  {
    if (event.srcElement.tagName == "IMG") {
      var p = event.srcElement.parentNode
      if (p != null && p.tagName == "A")
      {
        event.srcElement.src = blueBall.src
      }
    }
  }

  function showNote(noteID)
  {
    var noteElement = document.getElementById(noteID)
    if (noteElement != null) {
      var currentDisplay = noteElement.style.display
      if (currentDisplay == "block")
        noteElement.style.display = "none"
      else
        noteElement.style.display = "block"
    }
    return(false);
  }


  function setAllNoteDisplay(d)
  {
    if (document.getElementsByTagName) {
      var ad = document.getElementsByTagName("span");
      for (var i = 0; i < ad.length; i++) {
        var sp = ad[i];
        if (sp.className == "note")
          sp.style.display = d;
      }
    }
  }


  function toggleAllNoteDisplay()
  {
    var d = getCookie("allnote");
    if (d && d == "block") {
      setAllNoteDisplay("none");
      document.cookie = "allnote=none";
    } else {
      setAllNoteDisplay("block");
      document.cookie = "allnote=block";
    }
  }


  /* From D. Goodman, JavaScript Bible, 4th ed., p. 521.
     With a safety check added. */
  function getCookie(labelName)
  {
    var labelLen = labelName.length;
    var cookieData = document.cookie;
    if (cookieData == null || cookieData.length == 0)
      return "";
    var cLen = cookieData.length;
    var i = 0;
    var cEnd
    while (i < cLen) {
      var j = i + labelLen;
      if (cookieData.substring(i,j) == labelName) {
        cEnd = cookieData.indexOf(";",j);
        if (cEnd == -1) {
          cEnd = cookieData.length;
        }
        return unescape(cookieData.substring(j+1, cEnd));
      }
      i++;
    }
    return "";
  }
