/*
* Скрипт для скроллу контентного блоку у блоці-контейнері (його анімація вверх або вниз під маскою) при наведенні курсора на стрілки.
* Оскільки на сторінці може бути кілька таких блоків, то поточний блок-контейнер, контентний блок і стрілки
* перевизначаємо щоразу заново при наведенні курсора на одну з стрілок
*
* Принаведенні на стрілку, їй додається клас "active" (стрілка підсвічується),
* визначається поточний блок-контейнер і контент, визначається напрямок анімації контенту (вверх чи вниз),
* перераховується час. з яким повинна відбуватись анімація в залежності від поточниго положення контенту,
* Після закінчення анімації (контент знаходиться в своєму крайньому верхньому або нижньому положенні),
* стрілка стає неактивною, темною (додаємо клас "disabled").
*/
var j=jQuery.noConflict();
j(document).ready(function() {

	var topPos = 0;
	var botPos;
	var scrollWrapper;
	var scrollContent;
	j('.scroll-block .arr-top span').addClass('disabled');
	j('.scroll-block .scroll-arr').bind('click',function() {return false;});
	j('.scroll-block .scroll-arr').bind('mouseenter',mouseEnter).bind("mouseleave",mouseLeave);

	//Навели курсором на стрілку.
	//Визначаємо контейнер і контентний блок (для кожної сторінки він повинен перевизначатись).
	//Визначаємо найнижчу точку, в яку можна просколити контент
	//Забираємо клас "disabled" у протилежної стрілки і виклик функції, в якій визначається наімація контенту (передаємо в неї напрямок руху контенту)
	function mouseEnter(){
		scrollWrapper = j(this).parent();
		scrollContent =  scrollWrapper.find('.scroll-content');
		botPos = (scrollWrapper.height()-scrollContent.height());
		j(this).find('span').addClass('active');

		if(j(this).hasClass('arr-top')){
			scrollWrapper.find('.arr-bot span').removeClass('disabled');
			moveContent(topPos);
		} else if(j(this).hasClass('arr-bot')){
			scrollWrapper.find('.arr-top span').removeClass('disabled');
			moveContent(botPos);
		}
	}
	//Забрали курсор з стрілки.
	//Забираємо клас "active" з стрілки і зупиняємо анімацію контента ( скролл вверх або вниз)
	function mouseLeave(){
		j('.scroll-arr span').removeClass('active');
	    scrollContent.stop();
	}

	//Рахуємо час, з яким має відбуватись анімація скроллу контента
	//Знаходимо відстань між кінцевою точкою, в яку має прийти контент і його поточним положенням.
	//множимо відстань на коефіцієнт шидкості (10) - це і буде час, значення якого і повертаємо у місце, звідки викликалась ця функція.
	function calculateTime(endPos) {
		var dist = Math.abs( parseFloat(endPos) - parseFloat(scrollContent.css('top')));
		dist*=10;
		return dist;
	}

	//Функція скроллу контента.
	//Визначаємо час, який повинна тривати анімація контента у крайню верхню чи крайню нижню точку.
	//Напрямок руху - вхідний параметр.
	//Після закінчення анімації (контент в крайній верхній чи нижній позиції) викликаємо функцію, що робить неактивною стрілку
	function moveContent(endPos) {
		var time = calculateTime(endPos);
		scrollContent.animate({top: endPos}, time, disableBut);
	}

	//Робимо стрілку неактивною
	//Забираємо устрілки клас "active"
	//Якщо контент знаходиться у крайній нижній точці, то неактивною робимо стрілку "вниз", якщо в крайній верхній - то стрілку "вверх"
	function disableBut() {
		 j('.scroll-arr span').removeClass('active');
		 if (parseFloat(scrollContent.css('top')) == botPos) {
			 scrollWrapper.find('.arr-bot span').addClass('disabled');
			 }
		else if (parseFloat(scrollContent.css('top')) == topPos) {
			 scrollWrapper.find('.arr-top span').addClass('disabled');
		}
	 }

});
