;(function($) {
	 $.fn.c2scroll = function(options) {
		//console.log(this);
		 var currentOpts = $.extend({}, $.fn.c2scroll.defaults, options);
		 
		 var scrollBar = $(currentOpts.scroll),
		 	 scrollGuide = $('.scroll-bar-guide', scrollBar),
			 scrollBarHeight = parseInt(scrollBar[0].clientHeight);
			 scrollGuideHeight = parseInt(scrollGuide[0].clientHeight);
		 
		 function scrollMove(mesure) {			
			scrollGuide[0].style.top = mesure * (scrollBarHeight - scrollGuideHeight) + 'px';
		 };		
		 
		 return this.each(function () {
		 	//console.log('hey');
			var viewport = this;
			
			$('a', this).live('focus', function () {
				var parent = this.parentNode;				
				
				var parentHeight = parseInt(parent.clientHeight),
					parentTopEdge = parseInt(parent.offsetTop),
					parentBottomEdge = parseInt(parent.offsetTop) + parseInt(parent.clientHeight),
					viewportHeight = parseInt(viewport.clientHeight),
					viewportTopEdge = parseInt(viewport.scrollTop),
					viewportBottomEdge = parseInt(viewport.scrollTop) + parseInt(viewport.clientHeight),
					scrollHeight = parseInt(viewport.scrollHeight);
				
				if (scrollHeight > viewportHeight) {
					scrollBar.show();
				} else {
					scrollBar.hide();
				}

				if ( parentHeight + parentTopEdge > viewportBottomEdge )  {
					//viewport.scrollTop += parentTopEdge + parentHeight - viewportTopEdge - viewportHeight;
					viewport.scrollTop = parentTopEdge;
					//console.log(viewport.scrollTop)
					//Debugger.log('down');
				} else if ( parentTopEdge < viewportTopEdge ) {
					viewport.scrollTop = parentTopEdge - viewportHeight + parentHeight + currentOpts.verticalOffset;
					//viewport.scrollTop -= parentTopEdge + parentHeight - viewportTopEdge;
					//viewport.scrollTop -= 100;
					//Debugger.log('up');
				} else {
					//Debugger.log('stand');
				};
				scrollMove(parentTopEdge/scrollHeight);
			});
		 });
	 };
	 
	 $.fn.c2scroll.defaults = {
		 scroll: '.scroll-bar',
		 verticalOffset: 0
	 };
	 
 })(jQuery);
