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

/* SOURCE FILE: PartieAuflistung.js */
//
// Siehe "Färbung der Auflistung.txt".
//

// Farben für die Partieauflistung
var FarbeB1      = "#636c0b"; // wie B3
var FarbeB2      = "#636c0b"; // wie B3
var FarbeB3      = "#636c0b"; // OK
var FarbeB4      = "#333333"; // OK
var FarbeR1      = "#e84040"; // wie R3
var FarbeR2      = "#e84040"; // wie R3
var FarbeR3      = "#e84040"; // OK
var FarbeR4      = "#b61616"; // OK
var FarbeG1      = "#a8a8a8"; // OK
var FarbeG2      = "#a8a8a8"; // wie G1
var FarbeG3      = "#a8a8a8"; // wie G1
var FarbeG4      = "#8c8c8c"; // OK

// Farben für die Turnierauflistung
var FarbeT1      = "#7db8eb"; // OK
var FarbeT2      = "#a0cbf1"; // OK
var FarbeT3      = "#a0cbf1"; // wie T2
var FarbeT4      = "#a0cbf1"; // wie T2

// Merker welche Partie/Turnier gerade mit der Maus überfahren wird
var MouseOverItem = 0;

//
// Partieauflistung initialisieren.
// Hier werden die Event-Handler an die td's gehängt.
//
function InitPartieAuflistung()
{
  // Jedem Element mit Klasse "MausOverUndRausFeld" EventHandler anhängen
  $(".MausOverUndRausFeld").mouseenter(function() {
    MausOver($(this).attr('id'));
  });
  
  $(".MausOverUndRausFeld").mouseleave(function() {
    MausRaus($(this).attr('id'));
  });
}

//
// Färbt Partie/Turnier bei OnMouseOver
// Ob die Partie im Hauptfenster ist, wird hier nicht berücksichtigt, das macht ColorSelectedMatch()
// Hier werden alle als "nicht im Hauptfenster" gefärbt.
//
function MausOver(ItemGesamtID) {
  // Der Parameter ist z.B. "AuflistungTDIDRechts_1": Eignetliche Id extrahieren
  var ItemID = ItemGesamtID.substr(ItemGesamtID.indexOf("_") + 1);
  
  var IsPartie = 1;
  if ((ItemGesamtID.indexOf("AuflistungTDIDLinks") == -1) &&
      (ItemGesamtID.indexOf("AuflistungTDIDMitte") == -1) &&
      (ItemGesamtID.indexOf("AuflistungTDIDRechts") == -1)) {
    // Es ist ein Turnier, keine Partie
    IsPartie = 0;
  }
  // IsPartie gibt an ob eine Partie oder ein Turnier gemeint ist
  // 1: Partie
  // 0: Turnier
  // Erforderliche Parameter aus dem Doc holen
  
  var AmZug = 0;
  var IDAmZugInfo = "";
  if (IsPartie == 1) {
    IDAmZugInfo = "AuflistungTDIDAmZugInfo" + ItemID;
    AmZug = document.getElementById(IDAmZugInfo).innerHTML;
    AmZug *= 1;
    // AmZug zeigt an ob der Eigenspieler am Zug ist (rot hinterlegt)
    // 0: Partie läuft und Eigenspieler ist nicht am Zug
    // 1: Partie läuft und Eigenspieler hat Weiss und ist am Zug
    // 2: Partie läuft und Eigenspieler hat Schwarz und ist am Zug
    // 3: Partie ist beendet
  }

  // Für Partien
  var IDLinks      = "AuflistungTDIDLinks_"  + ItemID;
  var IDMitte      = "AuflistungTDIDMitte_"  + ItemID;
  var IDRechts     = "AuflistungTDIDRechts_" + ItemID;
  var LinkIDLinks  = "AuflistungLinkIDLinks"  + ItemID;
  var LinkIDMitte  = "AuflistungLinkIDMitte"  + ItemID;
  var LinkIDRechts = "AuflistungLinkIDRechts" + ItemID;
  // Für Turniere
  var IDName       = "AuflistungTDIDName_"    + ItemID;
  var IDEinsatz    = "AuflistungTDIDEinsatz_" + ItemID;
  var IDBedenkzeit = "AuflistungTDIDBedenkzeit_" + ItemID;
  var IDTeilnehmer = "AuflistungTDIDTeilnehmer_" + ItemID;

  // Merken welches von der Maus überfahren ist
  MouseOverItem = ItemID;

  if (IsPartie == 1) {
    // Eine Partie
    switch (AmZug) {
      case 0:
        // Spieler ist nicht am Zug
        document.getElementById(IDLinks).style.backgroundColor  = FarbeB3;
        document.getElementById(IDMitte).style.backgroundColor  = FarbeB3;
        document.getElementById(IDRechts).style.backgroundColor = FarbeB3;
        break;
      case 1:
        // Spieler hat W und ist am Zug
        document.getElementById(IDLinks).style.backgroundColor  = FarbeB3;
        document.getElementById(IDMitte).style.backgroundColor  = FarbeR3;
        document.getElementById(IDRechts).style.backgroundColor = FarbeB3;
        break;
      case 2:
        // Spieler hat S und ist am Zug
        document.getElementById(IDLinks).style.backgroundColor  = FarbeB3;
        document.getElementById(IDMitte).style.backgroundColor  = FarbeB3;
        document.getElementById(IDRechts).style.backgroundColor = FarbeR3;
        break;
      case 3:
        // Partie ist beendet
        document.getElementById(IDLinks).style.backgroundColor  = FarbeG3;
        document.getElementById(IDMitte).style.backgroundColor  = FarbeG3;
        document.getElementById(IDRechts).style.backgroundColor = FarbeG3;
        break;
      default:
        break;
    }
    
    // Und noch die aktuell selektierte Partie als solche markieren lassen
    var IdPartieImHauptfenster = document.getElementById("IdPartieImHauptfenster").innerHTML;
    IdPartieImHauptfenster *= 1;
    if (IdPartieImHauptfenster == ItemID) {
      ColorSelectedMatch();
    }
  }
  else {
    // Ein Turnier
    //document.getElementById(IDName).style.backgroundColor  = FarbeT3;
    document.getElementById(IDEinsatz).style.backgroundColor  = FarbeT3;
    document.getElementById(IDBedenkzeit).style.backgroundColor  = FarbeT3;
    document.getElementById(IDTeilnehmer).style.backgroundColor  = FarbeT3;
  }
}

//
// Färbt Partie/Turnier bei OnMouseOut
// Ob die Partie im Hauptfenster ist, wird hier nicht berücksichtigt, das macht ColorSelectedMatch()
// Hier werden alle als "nicht im Hauptfenster" gefärbt.
//
function MausRaus(ItemGesamtID) {
  // Der Parameter ist z.B. "AuflistungTDIDRechts_1": Eignetliche Id extrahieren
  var ItemID = ItemGesamtID.substr(ItemGesamtID.indexOf("_") + 1);
  
  var IsPartie = 1;
  if ((ItemGesamtID.indexOf("AuflistungTDIDLinks") == -1) &&
      (ItemGesamtID.indexOf("AuflistungTDIDMitte") == -1) &&
      (ItemGesamtID.indexOf("AuflistungTDIDRechts") == -1)) {
    // Es ist ein Turnier, keine Partie
    IsPartie = 0;
  }
  // IsPartie gibt an ob eine Partie oder ein Turnier gemeint ist
  // 1: Partie
  // 0: Turnier
  
  // Erforderliche Parameter aus dem Doc holen
  var AmZug = 0;
  var IDAmZugInfo = "";
  if (IsPartie == 1) {
    IDAmZugInfo = "AuflistungTDIDAmZugInfo" + ItemID;
    AmZug = document.getElementById(IDAmZugInfo).innerHTML;
    AmZug *= 1;
    // AmZug zeigt an ob der Eigenspieler am Zug ist (rot hinterlegt)
    // 0: Partie läuft und Eigenspieler ist nicht am Zug
    // 1: Partie läuft und Eigenspieler hat Weiss und ist am Zug
    // 2: Partie läuft und Eigenspieler hat Schwarz und ist am Zug
    // 3: Partie ist beendet
  }

  // Für Partien
  var IDLinks  = "AuflistungTDIDLinks_"  + ItemID;
  var IDMitte  = "AuflistungTDIDMitte_"  + ItemID;
  var IDRechts = "AuflistungTDIDRechts_" + ItemID;
  var LinkIDLinks  = "AuflistungLinkIDLinks"  + ItemID;
  var LinkIDMitte  = "AuflistungLinkIDMitte"  + ItemID;
  var LinkIDRechts = "AuflistungLinkIDRechts" + ItemID;
  // Für Turniere
  var IDName       = "AuflistungTDIDName_"    + ItemID;
  var IDEinsatz    = "AuflistungTDIDEinsatz_" + ItemID;
  var IDBedenkzeit = "AuflistungTDIDBedenkzeit_" + ItemID;
  var IDTeilnehmer = "AuflistungTDIDTeilnehmer_" + ItemID;
  
  // Merken welches von der Maus überfahren ist
  MouseOverItem = 0;

  if (IsPartie == 1) {
    // Eine Partie
    switch (AmZug) {
      case 0:
        // Spieler ist nicht am Zug
        document.getElementById(IDLinks).style.backgroundColor  = FarbeB4;
        document.getElementById(IDMitte).style.backgroundColor  = FarbeB4;
        document.getElementById(IDRechts).style.backgroundColor = FarbeB4;
        break;
      case 1:
        // Spieler hat W und ist am Zug
        document.getElementById(IDLinks).style.backgroundColor  = FarbeB4;
        document.getElementById(IDMitte).style.backgroundColor  = FarbeR4;
        document.getElementById(IDRechts).style.backgroundColor = FarbeB4;
        break;
      case 2:
        // Spieler hat S und ist am Zug
        document.getElementById(IDLinks).style.backgroundColor  = FarbeB4;
        document.getElementById(IDMitte).style.backgroundColor  = FarbeB4;
        document.getElementById(IDRechts).style.backgroundColor = FarbeR4;
        break;
      case 3:
        // Partie ist beendet
        document.getElementById(IDLinks).style.backgroundColor  = FarbeG4;
        document.getElementById(IDMitte).style.backgroundColor  = FarbeG4;
        document.getElementById(IDRechts).style.backgroundColor = FarbeG4;
        break;
      default: break;
    }
  
    // Und noch die aktuell selektierte Partie als solche markiert hinterlassen
    var IdPartieImHauptfenster = document.getElementById("IdPartieImHauptfenster").innerHTML;
    IdPartieImHauptfenster *= 1;
    if (IdPartieImHauptfenster == ItemID) {
      ColorSelectedMatch();
    }
  }
  else {
    // Ein Turnier
    //document.getElementById(IDName).style.backgroundColor     = FarbeT1;
    document.getElementById(IDEinsatz).style.backgroundColor  = FarbeT1;
    document.getElementById(IDBedenkzeit).style.backgroundColor  = FarbeT1;
    document.getElementById(IDTeilnehmer).style.backgroundColor  = FarbeT1;
  
    // Und noch das aktuell selektierte Turnier als solches markiert hinterlassen
    var IdTurnierImHauptfenster = document.getElementById("IdTurnierImHauptfenster").innerHTML;
    IdTurnierImHauptfenster *= 1;
    if (IdTurnierImHauptfenster == IdTurnierImHauptfenster) {
      ColorSelectedMatch();
    }
  }
}

//
// Färbt die oder das im Hauptfenster befindliche (selektierte) Partie oder Turnier in der Partieauflistung.
// Welches aktuell selektiert ist, steht im Document.
//
function ColorSelectedMatch()
{
  //
  // Partie
  //

  // Id der selektierten Partie aus Document holen
  var IdPartieImHauptfenster = -1;
  if (document.getElementById("IdPartieImHauptfenster") != null) {
    IdPartieImHauptfenster = document.getElementById("IdPartieImHauptfenster").innerHTML;
    IdPartieImHauptfenster *= 1;
  }
  
  if (IdPartieImHauptfenster != -1) {
    // Andernfalls ist keine Partie im Hauptfenster
    
    // ID's der einzufärbenden Felder bestimmen
    var IDLinks     = "AuflistungTDIDLinks_"  + IdPartieImHauptfenster;
    var IDMitte     = "AuflistungTDIDMitte_"  + IdPartieImHauptfenster;
    var IDRechts    = "AuflistungTDIDRechts_" + IdPartieImHauptfenster;
    var IDAmZugInfo = "AuflistungTDIDAmZugInfo" + IdPartieImHauptfenster;
    var LinkIDLinks     = "AuflistungLinkIDLinks"  + IdPartieImHauptfenster;
    var LinkIDMitte     = "AuflistungLinkIDMitte"  + IdPartieImHauptfenster;
    var LinkIDRechts    = "AuflistungLinkIDRechts" + IdPartieImHauptfenster;
    
    // Zunächst prüfen wir ob dieses Item überhaupt existiert. Es könnte auch eine Partie selektiert sein, die gar nicht in unserer Auflistung ist.
    if (document.getElementById(IDLinks) != null) {
      // Diese einfärben. Am Zug bzw. Nicht am Zug bestimmen wir aus dem Document
      
      // Spieler W (links)
      var AmZug = document.getElementById(IDAmZugInfo).innerHTML;
      // AmZug zeigt an ob der Eigenspieler am Zug ist (rot hinterlegt)
      // 0: Partie läuft und Eigenspieler ist nicht am Zug
      // 1: Partie läuft und Eigenspieler hat Weiss und ist am Zug
      // 2: Partie läuft und Eigenspieler hat Schwarz und ist am Zug
      // 3: Partie ist beendet
      AmZug *= 1;

      // Wir müssen auch noch wissen, ob die im Hauptfenster befindliche Partie gerade in der Auflistung von der Maus überfahren wird
      var SelektiertePartieHatMausFocus = false;
      if (MouseOverItem == IdPartieImHauptfenster) {
        SelektiertePartieHatMausFocus = true;
      }
      
      switch (AmZug) {
        case 0:
          // Spieler ist nicht am Zug
          if (SelektiertePartieHatMausFocus) {
            document.getElementById(IDLinks).style.backgroundColor  = FarbeB1;
            document.getElementById(IDMitte).style.backgroundColor  = FarbeB1;
            document.getElementById(IDRechts).style.backgroundColor = FarbeB1;
          }
          else {
            document.getElementById(IDLinks).style.backgroundColor  = FarbeB2;
            document.getElementById(IDMitte).style.backgroundColor  = FarbeB2;
            document.getElementById(IDRechts).style.backgroundColor = FarbeB2;
          }
          break;
        case 1:
          // Spieler hat W und ist am Zug
          if (SelektiertePartieHatMausFocus) {
            document.getElementById(IDLinks).style.backgroundColor  = FarbeB1;
            document.getElementById(IDMitte).style.backgroundColor  = FarbeR1;
            document.getElementById(IDRechts).style.backgroundColor = FarbeB1;
          }
          else {
            document.getElementById(IDLinks).style.backgroundColor  = FarbeB2;
            document.getElementById(IDMitte).style.backgroundColor  = FarbeR2;
            document.getElementById(IDRechts).style.backgroundColor = FarbeB2;
          }
          break;
        case 2:
          // Spieler hat S und ist am Zug
          if (SelektiertePartieHatMausFocus) {
            document.getElementById(IDLinks).style.backgroundColor  = FarbeB1;
            document.getElementById(IDMitte).style.backgroundColor  = FarbeB1;
            document.getElementById(IDRechts).style.backgroundColor = FarbeR1;
          }
          else {
            document.getElementById(IDLinks).style.backgroundColor  = FarbeB2;
            document.getElementById(IDMitte).style.backgroundColor  = FarbeB2;
            document.getElementById(IDRechts).style.backgroundColor = FarbeR2;
          }
          break;
        case 3:
          // Partie ist beendet
          if (SelektiertePartieHatMausFocus) {
            document.getElementById(IDLinks).style.backgroundColor  = FarbeG1;
            document.getElementById(IDMitte).style.backgroundColor  = FarbeG1;
            document.getElementById(IDRechts).style.backgroundColor = FarbeG1;
          }
          else {
            document.getElementById(IDLinks).style.backgroundColor  = FarbeG2;
            document.getElementById(IDMitte).style.backgroundColor  = FarbeG2;
            document.getElementById(IDRechts).style.backgroundColor = FarbeG2;
          }
          break;
        default: break;
      }
    }
  }
  
  //
  // Turnier
  //

  // Id des selektierten Turniers aus Document holen
  var IdTurnierImHauptfenster = -1;
  if (document.getElementById("IdTurnierImHauptfenster") != null) {
    IdTurnierImHauptfenster = document.getElementById("IdTurnierImHauptfenster").innerHTML;
    IdTurnierImHauptfenster *= 1;
  }
  
  if (IdTurnierImHauptfenster != -1) {
    // Andernfalls ist kein Turnier im Hauptfenster
    
    // ID's der einzufärbenden Felder bestimmen
    var IDName       = "AuflistungTDIDName_"    + IdTurnierImHauptfenster;
    var IDEinsatz    = "AuflistungTDIDEinsatz_" + IdTurnierImHauptfenster;
    var IDBedenkzeit = "AuflistungTDIDBedenkzeit_" + IdTurnierImHauptfenster;
    var IDTeilnehmer = "AuflistungTDIDTeilnehmer_" + IdTurnierImHauptfenster;
    
    // Zunächst prüfen wir ob dieses Item überhaupt existiert. Es könnte auch ein Turnier selektiert sein, das gar nicht in unserer Auflistung ist.
    if (document.getElementById(IDName) != null) {
      // Feld einfärben
      //document.getElementById(IDName).style.backgroundColor = FarbeT2;
      document.getElementById(IDEinsatz).style.backgroundColor = FarbeT2;
      document.getElementById(IDBedenkzeit).style.backgroundColor = FarbeT2;
      document.getElementById(IDTeilnehmer).style.backgroundColor = FarbeT2;
    }
  }
}

