function scrollBars(elm) {
  try
  {

    /* globale Konfiguration START */

    this.elm = document.getElementById(elm); // auto

    this.elm.obj = this; // auto
    this.id = "sb_" + scrollBars.num++; // auto

    this.elmHeight = this.elm.offsetHeight; // auto
    this.elmWidth = this.elm.offsetWidth; // auto
    this.elmScrollHeight = this.elm.scrollHeight; // auto
    this.elmScrollWidth = this.elm.scrollWidth; // auto
    
    this.newContentElmHeight; // auto
    this.newContentElmWidth; // auto
    this.newContentElmScrollHeight; // auto
    this.newContentElmScrollWidth; // auto
    
    this.hasVBar = (this.elm.scrollHeight > this.elm.offsetHeight) ? true : false;
    this.hasHBar = (this.elm.scrollWidth > this.elm.offsetWidth) ? true : false;

    this.vBarWidth = '9px'; // default, custom
    this.hBarHeight = '9px'; // default, custom
    this.vBarScrollLength; // auto
    this.hBarScrollLength; // auto

    this.vMultiplication; // auto, Multiplikator (Scrollbarhoehe, Scrollheight des Contents)
    this.hMultiplication; // auto, Multiplikator (Scrollbarbreite, Scrollwidth des Contents)

    this.contentVMargin = '4px'; // default, custom
    this.contentHMargin = '4px'; // default, custom

    /* globale Konfiguration ENDE */

    /* Anfasser START */

    this.vEventStartYPos; // auto
    this.vBarStartYPos; // auto
    this.vBarYPos; // auto
    this.intContentVActualPos; // auto
    this.floatContentVActualPos; // auto

    this.hEventStartXPos; // auto
    this.hBarStartXPos; // auto
    this.hBarXPos; // auto
    this.intContentHActualPos; // auto
    this.floatContentHActualPos; // auto

    /* Anfasser ENDE */

    /* Mousewheel START */

    this.wheelContentVSpeed = 9; // default, custom
    this.wheelContentHSpeed = 9; // default, custom

    /* Mousewheel ENDE */

    /* Buttons START */

    this.upButtonContentSpeed = 4; //default, custom
    this.downButtonContentSpeed = 4; //default, custom
    this.leftButtonContentSpeed = 4; //default, custom
    this.rightButtonContentSpeed = 4; //default, custom

    /* Buttons ENDE */

    /* Buttons und Mousewheel START */

    this.floatVBarActualPos; // auto
    this.floatHBarActualPos; // auto

    /* Buttons und Mousewheel ENDE */

    // Eigenschaften, die zugewiesen werden muessen, Layout-Eigenschaften START
    // vertikaler Scrolbalken START
      this.vUpHeight;
      this.vUpBgColor;
      this.vUpBgImg;
      this.vDownHeight;
      this.vDownBgColor;
      this.vDownBgImg;
      this.vAnfasserHeight = '32px';
      this.vAnfasserBgColor;
      this.vAnfasserBgImg;
      this.vBarBgColor;
      this.vBarContentBgColor;
      this.vBarContentBgImg;
    // vertikaler Scrolbalken ENDE
  
    // horizontaler Scrolbalken START
      this.hLeftWidth;
      this.hLeftBgColor;
      this.hLeftBgImg;
      this.hRightWidth;
      this.hRightBgColor;
      this.hRightBgImg;
      this.hAnfasserWidth = '32px';
      this.hAnfasserBgColor;
      this.hAnfasserBgImg;
      this.hBarBgColor;
      this.hBarContentBgColor;
      this.hBarContentBgImg;
    // horizontaler Scrolbalken ENDE
    // Eigenschaften, die zugewiesen werden muessen, Layout-Eigenschaften ENDE

    //this.init();
  }
  catch(e)
  {
    try
    {
      this.elm.style.overflow = 'auto';
    }
    catch(e)
    {
      //alert('schade')
    }
  }
}
scrollBars.num = 0;
scrollBars.s_b_html = document.getElementsByTagName('html')[0];
scrollBars.prototype.onSetup = new Function();
scrollBars.prototype.init = s_b_init;
scrollBars.prototype.embedElm = s_b_embedElm;
scrollBars.prototype.createVScrollbar = s_b_createVScrollbar;
scrollBars.prototype.createHScrollbar = s_b_createHScrollbar;
scrollBars.prototype.calculateVBar = s_b_calculateVBar;
scrollBars.prototype.calculateHBar = s_b_calculateHBar;

scrollBars.prototype.registerButton = s_b_registerButton;
scrollBars.prototype.vScroll = s_b_vScroll;
scrollBars.prototype.hScroll = s_b_hScroll;
scrollBars.prototype.stopButtonScroll = s_b_stopButtonScroll;

scrollBars.prototype.setBars = s_b_setBars;
scrollBars.prototype.setContentMargins = s_b_setContentMargins;
scrollBars.prototype.setBarWidth = s_b_setBarWidth;
scrollBars.prototype.setButtonSize = s_b_setButtonSize;
scrollBars.prototype.setButtonBGColor = s_b_setButtonBGColor;
scrollBars.prototype.setButtonBGImg = s_b_setButtonBGImg;
scrollBars.prototype.setAnfasserLength = s_b_setAnfasserLength;
scrollBars.prototype.setAnfasserBgColor = s_b_setAnfasserBgColor;
scrollBars.prototype.setAnfasserBgImg = s_b_setAnfasserBgImg;

scrollBars.prototype.setBarBgColor = s_b_setBarBgColor;

scrollBars.prototype.setBarContentBgColor = s_b_setBarContentBgColor;
scrollBars.prototype.setBarContentBgImg = s_b_setBarContentBgImg;
scrollBars.prototype.setButtonContentSpeed = s_b_setButtonContentSpeed;
scrollBars.prototype.setWheelContentSpeed = s_b_setWheelContentSpeed;

scrollBars.prototype.updateScrollbars = s_b_updateScrollbars;
scrollBars.prototype.updateScrollbars_2 = s_b_updateScrollbars_2;

function s_b_init() {
  this.onSetup();
  if (this.hasVBar || this.hasHBar) {
    this.embedElm();
  }
  if (this.hasVBar) {
    this.createVScrollbar();
    this.calculateVBar();
  }
  if (this.hasHBar) {
    this.createHScrollbar();
    this.calculateHBar();
  }
}

function s_b_updateScrollbars()
{
  this.obj.floatVBarActualPos = this.obj.vBarScrollLength - this.obj.newContentElm.scrollTop / this.obj.vMultiplication;
  if (this.obj.vBar) this.obj.vBar.scrollTop = this.obj.floatVBarActualPos;
  this.obj.floatHBarActualPos = this.obj.hBarScrollLength - this.obj.newContentElm.scrollLeft / this.obj.hMultiplication;
  if (this.obj.hBar) this.obj.hBar.scrollLeft = this.obj.floatHBarActualPos;
  //document.getElementById('divAusgabe').innerHTML = this.scrollTop + "<br>" + this.scrollLeft;
}

function s_b_updateScrollbars_2() {
  if (!this.newContentElm) {
    this.hasVBar = (this.elm.scrollHeight > this.elm.offsetHeight) ? true : false; // auto, custom
    this.hasHBar = (this.elm.scrollWidth > this.elm.offsetWidth) ? true : false; // auto, custom
    this.init();
  }
  else {
    this.floatVBarActualPos = this.vBarScrollLength - this.newContentElm.scrollTop / this.vMultiplication;
    if (this.vBar) this.vBar.scrollTop = this.floatVBarActualPos;
    this.floatHBarActualPos = this.hBarScrollLength - this.newContentElm.scrollLeft / this.hMultiplication;
    if (this.hBar) this.hBar.scrollLeft = this.floatHBarActualPos;
  }
}

function s_b_embedElm() {
  this.newContentElm = document.createElement('div');
  this.newContentElm.id = this.id + '_autogenerated';
  
  this.newContentElm.style.position = 'absolute'; // static
  this.newContentElm.style.overflow = 'hidden'; // static
  this.newContentElm.style.margin = '0px'; // static
  this.newContentElm.style.padding = '0px'; // static
  this.newContentElm.style.border = 'none'; // static
  ec.registerEvent(this.newContentElm,'scroll',this.updateScrollbars);

  this.elm.style.position = 'relative'; // static, bug beim Scrollen im Safari, wenn Positionierung angegeben
  this.elm.style.left = '0px';
  this.elm.style.top = '0px';
  this.elm.style.overflow = 'auto'; // static

  this.newContentElm.style.width = (this.hasVBar) ? (this.elmWidth - parseInt(this.vBarWidth) - parseInt(this.contentVMargin)) + 'px' : '100%'
  this.newContentElm.style.height = (this.hasHBar) ? (this.elmHeight - parseInt(this.hBarHeight) - parseInt(this.contentHMargin)) + 'px' : this.elmHeight + 'px'
  try //DOM-kompatible Browser mit Range-Implementatoin (document.implementation.hasFeature('Range','2.0')
  {
    this.range = document.createRange();
    this.range.selectNodeContents(this.elm);
    this.range.surroundContents(this.newContentElm);
  }
  catch(e) // IE
  {
    var cn = this.elm.childNodes.length
    for (var i=0; i < cn; i++)
    {
      this.newContentElm.appendChild(this.elm.childNodes[0]);
    }
    this.elm.appendChild(this.newContentElm);
  }
  this.newContentElmHeight = this.newContentElm.offsetHeight; // auto
  this.newContentElmWidth = this.newContentElm.offsetWidth; // auto
  this.newContentElmScrollHeight = this.newContentElm.scrollHeight;
  this.newContentElmScrollWidth = this.newContentElm.scrollWidth;
  this.newContentElm.obj = this;
}

function s_b_createVScrollbar()
{
  /*Scrollbar zusammensetzten START*/
  this.vBarArea = document.createElement('div');
    this.vUp = document.createElement('div');
    this.vDown = document.createElement('div');
    this.vBar = document.createElement('div');
      this.vBarContent = document.createElement('div');
        this.vAnfasser = document.createElement('div');
  
  this.vUp.obj = this;
  this.vUp.setAttribute('id',this.id + "_up");
  this.vDown.obj = this;
  this.vDown.setAttribute('id',this.id + "_down");
  
  this.vAnfasser.obj = this;
  this.vBar.obj = this;

  ec.registerEvent(this.vAnfasser,'mousedown',registerVAnfasser,false);
  try
  {
    ec.registerEvent(this.vBar,'mousewheel',registerVWheel,false);
    ec.registerEvent(this.newContentElm,'mousewheel',registerVWheel,false);
  }
  catch(e){}
  
  ec.registerEvent(this.vUp,'mousedown',this.registerButton,false);
  ec.registerEvent(this.vDown,'mousedown',this.registerButton,false);
  
  this.vBarContent.appendChild(this.vAnfasser);
  this.vBar.appendChild(this.vBarContent);
  this.vBarArea.appendChild(this.vUp);
  this.vBarArea.appendChild(this.vBar);
  this.vBarArea.appendChild(this.vDown);

  this.vBarArea.style.position = 'absolute'; // static
  this.vBarArea.style.width = this.vBarWidth; // auto
  this.vBarArea.style.right = '0px'; // static
  this.vBarArea.style.top = '0px'; // static
  this.vBarArea.style.height = (this.hasHBar) ? this.newContentElm.offsetHeight + parseInt(this.contentVMargin) + 'px' : this.newContentElm.offsetHeight + 'px'; // auto

  this.vUp.style.width = '100%'; // static
  this.vUp.style.overflow = 'hidden'; // static
  this.vUp.style.height = this.vUpHeight; // custom
  if (this.vUpBgColor) this.vUp.style.backgroundColor = this.vUpBgColor; // custom
  if (this.vUpBgImg) this.vUp.style.backgroundImage = this.vUpBgImg; // custom
  
  this.vDown.style.width = '100%'; // static
  this.vDown.style.overflow = 'hidden'; // static
  this.vDown.style.height = this.vDownHeight; // custom
  if (this.vDownBgColor) this.vDown.style.backgroundColor = this.vDownBgColor; // custom
  if (this.vDownBgImg) this.vDown.style.backgroundImage = this.vDownBgImg; // custom

  this.vAnfasser.style.width = '100%'; // static
  this.vAnfasser.style.overflow = 'hidden'; // static
  this.vAnfasser.style.position = 'relative'; // static
  this.vAnfasser.style.height = this.vAnfasserHeight; // custom
  if (this.vAnfasserBgColor) this.vAnfasser.style.backgroundColor = this.vAnfasserBgColor; // custom
  if (this.vAnfasserBgImg) this.vAnfasser.style.backgroundImage = this.vAnfasserBgImg; // custom

  this.vBar.style.width = '100%'; // static
  this.vBar.style.overflow = 'hidden'; // static
  this.vBar.style.position = 'relative'; // static, muss relative sein, um im Explorer den Content beim scrollTop mitzunehmen
  this.vBar.style.height = (parseInt(this.vBarArea.style.height) - parseInt(this.vUp.style.height) - parseInt(this.vDown.style.height)) + 'px'; // auto, custom
  if (this.vBarBgColor) this.vBar.style.backgroundColor = this.vBarBgColor; // custom
  
  //Default-Status des Scrollbalkens START
  this.vAnfasser.style.top = parseInt(this.vBar.style.height) - parseInt(this.vAnfasser.style.height) + 'px'; // auto
  this.vBarContent.style.height = parseInt(this.vBar.style.height)*2 - parseInt(this.vAnfasser.style.height) + 'px'; // auto
  this.vBarContent.style.width = '100%'; // static
  if (this.vBarContentBgColor) this.vBarContent.style.backgroundColor = this.vBarContentBgColor; // custom
  if (this.vBarContentBgImg) this.vBarContent.style.backgroundImage = this.vBarContentBgImg; // custom
  
  this.elm.appendChild(this.vBarArea)
  this.vBarScrollLength = (this.vBarContent.offsetHeight - this.vAnfasser.offsetHeight) / 2;
  this.vBar.scrollTop = this.vBarScrollLength;
  //Default-Status des Scrollbalkens ENDE
  /*Scrollbar zusammensetzten ENDE*/
}

function s_b_createHScrollbar()
{
  /*Scrollbar zusammensetzten START*/
  this.hBarArea = document.createElement('div');
    this.hLeft = document.createElement('div');
    this.hRight = document.createElement('div');
    this.hBar = document.createElement('div');
      this.hBarContent = document.createElement('div');
        this.hAnfasser = document.createElement('div');
  
  this.hLeft.obj = this;
  this.hLeft.setAttribute('id',this.id + "_left");
  this.hRight.obj = this;
  this.hRight.setAttribute('id',this.id + "_right");

  this.hAnfasser.obj = this;
  this.hBar.obj = this;

  ec.registerEvent(this.hAnfasser,'mousedown',registerHAnfasser,false);
  try
  {
    ec.registerEvent(this.hBar,'mousewheel',registerHWheel,false);
    if (!this.hasVBar) ec.registerEvent(this.newContentElm,'mousewheel',registerHWheel,false);
  }
  catch(e){}
  
  ec.registerEvent(this.hLeft,'mousedown',this.registerButton,false);
  ec.registerEvent(this.hRight,'mousedown',this.registerButton,false);

  this.hBarContent.appendChild(this.hAnfasser);
  this.hBar.appendChild(this.hBarContent);
  this.hBarArea.appendChild(this.hLeft);
  this.hBarArea.appendChild(this.hBar);
  this.hBarArea.appendChild(this.hRight);

  this.hBarArea.style.position = 'absolute'; // static
  this.hBarArea.style.height = this.hBarHeight; // auto
  this.hBarArea.style.bottom = '0px'; // static
  this.hBarArea.style.left = '0px'; // static
  this.hBarArea.style.width = (this.hasVBar) ? this.newContentElm.offsetWidth + parseInt(this.contentHMargin) + 'px' : this.newContentElm.offsetWidth + 'px'; // auto

  this.hLeft.style.height = '100%'; // static
  this.hLeft.style.overflow = 'hidden'; // static
  this.hLeft.style.width = this.hLeftWidth; // custom
  if (this.hLeftBgColor) this.hLeft.style.backgroundColor = this.hLeftBgColor; // custom
  if (this.hLeftBgImg) this.hLeft.style.backgroundImage = this.hLeftBgImg; // custom
  
  this.hRight.style.height = '100%'; // static
  this.hRight.style.overflow = 'hidden'; // static
    this.hRight.style.position = 'absolute'; // static, special for horizontal
    this.hRight.style.top = '0px'; // static, special for horizontal
    this.hRight.style.right = '0px'; // static, special for horizontal
  this.hRight.style.width = this.hRightWidth; // custom
  if (this.hRightBgColor) this.hRight.style.backgroundColor = this.hRightBgColor; // custom
  if (this.hRightBgImg) this.hRight.style.backgroundImage = this.hRightBgImg; // custom

  this.hAnfasser.style.height = '100%'; // static
  this.hAnfasser.style.overflow = 'hidden'; // static
  this.hAnfasser.style.position = 'relative'; // static
  this.hAnfasser.style.width = this.hAnfasserWidth; // custom
  if (this.hAnfasserBgColor) this.hAnfasser.style.backgroundColor = this.hAnfasserBgColor; // custom
  if (this.hAnfasserBgImg) this.hAnfasser.style.backgroundImage = this.hAnfasserBgImg; // custom

  this.hBar.style.height = '100%'; // static
  this.hBar.style.overflow = 'hidden'; // static
    this.hBar.style.position = 'absolute'; // static, special for horizontal
    this.hBar.style.top = '0px'; // static, special for horizontal
    this.hBar.style.left = this.hLeftWidth; // static, special for horizontal, custom
  this.hBar.style.width = (parseInt(this.hBarArea.style.width) - parseInt(this.hLeft.style.width) - parseInt(this.hRight.style.width)) + 'px'; // auto, custom
  if (this.hBarBgColor) this.hBar.style.backgroundColor = this.hBarBgColor; // custom
  
  //Default-Status des Scrollbalkens START
  this.hAnfasser.style.left = parseInt(this.hBar.style.width) - parseInt(this.hAnfasser.style.width) + 'px'; // auto, muss am Ende 100% sein
  this.hBarContent.style.width = parseInt(this.hBar.style.width)*2 - parseInt(this.hAnfasser.style.width) + 'px'; // auto
  this.hBarContent.style.height = '100%'; // static
  if (this.hBarContentBgColor) this.hBarContent.style.backgroundColor = this.hBarContentBgColor; // custom
  if (this.hBarContentBgImg) this.hBarContent.style.backgroundImage = this.hBarContentBgImg; // custom
  
  this.elm.appendChild(this.hBarArea);
  this.hBarScrollLength = (this.hBarContent.offsetWidth - this.hAnfasser.offsetWidth) / 2; // auto
  this.hBar.scrollLeft = this.hBarScrollLength;
  //Default-Status des Scrollbalkens ENDE
  /*Scrollbar zusammensetzten ENDE*/
}

function s_b_calculateVBar()
{
  this.vMultiplication = (this.newContentElmScrollHeight - this.newContentElmHeight) / this.vBarScrollLength;
}

function s_b_calculateHBar()
{
  this.hMultiplication = (this.newContentElmScrollWidth - this.newContentElmWidth) / this.hBarScrollLength;
}

/******** ******** ******** ******** ******** ******** ******** ********/
/******Fogende Funktionen sind nicht Methoden des Scollbar-Objektes*****/
/******** ******** ******** ******** ******** ******** ******** ********/

/* ANFASSER START */

function registerVAnfasser(e)
{
  e = ec.convertEvent(e);
  e.preventDefault();
  e.stopPropagation();
  this.obj.vBarStartYPos = this.obj.vBarYPos = this.obj.vBar.scrollTop;
  this.obj.intContentVActualPos = this.obj.newContentElm.scrollTop;
  this.obj.vEventStartYPos = e.pageY;
  scrollBars.s_b_html.obj = this.obj;
  
  ec.registerEvent(scrollBars.s_b_html,'mousemove',moveVAnfasser,true);
  ec.registerEvent(scrollBars.s_b_html,'mouseup',unregisterVAnfasser,true);
  ec.removeEvent(this.obj.newContentElm,'scroll',this.obj.updateScrollbars);

}

function moveVAnfasser(e) {
  e = ec.convertEvent(e);
  e.preventDefault();
  
  var pos = e.pageY - this.obj.vEventStartYPos;
  this.obj.vBarYPos = this.obj.vBarStartYPos - pos;
  var d = this.obj.vBarStartYPos - pos;
  var invertedVBarYPos = this.obj.vBarScrollLength - d; //von der Ausgangsposition gescrollte Pixel des Scrollbalkens
  this.obj.floatContentVActualPos = invertedVBarYPos * this.obj.vMultiplication; //mit Multiplikator fŸr den Content
  this.obj.vBar.scrollTop = this.obj.vBarStartYPos - pos;
  scrollContentV(this.obj.floatContentVActualPos);
}

function unregisterVAnfasser(e) {
  ec.removeEvent(scrollBars.s_b_html,'mousemove',moveVAnfasser,true);
  ec.removeEvent(scrollBars.s_b_html,'mouseup',unregisterVAnfasser,true);
  ec.registerEvent(scrollBars.s_b_html.obj.newContentElm,'scroll',this.obj.updateScrollbars);
  scrollBars.s_b_html.obj = null;
}



function registerHAnfasser(e) {
  e = ec.convertEvent(e);
  e.preventDefault();
  e.stopPropagation();
  this.obj.hBarStartXPos = this.obj.hBarXPos = this.obj.hBar.scrollLeft;
  this.obj.intContentHActualPos = this.obj.newContentElm.scrollLeft;
  this.obj.hEventStartXPos = e.pageX;
  
  scrollBars.s_b_html.obj = this.obj;
  
  ec.registerEvent(scrollBars.s_b_html,'mousemove',moveHAnfasser,true);
  ec.registerEvent(scrollBars.s_b_html,'mouseup',unregisterHAnfasser,true);
}

function moveHAnfasser(e) {
  e = ec.convertEvent(e);
  e.preventDefault();
  
  var pos = e.pageX - this.obj.hEventStartXPos;
  this.obj.hBarXPos = this.obj.hBarStartXPos - pos;
  var d = this.obj.hBarStartXPos - pos;
  var invertedHBarXPos = this.obj.hBarScrollLength - d; //von der Ausgangsposition gescrollte Pixel des Scrollbalkens
  this.obj.floatContentHActualPos = invertedHBarXPos * this.obj.hMultiplication; //mit Multiplikator fŸr den Content
  
  this.obj.hBar.scrollLeft = this.obj.hBarStartXPos - pos;
  scrollContentH(this.obj.floatContentHActualPos);
}

function unregisterHAnfasser(e) {
  ec.removeEvent(scrollBars.s_b_html,'mousemove',moveHAnfasser,true)
  ec.removeEvent(scrollBars.s_b_html,'mouseup',unregisterHAnfasser,true)
  scrollBars.s_b_html.obj = null;
}

function scrollContentV(pos) {
  scrollBars.s_b_html.obj.newContentElm.scrollTop = pos;
}

function scrollContentH(pos)
{
  scrollBars.s_b_html.obj.newContentElm.scrollLeft = pos;
}


/* ANFASSER ENDE */

/* BUTTONS START */

function s_b_registerButton(e)
{
  e = ec.convertEvent(e);
  e.preventDefault();
  scrollBars.s_b_html.obj = this.obj;
  ec.registerEvent(scrollBars.s_b_html,'mousemove',ec.preventDefault,true);
  ec.registerEvent(scrollBars.s_b_html,'mouseup',scrollBars.s_b_html.obj.stopButtonScroll,true);
  if (e.target.id.indexOf('up') > 0)
  {
    int_scrollTimeId = setInterval("scrollBars.s_b_html.obj.vScroll(" + this.obj.upButtonContentSpeed + ")","10");
  }
  else if (e.target.id.indexOf('down') > 0)
  {
    int_scrollTimeId = setInterval("scrollBars.s_b_html.obj.vScroll(" + (-this.obj.downButtonContentSpeed) + ")","10");
  }
  else if (e.target.id.indexOf('left') > 0)
  {
    int_scrollTimeId = setInterval("scrollBars.s_b_html.obj.hScroll(" + this.obj.leftButtonContentSpeed + ")","10");
  }
  else if (e.target.id.indexOf('right') > 0)
  {
    int_scrollTimeId = setInterval("scrollBars.s_b_html.obj.hScroll(" + (-this.obj.rightButtonContentSpeed) + ")","10");
  }
}

function s_b_vScroll(wert)
{
  scrollBars.s_b_html.obj.newContentElm.scrollTop -= wert;
  //scrollBars.s_b_html.obj.floatVBarActualPos = scrollBars.s_b_html.obj.vBarScrollLength - scrollBars.s_b_html.obj.newContentElm.scrollTop / scrollBars.s_b_html.obj.vMultiplication;
  //scrollBars.s_b_html.obj.vBar.scrollTop = scrollBars.s_b_html.obj.floatVBarActualPos;
  //document.getElementById('ausgabe').innerHTML = 'vBar.scrollTop: ' + scrollBars.s_b_html.obj.vBar.scrollTop + '<br>newContentElm.scrollTop: ' + scrollBars.s_b_html.obj.newContentElm.scrollTop + '<br>scrollBars.s_b_html.obj.floatVBarActualPos: ' + scrollBars.s_b_html.obj.floatVBarActualPos;
}

function s_b_hScroll(wert)
{
  scrollBars.s_b_html.obj.newContentElm.scrollLeft -= wert;
  //scrollBars.s_b_html.obj.floatHBarActualPos = scrollBars.s_b_html.obj.hBarScrollLength - scrollBars.s_b_html.obj.newContentElm.scrollLeft / scrollBars.s_b_html.obj.hMultiplication;
  //scrollBars.s_b_html.obj.hBar.scrollLeft = scrollBars.s_b_html.obj.floatHBarActualPos;
}

function s_b_stopButtonScroll()
{
  clearInterval(int_scrollTimeId);
  ec.removeEvent(scrollBars.s_b_html,'mousemove',ec.preventDefault,true);
  ec.removeEvent(scrollBars.s_b_html,'mouseup',scrollBars.s_b_html.obj.stopButtonScroll,true);
}

/* BUTTONS ENDE */


/* MOUSEWHEEL START */

function registerVWheel(e)
{
  e = ec.convertEvent(e);
  this.obj.newContentElm.scrollTop += e.eDirection * this.obj.wheelContentVSpeed;
  //this.obj.floatVBarActualPos = this.obj.vBarScrollLength - this.obj.newContentElm.scrollTop / this.obj.vMultiplication;
  //this.obj.vBar.scrollTop = this.obj.floatVBarActualPos;
}

function registerHWheel(e)
{
  e = ec.convertEvent(e);
  this.obj.newContentElm.scrollLeft += e.eDirection * this.obj.wheelContentHSpeed;
  //this.obj.floatHBarActualPos = this.obj.hBarScrollLength - this.obj.newContentElm.scrollLeft / this.obj.hMultiplication;
  //this.obj.hBar.scrollLeft = this.obj.floatHBarActualPos;
}


/* MOUSEWHEEL ENDE */

/* JUMP START */

function jump(obj,target)
{
  window.location.href = target;
  obj.vBar.scrollTop = obj.vBarScrollLength - (obj.newContentElm.scrollTop / obj.vMultiplication);
}

/* JUMP ENDE */

/* Konfiguration START */

function s_b_setBars()
{
  if (arguments[0] == true || arguments[0] == false) this.hasVBar = arguments[0];
  if (arguments.length == 1)
  {
    if (arguments[0] == true || arguments[0] == false) this.hasHBar = arguments[0]
  }
  else
  {
    if (arguments[1] == true || arguments[1] == false) this.hasHBar = arguments[1];
  }
}

function s_b_setContentMargins()
{
  this.contentVMargin = arguments[0];
  this.contentHMargin = (arguments.length == 1) ? arguments[0] : arguments[1];
}

function s_b_setBarWidth()
{
  this.vBarWidth = arguments[0];
  this.hBarHeight = (arguments.length == 1) ? arguments[0] : arguments[1];
}

function s_b_setButtonSize()
{
  if (arguments.length == 1 || arguments.length == 2 || arguments.length == 4)
  {
    this.vUpHeight = arguments[0];
    this.vDownHeight = (arguments.length == 4) ? arguments[2] : arguments[0];
    this.hLeftWidth = (arguments.length == 1) ? arguments[0] : (arguments.length == 2) ? arguments[1] : arguments[3];
    this.hRightWidth = (arguments.length == 1) ? arguments[0] : arguments[1];
  }
}

function s_b_setButtonBGColor()
{
  if (arguments.length == 1 || arguments.length == 2 || arguments.length == 4)
  {
    this.vUpBgColor = arguments[0];
    this.vDownBgColor = (arguments.length == 4) ? arguments[2] : arguments[0];
    this.hLeftBgColor = (arguments.length == 1) ? arguments[0] : (arguments.length == 2) ? arguments[1] : arguments[3];
    this.hRightBgColor = (arguments.length == 1) ? arguments[0] : arguments[1];
  }
}

function s_b_setButtonBGImg()
{
  if (arguments.length == 1 || arguments.length == 2 || arguments.length == 4)
  {
    this.vUpBgImg = "url('" + arguments[0] + "')";
    this.vDownBgImg = (arguments.length == 4) ? "url('" + arguments[2] + "')" : "url('" + arguments[0] + "')";
    this.hLeftBgImg = (arguments.length == 1) ? "url('" + arguments[0] + "')" : (arguments.length == 2) ? "url('" + arguments[1] + "')" : "url('" + arguments[3] + "')";
    this.hRightBgImg = (arguments.length == 1) ? "url('" + arguments[0] + "')" : "url('" + arguments[1] + "')";
  }
}

function s_b_setAnfasserLength()
{
  this.vAnfasserHeight = arguments[0];
  this.hAnfasserWidth = (arguments.length == 1) ? arguments[0] : arguments[1];
}

function s_b_setAnfasserBgColor()
{
  this.vAnfasserBgColor = arguments[0];
  this.hAnfasserBgColor = (arguments.length == 1) ? arguments[0] : arguments[1];
}

function s_b_setAnfasserBgImg()
{
  this.vAnfasserBgImg = "url('" + arguments[0] + "')";
  this.hAnfasserBgImg = (arguments.length == 1) ? "url('" + arguments[0] + "')" : "url('" + arguments[1] + "')";
}

function s_b_setBarBgColor()
{
  this.vBarBgColor = arguments[0];
  this.hBarBgColor = (arguments.length == 1) ? arguments[0] : arguments[1];
}

function s_b_setBarContentBgColor()
{
  this.vBarContentBgColor = arguments[0];
  this.hBarContentBgColor = (arguments.length == 1) ? arguments[0] : arguments[1];
}

function s_b_setBarContentBgImg()
{
  this.vBarContentBgImg = "url('" + arguments[0] + "')";
  this.hBarContentBgImg = (arguments.length == 1) ? "url('" + arguments[0] + "')" : "url('" + arguments[1] + "')";
}

function s_b_setButtonContentSpeed()
{
  if (arguments.length == 1 || arguments.length == 2 || arguments.length == 4)
  {
    this.upButtonContentSpeed = arguments[0];
    this.downButtonContentSpeed = (arguments.length == 4) ? arguments[2] : arguments[0];
    this.leftButtonContentSpeed = (arguments.length == 1) ? arguments[0] : (arguments.length == 2) ? arguments[1] : arguments[3];
    this.rightButtonContentSpeed = (arguments.length == 1) ? arguments[0] : arguments[1];
  }
}

function s_b_setWheelContentSpeed()
{
  this.wheelContentVSpeed = arguments[0];
  this.wheelContentHSpeed = (arguments.length == 1) ? arguments[0] : arguments[1];
}
/* Konfiguration ENDE */


// Konfigurierbare Eigenschaften


  // vertikaler Scrolbalken START
    //this.hasVBar = false;
    //this.contentVMargin = '32px';
    //this.vBarWidth = '9px';
    //this.vUpHeight = '7px';
    //this.vUpBgColor = '#cccccc';
    //this.vUpBgImg = "url('res/pfeil_up.gif')";
    //this.vDownHeight = '7px';
    //this.vDownBgColor = '#cccccc';
    //this.vDownBgImg = "url('res/pfeil_down.gif')";
    //this.vAnfasserHeight = '32px';
    //this.vAnfasserBgColor = '#ffcccc';
    //this.vAnfasserBgImg = "url('res/anfasser.gif')";
    //this.vBarBgColor = '#dddddd';
    //this.vBarContentBgColor = '#cceeee';
    //this.vBarContentBgImg = "url('res/linie.gif')";
    //this.upButtonContentSpeed = 4; //default, custom
    //this.downButtonContentSpeed = 4; //default, custom
    //this.wheelContentVSpeed = 9;
  // vertikaler Scrolbalken ENDE

  // horizontaler Scrolbalken START
    //this.hasHBar = false;
    //this.contentHMargin = '32px';
    //this.hBarHeight = '9px';
    //this.hLeftWidth = '7px';
    //this.hLeftBgColor = '#cccccc';
    //this.hLeftBgImg = "url('res/pfeil_left.gif')";
    //this.hRightWidth = '7px';
    //this.hRightBgColor = '#cccccc';
    //this.hRightBgImg = "url('res/pfeil_right.gif')";
    //this.hAnfasserWidth = '32px';
    //this.hAnfasserBgColor = '#ffcccc';
    //this.hAnfasserBgImg = "url('res/h_anfasser.gif')";
    //this.hBarBgColor = '#dddddd';
    //this.hBarContentBgColor = '#cceeee';
    //this.hBarContentBgImg = "url('res/h_linie.gif')";
    //this.leftButtonContentSpeed = 4; //default, custom
    //this.rightButtonContentSpeed = 4; //default, custom
    //this.wheelContentHSpeed = 9;
  // horizontaler Scrolbalken ENDE

