  var previewinterval = "";
  if((navigator.userAgent.toLowerCase().indexOf("khtml") > -1) || (navigator.userAgent.toLowerCase().indexOf("opera") > -1)) {
    var iframehack = false;
  } else {
    var iframehack = true;
  }

  // obj(id)
  // typing-saver for document.getElementById()
  // returns the object for the given id
  function obj(id) {
    return document.getElementById(id);
  }

  // showImagePreview(source)
  // shows the mouseover image preview for a single message
  // source - the image address as inserted during the post
  function showImagePreview(source) {
    if(source.length > 0) {
      obj('previewimage').src = source;
      obj('previewimagebox').style.display = 'block';
    }
    if(previewinterval != "") {
      clearInterval(previewinterval);
      previewinterval = "";
    }
  }

  // delayer function
  function setImagePreview(source) {
    if(previewinterval == "") {
      obj('previewimage').src = 'images_www/loading.gif';
      previewinterval = setInterval('showImagePreview(\''+source+'\')', 500);
    }
  }

  // clearImagePreview()
  // hides the image preview box
  function clearImagePreview() {
    obj('previewimagebox').style.display = 'none';
    if(previewinterval != "") {
      clearInterval(previewinterval);
      previewinterval = "";
    }
  }

  // find out the mouse position
  function setMousePos(e) {
    if (!e) var e = window.event;

    // document-wise mouse position
    mposX = e.pageX?e.pageX:(e.clientX + document.body.scrollLeft);
    mposY = e.pageY?e.pageY:(e.clientY + document.body.scrollTop);

    // render window size
    windowsizeX = self.innerWidth?self.innerWidth:document.body.clientWidth;
    windowsizeY = self.innerHeight?self.innerHeight:document.body.clientHeight;

    if(mposX + obj('previewimagebox').offsetWidth > windowsizeX + document.body.scrollLeft) {
      obj('previewimagebox').style.left = mposX - obj('previewimagebox').offsetWidth - 2;
    } else {
      obj('previewimagebox').style.left = mposX + 2;
    }
    if(mposY + obj('previewimagebox').offsetHeight > windowsizeY + document.body.scrollTop) {
      obj('previewimagebox').style.top = mposY - obj('previewimagebox').offsetHeight - 2;
    } else {
      obj('previewimagebox').style.top = mposY + 2;
    }

    if(iframehack) {
      obj('previewiframe').style.height = document.all?obj('previewimage').offsetHeight+'px':'0px';
      obj('previewiframe').style.width = document.all?obj('previewimage').offsetWidth+'px':'0px';
    } else {
      obj('previewiframe').style.display = 'none';
    }
  }