﻿/// <reference path="jquery.intellisense.js" />

function blockEvent(event)
{
    if (!event) 
		event = window.event;
    
    if (event.stopPropagation) 
        event.stopPropagation();
    else 
        event.cancelBubble = true;
    
    if (event.preventDefault) 
        event.preventDefault();
    
    event.returnValue = false;
}

function OnSliderScroll(e, ui)
{
	var percent = ui.value;
	var div = $(this.parentNode.parentNode.parentNode).find(".scrollable")[0]
	var min = (div.offsetHeight - div.parentNode.offsetHeight) * -1;
	var max = 0;
	var top = (percent * min) / 100;
	
	if (top > 0) top = 0;
	
	$(div).css("top", top);
}

function OnScroll(e)
{
	e = e || window.event;
	
	var d = e.detail || -e.wheelDelta;
	var t = e.currentTarget || e.srcElement;
	var s = $(t.parentNode.parentNode.parentNode).find(".ui-slider")[0];
	
	if (typeof(s) == 'undefined')
	{
		while (t.parentNode != null)
		{
			t = t.parentNode;
			s = $(t.parentNode.parentNode.parentNode).find(".ui-slider")[0];
			
			if (typeof(s) != 'undefined') break;
		}
	}
	
	if (d > 0)
		$(s).slider("moveTo", "+=10"); //ScrollDown
	else
		$(s).slider("moveTo", "-=10"); //ScrollUp

	blockEvent(e);
}

function AddMouseScrollEvent(div)
{
    if (div.addEventListener) {
        div.addEventListener('DOMMouseScroll', OnScroll, false); 
    }
    
	div.onmousewheel = OnScroll;
}

$(document).ready(function() {
	$(".divSlider").each(function(){
		var scroller = document.createElement('div');
		var divScrollable = $(this.parentNode.parentNode.parentNode).find(".scrollable")[0];
		var div = divScrollable.parentNode;
		
		if (divScrollable.offsetHeight > div.offsetHeight)
		{
			document.body.appendChild(scroller);
			$(this).append(scroller);
			$(scroller).slider({ minValue: 0, maxValue: 100, change: OnSliderScroll, slide: OnSliderScroll, axis: 'vertical' });
			AddMouseScrollEvent(div);
		}
	    else
			$(this.parentNode.parentNode.parentNode.parentNode).find("td:last-child").each(function(){
				this.style.visibility = "hidden";
			});
	});
});

