function lib_bwcheck(){ 
  this.ver=navigator.appVersion
  this.agent=navigator.userAgent
  this.dom=document.getElementById?1:0
  this.opera5=this.agent.indexOf("Opera 5")>-1
  this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
  this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
  this.ie7=(this.ver.indexOf("MSIE 7")>-1 && this.dom && !this.opera5)?1:0;
  this.ie8=(this.ver.indexOf("MSIE 8")>-1 && this.dom && !this.opera5)?1:0;
  this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
  this.ie=this.ie4||this.ie5||this.ie6
  this.mac=this.agent.indexOf("Mac")>-1
  this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
  this.ns4=(document.layers && !this.dom)?1:0;
  this.bw=(this.ie8||this.ie7||this.ie6||this.ie5||this.ie4||this.ns4||this.ns6||this.opera5)
  return this
}
bw=new lib_bwcheck() 

function lib_message(txt){alert(txt); return false}

function lib_obj(obj,nest){ 
  if(!bw.bw) return lib_message('Old browser')
  nest=(!nest) ? "":'document.'+nest+'.'
  this.evnt=bw.dom? document.getElementById(obj):
    bw.ie4?document.all[obj]:bw.ns4?eval(nest+"document.layers." +obj):0;	
  if(!this.evnt) return lib_message('Не найден слой ('+obj+')' 
    +'- \nЕсли вы используете Netscape, проверьте теги!')
  this.css=bw.dom||bw.ie4?this.evnt.style:this.evnt; 
  this.ref=bw.dom||bw.ie4?document:this.css.document;
  this.x=parseInt(this.css.left)||this.css.pixelLeft||this.evnt.offsetLeft||0;
  this.y=parseInt(this.css.top)||this.css.pixelTop||this.evnt.offsetTop||0
  this.w=this.evnt.offsetWidth||this.css.clip.width||
    this.ref.width||this.css.pixelWidth||0; 
  this.h=this.evnt.offsetHeight||this.css.clip.height||
    this.ref.height||this.css.pixelHeight||0
  this.moveIt=moveIt;
  this.c=0 //Clip values
  if((bw.dom || bw.ie4) && this.css.clip) {
  this.c=this.css.clip; this.c=this.c.slice(5,this.c.length-1); 
  this.c=this.c.split(' ');
  for(var i=0;i<4;i++){this.c[i]=parseInt(this.c[i])}
  }
  this.ct=this.css.clip.top||this.c[0]||0; 
  this.cr=this.css.clip.right||this.c[1]||this.w||0
  this.cb=this.css.clip.bottom||this.c[2]||this.h||0; 
  this.cl=this.css.clip.left||this.c[3]||0
  this.obj = obj + "Object"; eval(this.obj + "=this")
  return this
}

function moveIt(x,y)
{
  this.x=x;this.y=y;
  this.css.left=this.x;
  this.css.top=this.y;
}

var isLoaded = false;
var isLoop = false;
var isMoving = false;
var isOverScroller = false;
var scrollerOffset;

var scrollerLeft = 65;
var scrollerTop = 0;
var scrollerBottom = 170;
var scrollSpeed = 2;
var scrollTimer;

function scrollerOver() { isOverScroller = true; }
function scrollerOut() { isOverScroller = false; }
function scrollerUp(e) { isMoving = false; if (bw.ie) { isOverScroller = false; } }
function scrollerDown(e)
{
  if (isOverScroller)
  {
    clY=(bw.ns4 || bw.ns6)?e.pageY:event.y||event.clientY;
    oScroller.y = parseInt(oScroller.css.top)||oScroller.css.pixelTop||oScroller.evnt.offsetTop||0;
    scrollerOffset = clY-oScroller.y;
    isMoving = true;
  }
}

function scrollerMove(e)
{
  if (isMoving)
  {
      if (oText.h > oCont.h)
      {
          clY=(bw.ns4 || bw.ns6)?e.pageY:event.y||event.clientY;
          if (clY-scrollerOffset >= scrollerTop && clY-scrollerOffset <= scrollerBottom)
          { oScroller.css.top = clY-scrollerOffset; }
          oScroller.y = parseInt(oScroller.css.top)||oScroller.css.pixelTop||oScroller.evnt.offsetTop||0;
          oText.moveIt(0,-(oText.h-oCont.h)*((oScroller.y-scrollerTop)/(scrollerBottom-scrollerTop)));
          return false;
      }
  }
}

function setScrollerPosition()
{
  if ( oText.h-oCont.h > 0)
  {
    var tempK = -(oText.y/(oText.h-oCont.h));
    if (tempK <= 1)
    { oScroller.moveIt(scrollerLeft,scrollerTop+parseInt(tempK*(scrollerBottom-scrollerTop))); }
  }
}

function scrollUP(by)
{
  if( oText.y < 0)
  {
    oText.moveIt(0,oText.y-by);
    setScrollerPosition();
    if (isLoop) { scrollTimer = setTimeout("scrollUP("+by+");",scrollSpeed);}
  }
}

function scrollDOWN(by) 
{
  if (oText.y > -oText.h+oCont.h)
  {
    oText.moveIt(0,oText.y-by);
    setScrollerPosition();
    if (isLoop) {scrollTimer = setTimeout("scrollDOWN("+by+");",scrollSpeed);}
  }
}


function noScroll()
{
  if(scrollTimer) clearTimeout(scrollTimer);
  isLoop = false;
}

function scroll(by)
{
  if (isLoaded)
  {
    isLoop = true;
    if (by > 0)
    { scrollDOWN(by); }
    else { scrollUP(by); } 
  }
}

function initAll()
{
  oScroller = new lib_obj('divScroller');
  oCont=new lib_obj('divCont');
  oText=new lib_obj('divText','divCont');
  oScroller.moveIt(scrollerLeft,scrollerTop);
  oScroller.evnt.onmouseover = scrollerOver;
  oScroller.evnt.onmouseout = scrollerOut;
  isLoaded = true;
}

if (bw.ns4) { document.captureEvents(Event.MOUSEMOVE|Event.MOUSEDOWN|Event.MOUSEUP); }

document.onmousemove=scrollerMove;
document.onmousedown=scrollerDown;
document.onmouseup=scrollerUp;


