var Scrollbar = {
	// контейнер, контент, стрелка вверхб стредка вниз, "лыжня" для бегунка, бегунок
	init : function(sContainerId, sContentId, sUpId, sDownId, sDraggerAreaId, sDraggerId)
	{
		// иницилизируем объекты скрола
		oContainer = document.getElementById(sContainerId); // перемещаемый div с контентом
		oContent = document.getElementById(sContentId); // перемещаемый div с контентом
		oUp = document.getElementById(sUpId); // кнопка вверх скролбара
		oDown = document.getElementById(sDownId); // кнопка вниз скролбара
		oDraggerArea = document.getElementById(sDraggerAreaId); // область, в которой "ездит" бегунок скролбара
		oDragger = document.getElementById(sDraggerId); // бегунок скролбара
		
		// выставляем движущиеся обекты в начальные точки
		oContent.style.top = '0px';
		oDragger.style.top = '0px';
		
		// получаем высоты необходимых обектов
		nContainerH = oContainer.offsetHeight; // высота контейнера контента
		nContentH = oContent.offsetHeight; // высота div'а с контентом
		
		// проверка на необходимость скрола
		if(nContentH <= nContainerH) // если контент меньше или равен контейнеру, то скрываем скрол
		{
			Scrollbar.hideControlElements();
			return; // и прекращаем дальнейшую работу скрипта
		}	
		
		nDraggerAreaH = oDraggerArea.offsetHeight; // высота област, в которой "ездит" бегунок
		// вычисляем высоту бегунка скролбара из пропорции nContentH / nContainerH = nDraggerAreaH / nDraggerH
		nDraggerH = (nContainerH * nDraggerAreaH) / nContentH;
		// если высота бегунка окажиться очень мала (при большом контенте), выставляем ее на минимально допустимую
		if(nDraggerH < 15) nDraggerH = 15;
		
		// выставляем высоту бегунка скролбара
		oDragger.style.height = Math.round(nDraggerH) + "px";
		
		// определяем действия для бегунка скролбара
			// расстояние для перемещения бегунка  (высота "лыжни" - высота бегунка)
		nDraggerDist = Math.round(nDraggerAreaH - nDraggerH);
		// из файла dom-drag.js (o, oRoot, minX, maxX, minY, maxY)
		Drag.init(oDragger, null, 0, 0, 0, nDraggerDist);
		oDragger.onDrag = Scrollbar.onDragScroll;
		
		// определяем действия для стрелок
		oUp.onmousedown = Scrollbar.onUpStart;
		oDown.onmousedown = Scrollbar.onDownStart;
		oUp.onmouseup = Scrollbar.onArrowStop;
		oDown.onmouseup = Scrollbar.onArrowStop;
		oUp.onmouseout = Scrollbar.onArrowStop;
		oDown.onmouseout = Scrollbar.onArrowStop;

	},
	// перемещение контента взависимости от положения бегунка
	onDragScroll : function()
	{
		// y-координата бегунка относителя "лыжни"
		var nDraggerY = parseInt(oDragger.style.top);
		// вычисляем y-координату контента
  		var nContentY = 0 - (nDraggerY * (nContentH - nContainerH) / nDraggerDist);
  		// выставлем на эту координату
		oContent.style.top = nContentY + "px";
	},
	// стартуем скролирование на стрелку "вверх"
	onUpStart : function()
	{
		Scrollbar.iScrollInt = setInterval('Scrollbar.arrowScroll(\'up\')', 10);
	},
	// стартуем скролирование на стрелку "вниз"
	onDownStart : function()
	{
		Scrollbar.iScrollInt = setInterval('Scrollbar.arrowScroll(\'down\')', 10);
	},
	// останов скролирования
	onArrowStop : function()
	{
		if(typeof Scrollbar.iScrollInt != 'undefined') clearInterval(Scrollbar.iScrollInt);
	},
	// скролирование контента
	arrowScroll : function(sVector) // (направление)
	{
		nStep = 5; // приращение пикселей за одну итерецаю 
		var nContentY = parseInt(oContent.style.top); // y-координата контента
		switch(sVector)
		{
			case 'up' :
			// перемещать контент вниз до момента, как y-координата станет равной нулю
			if(nContentY < 0)
			{
				oContent.style.top = (nContentY + nStep) + 'px';
				// также перемещаем бегунок относительно контента
				Scrollbar.moveDragger();
			}
			else Scrollbar.onArrowStop(); // останов скролирования
			break;
			
			case 'down' :
			// перемещать контент вниз до момента, как y-координата станет равной высоте контента минус высота контейнера
			if(nContentY > -(nContentH - nContainerH)) 
			{
				oContent.style.top = (nContentY - nStep) + 'px';
				// также перемещаем бегунок относительно контента
				Scrollbar.moveDragger();
			}
			else Scrollbar.onArrowStop();  // останов скролирования
			break;
		}
	},
	// перемещение бегунка
	moveDragger : function()
	{
		// y-координата контента
		var nContentY = parseInt(oContent.style.top);
		// y-координата бегунка вычисляется как положительная y-координата контента деленная на разницу в значения
		var nDraggerY = (nContentY * -1) / ((nContentH - nContainerH) / nDraggerDist);
		oDragger.style.top = nDraggerY + 'px';
	},
	// скрытие элементов управления скролом
	hideControlElements : function()
	{
		oUp.style.display = 'none'; // срелка "вверх"
		oDown.style.display = 'none'; // стрелка "вниз"
		oDraggerArea.style.display = 'none'; // лыжня для бегунка и соот-но сам бегунок
	}
}
