var prevWindowPos, goToTopBtn, viewPortH;
var autoScrolling = false;
var scrollBuff = 0;

$(document).ready(function()
{
  $('div.panely tr, div.tabulka tr').mouseover(function(e)
	{
	  $(e.currentTarget).addClass('hover');
	}).mouseout(function(e){
	  $(e.currentTarget).removeClass('hover');
	});
	
	
  autoScrolling = false;
	goToTopBtn = $('#goTop');
	goToTopBtn.click(function(e)
	{
		Event.stop(e);
		var pos = $(window).scrollTop();
		var step = Math.round(pos / 20);
		
		var scrollInterval = window.setInterval(function()
		{
			window.scrollBy(0, -step);
			var pos = $(window).scrollTop();
			if (pos == 0) window.clearInterval(scrollInterval);
		}, 5);
	});
	
	$(window).scroll(function(e)
	{
	  scrollHandler(e);
	});
	
	scrollHandler();
});


function scrollHandler()
{
	if (autoScrolling) return;
	scrollBuff++;
	var curBuffVal = scrollBuff;

	setTimeout(function()
	{
		controlGoToTopBtn(curBuffVal);
	}, 1500);
}

function controlGoToTopBtn(buffVal)
{
	if (buffVal < scrollBuff && buffVal != -1) return;
	var moveLen;
	var w = $(window);
	var viewPortH = w.height();
	var pos = w.scrollTop();
	var first = false;
	var speed = 2;
	
	if (pos > viewPortH / 3)
	{
		var btnPos = parseInt(goToTopBtn.css('top').replace('px', ''));
		var btnHeight = goToTopBtn.height();

		if (pos - btnHeight > btnPos) 
	  {
			goToTopBtn.css('top', (pos - btnHeight) + 'px');
			moveLen = btnHeight;
		}
		else if (pos + viewPortH < btnPos)
		{
			goToTopBtn.css('top', (pos + viewPortH) + 'px');
			moveLen = -viewPortH;
			first = true;
			speed = 1.2;
		}
		else
		{
			if (pos > btnPos) moveLen = pos - btnPos;
			else
			{
				moveLen = -(btnPos - pos);
				first = true;
			}
		}

		if (goToTopBtn.css('display') == 'none') goToTopBtn.css('display', 'block');
		goToTopBtn.animate(
		{
      'top': (moveLen > 0 ? '+=' : '-=') + Math.abs(moveLen) + 'px'
    },
			Math.round(Math.abs(moveLen * speed)),
			function()
			{
        shake(goToTopBtn, 'y', first);
      }
		);
	}
	else if (goToTopBtn.css('display') == 'block')
	{
		goToTopBtn.fadeOut(400, function()
		{
			goToTopBtn.hide();
			goToTopBtn.fadeTo(0, 1);
		});
	}
	
	scrollBuff = 0;
}

function shake(obj, drct, add, limit, interval)
{
	var initPos = drct == 'x' ? obj.position().left : obj.position().top;
	var curPos = initPos;
	if (isNaN(limit)) limit = 12;
	add = Boolean(!add);
	
	var interval = window.setInterval(function()
	{
		if (limit <= 6 && (add ? curPos >= initPos : curPos <= initPos))
		{
			curPos = initPos;
			window.clearInterval(interval);
		}
		else
		{
			if (add)
			{
				curPos += 2;
				if (curPos >= initPos + limit)
				{
					add = false;
					curPos = initPos + limit;
					limit -= 2;
				}
			}
			else
			{
				curPos -= 2;
				if (curPos <= initPos - limit)
				{
					add = true;
					curPos = initPos - limit
					limit -= 2;
				}
			}
		}
		
		if (drct == 'x') obj.css('left', curPos + 'px');
		else obj.css('top', curPos + 'px');
	}, isNaN(interval) ? 5 : interval);
}
