Location: PHPKode > projects > Skat Statistics > skatstat-1.7.1/skatstat/inc/spielliste.php
<?
function Spielliste( $Attribute, $SpiellisteId, $Handheld, 
                     $NumSpieler = "", $NumSpiele = "" )
{
  if( ! $NumSpieler )
  {
    $sqlExec = ReceiveBodyRows( $SpiellisteId, 1 );
    $Line = mysql_fetch_array( $sqlExec );
    $NumSpieler = $Line[NumSpieler];
  }


  //
  startTag("div", "class", "Spielliste");
  startTag("div", "class", "Title");
  echo "Spielliste";
  endTag("div");

  #<!-- Spielliste -->
  startTag("form", "name", "myform", "action", $_SERVER['PHP_SELF'], "method", "post", "onsubmit", "return CheckList()");

  startTag("input", "name", "SpiellisteId", "type", "hidden", "value", $SpiellisteId, "size", 1, "readonly", "readonly" );
  startTag("table", "class", "Spielliste");

  // colgroup for vertical player separation
  startTag( "colgroup" );
  for( $i = 0; $i < 10; $i++ ) // Spieleigenschaften
  {
    starttag( "col" );
  }
  for( $i = 0; $i < $NumSpieler; $i++ ) // Spielerspalten
  {
    if( $i % 2 )
    {
    starttag( "col" , "style", "border-left: 2px gray solid");
    starttag( "col" );
    starttag( "col" , "style", "border-right: 2px gray solid");
    }
    else
    {
    starttag( "col", "class", 'SLSpielerHG', "style", "border-left: 2px gray solid" );
    starttag( "col", "class", 'SLSpielerHG' );
    starttag( "col", "class", 'SLSpielerHG', "style", "border-right: 2px gray solid" );
    }
  }
  starttag( "col" ); // eingepasst
  starttag( "col" ); // �berreizt
  endTag( "colgroup" );

  SpiellisteHeader( $Attribute, $SpiellisteId, $NumSpieler, $NumSpiele );
  SpiellisteBody( $Attribute, $SpiellisteId, false, -1, false, 
                  $NumSpieler, $NumSpiele  );
  SpiellisteFooter( $Attribute, $SpiellisteId, $Handheld, $NumSpieler, $NumSpiele );
  endTag("table");
  #<!-- End Table -->
  startTag("input", "type", "hidden", "name", "komplett", "value", 1);
  
  endTag("form");
  endTag("div");
}

/** Funktion liefert ein MySQL Objekt zur�ck, dass die Daten einer Spielliste
* enth�lt. Parameter sind die SpiellisteId und das Startspiel, sowie das
* letzte Spiel. Fehlt $SpielnummerEnde, dann werden alle bis zum Ende gesucht 
**/
function ReceiveBodyRows( $SpiellisteId, $Spielnummer = -1 )
{
  global $CONF;
  global $SKAT_SESSION;
  $cond = "";
  if( ! ( $Spielnummer < 0 ) )
  {
    $cond = " AND t5.Number<=$Spielnummer ";
    debug( "Condition: $cond" );
  }
  $sql = "SELECT t5.Number, t5.Eingepasst, t5.Ueberreizt, t5.Grundwert, t5.Spitzen,
  t5.Hand, t5.Schneider, t5.Schneider_angesagt, t5.Schwarz,
  t5.Schwarz_angesagt, t5.Offen, t5.Spielwert, t2.Platznummer , t1.NumSpieler, t1.NumSpiele
  FROM " . 
  $CONF['tbl_cat'].  " AS t0, " . 
  $CONF['tbl_scoresheet'].  " AS t1, " . 
  $CONF['tbl_column'] .     " AS t2, " . 
  $CONF['tbl_player'] .    " AS t4, " .  
  $CONF['tbl_game'] .    " AS t5  
  WHERE   t1.Id=$SpiellisteId  
  AND t0.Id=t1.CatId  
  AND t0.GroupId=". $SKAT_SESSION[groupid] ." 
  AND t2.SpiellisteId=t1.Id  
  AND t4.Id=t2.SpielerId $cond
  AND t5.SpiellisteId=$SpiellisteId 
  AND ( t2.SpielerId=t5.AlleinspielerId  OR t5.Eingepasst=2 OR t5.Eingepasst=1 ) 
  GROUP BY t5.Number ORDER BY t5.Number ";
  return processSQL( $sql );
}

/** Funktion gibt eine Zeile einer Spielliste aus, dabei wird unterschieden ob
* die Felder editierbar sind oder nicht.
*/
function SpiellisteBody( $Attribute, $SpiellisteId, $Handheld = false,
$Spielnummer = -1, $Resultonly = false, $NumSpieler = "", $NumSpiele = "")
{
  global $CONF;

  debug("SpiellisteBody" );
  debug("Attribute:    " . $Attribute );
  debug("Handheld:    " . $Handheld );
  debug("Spielnummer: " . $Spielnummer );
  debug("SpiellisteId: " . $SpiellisteId );

  if( $SpiellisteId )
  {
    # everything is ok
    $sqlExec = ReceiveBodyRows( $SpiellisteId, $Spielnummer );
    debug("Number of rows: " . mysql_num_rows( $sqlExec ) );

    $Line = mysql_fetch_array( $sqlExec );
    $NumSpieler = $Line[NumSpieler];
    $NumSpiele  = $Line[NumSpiele ];
  }
  else
  {
    #errormsg( "No SpiellisteId is given!!" );
    #return;
  }


  # Init Spaltenwerte
  for( $j = 0 ; $j < $NumSpieler; $j++ )
  {
    $punkte[ $j ]   = 0;
    $verloren[ $j ] = 0;
    $gewonnen[ $j ] = 0;
  }

  #  <!-- Body -->
  $eingepasst = 0;
  $i = 0;
  do
  {
    if( $SpiellisteId )
    {
      $i = $Line["Number"];
    }
    
    debug("i: " . $i );
    /** Nummer, �ber Spielwerte, �ber Eingepasst und �berreizt
    * weden angezeigt, wenn entweder Handheld und die entsprechende Nummer oder
    * kein Handheld **/
    if( !$Handheld || ( $Handheld && $Spielnummer == $i ) )
    {
      /** Neue Zeile, die Werte folgen jetzt
      **/

      if( $Handheld || ( ( $i+1) % $NumSpieler ) )
      {
        startTag("tr");
      }
      else
      {
          startTag("tr", "class", "Rundenende");
      }

      if( !$Resultonly )
      {
        /**
        #<!-- Laufende Nummer -->
        **/
        startTag("td");
        echo $i + 1;
        endTag("td");
      }
    }

    if( ( $Attribute == "Edit" ) || ( !isEingepasst($Line['Eingepasst'] )) )
    {
      if( ( !$Handheld || ( $Handheld && $Spielnummer == $i ) ) && !$Resultonly)
      {
        /**
        #<!-- Grundwert -->
        **/
        startTag("td");

        if( $Attribute == "Edit" )
        {
          startTag("select", "tabindex", $NumSpieler+2*$i+1, "name", "Grundwert$i",
          "size", 1, "onChange", "ChangeGrundwert( $i )" );
          foreach( array("--", 9, 10, 11, 12, 23, 24, 35, 46, 59 ) as $v )
          {
            if( $Line['Grundwert'] == $v )
            {
              startTag( "option", "selected", "selected", "value", $v );
            }
            else
            {
              startTag( "option", "value", $v );
            }
            echo $v;
            endTag( "option" );
          }
          endTag("select");
        }
        else
        {
          echo $Line['Grundwert'];
        }
        endTag("td");

        /**
        #<!-- Mit/Ohne Spitzen -->
        **/
        startTag("td");
        if( $Attribute == "Edit" )
        {
          startTag("select", "tabindex", $NumSpieler+2*$i+2, "name", "Spitzen$i",
          "size", 1, "onChange", "Update( $i )" );
          $sp = array("-", 1, -1, 2, -2, 3, -3, 4, -4, 5, -5, 6, -6, 7, -7, 8, -8, 9, -9, 10, -10, 11, -11 );
          foreach(  $sp as $k )
          {
            if( $k == $Line['Spitzen'] )
            {
              startTag( "option", "selected", "selected", "value", $k );
            }
            else
            {
              startTag( "option", "value", $k );
            }
            echo $k;
            endTag( "option" );
          }
          endTag("select");
          endTag("td");
        }
        else
        {
          if( ( $Line['Grundwert'] < 23 ) || ( $Line['Grundwert'] == 24 ) )
          {
            echo $Line['Spitzen'];
          }
          else
          {
            echo "";
          }
        }

        if( ( $Attribute == "Edit" )  ||  !$Line['Ueberreizt'] )
        {
          /**
          #<!-- Gewinnstufen -->
          **/
          foreach( array("Hand", "Schneider", "Schneider_angesagt", "Schwarz", 
          "Schwarz_angesagt", "Offen" ) as $gt )
          {
            startTag("td");
            if( $Line[$gt] )
            {
              $checked = "checked";
            }
            else
            {
              $checked = "";
            }
            if( $Attribute == "Edit" )
            {
              startTag("input", "type", "checkbox", "name", "$gt$i",
              "onChange", "Update( $i )", $checked, $checked );
            }
            else
            {
              if( $checked )
              {
                echo "X";
              }
            }
            endTag("td");
          }
        }
        else
        {
          startTag("td", "colspan", 6);
          echo "&uuml; b e r r e i z t";
          endTag("td");
        }

        /**
        #<!-- Spielwert -->
        **/
        if( ( $Attribute == "Edit" ) && $Line["Ueberreizt"] )
        {
          $readonly = "";
        }
        else
        {
          $readonly = "readonly";
        }
        startTag("td");
        startTag("input", "type", "text", "name", "spielwert$i",
        "onChange", "Update( $i )", $readonly, $readonly, "size", 3,
        "value", $Line['Spielwert'] );
        startTag("input", "type", "hidden", "name", "Wer$i", "value", $Line['Platznummer'] );
        endTag("td");

        /** Eingepasst und �berreizt Klickfelder
        **/
        if( ($Handheld && ( $i == $Spielnummer ) ) )
        {
          $eingepasst = EingepasstUeberreizt( $Attribute, $Line, $eingepasst, $i );
          /** Zeilenumbrch nur, wenn Handheld
          **/
        }
      }

      /** Zeile vor den Klickk�stchen bzw.
      Folgezeile, nach den Klickk�stchen
      **/
      if( !$Handheld )
      {
        debug( "Zeile vor den Klickk�stchen" );
        /**
        #<!-- Spieler -->
        **/
        for( $j = 0; $j < $NumSpieler; $j++)
        {
          debug( "Platznummer: " . $Line[Platznummer] );
          debug( "Spieler    : " . $j );
          if( $NumSpieler > 3 && $j == $i % $NumSpieler )
          {
            $class="disabled";
          }
          else
          {
            $class="";
          }
          if( isAngelegt( $Line[Eingepasst] )
              && isset( $Line[Platznummer]) 
              && ( $j == $Line[Platznummer] ) ) # Spieler ist Alleinspieler
          {
            # Berechne seinen Punktestand und zeige ihn an.
            # F�r alle anderen Spieler, zeige nichts an und
            # setzte nur die js attribute.
            $punkte[ $j ] += $Line['Spielwert'];
            if( $Line['Spielwert'] > 0 )
            {
              $gewonnen[ $j ] += 1;
            }
            else
            {
              $verloren[ $j ] += 1;
            }
            $r[0][ $j ]  = $punkte[ $j ];
            $r[1][ $j ]  = $gewonnen[ $j ];
            $r[2][ $j ]  = $verloren[ $j ];
          }
          else
          {
            if( $Resultonly )
            {
              $init = 0;
            }
            else
            {
              $init = "";
            }
            $r[0][ $j ]  = $init;
            $r[1][ $j ]  = $init;
            $r[2][ $j ]  = $init;
          }

          $att = array();
          $par = array();
          if( ( $Attribute == "Edit" ) && ( ! $class ) )
          {
            $att["punkte"] = "onClick";
            $par["punkte"] = "UpdateCol( $i, $j, 1)";
            $att["gewonnen"] = "onClick";
            $par["gewonnen"] = "UpdateCol( $i, $j, 1)";
            $att["verloren"] = "onClick";
            $par["verloren"] = "UpdateCol( $i, $j, 0)";
          }

          $val = array();
          $val["punkte"] = $r[0][ $j ];
          $val["gewonnen"] = $r[1][ $j ];
          $val["verloren"] = $r[2][ $j ];
          foreach( array("punkte", "gewonnen", "verloren" ) as $gt )
          {
            $colspan = 1;
            if( $Handheld && ( $gt == "punkte" ) )
            {
              if( $NumSpieler == 3 )
              {
                $colspan = 2;
              }
              elseif( $NumSpieler == 4 )
              {
                $colspan = 1;
              }
              else
              {
                errormsg( "Error! NumSpieler not defined!!" );
              }
            }
            startTag("td", "class", $class, "colspan", $colspan );
            startTag("input", "type", "text", "size", "2",
            $att[$gt], $par[$gt], "readonly", "readonly", "value", $val[$gt],
            "name", "$gt$i$j" );
            endTag("td");
          }
        }
      }
    }
    else
    {
      startTag("td", "colspan", 9 + $NumSpieler * 3);
      echo "e i n g e p a s s t";
      endTag("td");
    }

    /** Eingepasst und �berreizt Klickfelder
    **/
    if( !$Handheld )
    {
      $eingepasst = EingepasstUeberreizt( $Attribute, $Line, $eingepasst, $i );
    }

    if( !$Handheld || ( $Handheld && $Spielnummer == $i ) )
    {
      endTag("tr");
    }

    if( $SpiellisteId )
    {
      $Line = mysql_fetch_array( $sqlExec );
      $continue = $Line;
    }
    else
    {
      $i++;
      $continue = $i < $NumSpiele;
    }
  } while( $continue );
  /** end while
  */
}

function ReceiveFooterData( $SpiellisteId )
{
  global $CONF;
  global $SKAT_SESSION;
    $sql = "SELECT  t2.Gewonnen, t2.Verloren, t2.Spielpunkte, t2.Extrapunkte,
    t2.Fremdpunkte, t2.Summe, t1.NumSpiele, t1.NumSpieler 
    FROM " . 
    $CONF['tbl_cat'].  " AS t0, " . 
    $CONF['tbl_scoresheet'].  " AS t1, " . 
    $CONF['tbl_column'] .     " AS t2, " . 
    $CONF['tbl_player'] .    " AS t4  
    WHERE   t1.Id=$SpiellisteId  
    AND t0.Id=t1.CatId  
    AND t0.GroupId=".$SKAT_SESSION[groupid]." 
    AND t2.SpiellisteId=t1.Id  
    AND t4.Id=t2.SpielerId 
    ORDER BY t2.Platznummer ";
    return processSQL( $sql );
}


function SpiellisteFooter( $Attribute, $SpiellisteId, $Handheld = false, $NumSpieler = "", $NumSpiele = "" )
{
  global $CONF;
  global $SKAT_SESSION;

  if( $SpiellisteId )
  {
    $sqlExec = ReceiveFooterData( $SpiellisteId );
    if( $sqlExec )
    {
      while( $l = mysql_fetch_array( $sqlExec ) )
      {
        $Line[] = $l;
      }
    }
    $NumSpieler = $Line[0][NumSpieler];
    $NumSpiele  = $Line[0][NumSpiele];
  }

  $pktExtra  = ExtraPoints();
  $pktGegner = PunkteGegner( $NumSpieler );

  /** TODO
  **/
  $LeftColSpan = 10;

  #<!-- Footer -->
  startTag("tr", "class", "SLFooter" );
  startTag("td", "colspan", $LeftColSpan );
  echo "Summe der Punkte und Spiele";
  endTag("td");

  $sp = 0;
  for( $j = 0; $j < $NumSpieler; $j++)
  {
    startTag("td");
    startTag("input", "name", "sumpunkte$j","size", 3, "type", "text", "readonly", "readonly", "maxlength", "5", "value", $Line[$j]['Spielpunkte'] );
    endTag("td");

    startTag("td");
    startTag("input", "name", "sumgewonnen$j","size", 1, "type", "text", "readonly", "readonly", "value", $Line[$j]['Gewonnen'] );
    endTag("td");

    startTag("td");
    startTag("input", "name", "sumverloren$j","size", 1, "type", "text", "readonly", "readonly", "value", $Line[$j]['Verloren'] );
    endTag("td");
    $sp += $Line[$j]['Verloren'] +$Line[$j]['Gewonnen'];
  }

  startTag("td");
  if( $Attribute != "Edit" )
  {
    $val = $NumSpiele  - $sp;
  }
  else
  {
    $val = "";
  }
  startTag("input", "name", "sumeingepasst","size", 1, "type", "text", "readonly", "readonly", "value", $val );
  endTag("td");

  if( $Attribute == "Edit" )
  {
    startTag("td");
    endTag("td");
  }
  endTag("tr");

  startTag("tr", "class", "SLFooter" );

  startTag("td", "colspan", $LeftColSpan);

  startTag("input", "name", "Extra","type", "hidden", "value", $pktExtra );
  echo "(gewonnen - verloren ) x $pktExtra ";
  endTag("td");


  for( $j = 0; $j < $NumSpieler; $j++)
  {
    startTag("td");
    startTag("input", "name", "extra$j","type", "text", "size", 3 , "readonly", "readonly", "value", $Line[$j]['Extrapunkte'] );

    endTag("td");

    startTag("td");

    if( isset( $Line[$j]['Gewonnen'] ) )
    {
      $val =  $Line[$j]['Gewonnen'] - $Line[$j]['Verloren'];
    }
    else
    {
      $val = "";
    }
    startTag("input", "name", "gew_verl$j","type", "text", "size", 1 , "readonly", "readonly", "value", $val );

    endTag("td");

    startTag("td");
    endTag("td");
  }
  startTag("td");

  endTag("td");
  if( $Attribute == "Edit" )
  {
    startTag("td");
    endTag("td");
  }

  endTag("tr");

  startTag("tr", "class", "SLFooter" );

  startTag("td", "colspan", $LeftColSpan);

  startTag("input", "name", "Gegner","type", "hidden", "value", $pktGegner);

  echo "verlorene Spiele der Gegner x $pktGegner";

  endTag("td");

  for( $j = 0; $j < $NumSpieler; $j++)
  {
    startTag("td");

    startTag("input", "name", "gegner$j","type", "text", "readonly", "readonly", "size", 3, "value", $Line[$j]['Fremdpunkte']);

    endTag("td");

    startTag("td");

    endTag("td");

    startTag("td");

    endTag("td");

  }
  startTag("td");
  endTag("td");
  if( $Attribute == "Edit" )
  {
    startTag("td");
    endTag("td");
  }

  endTag("tr");

  startTag("tr", "class", "SLFooter" );
  startTag("td", "colspan", $LeftColSpan );
  echo "Endergebnis";
  endTag("td");

  for( $j = 0; $j < $NumSpieler; $j++)
  {
    startTag("td");
    startTag("input", "name", "ergebnis$j","size", 3, "type", "text", "readonly", "readonly", "value", $Line[$j]['Summe'] );
    endTag("td");

    startTag("td");

    endTag("td");

    startTag("td");

    endTag("td");
  }
  startTag("td");

  endTag("td");
  if( $Attribute == "Edit" )
  {
    startTag("td");
    endTag("td");
  }

  endTag("tr");

  if( $Attribute == "Edit" )
  {
    #<!-- Last Row -->
    startTag("tr", "class", "SLFooter" );
    startTag("td", "align", "right", "colspan", $NumSpieler*4+14 );
    startTag("input", "type", "submit", "value", "abschicken" );
    endTag("td");
    endTag("tr");
    if( $SpiellisteId )
    {
      startTag("tr", "class", "SLFooter" );
      startTag("td", "align", "left", "colspan", $NumSpieler*4+14,
      "class", "TableFootnote" );
      echo "unwiederruflich l&ouml;schen: ";
      startTag("input", "name", "Delete", "type", "checkbox", "value", "delete" );
      endTag("td");
      endTag("tr");
    }
  }
  if( $SKAT_SESSION[admin] && $SpiellisteId && ( $Attribute != "Edit" ) &&
      !$Handheld )
  {
    startTag("tr", "class", "SLFooter" );
    startTag("td", "align", "left", "colspan", $NumSpieler*4+14,
    "class", "TableFootnote" );
    echo  createLink( "?SpiellisteId=$SpiellisteId&amp;Mngt=4", "Spielliste bearbeiten" );
    echo "<br>";
    endTag("td");
    endTag("tr");
  }
  else
  {
//  startTag("tr", "class", "SLFooter" );
//  startTag("td", "align", "left", "colspan", $NumSpieler*4+14,
//  "class", "TableFootnote" );
//  echo  "<a href=\#\" class=\"lbAction\" rel=\"deactivate\">close</a>";
//  endTag("td");
//  endTag("tr");
  }
}

function SpiellisteHeader( $Attribute, $SpiellisteId, $NumSpieler = false,
$NumSpiele = false, $Handheld = false, $SingleGame = false, $PlayerOnly=false )
{
  global $CONF;

  debug( "NumSpieler: $NumSpieler" );
  debug( "NumSpiele : $NumSpiele" );
  debug( "Handheld  : $Handheld" );
  debug( "SingleGame: $SingleGame" );
  debug( "PlayerOnly: $PlayerOnly" );


  if( $SpiellisteId ) // gespeichertes Spiel wird betrachtet oder ver�ndert
  {
    debug( "SpiellisteId $SpiellisteId" );
    $sqlExec = getScoreSheetInfo( $SpiellisteId );
    if( $sqlExec )
    {
      $Line      = mysql_fetch_array( $sqlExec );
      $NumSpieler = $Line['NumSpieler'];
      $NumSpiele  = $Line['NumSpiele'];
      debug( "NumSpieler: $NumSpieler" );
      debug( "NumSpiele:  $NumSpiele" );
    }
    else
    {
      errormsg( "SpiellisteHeader fehler in SQL" );
    }
  }
  else // neues Spiel wird angelegt
  {
    /** NumSpiele(r) ist notwendig um beim allerersten Mal die notwendige
    * Anzahl SpielerAuswahlfelder zu generieren
    **/
    if( !$NumSpiele || !$NumSpieler )
    {
      errormsg("Error, No Spieler given");
      return;
    }
  }

  if( !$SingleGame && !$PlayerOnly )
  {
    #<!-- Header -->
    startTag("tr", "class", "SLHeader" );

    if( $Handheld )
    {
      startTag("td", "style", "text-align:left", "colspan", $NumSpieler );
    }
    else
    {
      startTag("td", "style", "text-align:left", "colspan", 10);
    }
    echo "Kategorie: ";
    if( $Attribute != "Edit" )
    {
      echo $Line['CatName'];
    }
    else
    {
      startTag("input", "name", "Mngt","value", 4, "type", "hidden");
      startTag("input", "name", "NumSpiele", "value", $NumSpiele, "type", "hidden");
      startTag("input", "name", "NumSpieler","value", $NumSpieler, "type", "hidden");
      # Would be nice, if there is the id of the last inserted List
      option_categories( $Line['CatId'] );
    }
    endTag("td");

    # Different layout for Handheld devices
    if( $Handheld )
    {
      endTag("tr");
      startTag("tr", "class", "SLHeader" );
    }

    if( $Handheld )
    {
      startTag("td", "colspan", 1);
    }
    else
    {
      startTag("td", "colspan", 3);
    }
    echo "Serie: ";
    if( $Attribute != "Edit" )
    {
      echo $Line['Serie'];
    }
    else
    {
      if( ! $Line['Serie'] )
      {
        $Line['Serie'] = 1;
      }
      startTag("input", "name", "Serie", "type", "text", "value", $Line['Serie'], "size", 3 );
    }

    if( $Handheld )
    {
      startTag("td", "colspan", 1);
    }
    else
    {
      startTag("td", "colspan", 3 );
    }
    echo "Tisch: "; 
    if( $Attribute != "Edit" )
    {
      echo $Line['Tisch'];
    }
    else
    {
      if( ! $Line['Tisch'] )
      {
        $Line['Tisch'] = 1;
      }
      startTag("input", "name", "Tisch", "type", "text", "value", $Line['Tisch'],
      "size", 3 );
    }
    endTag("td");

    if( $Handheld )
    {
      startTag("td", "colspan", $NumSpieler-2 );
    }
    else
    {
      startTag("td", "colspan", 2+3*($NumSpieler-2));
    }

    if( $Attribute != "Edit" )
    {
      echo "Datum: "; 
      echo $Line['Datum'];
    }
    else
    {
      echo "Datum: "; 
      if( ! $Line['Datum'] )
      {
        $Line['Datum'] = date("Y-m-d");
      }
      startTag("input", "name", "Datum", "type", "text", "value", $Line['Datum'],
      "size", 10);
    }
    endTag("td");

    endTag("tr");
  }
  // zweite Zeile mit den Skat-Attributen
  startTag("tr", "class", "SLHeader" );

  if(( ! $Handheld || $SingleGame ) && !$PlayerOnly )
  {
    startTag("td", "rowspan", $SingleGame ? 1: 3);
    echo "No.";
    endTag("td");

    startTag("td","class","Vertical","rowspan",$SingleGame ? 1: 3);
    echo "Grdw.";
    endTag("td");

    startTag("td","class","Vertical", "colspan", 1, "rowspan",$SingleGame ? 1: 3);
    echo "Sptz.";
    endTag("td");

    if( !$SingleGame )
    {
      startTag("td","colspan", 6, "align","center");
      echo "Gewinnstufe";
      endTag("td");

      startTag("td","rowspan", 2, "colspan", 1);
      echo "Spiel Wert";
      endTag("td");
    }
  }

  if( !$SingleGame || $PlayerOnly )
  {
    $i = 0;
    do
    {
      if( !$Handheld )
      {
        startTag("td","rowspan", 2, "colspan", 3);
      }
      else
      {
        if( $PlayerOnly )
        {
          startTag("td","rowspan", 1, "colspan", $NumSpieler );
        }
        else
        {
          startTag("td","rowspan", 1, "colspan", 1 );
        }
      }
      #echo "Name: ";
      if( $Attribute != "Edit" )
      {
        echo $Line['Name'];
      }
      else
      {
        option_users( "Name$i", $Line['PlayerId'], $i+1 );
      }
      endTag("td");
      $i++;
    } while( ($Line = mysql_fetch_array( $sqlExec )) || ( $i < $NumSpieler ));
  }

  if( !$Handheld )
  {

    if( $Attribute == "Edit" )
    {
      startTag("td","class","Vertical","rowspan","3");
      echo "&Uuml;.";
      endTag("td");
    }
    startTag("td","class","Vertical","rowspan","3");
    echo "E.";
    endTag("td");
  }

  if( !$SingleGame )
  {
    endTag("tr");
  }

  if( ( !$Handheld || $SingleGame ) && !$PlayerOnly )
  {
    if( !$SingleGame )
    {
      startTag("tr", "class", "SLHeader" );
    }
    foreach( array("H.", "Sn.", "Sn<br>a.", "Sw.", "Sw.<br>a.", "O." ) as $gt )
    {
      startTag("td","class","Vertical","rowspan", $SingleGame ? 1 : 2);
      echo $gt;
      endTag("td");
    }

    if( !$Handheld )
    {
      endTag("tr");

      #<!-- Abrechnungszeile -->
      startTag("tr", "class", "SLHeader" ); 
    }
    startTag("td");
    echo "+/-";
    endTag("td");

    if( !$Handheld )
    {
      for( $i = 0; $i < $NumSpieler; $i++ )
      {
        foreach( array("Pkt.", "gew.", "verl.") as $gt )
        {
          startTag("td");
          echo $gt;
          endTag("td");
        }
      }
    }
    else
    {

      startTag("td","class","Vertical","rowspan",1);
      echo "&Uuml;.";
      endTag("td");

      startTag("td","class","Vertical","rowspan",1);
      echo "E.";
      endTag("td");
    }
    endTag("tr");
  }
  return $NumSpieler;
}


/** Funktion erfragt die Anzahl Spieler und die Anzahl Spiele, die
gespielt werden sollen.
*/
function NeueSpielliste( $SpiellisteId = "" )
{
  #<!-- Chose the number of players and the number of games -->
  startTag("form", "name", "myform", "action", $_SERVER['PHP_SELF'], "method", "post");
  starttag( "div", "class", "Title" );
  echo "Neue Spielliste erstellen";
  endtag( "div" );
  startTag("table", "border", 0);
  startTag("tr");
  startTag("td");
  echo "Anzahl Spieler: ";
  endTag("td");
  startTag("td");
  startTag("select", "name", "NumSpieler" );
  startTag("option");
  echo 3;
  endTag("option");
  startTag("option");
  echo 4;
  endTag("option");
  endTag("select");
  endTag("td");
  endTag("tr");

  startTag("tr");
  startTag("td");
  echo "Anzahl Spiele:";
  endTag("td");
  startTag("td");
  startTag("input", "size", 3, "name", "NumSpiele", "value", 6 );
  endTag("td");
  endTag("tr");

  startTag("tr");
  startTag("td", "colspan", 2);
  startTag("input", "name", "Mngt", "value", 4, "type", "hidden");
  startTag("input", "name", "SpiellisteId", "value", $SpiellisteId, "type", "hidden");
  startTag("input", "value", "Weiter", "type", "submit");
  endTag("td");

  endTag("tr");
  endTag("table");
  endTag("form");
}

# Bei der Eingabe einer Spielliste �ber ein Handheld device ist die unterste
# Zeile ein Vorw�rts und zur�ckgehen zu den Spielen.
function HandheldFooter( $Columns = 0 )
{
  startTag("tr");

  startTag("td",  "style", "border-right:none;text-align:left;", "colspan", floor($Columns / 2 ));
  startTag("input", "name", "zurueck", "value", "Zur&uuml;ck", "type", "submit");
  endTag("td");

  startTag("td",  "style", "border-left:none;text-align:right;", "colspan", $Columns - floor( $Columns/2));
  startTag("input", "name", "vor", "value", "Weiter", "type", "submit");
  endTag("td");

  endTag("tr");
}

/** Funktion dient der Eingabe eines einzelnen Spieles, wenn es sich um ein
* Handheld device handelt. Darstellung ist wie folgt:
* | Spieler Namen ..... |
* | Pkte/Gewonn/Verloren| -> Punkte bis zu diesem Spiel
* | Spielwert�berschrift|
* | Eingabefelder       |
* | Pkte/Gewonn/Verloren| -> Punkte nach diesem Spiel
**/
function EditSingleGame( $SpiellisteId, $Spielnummer, $Attribute = false )
{
  debug( "EditSingleGame" );
  startTag("form", "name", "myform", "action", $_SERVER['PHP_SELF'], "method", "post", "onsubmit", "return CheckEingabe( $Spielnummer )");

  startTag("table", "class", "Spielliste");

  SingleGamePlayer( $SpiellisteId );
  if( $Spielnummer > 0 )
  {
    SingleGameScore(  $SpiellisteId, $Spielnummer - 1 );
  }
  /** �berschriften
  */
  SpiellisteHeader( $Attribute, $SpiellisteId, false, false, true, true );
  /** Eingabezeile
  */

  SpiellisteBody( $Attribute, $SpiellisteId, true, $Spielnummer);

  $NumSpieler = SingleGameFooter( $SpiellisteId, $Spielnummer );
  HandheldFooter( 12 );
  
  endTag("table" );

  
  /**
   * Diese Felder sind notwenig damit JavaScript die entsprechenden Felder
   * findet uns richtig rechnen kann.
   */
  for( $j = 0; $j < $NumSpieler; $j++ )
  {

    for( $i = 0; $i < $Spielnummer + 1; $i++ )
    {
      if( $i != $Spielnummer-1 )
      {
        foreach( array("punkte", "gewonnen", "verloren" ) as $gt )
        {
          startTag("input", "type", "hidden", "value", "",
          "name", "$gt$i$j" );
        }
      }
      if( $i != $Spielnummer && $j == 0 ) /** only one time */
      {
        startTag("input", "type", "hidden", 
        "readonly", "readonly", "value", "", "name", "Eingepasst$i" );
      }
    }
    startTag("input", "name", "gew_verl$j","type", "hidden", "readonly",
    "readonly", "value", "" );
  }
  startTag("input", "name", "sumeingepasst","type", "hidden" );
  startTag("input", "name", "Mngt","value", 4, "type", "hidden");
  startTag("input", "name", "Spielnummer","value", $Spielnummer, "type", "hidden");
  startTag("input", "name", "SpiellisteId", "type", "hidden", "value", $SpiellisteId, "size", 1, "readonly", "readonly" );

  #<!-- End Table -->
  endTag("form");
}

/** Funktion gibt die Namen in einer Tabellenzeile aus, die f�r ein
Single Game ben�tigt werden. Dabei werden die Informationen f�r die Spieler,
die Ids mitgesetzt. */
function SingleGamePlayer( $SpiellisteId )
{
  $sqlExec = getScoreSheetInfo( $SpiellisteId );
  $Line      = mysql_fetch_array( $sqlExec );
  $NumSpieler = $Line['NumSpieler'];
  $NumSpiele  = $Line['NumSpiele'];
  debug( "NumSpieler: $NumSpieler" );
  debug( "NumSpiele:  $NumSpiele" );

  #<!-- Zeile mit Spielernamen -->
  startTag("tr");
  $i = 0;
  do
  {
    if( $i % 2 )
    {
      $class = "SLSpielerHG";
    }
    else
    {
      $class = "";
    }
    startTag("td","class", "$class", "rowspan", 1, "colspan", $NumSpieler == 3 ? 4 : 3);
    echo $Line['Name'];
     startTag("input","type","hidden","name","Name$i", "value", $Line['PlayerId']);
    endTag( "td" );
    $i++;
  } while( ($Line = mysql_fetch_array( $sqlExec ) ) );
  endTag("tr");
}

/** Funktion gibt den Spielstand, bis einschliesslich einer Spielnummer aus.
* R�ckgabe ist eine Tabellenzeile mit Punkte, gewonnen und verlorenen Spielen
* */
function SingleGameScore( $SpiellisteId, $Spielnummer, $ro = true )
{
  $sqlExec = ReceiveBodyRows( $SpiellisteId, $Spielnummer );
  $Line = mysql_fetch_array( $sqlExec );
  $NumSpieler = $Line[NumSpieler];

  /** Init */
  for( $i = 0; $i < $NumSpieler; $i++ )
  {
    foreach( array("punkte", "gewonnen", "verloren" ) as $gt )
    {
      ${$gt}[ $i ] = 0;
    }
  }
  startTag( "tr" );
  $i = 0;
  do
  {
    if( ! isEingepasst( $Line['Eingepasst'] ) ) # Spiel ist nicht eingepasst
    {
      $j = $Line['Platznummer'];

      # Berechne seinen Punktestand 
      $punkte[ $j ] += $Line['Spielwert'];

      if( $Line['Spielwert'] > 0 )
      {
        $gewonnen[ $j ] += 1;
      }
      else
      {
        $verloren[ $j ] += 1;
      }
    }

    $i++;
  } while( ($Line = mysql_fetch_array( $sqlExec ) ) );

  /** Spielstand zum aktuellen Spiel (ohne das aktuelle Spiel)
  **/
  for( $i = 0; $i < $NumSpieler; $i++ )
  {
    if( $i % 2 )
    {
      $class = "SLSpielerHG";
    }
    else
    {
      $class = "";
    }
    foreach( array("punkte", "gewonnen", "verloren" ) as $gt )
    {
      $colspan = 1;
      if( ( $gt == "punkte" ) && ( $NumSpieler == 3 ) )
      {
        $colspan = 2;
      }
      startTag("td", "class", "$class", "colspan", $colspan );
      startTag("input", "type", "text", "size", "2", "readonly", "readonly", "value", ${$gt}[$i], "name", "$gt$Spielnummer$i" );
      endTag("td");
    }
  }
      endTag("tr");
}


/** Funktion gibt separat die beiden Felder �berreizt und Eingepasst aus
da diese bei Handheld und nicht Handheld in der Position unterscheiden
**/
function EingepasstUeberreizt( $Attribute, $Line, $eingepasst, $i )
{
  if( $Attribute == "Edit" )
  {
    startTag("td");

    if( $Line["Ueberreizt"] )
    {
      $checked = "checked";
    }
    else
    {
      $checked = "";
    }

    startTag("input", "type", "checkbox", $checked, $checked,
    "onChange", "Update( $i )", "name", "Ueberreizt$i" );
    endTag("td");
  }
  #<!-- eingepasste Spiele -->
  if( isEingepasst($Line['Eingepasst'] ) )
  {
    $eingepasst++;
    $val = $eingepasst;
  }
  else
  {
    $val = "";
  }

  if( $Attribute == "Edit" )
  {
    $att = "onClick";
    $par = "Eingepasst( $i )";
  }
  else
  {
    $att = "";
    $par = "";
  }

  startTag("td");
  startTag("input", "type", "text", "readonly", "readonly", "size", "1",
  $att, $par, "name", "Eingepasst$i", "value", $val );
  endTag("td");
  return $eingepasst;
}

/** 
 * Funktion gibt die Footerzeile in einer Handheldeingabe zur�ck. Diese Zeile
 * stellt das Endergebnis nach Steuern dar und ist ist gleichzeitig, klickbar
 * f�r die Zuweisung des Alleinspielers
 * 
 * @return: Funktion gibt die Anzahl Spieler zurück, die von der aufrufenden Funktion
 * gebraucht wird.
 **/
function SingleGameFooter( $SpiellisteId, $Spielnummer )
{
  global $CONF;
  $Line = "";
  $sqlExec = ReceiveFooterData( $SpiellisteId );
  while( $l = mysql_fetch_array( $sqlExec ) )
  {
    $Line[] = $l;
  }
  $NumSpieler = $Line[0][NumSpieler];
  $NumSpiele  = $Line[0][NumSpiele];
  $pktExtra  = ExtraPoints();
  $pktGegner = PunkteGegner( $NumSpieler );

  startTag( "tr" );
  for( $j = 0; $j < $NumSpieler; $j++)
  {
    if( $NumSpieler > 3 && $j == $Spielnummer % $NumSpieler )
    {
      $class    = "disabled";
      $disabled =  true;
    }
    else
    {
      $class="";
      $disabled =  false;
    }

    if( ( $class == "" ) && ( $j % 2 ) )
    {
      $class = "SLSpielerHG";
    }

    /** Diese Zeile enth�lt das Endergebnis. Die Einzelkomponenten werden
    * in versteckten Zellen gespeichert
    **/
    $colspan = 1;
    if( $NumSpieler == 3 )
    {
      $colspan = 2;
    }
    startTag("td", "class", $class, "colspan", $colspan);
    startTag("input", "name", "ergebnis$j","size", 3, "type", "text",
    "readonly", "readonly", "value", $Line[$j]['Summe'], "onClick", !$disabled ?  "UpdateCol( $Spielnummer, $j, 1)" : "" );

    startTag("input", "name", "sumpunkte$j","size", 3, "type", "hidden", "readonly", "readonly", "value", $Line[$j]['Spielpunkte'] );

    startTag("input", "name", "gegner$j","type", "hidden", "readonly", "readonly", "value", $Line[$j]['Fremdpunkte']);

    startTag("input", "name", "extra$j","type", "hidden", "readonly", "readonly", "value", $Line[$j]['Extrapunkte'] );

    endTag("td" );

    startTag("td", "class", $class);
    startTag("input", "name", "sumgewonnen$j","size", 1, "type", "text",
    "readonly", "readonly", "value", $Line[$j]['Gewonnen'], "onClick", !$disabled ? "UpdateCol( $Spielnummer, $j, 1)" : "" );

    endTag("td");

    startTag("td", "class", $class);
    startTag("input", "name", "sumverloren$j","size", 1, "type", "text",
    "readonly", "readonly", "value", $Line[$j]['Verloren'], "onClick", !$disabled ? "UpdateCol( $Spielnummer, $j, 0)" : "" );
    endTag("td");

    $sp += $Line[$j]['Verloren'] +$Line[$j]['Gewonnen'];
  }
  endTag("tr");
  
  return $NumSpieler;
}

function SelectScoreSheetProperties( $Attribute, $SpiellisteId, $NumSpieler,
$NumSpiele, $Handheld)
{
  startTag("form", "name", "myform", "action", $_SERVER['PHP_SELF'], "method",
  "post", "onsubmit", "return CheckSpieler()");
  startTag("table", "class", "Spielliste");
#  startTag( "thead" );
  $NumSpieler = SpiellisteHeader( $Attribute, $SpiellisteId, $NumSpieler, $NumSpiele, $Handheld );
#  endTag( "thead" );
  HandheldFooter( $NumSpieler );
  endTag("table");
  endTag("form");
}

?>
Return current item: Skat Statistics