function myScrollBox(sScrollBoxId, iScrollStep, sDirection)
{
var sb = this;

sb.continueScrolling = 0;		// флаг продолжения прокрутки при удержании кнопки мыши
sb.scrollBoxId		= "#"+sScrollBoxId;	// ид. прокручиваемого блока 
sb.scrollStep		= iScrollStep;	// шаг прокрутки, равный высоте или ширине элемента в прокручиваемом блоке
sb.finishScrolling 	= 0;			// флаг окончания прокрутки с замедлением
sb.direction		= sDirection;

sb.doScroll = function(direction, easing)
{
/*
sb.doScroll 
- функция выполнения прокрутки с заданными 
направлением (direction) и ускорением (easing)
*/
var speed = 				// время прокрутки
	easing=="linear"		// без ускорения
	? 250					// Х сек...
	: 400;					// с ускорением - У сек.
		
		// карта свойств CSS и правил их изменения во времени (анимации) 
		var cssMap = {};	
		
		cssMap[sb.direction=="horizontal"	
			// выбор свойства в зависимости от расположения прокручиваемого блока
			? "scrollLeft"
			: "scrollTop"] = direction + sb.scrollStep			// шаг прокрутки 
		
$(sb.scrollBoxId).animate
	(
		cssMap, speed, 
			(sb.continueScrolling 
				|| sb.eventType=='mousewheel' 
				|| sb.eventType=='DOMMouseScroll'
				)
				? "linear"
				: "swing"
			, function()
			{
				if (sb.continueScrolling)	// если надо продолжать прокрутку
				{
				sb.doScroll(direction, "linear");
				//sb.continueScroll(direction)//продолжим... 
				}
			}
	);
}

sb.continueScroll = function(direction)
{
/*
sb.continueScroll - функция продолжения или окончания прокрутки в заданном направлении
*/
	if (sb.continueScrolling)			// если надо продолжать 
	{
	sb.doScroll(direction, "linear");	//крутим линейно
	}
	else								// если окончание 
	{
	
	sb.finishScrolling	= 1;
	sb.doScroll(direction, "swing");	// крутим с замедлением
	}
}
		
sb.startScroll = function(argevent)
{

	try{
	argevent.type;
	event = argevent;
	}
	catch(qqq){}
/*
sb.startScroll - функция начала прокрутки 
*/
sb.continueScrolling=1;	// флаг продолжения прокрутки
sb.finishScrolling = 0;	// флаг окончания прокрутки с замедлением
sb.eventType = event.type;

var srcElementId = event.srcElement
	? event.srcElement.id 
	: event.target.id;

var direction = ("#"+srcElementId == sb.scrollBoxId+'DownButton')
	? "+="	// движение вниз - это увеличение сдвига от верха
	: "-=";	// вверх - уменьшение
sb.doScroll(direction, "linear");
}
sb.stopScroll = function(argevent)
{

	try{
	argevent.type;
	event = argevent;
	}
	catch(qqq){}
/*
sb.stopScroll - функция сброса флага прокрутки.
При сброшенном флаге прокрутки, действие 
заканчивается в функции sb.continueScroll
*/
sb.continueScrolling= 0;
sb.eventType = event.type;
}

sb.scroll = function(argevent)
{

	try{
	argevent.type;
	event = argevent;
	}
	catch(qqq){}
sb.eventType = event.type;

var direction = event.wheelDelta
	? (event.wheelDelta < 0
		? "+="
		: "-="
		)
		
	: (event.detail < 0
		? "-="
		: "+="	
		);
/*
var direction = (wheelDelta < 0)
	? "+="	// движение вниз - это увеличение сдвига от верха
	: "-=";	// вверх - уменьшение
	*/
sb.doScroll(direction, "linear");

//alert(event.wheelDelta);

// запрет прокрутки окна во время прокрутки галереи
event.cancelBubble = true;
event.returnValue = false;
	try
	{
	//alert(event.cancelable);
	//event.stopPropagation();
	event.preventDefault(); //speciaaly for mr red fox
	}
	catch(qq){}
return false;
}
$(sb.scrollBoxId+"UpButton").mousedown(sb.startScroll);
$(sb.scrollBoxId+"UpButton").mouseup(sb.stopScroll);
$(sb.scrollBoxId+"DownButton").mousedown(sb.startScroll);
$(sb.scrollBoxId+"DownButton").mouseup(sb.stopScroll);

//document.getElementById(sScrollBoxId).onmousewheel = sb.scroll;

var mousewheelevt=(/Firefox/i.test(navigator.userAgent))
	? "DOMMouseScroll" 
	: "mousewheel" //FF doesn't recognize mousewheel as of FF3.x
 
if (document.attachEvent) //if IE (and Opera depending on user setting)
document.getElementById(sScrollBoxId).attachEvent("on"+mousewheelevt, sb.scroll)

else if (document.addEventListener) //WC3 browsers
document.getElementById(sScrollBoxId).addEventListener(mousewheelevt, sb.scroll, false)
	
}
