/*
  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 = '<span class="colbreak">';
    this.colbreak_token = '###';
    this.colbreak_end   = '</span>';

    this.o_content = document.getElementById(s_content);
    this.i_width = obj_width(this.o_content)-3;
    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); }
    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.innerHTML = '<div id="'+s_content+'_in" style="position:absolute; color:#000000; 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)+'px';    
    this.o_content_in.style.left = '0px';
    this.o_content_in.style.clip = 'rect(0,'+(this.i_pages*this.i_width)+'px,'+this.i_height+'px,0)';

    // update scrolling position
    this.f_render = function()
    {
      var pos = parseInt(this.o_content_in.style.left);
      pos += (this.i_target - pos)*0.2;
      this.o_content_in.style.left = Math.round(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);


  }

