var vert=0;
var off=0;
var offTop=0;
function menu_scrollup()
{
	vert=-2;
	vertical();
}
function menu_scrolldown()
{
	vert=2;
	vertical();
}
function menu_stop()
{
	vert=0;
}
function vertical()
{
	vmax=_tresc.scrollHeight;
	win=_tresc.clientHeight;
	pos=_tresc.scrollTop;
	vert_scrollBy(vert);
    if (vert != 0){
    	if(_tresc.scrollTop<=0 || _tresc.scrollTop>=vmax-win)
    		vert=0;
    	setTimeout("vertical()", 10);
    }
}

function vert_scrollBy(y)
{
	vmax=_tresc.scrollHeight;
	win=_tresc.clientHeight;
	bsize=_bar.clientHeight-_scroller.clientHeight;
	_tresc.scrollTop+=y;
    if (_tresc.scrollTop > vmax-win)
      _tresc.scrollTop = vmax-win;
    if (_tresc.scrollTop < 0)
      _tresc.scrollTop = 0;
	npos=_tresc.scrollTop;
	spos=bsize*npos/(vmax-win);
	_scroller.style.marginTop=spos+"px";	
}

function vert_scrollTo(y)
{
	vmax=_tresc.scrollHeight;
	win=_tresc.clientHeight;
	bsize=_bar.clientHeight-_scroller.clientHeight;
	h=_bar.clientHeight-_scroller.clientHeight;
	_tresc.scrollTop=(vmax-win)*y/h;
	npos=_tresc.scrollTop;
	spos=bsize*npos/(vmax-win);
	spos=Math.floor(spos);
	_scroller.style.marginTop=spos+"px";	
}
function calcul(elt)
{
	s=elt.offsetTop;
	e=elt;
	while(e.parentNode && e.tagName != 'BODY'){
//		alert(e.tagName + ' ' +e.id + ' ' + e.offsetTop);
		s+=e.offsetTop;
		e=e.parentNode;
	}
	return s;
}

function vert_start_drag(e)
{
    if (typeof e == 'undefined') e = window.event;
	if (typeof e.pageY == "undefined"){
		off=_scroller.offsetTop+_scroller.clientHeight/2 - Number(e.clientY);
		offTop=calcul(_bar);
	}
	else
		offTop=_bar.offsetTop;
	document.onmousemove = vert_drag;
	document.onmouseup = vert_end_drag;
	return false;
}

function vert_drag(e)
{
	e=fixE(e);
	y=e.pageY;
	if (y<offTop+_scroller.clientHeight/2) y=offTop+_scroller.clientHeight/2;
	if (y>offTop+_bar.offsetHeight-_scroller.clientHeight/2) y=offTop+_bar.offsetHeight-_scroller.clientHeight/2;
	y-=offTop+_scroller.clientHeight/2;
	vert_scrollTo(y);
	return false;
}

function vert_end_drag(e)
{
	document.onmousemove = null;
	document.onmouseup = null;
}

function fixE(e)
{
    if (typeof e == 'undefined') e = window.event;
    if (typeof e.pageY == 'undefined')
		e.pageY = e.clientY+off;
    return e;
}

function _onresize(){
	vert_scrollBy(0);
    setTimeout ("vert_scrollBy(0)", 100);
}

function _onload()
{
		_tresc=document.getElementById('trescmenu');
		_bar=document.getElementById('scrollbar');
		_scroller=document.getElementById('scroller');


        _onresize();

	if (_scroller != null){
		_scroller.onmousedown=vert_start_drag;
		_tresc.scrollTop=0;
        vmax=_tresc.scrollHeight;
        win=_tresc.clientHeight;
        if (vmax>win){
          document.getElementById("scrollbar").style.display="";
        }
	}

	if (window.addEventListener)
			/** DOMMouseScroll is for mozilla. */
			window.addEventListener('DOMMouseScroll', wheel, false);
	/** IE/Opera. */
	window.onmousewheel = document.onmousewheel = wheel;
}


/*	kolko myszki;-)
 *
 *
 */
function isOverTresc(elt)
{
	e=elt;
	while (e.id != 'trescmenu' && e.parentNode && e.tagName != 'BODY'){
		e=e.parentNode;
	}
	if (e.id == 'trescmenu')
		return true;

	return false;
}

/** This is high-level function.
 * It must react to delta being more/less than zero.
 */
function handle(delta, e) {
		if (!isOverTresc(e.target))
			return true;
        if (delta < 0)
			vert_scrollBy(30);
        else
			vert_scrollBy(-30);
}

/** Event handler for mouse wheel event.
 */
function wheel(event){
        var delta = 0;
		var ret=true;
        if (!event) /* For IE. */
                event = window.event;
        if (event.wheelDelta) { /* IE/Opera. */
                delta = event.wheelDelta/120;
                /** In Opera 9, delta differs in sign as compared to IE.
                 */
                if (window.opera)
                        delta = -delta;
        } else if (event.detail) { /** Mozilla case. */
                /** In Mozilla, sign of delta is different than in IE.
                 * Also, delta is multiple of 3.
                 */
                delta = -event.detail/3;
        }
        /** If delta is nonzero, handle it.
         * Basically, delta is now positive if wheel was scrolled up,
         * and negative, if wheel was scrolled down.
         */
        if (delta)
                ret=handle(delta, event);
        /** Prevent default actions caused by mouse wheel.
         * That might be ugly, but we handle scrolls somehow
         * anyway, so don't bother here..
         */
        if (event.preventDefault && !ret)
                event.preventDefault();
	event.returnValue = ret;
}


