function lm_click (mid) {
	if(document.getElementById('gallery')&&document.getElementById(mid)) {		
		var obj=document.getElementById(mid);
		clear_current(); // чистим от класса current
		li1=obj.parentNode;
		li2=li1.parentNode.parentNode;
		li3=li2.parentNode.parentNode;
		li4=li3.parentNode.parentNode;
		li5=li4.parentNode.parentNode;

		// нацепляем класс current всем родителям
		if(li1.nodeName=='LI') li1.className+='-current current';
		if(li2.nodeName=='LI') li2.className+='-current current';
		if(li3.nodeName=='LI') li3.className+='-current current';
		if(li4.nodeName=='LI') li4.className+='-current current';	
		if(li5.nodeName=='LI') li5.className+='-current current';			
		
		$("#all_menu").unbind('mousewheel');	
		new ScrollMenu;	
	}
}
function clear_current() {
	var all_li=document.getElementById('gallery').getElementsByTagName('div')[0].getElementsByTagName('ul')[0].getElementsByTagName('li'); // все элементы li в меню
	// очищаем все current со всех элементов
	for(i=0;i<all_li.length;i++) {
		all_li[i].className=all_li[i].className.replace('-current current','');
	}
}
var ScrollMenu = function () {		
	if(!get('scroller')&&!get('scrollbar')&&!get('gallery')&&!get('all_menu')) return false;
	var scroller = get('scroller');
	var scrollerBar = get('scrollbar');
	var content = get('gallery').getElementsByTagName('div')[0];
	var all_menu = get('all_menu');	
	// Шаг меню при прокрутке колесиком
	var step = 30;

	// Ширина видимой части объекта (в нашем случае — таблицы)
	var objectWidth = all_menu.offsetHeight;
	
	// Высота объекта целиком
	var objectTrackWidth = content.offsetHeight+5; 
	
	// Исходная ширина ползунка
	var scrollerTrackWidth = scrollerBar.offsetHeight;
	
	// Ширина ползунка
	var scrollerWidth = Math.round( (objectWidth * scrollerTrackWidth) / objectTrackWidth );
	
	// Учтем, что максимальная высота ползунка - это высота полосы прокрутки
	scrollerWidth = (scrollerWidth > scrollerTrackWidth) ?  scrollerTrackWidth : scrollerWidth;	
	
	// Устанавливаем высоту ползунка
	scroller.style.height = scrollerWidth + "px";

	// устанавливаем так же высоту средней ячейки - для IE - костыль только для данного html
	scrollerBar.getElementsByTagName('td')[1].style.height = scrollerWidth - 28 + "px";
	
	// На каждый пиксель сдвига бегунка мы будем сдвигать меню на величину delta
	var delta = objectTrackWidth / scrollerTrackWidth;
	
	// переустановим ползунок, если он внезапно изменился и отступим обратно
	if(scroller.offsetHeight+scroller.offsetTop>scrollerTrackWidth) {
		scroller.style.top=scrollerTrackWidth-scrollerWidth+'px';	
		content.style.marginTop = Math.round(parseInt(scroller.style.top)  * delta * (-1) ) + "px";	
	}		
	
	///////////////////////////////////////// ПЕРЕТАСКИВАНИЕ 
	// Захватить
	scroller.onmousedown = drag;
	
	// Перетащить
	document.body.onmousemove = move;
	all_menu.onmousemove = move;
	
	// Бросить
	$('body').bind('mouseup',drop);
	
	// По клику на скрол бар
	scrollerBar.onmousedown = Barmove;
	
	// Эта переменная нам поможет определить:
	// Мы просто двигаем мышью по экрану или все-таки перетаскиваем ползунок
	var canDrag = false;
	
	// Здесь будем хранить начальный сдвиг ползунка
	var shift_x;    
	
	function set_y(event) {
		if (!event)	{
		    event = window.event;
		}		
		return event.clientY+document.documentElement.scrollTop+document.body.scrollTop-$(all_menu).offset().top;
	}
	
	function drag(event){		
		if (!event)	{
		    // Всем известно, что в Mozilla event передается как параметр
		    // А в IE его можно получить вот так:
		    event = window.event;
		}	
		// Отметим, что мы захватили ползунок.
		// Теперь при сдвиге мыши, ползунок должен сдвинуться вместе с ней
		canDrag = true;
		
		// А так же запомним начальный сдвиг
		shift_x = set_y(event) - parseInt(scroller.style.top);
		
		blockEvent(event);
		return false;
	}
	
	function move(event){		
		if (!event)	{
		    event = window.event;
		}
		// Здесь мы как раз и проверяем:
		// Сдвигать ли нам ползунок вслед за мышью, или оставить его неподвижным
		if (canDrag)	{
		    setPosition(set_y(event) - shift_x);
		    blockEvent(event);
		}
		return false;
		}
	
	function Barmove(event){
		if (!event)	{
		    event = window.event;
		}					
		setPosition(set_y(event) - scrollerWidth/2);		
		drag(event);		
		}
		
	
	function drop(){
		// Освобождаем ползунок
		canDrag = false; 
	}
	
	function setPosition(newPosition){
		// Проверим не выйдет ли наш ползунок за границы полосы прокрутки
		// Заметим что предельной точкой справа является разность ширины полосы прокрутки и ширины ползунка
		// Ведь мы устанавливаем позицию его левой границы
		//alert(newPosition+' '+scroller.style.top);
		if ( (newPosition <= scrollerTrackWidth - scrollerWidth) && (newPosition >= 0) )	{
		    scroller.style.top = newPosition + "px";		    
		}
		else if (newPosition > scrollerTrackWidth - scrollerWidth)	{
			
		    scroller.style.top = scrollerTrackWidth - scrollerWidth + "px";
		}
		else	{
		    scroller.style.top = 0 + "px";
		}
		
		// Вслед за ползунком передвинем меню:
		content.style.marginTop = Math.round( parseInt(scroller.style.top)  * delta * (-1) ) + "px";
	    return false;
	}	
	
	
	function blockEvent(event)	{
		if (!event)	{
		    event = window.event;
		}
		if(event.stopPropagation) event.stopPropagation();
		else event.cancelBubble = true;
		if(event.preventDefault) event.preventDefault();
		else event.returnValue = false;
	}
	//////////////////////////////////////////////////// КОЛЕСО МЫШИ
	
	
	
	// Инициализация обработчика колеса мыши, повесим его только на слой content 
	// mwheelIntent.js - плагин для jquery для колеса мыши
	$("#all_menu").bind('mousewheel',wheel);

	
	function wheel(event) 	{
		// Переменная, в которой будем хранить сдвиг
		var wheelDelta = 0;		
		if (!event) {
		    event = window.event;
		}
		if (event.wheelDelta) 		{
		    // В IE и Opera при сдвиге колеса на один шаг event.wheelDelta принимает значение 120
		    // Значения сдвига в этих двух браузерах совпадают по знаку.
		    wheelDelta = -event.wheelDelta/120;
		} 
		else if (event.detail) 		{
		    // В Mozilla, значение wheelDelta отличается по знаку от значения в IE.
		    // Сдвиг колеса на один шаг соответствует значению 3 параметра event.detail          
		    wheelDelta = event.detail/3;
		}
		
		// При скроллинге вверх wheelDelta > 0
		// При скролинге вниз - wheelDelta < 0
		if (wheelDelta)    {    	
		    var currentPosition = parseInt(scroller.style.top);                  
		    var newPosition = wheelDelta*step + currentPosition;
		    setPosition(newPosition); 
		}

		// Убиваем событие (чтобы страница не скроллилась)
		if (event.preventDefault)
		{
		    event.preventDefault();
		}
		event.returnValue = false;
		blockEvent(event);					
	}

	
	if($(all_menu).find("li.current").size()>0) {
		var currentTop=$(all_menu).find("li.current").offset().top-$(all_menu).offset().top;
		
		if(currentTop>objectWidth){
			setPosition(Math.round(currentTop/delta));
		}	
	}
	return true;
	
}
