function get(id)
{
    return document.getElementById(id);
}

var scroller = get('scroller');
var scrollerBar = get('scroller_bar');
var object = get('object');
var content = get('content');
var menu = get('movemenu');




// Ширина видимой части объекта (в нашем случае — таблицы)
var objectWidth = content.offsetWidth; 

/*alert(content.offsetWidth); */

// Ширина объекта целиком              
var objectTrackWidth = menu.offsetWidth; 

var scrollerTrackWidth = scrollerBar.offsetWidth;
/*alert(objectTrackWidth);*/

// Ширина ползунка
var scrollerWidth = Math.round( (objectWidth * scrollerTrackWidth) / objectTrackWidth );

// Учтем, что максимальная ширина ползунка - это ширина полосы прокрутки
scrollerWidth = (scrollerWidth > scrollerTrackWidth) ?  scrollerTrackWidth : scrollerWidth;

/*alert(scrollerWidth);*/
// Устанавливаем ширину ползунка
scroller.style.width = scrollerWidth + "px";

// На каждый пиксель сдвига бегунка мы будем сдвигать меню на величину delta
var delta = objectTrackWidth / scrollerTrackWidth;




  
  // Захватить
scroller.onmousedown = drag;

// Перетащить
window.onmousemove = move;
 
// Бросить
window.onmouseup = drop;

// Эта переменная нам поможет определить:
// Мы просто двигаем мышью по экрану или все-таки перетаскиваем ползунок
var canDrag = false;

// Здесь будем хранить начальный сдвиг ползунка
var shift_x = 0;

var nselect=0;
var num=-1;


function start(){
    $$('.js_menu2 td').each(
                function(n){
                num++;                
                if (n.className == "selected" ) nselect=num;
                
                })
        };                
                
start();

/*alert(nselect);*/

var newpos=0;
var oldpos=0;
var speed=500;
var deadline=0;
var startline=0;
var sds;

var timeflag=0;

function drag(event)
{
    if (!event)
    {
        event = window.event;
    }
    canDrag = true;
    shift_x = event.clientX - parseInt(scroller.style.left);    
    // Здесь:
    blockEvent(event);
    return false;
}

function move(event)
{    
    if (!event)
    {
        event = window.event;
    }
    
    if (canDrag)
    {
        setPosition(event.clientX - shift_x);
        newpos=event.clientX - shift_x;
        document.getElementById('newpos').style.left = newpos + "px";
        // И здесь:
        blockEvent(event);
    }
    return false;
}


function drop()
{
    // Освобождаем ползунок
    canDrag = false; 
}

function setPosition(newPosition)
{
    // Проверим не выйдет ли наш ползунок за границы полосы прокрутки
    // Заметим что предельной точкой справа является разность ширины полосы прокрутки и ширины ползунка
    // Ведь мы устанавливаем позицию его левой границы
    if ( (newPosition <= scrollerTrackWidth - scrollerWidth) && (newPosition >= 0) )
    {
        scroller.style.left = newPosition + "px"; 
    }
    else if (newPosition > scrollerTrackWidth - scrollerWidth)
    {
        scroller.style.left = scrollerTrackWidth - scrollerWidth + "px"; 
    }
    else
    {
        scroller.style.left = 0 + "px"; 
    }
    // Вслед за ползунком передвинем меню:
    menu.style.marginLeft = Math.round( parseInt(scroller.style.left)  * 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 
  // Для Mozilla необходимо создать EventListener:
  if (get('content').addEventListener)
  {
      get('content').addEventListener('DOMMouseScroll', wheel, false);
  }
  // Для всех остальных браузеров подойдет вот такая инициализация:
  get('content').onmousewheel = wheel;
  
  
  function wheel(event)
{
    // Переменная, в которой будем хранить сдвиг
    var wheelDelta = 0;
    
    // Шаг меню при прокрутке
    var step = 100;
    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.left);
        var newPosition = wheelDelta*step + currentPosition;
        
        oldpos=currentPosition;
        if ( (newpos>oldpos && wheelDelta<0) || (newpos<oldpos && wheelDelta>0) ) {newpos=oldpos+wheelDelta*step;} else newpos+=wheelDelta*step;        
        sds = new Date();        
        deadline=sds.getMinutes()*60000+sds.getSeconds()*1000+sds.getMilliseconds()+speed;        
        document.getElementById('newpos').style.left = newpos + "px";
        
        if (!timeflag){
            timeflag=1;
            smooth_move();
        }
        
    }
    
    // Убиваем событие (чтобы страница не скроллилась)
    if (event.preventDefault)
    {
        event.preventDefault();
    }
    event.returnValue = false;
    blockEvent(event);
}

function smooth_move(){ 
 sds = new Date();
 var curtime=sds.getMinutes()*60000+sds.getSeconds()*1000+sds.getMilliseconds();
 if (curtime < deadline) { 
    setPosition( oldpos+(speed-(deadline-curtime))/speed*(newpos-oldpos) ); 
    setTimeout( 'smooth_move()', 20);
    }
 else {
    setPosition(newpos);
    timeflag=0;
 }
 
}


function arrow(direction){
    oldpos = parseInt(scroller.style.left);
    
    if ( (newpos>oldpos && direction<0) || (newpos<oldpos && direction>0) ) {newpos=oldpos+direction*100;} else newpos+=direction*100;        
    document.getElementById('newpos').style.left = newpos + "px";
    sds = new Date();        
    deadline=sds.getMinutes()*60000+sds.getSeconds()*1000+sds.getMilliseconds()+speed; 
    if (!timeflag){
            timeflag=1;
            smooth_move();
        }
}

var startPosition=0;
/*if (284*nselect > objectWidth ) startPosition=284*nselect/delta ;*/
startPosition=(284*nselect - objectWidth/2 )/delta ;
setPosition(startPosition);