         function walkStyles(src) {
            /* Walk up the tree; for every element with an effect
               property, swap the values of its effect and className
               properties.  The tree walk is necessary to ensure that
               any nested effects are handled. */
            while ("HTML" != src.tagName) {
               if (null != src.getAttribute("effect", false)) {
                  var tempClass = src.className;
                  src.className = src.getAttribute("effect", false);
                  src.setAttribute("effect", tempClass, false);
               }
               src = src.parentElement;
            }
         }

         function setupEffect() {
            // Entering an element
            walkStyles(event.toElement);
         }

         function cleanupEffect() {
            // Exiting an element
            walkStyles(event.fromElement);
         }

         // Hook up event handlers.
         document.onmouseover = setupEffect;
         document.onmouseout  = cleanupEffect;

