/* 
 * jQuery-based HTML scroller
 * Version: 2.0
 * Created: 2010-01-08
 * Updated: 2010-01-20
 * by Andrew Hamel - 7th Hat Media Group
 */

$(function() {
	$('.scrollhandle').each(
		function(){
			
			var sc = $(this).parents('.scrollcontainer'); // scrollcontainer
			var sd = sc.children('.scrolldata'); // scrolldata
			var cheight = sc.height();
			var dheight = sd.height();
			
			if(dheight > cheight){
				$(this).draggable(
					{ 
						axis: 'y', 
						containment: $(this).parents('.scrolltrack'), 
						scroll:false,
						drag: function(evt, ui) {
							// scroller calcs
							var spos = ui.position.top;
							var sheight = $(this).parents('.scrolltrack').height() - $(this).height() - 30;
							var spct = parseInt((spos / sheight)*100);
							spct += parseInt(spct/100);
							
							// elements
							//if(dheight > cheight){
								// content calcs
								var dpct = parseInt((dheight/cheight)*100);
								var offset = dpct/100;
								var comp = parseInt((spct*(dheight - cheight))/100); // dpct
								var nm = parseInt(0 - (comp)) + "px";
								sd.css('margin-top', nm);
							//}
						}
					}
				);
			}else{ sc.children('.scrollcontrols').css('visibility','hidden'); }
        }
	);
	
	$('.scrollarrowtop').each( function(){
		$(this).click( function(){
			$('#debug').children('p').html('scrollArrowTop()<hr>');
			var sc = $(this).parents('.scrollcontainer');
			var sd = sc.children('.scrolldata');
			var mt = parseInt(sd.css('marginTop'));
			$('#debug').children('p').append('marginTop: ' + mt + 'px<br>');
			
			var nmt = parseInt(mt + 50) >= 0 ? '0px' : parseInt(mt + 50) + 'px';
			$('#debug').children('p').append('nmt: ' + nmt + '<br>');
			//sd.animate({ marginTop: nmt }, 500);
			
			var mx = sd.height() - sc.height();
			$('#debug').children('p').append('max = ' + (0 - mx) + 'px<br>');
			if( (mt - 10) > (0 - mx) ){
				sd.animate({ marginTop: nmt }, 500);
				
				var h = $(this).siblings('.scrolltrack').children('.scrollhandle');
				var o = Math.round(sd.height() / 50);
				
				o = o > mx ? h.parents('.scrolltrack').height() - h.height() : o;
				o = o < 0 ? 0 : o;
				
				$('#debug').children('p').append('ho = ' + o + 'px<br>');
				h.animate({marginTop:'-='+o+'px'},500);
			}
		});	
	});
	
	$('.scrollarrowbottom').click(
		function(){
			$('#debug').children('p').html('scrollArrowBottom()<hr>');
			var sc = $(this).parents('.scrollcontainer');
			var sd = sc.children('.scrolldata');
			var mt = parseInt(sd.css('marginTop'));
			$('#debug').children('p').append('marginTop: ' + mt + 'px<br>');
			
			var nmt = parseInt(mt - 50) > 0 ? '0px' : parseInt(mt - 50) + 'px';
			$('#debug').children('p').append('nmt: ' + nmt + '<br>');
			
			var mx = sd.height() - sc.height();
			$('#debug').children('p').append('max = ' + (0 - mx) + 'px<br>');
			if( (mt - 10) > (0 - mx) ){
				sd.animate({ marginTop: nmt }, 500);
				
				var h = $(this).siblings('.scrolltrack').children('.scrollhandle');
				var o = Math.round(sd.height() / 50);
				
				o = o < mx ? h.parents('.scrolltrack').height() - h.height() : o;
				o = o > h.parents('.scrolltrack').height() - h.height() ? h.parents('.scrolltrack').height() - h.height() : o;
				
				$('#debug').children('p').append('ho = ' + o + 'px<br>');
				h.animate({marginTop:'+='+o+'px'},500);
			}
		}
	);
	
});


/*

Version: 1.0

$(function() {
    $("#scrollhandle").draggable(
        {
            axis: 'y',
            containment:'.scrolltrack',
            scroll:false,
            drag: function(evt, ui) {
                // scroller calcs
                var spos = ui.position.top;
                var sheight = $('#scrollcontrols').height();
                var spct = parseInt((spos / sheight)*100);
                spct += parseInt((spct*20)/100);

                // content calcs
                var cheight = $('#scrollcontainer').height();
                var dheight = $('#scrolldata').height();
                var dpct = parseInt((dheight/cheight)*100);

                var offset = dpct/100;

                var comp = parseInt((spct*(dheight - cheight))/100); // dpct

                var nm = parseInt(0 - (comp)) + "px";
                $('#scrolldata').css("margin-top", nm);
            }
        }
    );
	$('.scrollarrowtop').click(
		function(){
			$('#scrolldata').animate({marginTop:'-=50px'},500);
			$('.handleabout').animate({marginTop:'+=5px'},500);
		}
	);
	$('.scrollarrowbottom').click(
		function(){
			$('#scrolldata').animate({marginTop:'+=50px'},500);
			$('.handleabout').animate({marginTop:'-=5px'},500);
		}
	);
});
*/
