/*
  JS horizontal scroller class by wagner@wukonig.com
*/

  //function trace(s) { alert(s); } // i like ActionScript  :)

  function obj_width(obj) 
  {
    if(obj.offsetWidth) return obj.offsetWidth; 
    if (obj.clip) return obj.clip.width; 
    return 0;
  } 
    
  function obj_height(obj) 
  {
    if(obj.offsetHeight) return obj.offsetHeight; 
    if (obj.clip) return obj.clip.height; 
    return 0;
  }

  cScroller = function(s_content)  // scroller constructor
  {
    var fps = 24;
    this.colbreak_start = '<div class="colbreak" style="width: 545px; overflow: hidden;">';
    this.colbreak_token = '###';
    this.colbreak_end   = '</div>';

    this.o_content = document.getElementById(s_content);
    this.i_width = obj_width(this.o_content);
    this.i_height = obj_height(this.o_content);
    
    this.i_page = 1;

    this.i_target = 0;

    // scrolling functions
    this.f_scroll_to = function(num) { this.i_target = num; }
    this.f_scroll_to_page = function(num) { this.i_page = num; this.f_scroll_to(-(num-1)*(this.i_width+15)); }
    this.f_scroll_to_right = function() { if (this.i_page<this.i_pages) this.f_scroll_to_page(this.i_page+1); }
    this.f_scroll_to_left = function() { if (this.i_page>1) this.f_scroll_to_page(this.i_page-1); }
    
      
    // split content in pages
    this.f_process_content = function(text)
    {
      text = text.split(this.colbreak_token);
      this.i_pages = text.length;
      return this.colbreak_start+text.join(this.colbreak_end+this.colbreak_start)+this.colbreak_end;
    }

    // init content
    this.o_content.style.visibility = 'visible';
    this.o_content.innerHTML = '<div id="'+s_content+'_in" class="pos_absolute" style="color:#000; height:'+this.i_height+'px">'+this.f_process_content(this.o_content.innerHTML)+'</div>';
    this.o_content_in = document.getElementById(s_content+'_in');
    this.o_content_in.style.width = (this.i_pages*(this.i_width+20)+55)+'px'; 
    this.o_content_in.style.left = '0px';
    this.o_content_in.style.clip = 'rect(0,'+(this.i_pages*(this.i_width+28))+'px,'+this.i_height+'px,0)';

    // update scrolling position
    this.f_render = function()
    {
      //console.log(this.i_page);
      var pos = parseInt(this.o_content_in.style.left)+Math.ceil(0.6*this.i_page);
      pos += (this.i_target - pos)*0.2;
      this.o_content_in.style.left = Math.ceil(pos)+'px';

      var btn_right = document.getElementById('scroller_fwd');
      if (this.i_page<this.i_pages) btn_right.style.display = 'block';
      else btn_right.style.display = 'none';

      var btn_left = document.getElementById('scroller_bwd');
      if (this.i_page>1) btn_left.style.display = 'block';
      else btn_left.style.display = 'none';

      this.o_content.style.display = 'block';
    }

    // init the callback of the interval
    function do_interval(ref) { return function () { ref.f_render(); }; }
    this.i_interval = setInterval(do_interval(this),1000/fps);
  }
