/* Marquee2.0 Library
 * MIT license.
 *
 * secondlife <hotchpotch(at)gmail.com>
 * http://rails2u.com/
 */

if(!Math.rand) {
  Math.rand = function(num) {
    return Math.floor((Math.random() * num));
  };
}

if(!Array.prototype.random) {
  Array.prototype.random = function() {
    return this[Math.rand(this.length)];
  };
}

var Marquee2 = Class.create();

Marquee2.effectOptions = {
  Fade: function(){
    return {
      to: (Math.random(1) / 3)
    };
  }
};

Marquee2.prototype = {
  initialize: function(element) {
    element = $(element);
    if(/MSIE/.test(navigator.userAgent))
        this.IE = true;
    if(!element.marqueelized) {
      element.marqueelized = true;
      // FIXME BK
      var span = document.createElement('span');
      span.innerHTML = element.innerHTML;
      element.innerHTML = '';
      element.appendChild(span);
      this.marqueelize(element);
    }
  },
  
  marqueelize: function(element) {
    this.randomLoop(element);
  },

  loop: function(element, effect, nextEffect) {
    var options = Object.extend({
      afterFinishInternal: function(e) {
        if(nextEffect) {
          this.loop(element, nextEffect);
        }else{
          this.randomLoop(element);
        }
    }.bind(this) }, (Marquee2.effectOptions[effect] || Prototype.K)() );
    new Effect[effect](element, options);
  }, 

  randomLoop: function(element) {
//    element.style.fontSize = (Math.rand(200) + 100) + '%';
//    element.style.fontStyle = Math.rand(2) ? 'normal' : 'italic';
//    element.style.color = this.randomColor();
    element.scrollDelay = /*Math.rand(150) + */85;
    element.scrollAmount = /*Math.rand(20) + */4;
    element.truespeed = Math.rand(2) ? true : false;
/*    if(Math.rand(5) == 0)
      this.directionChange(element);*/
/*    if(Math.rand(10) == 0)
      this.behaviorChange(element);*/
/*    if(this.IE) {
      var effectPair = Effect.PAIRS.appear;
    }else{
      var effectPair = $H(Effect.PAIRS).values().random();
    }
    this.loop(element, effectPair[1], effectPair[0]);*/
  }

/*  changeStyle: function(element) {
  },

  randomColor: function() {
                 return '#' + Math.rand(200).toColorPart() + Math.rand(200).toColorPart() + Math.rand(200).toColorPart();
  },

  behaviorChange:function (element) {
    element.behavior == 'scroll' ? element.behavior = 'alternate' : element.behavior = 'scroll';
  },

  directionChange:function (element) {
    element.direction == 'right' ?  element.direction = 'left' : element.direction = 'right';
  }*/
};

Event.observe(window, 'load', function(){
  $$('marquee')
  .each(function(element){
    new Marquee2(element);
  }
  );
}, false);


