/** Marquee Wrapper wraps text that is too long to fit in a certain block using a mouse-over marquee
(C) Tommy van der Vorst (mycms.nl), 2008 **/
var MarqueeWrapper = new Object();

MarqueeWrapper.Start = function(div) {
  if(!div.wrapRunning) {
    if(!div.wrapSpan) {
      for(var cn in div.childNodes) {
        var elt = div.childNodes.item(cn);
        if(elt.tagName && elt.tagName=="DIV") {
          div.wrapSpan = elt;
          break;
        }
      }
      
      if(!div.wrapSpan) {
        return;
      }
    }
      
    // If the span is too small, don't scroll at all
    var wrapSpanContent = div.wrapSpan.childNodes.item(0);
    div.wrapContentWidth = wrapSpanContent.scrollWidth;
    if(div.wrapContentWidth <= (div.offsetWidth - 10)) {
      return;
    }

    div.wrapDirection = -1;
    div.wrapRunning = true;
    div.wrapSpan.style.position = "absolute";
    div.wrapSpan.style.left = "0px";
    
    var tick = function() {
      var cx = parseInt(div.wrapSpan.style.left);
      var max_cx = -(div.wrapContentWidth - parseInt(div.offsetWidth) + 30);
      //window.status = cx + " " + max_cx;
      
      if(cx <= max_cx && div.wrapDirection < 0) {
        div.wrapDirection = 1;
      }
      else if (cx > 30 && div.wrapDirection > 0) {
        div.wrapDirection = -1;
      }
      
      div.wrapDirection *= 1.01;
      div.wrapSpan.style.left = (cx + div.wrapDirection)+"px";
    }
    
    div.wrapTimer = window.setInterval(tick, 15);
  }
}

MarqueeWrapper.End = function(div) {
  if(div.wrapRunning) {
    div.wrapRunning = false;
    window.clearInterval(div.wrapTimer);
    div.wrapSpan.style.left = "0px";
  }
}

MarqueeWrapper.Init = function() {
  var els = null;
  if(getElementsByClassName) {
    els = getElementsByClassName("marquee-wrapper");
  }
  else if(document.getElementsByClassName) {
    els = document.getElementsByClassName("marquee-wrapper");
  }
  else {
    // fail
  }
  
  if(els) {
    for(var cn in els) {
      var mw = els[cn];
      mw.onmouseover = function() { MarqueeWrapper.Start(this); return false; }
      mw.onmouseout = function() { MarqueeWrapper.End(this); return false; }
    }
  }
}
