ActionBox = function(){
  var sleepy;
  var breaky;
  var action_box_height = 60;
  var position = 0;
  var min_position = 0;

  function scrolledActions() {
    position = parseInt($("action_container").style.top);
    if ( position < min_position ) {
      stopScrolling();
    }
  }

  function stopScrolling() {
    window.clearTimeout(sleepy);
    window.clearTimeout(breaky);
  }

  function autoScrollDown(){
    var hours = dawanda_time.getHours();
    var slower = 0;
    if(hours > 22 || hours < 9) {
      slower = 2000
    }

    scrollAction("down");
    sleepy = window.setTimeout(autoScrollDown, GetRandom((2500+slower),(4500+slower)));
    scrolledActions();
  }

  function scrollBreak() {
    stopScrolling();
    scrolledActions();
    breaky = setTimeout(autoScrollDown,6000);
  }

  function GetRandom( min, max ) {
    if( min > max ) {
      return( -1 );
    }
    if( min == max ) {
      return( min );
    }

    return( min + parseInt( Math.random() * ( max-min+1 ) ));
  }

  function scrollAction(direction) {
    if(direction == "up") {
      if (position >= min_position && position < 0) {
        new Effect.Move($('action_container'), {x: 0, y: +action_box_height, duration: 0.5});
      }
    } else if(direction == "down") {
      if ((position - action_box_height) > min_position) {
        new Effect.Move($('action_container'), {x: 0, y: -action_box_height, duration: 0.5});
      }
    }
  }

  function scrollDown(){
    scrollBreak();
    scrollAction('down');
    return false
  }

  function scrollUp(){
    scrollBreak();
    scrollAction('up');
    return false;
  }

  function adjustTo(count){
    min_position = -((count - 4) * action_box_height);
  }

  Event.observe(window, 'load', autoScrollDown);

  return {scrollDown : scrollDown, scrollUp : scrollUp, adjustTo : adjustTo}
}()

