// ===================================================================
// Author: Frank Stroebel
// WWW: http://www.chessgamble.de/
// ===================================================================

/* SOURCE FILE: scrollbarmanager.js */

// Aktueller Scroll-Wert in Partieauflistung links
var currentScrollValueLinks = 0;
// Aktueller Scroll-Wert des Hauptfensters
var currentScrollValueMain = 0;

// Wird aufgerufen wenn die Scrollbar links betätigt wird
function linksScroll()
{
  var element = document.getElementById('framecontentLeft');
  currentScrollValueLinks = element.scrollTop;
  
  // Test: Setze Wert auf Scrollbar
  //element.scrollTop = 100;  // Fehlangaben führen nicht zu Problemen
}

// Wird aufgerufen wenn die Scrollbar des Hauptfensters betätigt wird
function hauptFensterScroll()
{
  var element = document.getElementById('maincontent');
  currentScrollValueMain = element.scrollTop;
}

// Wird beim Verlassen der Seite aufgerufen: Aktuellen Wert in Cookie schreiben
function writeScrollValueToCookie()
{
  // Scroll-Wert für die Partieauflistung links
  WriteCookie('Scrollwert', currentScrollValueLinks, 100);
  // Scroll-Wert für das Hauptfenster, sofern eine Partie angezeigt wird
  var partieId = document.getElementById('IdPartieImHauptfenster').innerHTML;
  partieId *= 1;
  if (partieId != -1) {
    if (document.getElementById('TopPartieImHauptfenster').innerHTML != "ja") {
      // Aber nur wenn es nicht die Top-Partie auf der Startseite ist
      WriteCookie('ScrollwertMain', currentScrollValueMain, 100);
    }
  }
}

// Liest den Scroll-Wert aus dem Cookie.
function ReadScrollValueFromCookie(scrollBar)
{
  var result = 0;
  if (scrollBar == 'Links') {
    result = ReadCookie('Scrollwert') * 1;
  }
  else {
    result = ReadCookie('ScrollwertMain') * 1;
  }
  return result;
}

//
// Diese Funktion wird beim Laden der Seite (document.ready)
// und nach AutoAkt aufgerufen.
//
function RestoreScrollBars()
{
  //
  // Scrollbar links (Turnier/Partieauflistung).
  // Diese soll immer bleiben wie der Betrachter sie eingestellt hat.
  //
  // Gespeicherten Scroll-Wert aus dem Cookie holen
  var scrollWert = ReadScrollValueFromCookie('Links');
  // Scrollbar auf diesen Wert setzen
  document.getElementById('framecontentLeft').scrollTop = scrollWert;
  // Diesen Wert zum erneuten Speichern merken
  currentScrollValueLinks = scrollWert;
  
  //
  // Sofern Partie (im Hauptfenster) geladen:
  // - Scrollbar des Hauptfensters für Partien restaurieren.
  // - Scrollbar der Notation ganz nach unten (zum aktuellen Zug).
  //
  var partieId = document.getElementById('IdPartieImHauptfenster').innerHTML;
  partieId *= 1;
  if (partieId != -1) {
    // Eine Partie ist im Hauptfenster
    
    // Hauptfenster selbst scrollen, aber nur wenn nicht die Top-Partie im Hauptfenster ist
    if (document.getElementById('TopPartieImHauptfenster').innerHTML != "ja") {
      // Gespeicherten Scroll-Wert aus dem Cookie holen
      var scrollWert = ReadScrollValueFromCookie('Main');
      // Scrollbar auf diesen Wert setzen
      document.getElementById('maincontent').scrollTop = scrollWert;
      // Diesen Wert zum erneuten Speichern merken
      currentScrollValueMain = scrollWert;
    }
    // Notation ganz nach unten scrollen
    SetNotationScrollbar("unten");
  }
}

//
// Stellt die Scrollbar der Notation in der Partieanzeige ein.
//
// Voraussetzung:
// Es muss eine Patie im Hauptfenster sein.
//
// Param:
// = "oben":       Ganz nach oben.
// = "unten":      Ganz nach unten.
// = "einshoch":   Eine Zughöhe hoch.
// = "einsrunter": Eine Zughöhe runter.
//
function SetNotationScrollbar(newPos)
{
  var zugHoehe = 35; // Die Höhe einer Zeile im Notationsfenster
  if (document.getElementById("NotationsBereich") != null) {
    switch (newPos) {
      case "oben":
        document.getElementById('NotationsBereich').scrollTop = 0;
        break;
      case "unten":
        document.getElementById('NotationsBereich').scrollTop = 100000;
        break;
      case "einshoch":
        document.getElementById('NotationsBereich').scrollTop -= zugHoehe;
        break;
      case "einsrunter":
        document.getElementById('NotationsBereich').scrollTop += zugHoehe;
        break;
      default:
        break;
    }
  }
}

