var steps = 500;
var step_delta = 0;
var old_step = 0;
var slider = null;
var scroll_to = null;
var scroll = null;
var knobmousedown = false;

function sliderChange() {
  if (scroll && slider) {
    scroll.stop();
    var y = ($('copy').scrollHeight-$('copy').getStyle('height').toInt())*slider.step/steps;
    if (knobmousedown) {
      $('copy').scrollTo(0, y)
    }
    else {
    	scroll.scrollTo(0, y);
    }
    old_step = slider.step;
  }
}

function scrollToTarget(target) {
	slider.set(steps*($(target).offsetTop-40+$('copy').offsetTop)/$('copy').scrollHeight);
}

window.addEvent('domready', function() {
  if ($('copy').scrollHeight > 390) {
    copy_height = findCopyHeight('copy', 390)
    $('copy').setStyle('height', copy_height+'px');
    $('copy').setStyle('overflow', 'hidden');
	$('copy').setStyle('padding-bottom', '70px');
    $('slider').setStyle('display', 'block');
    $('slider').setStyle('height', (copy_height-50)+'px');
    $('slider').setStyle('margin-bottom', '0px');
    $('sliderUp').setStyle('display', 'block');
    $('sliderDown').setStyle('display', 'block');
    var sliderknob_h = $('slider').getStyle('height').toInt() * $('copy').getStyle('height').toInt() / $('copy').scrollHeight;
    if (sliderknob_h < 26) { sliderknob_h = 26; }
    $('sliderknob').setStyle('height', Math.floor(sliderknob_h)+'px');

    scroll = new Fx.Scroll('copy', {
    	wait: false,
    	duration: 1000
    });

    slider = new Slider($('slider'), $('sliderknob'), {
    	steps: steps,
    	mode: 'vertical',
    	onChange:sliderChange
    }).set(0);

    $('sliderknob').addEvent('mousedown', function() { knobmousedown = true; });
    $('sliderknob').addEvent('mouseup', function() { knobmousedown = false; });

    step_delta = steps * 100/$('copy').scrollHeight
    $('slider').addEvent('mousewheel', function(e) {
      e = new Event(e).stop();
      var delta = e.wheel;
      var delta_steps = Math.floor(delta * step_delta);
      slider.set(slider.step-delta_steps);
    });

    $('copy').addEvent('mousewheel', function(e) {
      e = new Event(e).stop();
      var delta = e.wheel;
      var delta_steps = Math.floor(delta * step_delta);
      slider.set(slider.step-delta_steps);
    });

    $('sliderUp').addEvent('click', function(e) {
      var delta_steps = 5 * step_delta;
      slider.set(slider.step-delta_steps);
    });

    $('sliderDown').addEvent('click', function(e) {
      var delta_steps = 5 * step_delta;
      slider.set(slider.step+delta_steps);
    });

    // attach events to menu links
    $ES('a', 'nav_products').each(function(link) {
      link.addEvent('click', function(e) {
        if(location.pathname.split('/').pop() == this.href.split('/').pop().split('#')[0]) {
          e = new Event(e).stop();
          knobmousedown = false;
          slider.set(steps*this.rel.toInt()/($('copy').scrollHeight-$('copy').getStyle('height').toInt()));
        }
      });
    });
    $ES('a', 'nav_team').each(function(link) {
      link.addEvent('click', function(e) {
        if(location.pathname.split('/').pop() == this.href.split('/').pop().split('#')[0]) {
          e = new Event(e).stop();
          knobmousedown = false;
          slider.set(steps*this.rel.toInt()/($('copy').scrollHeight-$('copy').getStyle('height').toInt()));
        }
      });
    });

    if (location.hash.length > 0) {
    	var target = location.hash.split('#')[1];
    	var to_y = -1;
      $ES('a', 'nav_products').each(function(link) {
      	link_target = link.href.split('#')[1];
      	if (link_target == target) {
          to_y = link.rel.toInt();
        }
      });
      $ES('a', 'nav_team').each(function(link) {
      	link_target = link.href.split('#')[1];
      	if (link_target == target) {
          to_y = link.rel.toInt();
        }
      });
      if (to_y >= 0) {
        slider.set(steps*to_y/($('copy').scrollHeight-$('copy').getStyle('height').toInt()));
      }
    }
  }
});
