//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
// JavaScript Document 
/*

Tuto funkci vlozit po nacteni stranky:
initScroll('sb1'); // 'sb1' = <prefix>

Ukazka HTML kodu:
<div id="<prefix>Wrapper">
	<div id="<prefix>Content">zde bude text</div>
	<div id="<prefix>Scrollbar">
	  <div id="<prefix>Tracker"></div>
	</div>
</div>

//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////*/

var sbIsIE = document.all ? true : false;	
var sbMouseButtonDown = false;

//////////////////////////////////////////////////////////////////////////////////////////////////////
function initScroll(prefix)
{
	if(document.getElementById(prefix + 'Scrollbar') != null){
		document.getElementById(prefix + 'Scrollbar').onmousedown = function(event) { sbMouseButtonDown=true; if(!sbIsIE) doScroll(prefix, event); else doScrollIE(prefix); };
		document.getElementById(prefix + 'Scrollbar').onmouseup = function() { sbMouseButtonDown=false; };
		document.onmouseup = function() { sbMouseButtonDown=false; };
		document.getElementById(prefix + 'Scrollbar').onmousemove = function(event) { if(!sbIsIE) doScroll(prefix, event); else doScrollIE(prefix); };
	}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////
function findPosY(obj)  // Get full top offset
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////
function doScroll(prefix, e)
{
	if (sbMouseButtonDown)
	{ 
		document.getElementById(prefix + 'Wrapper').onmousedown = function() { return false; };
		document.getElementById(prefix + 'Wrapper').onselectstart = function() { return false; };
	
		var cursor = getPosition(e);
		
		var wrapperTop = findPosY(document.getElementById(prefix + 'Wrapper'));
		var cursorPrc = (cursor.y - wrapperTop) / document.getElementById(prefix + 'Wrapper').clientHeight;
		var contentTop = cursorPrc * (document.getElementById(prefix + 'Content').clientHeight - document.getElementById(prefix + 'Wrapper').clientHeight);
		var trackerTop = cursor.y - wrapperTop;
		
		if(trackerTop > (document.getElementById(prefix + 'Wrapper').clientHeight - document.getElementById(prefix + 'Tracker').clientHeight))
			trackerTop = document.getElementById(prefix + 'Wrapper').clientHeight - document.getElementById(prefix + 'Tracker').clientHeight;
		
		if(trackerTop < 10)
			trackerTop = 0;
				
		document.getElementById(prefix + 'Tracker').style.top = trackerTop + 'px';
		document.getElementById(prefix + 'Content').clientHeight;
		document.getElementById(prefix + 'Content').style.top = '-' + contentTop + 'px';
	} else {
		document.getElementById(prefix + 'Wrapper').onmousedown = function() { return true; };
		document.getElementById(prefix + 'Wrapper').onselectstart = function() { return true; };
	}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////
function doScrollIE(prefix)
{
	var e = window.event;
	doScroll(prefix, e);
}

//////////////////////////////////////////////////////////////////////////////////////////////////////
function getPosition(e) {
	e = e || window.event;
	
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + 
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + 
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
