
//****************************************************************************************
//****************************************************************************************
// Scrollfunktion für Horizontalen Scroll mit Balken
//****************************************************************************************
//****************************************************************************************

//****************************************************************************************
// Funktion um alle Aktionen sofort zu stoppen
//****************************************************************************************
 
  function stopAll()
  {
    if (ScrollBar) balkenAnimate=false;
    animate=false;
  }
  
  
//****************************************************************************************
// Definition der Variablen (Die ersten Werte können angepasst werden)
//****************************************************************************************
  //alert(document.getElementById("ScrollDivBalken").offsetHeight);

  var divToScrollID = "ScrollDiv";
  var divToShowID = "ShowDiv";
  var divBalkenToScrollID = "ScrollDivBalken";
  var divBalkenToShowID = "ShowDivBalken";
  var TopBtnID = "TopBtn";
  var BottomBtnID = "BottomBtn";
  var blankPic = "img/blank.gif";
  var topPic = "img/right.gif";
  var bottomPic = "img/left.gif";
  var step = 5;
  
  var balkenAnimate= false; 
  var animate = false; 
  var divToShow; 
  var divToScroll;
  var scrollHeight;
  var scrollTop = 0;
  var showHeight;
  var TopBtn;
  var BottomBtn;
  var divBalkenToScroll;
  var divBalkenToShow;
  var balkenScrollHeight;
  var balkenScrollTop = 0;
  var balkenNewScrollHeight;
  var balkenShowHeight;
  var balkenStep;

  document.onmouseup = stopAll;
  
  
  
  
//****************************************************************************************
// Initialiesierung der Variablen 
// Längenabfragen
// Browserweiche
//****************************************************************************************
  
  window.onload = function (init)
  { 
    try
    {
    // Die Tags mit den oben angegebenen IDs werden in einem Objekt gespeichert
    divToShow = document.getElementById(divToShowID);
    divToScroll = document.getElementById(divToScrollID);
    if (ScrollBar) divBalkenToScroll = document.getElementById(divBalkenToScrollID);
    if (ScrollBar) divBalkenToShow = document.getElementById(divBalkenToShowID);
    TopBtn = document.getElementById(TopBtnID);
    BottomBtn = document.getElementById(BottomBtnID);
    

       TopBtn.src = blankPic;
       BottomBtn.src = blankPic;
    // Breiten der Haupt - Divs werden abgefragt
    showHeight = divToShow.offsetHeight;       
    scrollHeight = divToScroll.offsetHeight;
    
    if (scrollHeight<showHeight)
    {
       return false;
    }
       
    TopBtn.src = bottomPic;
    BottomBtn.src = topPic;

    if (ScrollBar)
    {
      document.getElementById(divBalkenToShowID).style.visibility = "visible";
      
      // Breiten der Balken - Divs werden abgefragt
      balkenShowHeight = divBalkenToShow.offsetHeight; 
      balkenScrollHeight = divBalkenToScroll.offsetHeight;

      // Test ob neue Balkengröße groß genug (20 ist min Balkengröße)
      // Außerdem wird der Step für die Balkenbewegung festgelegt
      balkenNewScrollHeight = 2 * showHeight - scrollHeight;
      if (balkenNewScrollHeight < 2000)
      {
        balkenStep = (balkenShowHeight-1 -balkenScrollHeight)/(scrollHeight-showHeight)*step;
      }
      else
      {
      
        balkenScrollHeight = balkenNewScrollHeight;
        divBalkenToScroll.style.height = balkenScrollHeight + "px";
        balkenStep = step;
      }

      // Browserweiche da der IE und der FF nicht gleich mit den events umgehen
      if (navigator.appName == 'Netscape')
      {
          // Event Objekt wird erzeugt
         document.captureEvents(Event.MOUSEMOVE);
         document.onmousemove = netscapeMouseMove;
      }
      else
          document.onmousemove = microsoftMouseMove;
    }
    }
    catch (e)
    {}
  }


//****************************************************************************************
// Funktion um den Div Bereich nach Links zu bewegen dass 
// sieht dann so aus als würde man nach rechts Scrollen
//****************************************************************************************
 
  function goDown()
  {
    // Abfrage ob man am Rechten Ende angekommen ist
    if ( scrollTop > showHeight - scrollHeight )
    {
       //TopBtn.src = bottomPic;
       
       scrollTop = scrollTop - step;
       if (ScrollBar) balkenScrollTop = balkenScrollTop + balkenStep
       
       divToScroll.style.top = scrollTop + "px";
       if (ScrollBar) divBalkenToScroll.style.top = balkenScrollTop + "px";
       
       if (animate) setTimeout("goDown();", 25);
    }
    else
            if (ScrollBar) divBalkenToScroll.style.top = - balkenScrollHeight + balkenShowHeight + divBalkenToShow.style.top + "px";
        //BottomBtn.src = blankPic;
  }


//****************************************************************************************
// Funktion um den Div Bereich nach Links zu bewegen dass 
// sieht dann so aus als würde man nach rechts Scrollen
//****************************************************************************************
 
  function goUp()
  {
     // Abfrage ob man am Linken Ende angekommen ist
     if (scrollTop < 0 )
     { 
       //BottomBtn.src = topPic;
       
       scrollTop = scrollTop + step;
       if (ScrollBar) balkenScrollTop = balkenScrollTop - balkenStep
       
       divToScroll.style.top = scrollTop + "px";
       if (ScrollBar) divBalkenToScroll.style.top = balkenScrollTop + "px";
       
       if (animate) setTimeout("goUp();", 25);
     }
     else
            if (ScrollBar) divBalkenToScroll.style.top = 0 + "px";
         //TopBtn.src = blankPic;
  }
  
  
//****************************************************************************************
// Funktion um den Balken verschieben zu können
// nur für Netscape Browser
//****************************************************************************************
 
  function netscapeMouseMove(e) 
  {
    if (balkenAnimate)
    {
      // Abfrage ob man am Linken Ende angekpmmen ist
      if (e.clientY > divBalkenToShow.offsetTop + balkenScrollHeight/2 + 10)
      {
        // Abfrage ob man am Rechten Ende angekpmmen ist
        if (e.clientY < divBalkenToShow.offsetTop + balkenShowHeight - balkenScrollHeight/2 + 10)
        {
          //BottomBtn.src = topPic;
          //TopBtn.src = bottomPic;
          

          
          scrollTop = ( divBalkenToShow.offsetTop + 10 + balkenScrollHeight/2 - e.clientY) * (scrollHeight - showHeight)/( balkenShowHeight - balkenScrollHeight );
          divToScroll.style.top = scrollTop + 0  + "px";
          
          //alert(divBalkenToShow.offsetTop);
          
          
          
          balkenScrollTop = e.clientY - divBalkenToShow.offsetTop - balkenScrollHeight/2 -10;
          divBalkenToScroll.style.top = balkenScrollTop + "px";
          
        }
        else
        {
          //BottomBtn.src = blankPic;
          divToScroll.style.top = showHeight - scrollHeight  + "px";
          divBalkenToScroll.style.top = - balkenScrollHeight + balkenShowHeight + "px";
        }
      }
      else
      {
        //TopBtn.src = blankPic;
        divToScroll.style.top = 0 + "px";
        divBalkenToScroll.style.top = 0 + "px";
      }
    }
  } 


//****************************************************************************************
// Funktion um den Balken verschieben zu können
// nur IE Browser
//****************************************************************************************
 
  function microsoftMouseMove() 
  {
    if (balkenAnimate)
    {
      // Abfrage ob man am Linken Ende angekpmmen ist
      if (window.event.clientY > divBalkenToShow.offsetTop + balkenScrollHeight/2 +15)
      {
        // Abfrage ob man am Rechten Ende angekpmmen ist
        if (window.event.clientY < divBalkenToShow.offsetTop - balkenScrollHeight/2 + balkenShowHeight +15)
        {
          //BottomBtn.src = topPic;
          //TopBtn.src = bottomPic;
          

          scrollTop = (divBalkenToShow.offsetTop + 16  + balkenScrollHeight/2 - window.event.clientY) * (scrollHeight - showHeight)/(balkenShowHeight - balkenScrollHeight);
          divToScroll.style.top = scrollTop + "px";
          
          balkenScrollTop = window.event.clientY - divBalkenToShow.offsetTop - balkenScrollHeight/2 -15;
          divBalkenToScroll.style.top = balkenScrollTop + "px";
        }
        else
        {
          //BottomBtn.src = blankPic;
          divToScroll.style.top = showHeight - scrollHeight + "px";
          divBalkenToScroll.style.top = - balkenScrollHeight + balkenShowHeight + "px";
        }
      }
      else
      {
        //TopBtn.src = blankPic;
        divToScroll.style.top = 0 + "px";
        divBalkenToScroll.style.top = 0 + "px";
      }
    }
    return false;
  }
  
