/* Dual scrollbars relational scrolling javascript
/* Author: Oliver D'Alton
/* Company: Deepend Pty. Ltd.
/* Date: 9th of January 2009
/* Version: 1.0
/* Requires: jQuery v1.2.6, jQuery.UI.Core v1.5.3, jQuery.UI.Draggable, jQuery.mousewheel v2.2
*/


var mEntrPos;
var contentHt;
var scrlPnHt;
var scrlrHt;

function initialiseScrollPanes(){
	var iViewportHeight = $(window).height();
	$('#scrollpane').height(iViewportHeight);
	$('.ScrollTrack').height($('#scrollpane').height());
	$('.Scroller').draggable({
		containment:$('.ScrollTrack'),
		axis:'y', 
		drag:fnDragScrolling
	});
	
	contentHt = $('#content').height();
	scrlPnHt = $('#scrollpane').height();
	scrlrHt = fnGetScrlrHt();
  
	$('body')
  .mousewheel(function(event, delta){fnWheelScrolling(event, delta)}
  );
}

function fnGetScrlrHt(){
 
  var retHt;
  if(contentHt > scrlPnHt){
    retHt = scrlPnHt / (contentHt / scrlPnHt);
  }else{
    retHt = scrlPnHt;
  }
  $('.Scroller').height(retHt);
 
  return  retHt;
}

function fnDragScrolling(e, ui){
    
		var curScrlPos = fnSetScrlrPos(parseFloat($(this).css('top')));
		   
		fnMoveContent(curScrlPos, 1);
				
}

function fnWheelScrolling(event, delta){
  
  var curScrlPos = parseFloat($('.Scroller').css('top'));
  curScrlPos = curScrlPos - (delta * 10);
  
  curScrlPos = fnSetScrlrPos(curScrlPos);
  
  fnMoveContent(curScrlPos, 1);
  
  event.stopPropagation();
  event.preventDefault();
}

function fnMoveContent(scrlPos, animSpeed){

    var relContentPos = ( contentHt / scrlPnHt) * scrlPos ;
    
  	$('.Scroller').css({'top':scrlPos},animSpeed);
		$('#content').css({'bottom':relContentPos},animSpeed);
}

function fnSetScrlrPos(scrlPos){
  		
    var curScrlPos = scrlPos;
      
    if(curScrlPos<0){
			curScrlPos = 0;
		}else if(curScrlPos > scrlPnHt - scrlrHt){
			curScrlPos = scrlPnHt - scrlrHt;
		}

    return curScrlPos;
}
