jQuery.fn.jrscroller = function(options) {
  // define defaults and override with options, if available
  // by extending the default settings, we don't modify the argument
  settings = jQuery.extend({
     thumbnailPath: "thumbnails",
     fullsizePath: "fullsize",
		 maximumThumbs: 16,
		 captionPosition: 'overImage',
     global: true,
		 positionHelper: false,
		 arrowHeight: 15,
		 upArrowImage: 'images/scroll-up-arrow.gif',
		 downArrowImage: 'images/scroll-down-arrow.gif',
		 scrollHandleImage: 'images/scroll-handle.gif',
		 jrScrollState: null
		 
  }, options);
		var handle = jQuery("<div />").attr('id', 'jrscroller-handle').css({
																	'background-image': 'url(' + settings.scrollHandleImage + ')',
																	'height':10,
																	'top': 0,
																	'width':'100%',
																	'cursor': 'pointer',
																	'position': 'absolute'
																	});
		var upArrow = jQuery("<div />").css({
																	 'position': 'relative',
																	 'height':settings.arrowHeight,
																	 'width':'100%',
																	 'cursor': 'pointer',
																	 'background-image':'url(' + settings.upArrowImage + ')'
																	 });
		var scrollMain = jQuery("<div />").css({
																			'position': 'relative',
																			'height':jQuery(this).height() - (2 * settings.arrowHeight),
																			'background-image':'url(/wp-content/themes/shteyngart/images/scroll-bg.gif)'
																			});
		var downArrow = jQuery("<div />").css({
																	 'position': 'relative',
																	 'height':settings.arrowHeight,
																	 'width':'100%',
																	 'cursor': 'pointer',
																	 'background-image':'url(' + settings.downArrowImage + ')'
																	 });
		jQuery(upArrow).mousedown(function(){settings.jrScrollState = "up";setTimeout('jQuery.jrScrollTimer()', 50);});
		jQuery(downArrow).mousedown(function(){settings.jrScrollState = "down";setTimeout('jQuery.jrScrollTimer()', 50);});
		jQuery(scrollMain).append(jQuery(handle));
		jQuery(this).append(upArrow, scrollMain, downArrow);
		jQuery(document).mouseup(function(e){
				jQuery(handle).parent().unbind('mousemove');		
				settings.jrScrollState = null;
		});
		jQuery(handle).mousedown(function(e){
			var yOffset = e.pageY - jQuery(this).offset().top;
			jQuery(this).parent().mousemove(function(e){
						
						var scrollContainerHeight = jQuery(this).height();	
						var handleHeight = jQuery(this).children('#jrscroller-handle').height();
						var position = e.pageY - jQuery(this).offset().top - yOffset;
						
						position = Math.max(position, 0);
						position = Math.min(position, scrollContainerHeight - handleHeight);
						var offset = (jQuery(this).parent().offset());
						var yPosition = e.pageY;
						jQuery(this).children('#jrscroller-handle').css({'top': position});
						jQuery.assess_scroller(position);
						e.preventDefault();
				});															 
		});			
}
jQuery.jrScrollTimer = function() {
	jQuery("#helper").text(settings.jrScrollState);
	if (settings.jrScrollState == "up") {
		var y = parseInt(jQuery("#jrscroller-handle").css('top'));
		y = Math.max(y-5, 0);
		jQuery.assess_scroller(y);
		jQuery("#jrscroller-handle").css({'top': y});
		setTimeout('jQuery.jrScrollTimer()', 50);
	} else if (settings.jrScrollState == "down") {
		var y = parseInt(jQuery("#jrscroller-handle").css('top'));
		y = Math.min(y+5, jQuery("#jrscroller-handle").parent().height() - jQuery("#jrscroller-handle").height());
		jQuery.assess_scroller(y);
		jQuery("#jrscroller-handle").css({'top': y});
		setTimeout('jQuery.jrScrollTimer()', 50);
	} else {
		
	}
}
jQuery.assess_scroller = function(position) {
	var relativePosition = position/(jQuery('#jrscroller-handle').parent().height()- jQuery('#jrscroller-handle').height());
	var fullHeight = jQuery('#scrollable-text').height();
	var availableHeight = jQuery('#scrollable-container').height();
	
	var difference = fullHeight - availableHeight;	
	//jQuery('#helper').html('position: ' + position + ':' + jQuery('#jrscroller-handle').height() + ':' + jQuery('#jrscroller-handle').parent().height() + '<br /> ' + 'relativePosition: ' + relativePosition + '<br />' + 'fullHeight: ' + fullHeight + '<br />' + 'availableHeight: ' + availableHeight);
	if (difference>0) {
		var y = 0 - (difference * relativePosition);
		jQuery('#scrollable-text').css({'top': (0 - (difference * relativePosition))});
	}
}