      function opacitySetTimer(objId, start, end, duration) {
        var speed = Math.round(duration / 100);
        var timer = 0;

        if(start > end) {
            for(i = start; i >= end; i--) {
                setTimeout("changeOpac(" + i + ",'" + objId + "')",(timer * speed));
                timer++;
            }
        } else if(start < end) {
            for(i = start; i <= end; i++) {
                setTimeout("changeOpac(" + i + ",'" + objId + "')",(timer * speed));
                timer++;
            }
        }
      }

      function changeOpac(opacity, id) {
          var style = document.getElementById(id).style;
          if (opacity == 0) {
              style.display = 'none';
          }
          if (opacity == 1) {
              style.display = 'block';
          }
            
          style.opacity = (opacity / 100);
          style.MozOpacity = (opacity / 100);
          style.KhtmlOpacity = (opacity / 100);
          style.filter = "alpha(opacity=" + opacity + ")";
      }     

      function show(obj) {
            var el = obj.getElementsByTagName('span')[0];
            id = el.id;
            if (el.style.display == 'none')
                opacitySetTimer(id, 0, 100, 432);
      }      

// unobtrusive setup
    var lists = document.getElementsByTagName('span'); 
    for (var i = 0; i < lists.length; i++) { 
      var name = lists[i].id;
      if ((name) && (name.indexOf('jabberMsg') > -1)) {
        lists[i].style.display = 'none';
        // show this element if previous 'a' tag triggers
        var triggerEl = lists[i].parentNode.getElementsByTagName('a')[0];
        triggerEl.onmouseover = function () { show (this.parentNode); };
      }
    }

