var Content = $('Content');
var FullContent = $('FullContent');
var track = $('track');
var dragBar = $('dragBar');
dragBar.style.height = (Content.offsetHeight/FullContent.offsetHeight) * track.offsetHeight;
$('scrollbar').style.visibility = "visible";
if((Content.offsetHeight/FullContent.offsetHeight) > 1)
{
  dragBar.style.height = track.offsetHeight;
  $('scrollbar').style.visibility = "hidden";
}

else if((Content.offsetHeight/FullContent.offsetHeight)< 0)
{
  dragBar.style.height = 0;
}
var weelLock = false;
var deltaWeel = (Content.offsetHeight <= 0?0:Content.offsetHeight/8);
// horizontal slider control
var slider = new Control.Slider('dragBar', 'track', {
axis: 'vertical',
range: $R(0,FullContent.offsetHeight - Content.offsetHeight),
onSlide: function(v) { if(!weelLock){FullContent.style.top = -v;} },
onChange: function(v) { if(!weelLock){FullContent.style.top = -v;}}
});

slider.setValueBy(-FullContent.style.top);


// mouse wheel code from http://adomas.org/javascript-mouse-wheel/
function handle(delta) {
slider.setValueBy(-delta);
}

/** Event handler for mouse wheel event. */
function wheel(event){
if($('scrollbar').style.visibility == "hidden")
{
return;
}
var delta = 0;
if (!event) /* For IE. */
event = window.event;
if (event.wheelDelta) { /* IE/Opera. */
delta = event.wheelDelta/120;
/** In Opera 9, delta differs in sign as compared to IE. */
/*if (window.opera)
delta = -delta;*/
} else if (event.detail) { /** Mozilla case. */
/** In Mozilla, sign of delta is different than in IE.
* Also, delta is multiple of 3.
*/
delta = -event.detail/3;
}

/** If delta is nonzero, handle it.
* Basically, delta is now positive if wheel was scrolled up,
* and negative, if wheel was scrolled down.
*/
if (delta)
handle(delta *deltaWeel);

/** Prevent default actions caused by mouse wheel.
* That might be ugly, but we handle scrolls somehow
* anyway, so don't bother here..
*/
if (event.preventDefault)
event.preventDefault();

event.returnValue = false;
}

function resize()
{
slider.dispose();
dragBar.style.height = (Content.offsetHeight/FullContent.offsetHeight) * track.offsetHeight;
$('scrollbar').style.visibility = "visible";
weelLock = false;
if((Content.offsetHeight/FullContent.offsetHeight)> 1)
{
  dragBar.style.height = track.offsetHeight;
  $('scrollbar').style.visibility = "hidden";
  weelLock = true;
}
else if((Content.offsetHeight/FullContent.offsetHeight)< 0)
{
  dragBar.style.height = 0;
}
deltaWeel = (Content.offsetHeight <= 0?0:Content.offsetHeight/2);
// horizontal slider control
slider = new Control.Slider('dragBar', 'track', {
axis: 'vertical',
range: $R(0,FullContent.offsetHeight - Content.offsetHeight),
onSlide: function(v) { FullContent.style.top = -v; },
onChange: function(v) { FullContent.style.top = -v;}
});

slider.setValueBy(-parseInt(FullContent.style.top));
}
// mozilla
Event.observe('FullContent', 'DOMMouseScroll', wheel);

// IE/Opera
Event.observe('FullContent', 'mousewheel', wheel);

Event.observe(window, 'resize', resize);

