function InitScroller() {
	timerScroll = window.setTimeout("scroll('scroller', 0, 0)", 10000);
	ausschnitt_breite = 195;
	ausschnitt_hoehe = 140;
	auto_scroll_geschw = -1;
	schnell_scroll_geschw = 2;

	// scroll intervar for speed
	scroll_intervall = 50;
	ausschnitt_oben = 0;
	ausschnitt_rechts = ausschnitt_breite;
	ausschnitt_unten = ausschnitt_hoehe;
	ausschnitt_links = 0;
	layer_left = 0;
	layer_top = 0;
	scroll_pos_x = 0;
	scroll_pos_y = 0;
	layer_breite = objekt_daten("scroller", "breite");
	layer_hoehe = objekt_daten("scroller", "hoehe");
	if(version != 1)
		objekt_setzen("scroller", layer_left, layer_top);
	objekt_setzen('scrollerdummy', 603,245);
	objekt_anaus("scrollerdummy", 1);
	objekt_anaus("scroller", 1);
	autoScroll();
}

function autoScroll() {
	if(fertig_geladen) {
		clearTimeout(timerScroll);
		timerScroll = window.setTimeout("scroll('scroller', 0, " + auto_scroll_geschw + ", " + scroll_intervall + ")", 10);
		// function time out, for speed
	}
}

function schnellScroll(geschw) {
	if(fertig_geladen) {
		clearTimeout(timerScroll);
		if(geschw < 0)
		schnell_scroll_geschw = -Math.abs(schnell_scroll_geschw);
	else
		schnell_scroll_geschw = Math.abs(schnell_scroll_geschw);
		scroll('scroller', 0, schnell_scroll_geschw, scroll_intervall / 2);
	}
}

function scroll(objekt, geschw_x, geschw_y, intervall) {
	scroll_pos_x += geschw_x;
	if(scroll_pos_x > 0 || scroll_pos_x < -layer_breite / 2) {
		scroll_pos_x -= geschw_x;
		geschw_x = 0;
	}
	scroll_pos_y += geschw_y;
	if(scroll_pos_y < -(layer_hoehe - ausschnitt_hoehe)) {
		layer_scroll(objekt, geschw_x, -scroll_pos_y);
		scroll_pos_y = 0;
	}
	if(scroll_pos_y > 0) {
		scroll_pos_y = -(layer_hoehe - ausschnitt_hoehe);
		layer_scroll(objekt, geschw_x, scroll_pos_y);
	}
	layer_scroll(objekt, geschw_x, geschw_y);
	timerScroll = window.setTimeout("scroll('scroller', " + geschw_x + ", " + geschw_y + ", " + intervall + ")", intervall);
}

function objekt_setzen(objekt, objekt_x, objekt_y) {
	if(version == 1) {
		nsobj = eval('window');
		if(objekt == "scroller")
			nsobj = eval("document.layers['scrollerdummy']");
	}
	switch(version) {
		case 1:
			nsobj.document.layers[objekt].pageX = objekt_x;
			nsobj.document.layers[objekt].pageY = objekt_y;
			break;
		case 2:
			window.document.all[objekt].style.left = objekt_x;
			window.document.all[objekt].style.top = objekt_y;
			break;
		case 3:
			window.document.getElementById(objekt).style.left = objekt_x;
			window.document.getElementById(objekt).style.top = objekt_y;
			break;
	}
}

function objekt_daten(objekt, pos) {
	if(version == 1) {
		nsobj = eval('window');
		if(objekt == "scroller")
			nsobj = eval("document.layers['scrollerdummy']");
	}
	var wert = 0;
	if(version > 1) {
		var clip = new Array();
		if(version == 2)
		str = document.all[objekt].style.clip;
	else
		str = document.getElementById(objekt).style.clip;
		str_pos = str.indexOf("(");
		clip[0] = parseInt(str.substring(str_pos + 1, str.length));
		str_pos = str.indexOf(" ", str_pos + 1);
		clip[1] = parseInt(str.substring(str_pos + 1, str.length));
		str_pos = str.indexOf(" ", str_pos + 1);
		clip[2] = parseInt(str.substring(str_pos + 1, str.length));
		str_pos = str.indexOf(" ", str_pos + 1);
		clip[3] = parseInt(str.substring(str_pos + 1, str.length));
	}

  switch(pos) {
  case "oben":
    switch(version) {
    case 1:
      wert = nsobj.document.layers[objekt].pageY;
      break;
    case 2:
      wert = parseInt(document.all[objekt].style.top);
      break;
    case 3:
      wert = document.getElementById(objekt).offsetTop;
      break;
    }
    break;

  case "unten":
    wert = (objekt_daten(objekt, "oben") + objekt_daten(objekt, "hoehe"));
    break;

  case "links":
    switch(version) {
    case 1:
      wert = nsobj.document.layers[objekt].pageX;
      break;
    case 2:
      wert = parseInt(document.all[objekt].style.left);
      break;
    case 3:
      wert = document.getElementById(objekt).offsetLeft;
      break;
    }
    break;

  case "rechts":
    wert = (objekt_daten(objekt, "links") + objekt_daten(objekt, "breite"));
    break;

  case "breite":
    switch(version) {
    case 1:
      wert = nsobj.document.layers[objekt].clip.width;
      break;
    case 2:
      wert = document.all[objekt].clientWidth;
      break;
    case 3:
      return document.getElementById(objekt).offsetWidth;
      break;
    }
    break;

  case "hoehe":
    switch(version) {
    case 1:
      wert = nsobj.document.layers[objekt].clip.height;
      break;
    case 2:
      wert = document.all[objekt].clientHeight;
      break;
    case 3:
      wert = document.getElementById(objekt).offsetHeight;
      break;
    }
    break;

  case "aoben":
    switch(version) {
    case 1:
      wert = nsobj.document.layers[objekt].clip.top;
      break;
    case 2:
      wert = clip[0];
      break;
    case 3:
      wert = clip[0];
      break;
    }
    break;

  case "aunten":
    switch(version) {
    case 1:
      wert = nsobj.document.layers[objekt].clip.bottom;
      break;
    case 2:
      wert = clip[2];
      break;
    case 3:
      wert = clip[2];
      break;
    }
    break;

  case "alinks":
    switch(version) {
    case 1:
      wert = nsobj.document.layers[objekt].clip.left;
      break;
    case 2:
      wert = clip[3];
      break;
    case 3:
      wert = clip[3];
      break;
    }
    break;

  case "arechts":
    switch(version) {
    case 1:
      wert = nsobj.document.layers[objekt].clip.right;
      break;
    case 2:
      wert = clip[1];
      break;
    case 3:
      wert = clip[1];
      break;
    }
    break;

  case "abreite":
    wert = (objekt_daten(objekt, "arechts") - objekt_daten(objekt, "alinks"));
    break;

  case "ahoehe":
    wert = (objekt_daten(objekt, "aunten") - objekt_daten(objekt, "aoben"));
    break;
  }
  return wert;
}
function objekt_ausschnitt(objekt, oben, rechts, unten, links) {
  if(version == 1) {
    nsobj = eval('window');
    if(objekt == "scroller")
      nsobj = eval("document.layers['scrollerdummy']");
  }
  switch(version) {
  case 1:
    nsobj.document.layers[objekt].clip.top = oben;
    nsobj.document.layers[objekt].clip.left = links;
    nsobj.document.layers[objekt].clip.bottom = unten;
    nsobj.document.layers[objekt].clip.right = rechts;
    break;
  case 2:
    document.all[objekt].style.clip = "rect("+oben+" "+rechts+" "+unten+" "+links+")";
    break;
  case 3:
    document.getElementById(objekt).style.clip = "rect("+oben+" "+rechts+" "+unten+" "+links+")";
    break;
  }
}
function objekt_anaus(objekt, zustand) {
  if(version == 1) {
    nsobj = eval('window');
    if(objekt == "scroller")
      nsobj = eval("document.layers['scrollerdummy']");
  }
  switch(version) {
  case 1:
    if(zustand == 0)
      nsobj.document.layers[objekt].visibility = "hide";
    else
      nsobj.document.layers[objekt].visibility = "show";
    break;
  case 2:
    if(zustand == 0)
      document.all[objekt].style.visibility = "hidden";
    else
      document.all[objekt].style.visibility = "visible";
    break;
  case 3:
    if(zustand == 0)
      document.getElementById(objekt).style.visibility = "hidden";
    else
      document.getElementById(objekt).style.visibility = "visible";
    break;
  }
}
function layer_scroll(objekt, geschw_x, geschw_y) {
  layer_links = objekt_daten(objekt, "links") + geschw_x;
  layer_oben = objekt_daten(objekt, "oben") + geschw_y;
  objekt_setzen(objekt, layer_links, layer_oben);
}