lots of small fixes and cleanup
[e-DoKo.git] / index.php
index bd5702e3fe558b890374f3a53dec460bff18c889..d135474612fde9d7cd0a7a292c5c42583af350ff 100644 (file)
--- a/index.php
+++ b/index.php
@@ -13,13 +13,17 @@ include_once("functions.php");   /* the rest */
 if(!isset($EmailName))
      $EmailName="[DoKo] ";
 
-if(0)
-{
-  output_header();
-  echo "Working on the database...please check back in a few mintues";
-  output_footer();
-  exit();
-}
+
+/* in case work has to be done on the database or other section we can
+ * shut down the server and tell people to come back later 
+ */
+if(0) 
+  {
+    output_header();
+    echo "Working on the database...please check back in a few mintues"; 
+    output_footer(); 
+    exit(); 
+  }
 
 DB_open();
 output_header();
@@ -49,6 +53,7 @@ if(myisset("new"))
     if($EmailA=="" || $EmailB=="" || $EmailC=="" || $EmailD=="")
       {
        echo "couldn't find one of the names, please start a new game";
+       output_footer();
        exit();
       }
     
@@ -66,6 +71,7 @@ if(myisset("new"))
     if($ruleset <0) 
       {
        echo "Error defining ruleset: $ruleset";
+       output_footer();
        exit();
       };
     
@@ -145,10 +151,9 @@ if(myisset("new"))
     
     echo "You started a new game. The emails have been sent out!";    
   }    /* end set up a new game */
+/* cancle a game, if nothing has happend in the last N minutes */
 else if(myisset("cancle","me"))
   {
-    /* cancle a game, if it is older than N minutes */
-    
     $me = $_REQUEST["me"];
     
     /* test for valid ID */
@@ -157,6 +162,7 @@ else if(myisset("cancle","me"))
       {
        echo "Can't find you in the database, please check the url.<br />\n";
        echo "perhaps the game has been cancled, check by login in <a href=\"$host\">here</a>.";
+       output_footer();
        exit();
       }
     
@@ -169,7 +175,7 @@ else if(myisset("cancle","me"))
     /* check if game really is old enough */
     $result = mysql_query("SELECT mod_date from Game WHERE id='$gameid' " );
     $r = mysql_fetch_array($result,MYSQL_NUM);
-    if(time()-strtotime($r[0]) > 60*60*24*30)
+    if(time()-strtotime($r[0]) > 60*60*24*30) /* = 1 month */
       {
        $message = "Hello, \n\n".
          "Game $gameid has been cancled since nothing happend for a while and $myname requested it.\n";
@@ -189,12 +195,10 @@ else if(myisset("cancle","me"))
     else
       echo "<p>You need to wait longer before you can cancle a game...</p>\n";
   }
+/* handle request from one specific player for one game,
+ * (the hash is set on a per game base) */
 else if(myisset("me"))
   {
-    /* handle request from one specific player,
-     * the hash is set on a per game base
-     */
-    
     $me = $_REQUEST["me"];
     
     /* test for valid ID */
@@ -203,9 +207,11 @@ else if(myisset("me"))
       {
        echo "Can't find you in the database, please check the url.<br />\n";
        echo "perhaps the game has been cancled, check by login in <a href=\"$host\">here</a>.";
+       output_footer();
        exit();
       }
-    
+
+    /* the user had done something, update the timestamp */
     DB_update_user_timestamp($myid);
     
     /* get some information from the DB */
@@ -214,21 +220,49 @@ else if(myisset("me"))
     $mystatus = DB_get_status_by_hash($me);
     $mypos    = DB_get_pos_by_hash($me);
     
-    /* display the game number */
-    echo "<p class=\"gamenumber\"> Game $gameid </p>\n";
 
-    /* display rule set */
-    echo "<div class=\"ruleset\">\n Rules: <br />";
-    $result = mysql_query("SELECT * FROM Rulesets LEFT JOIN Game ON Game.ruleset=Rulesets.id WHERE Game.id='$gameid'" );
+    /* get rule set for this game */
+    $result = mysql_query("SELECT * FROM Rulesets".
+                         " LEFT JOIN Game ON Game.ruleset=Rulesets.id ".
+                         " WHERE Game.id='$gameid'" );
     $r      = mysql_fetch_array($result,MYSQL_NUM);
 
-    $RULES["dullen"]=$r[2];
-    $RULES["schweinchen"]=$r[3];
+    $RULES["dullen"]      = $r[2];
+    $RULES["schweinchen"] = $r[3];
+    
+    /* get some infos about the game */
+    $gametype   = DB_get_gametype_by_gameid($gameid);
+    $gamestatus = DB_get_game_status_by_gameid($gameid);
+    $GT         = $gametype;
+    if($gametype=="solo")
+      {
+       $gametype = DB_get_solo_by_gameid($gameid);
+       $GT  = $gametype." ".$GT;
+      }
 
-    echo "10ofhearts : ".$r[2]."<br />";
-    echo "schweinchen: ".$r[3]."<br />";
+    /* display rule set for this game */
+    echo "<div class=\"ruleset\">\n";
+
+    if($gamestatus != 'pre')
+      echo " Gametype: $GT <br />\n";
+    
+    echo "Rules: <br />\n";
+    echo "10ofhearts : ".$r[2]."<br />\n";
+    echo "schweinchen: ".$r[3]."<br />\n";
     echo "</div>\n";
     
+    /* does anyone have both foxes */
+    $GAME["schweinchen"]=0; 
+    for($i=1;$i<5;$i++)
+      {
+       $hash  = DB_get_hash_from_game_and_pos($gameid,$i);
+       $cards = DB_get_all_hand($hash);
+       if( in_array("19",$cards) && in_array("20",$cards) )
+         {
+           $GAME["schweinchen"]=1;
+           $GAME["schweinchen-who"]=$hash;
+         }
+      };
 
     /* mystatus gets the player through the different stages of a game.
      * start:    yes/no
@@ -248,9 +282,12 @@ else if(myisset("me"))
        DB_set_hand_status_by_hash($me,'init');
        break;
       case 'init':
+       /* first check if everything went ok  in the last step
+        * if not, send user back, if yes, check what he did
+        */
        if( !myisset("in") )
          {
-           echo "you need to answer the question";
+           echo "you need to answer the <a href=\"$host?me=$me\">question</a>.";
            DB_set_hand_status_by_hash($me,'start');
          }
        else
@@ -289,10 +326,13 @@ else if(myisset("me"))
              }
          }
        break;
-      
+
     case 'check':
-      echo "checking if you selected solo or nines...<br />".
-       " Please click <a href=\"$host?me=$me\">here</a> to finish the setup.<br />";
+      /* ok, user is in the game, saw his cards and selected his vorbehalt
+       * so first we check what he selected
+       */
+      echo "Processing what you selected in the last step...<br />";
+
       if(!myisset("solo","wedding","poverty","nines") )
        {
          /* all these variables have a pre-selected default,
@@ -308,9 +348,12 @@ else if(myisset("me"))
          
          if( $_REQUEST["solo"]!="No")
            {
+             /* user wants to play a solo */
+
              /* store the info in the user's hand info */
              DB_set_solo_by_hash($me,$_REQUEST["solo"]);
              DB_set_sickness_by_hash($me,"solo");
+
              echo "<br />Seems like you want to play a ".$_REQUEST["solo"]." solo. Got it.<br />\n";
              
              if($gametype == "solo" && $startplayer<$mypos)
@@ -328,36 +371,37 @@ else if(myisset("me"))
          else if($_REQUEST["wedding"] == "yes")
            {
              /* TODO: add silent solo somewhere*/
-             echo "wedding was chosen, can't handle it at the moment, you need to send out".
-               " an email by hand to the other players<br />\n";
+             echo "Ok, you don't want to play a silent solo...wedding was chosen.<br />\n";
              DB_set_sickness_by_hash($me,"wedding");
            }
          else if($_REQUEST["poverty"] == "yes")
            {
-             echo "poverty was chosen. Unfortunately this is not implemented yet,".
-               " so you need to play a normal game... sorry<br />\n";
+             echo "So you got poverty. You might as well have said nothing, since this is not implemented yet,".
+               " you need to play a normal game...to make it a bit harder, I'll tell the other people that".
+               " you only have a few trump... should make the game more interesting (although perhaps not for you:))<br />\n";
              DB_set_sickness_by_hash($me,"poverty");
            }
          else if($_REQUEST["nines"] == "yes")
            {
-             echo "Nines was chosen. If no is playing solo, this game will be canceled.<br />\n";
+             echo "What? You just don't want to play a game because you have a few nines? Well, if no one".
+               " is playing solo, this game will be canceled.<br />\n";
              DB_set_sickness_by_hash($me,"nines");
            }
        }
-      
+
+      echo " Ok, done with checking, please go to the <a href=\"$host?me=$me\">next step of the setup</a>.<br />";
+
       /* move on to the next stage*/
       DB_set_hand_status_by_hash($me,'poverty');
-      
-      
       break;
+
     case 'poverty':
       /* here we need to check if there is a solo or some other form of sickness.
-       * If so, which one counts
+       * If so, which one is the most important one
        * set that one in the Game table
        * tell people about it.
        */
-      echo "<br />checking if someone else selected solo or nines... wedding and poverty not handled at the moment<br />".
-       " Please click <a href=\"$host?me=$me\">here</a> to finish the setup.<br />";    
+      echo "<br /> Checking if someone else selected solo, nines or wedding... Poverty not handled at the moment<br />";
       
       /* check if everyone has reached this stage */
       $userids = DB_get_all_userid_by_gameid($gameid);
@@ -369,38 +413,33 @@ else if(myisset("me"))
            $ok=0;
        };
 
-      if($ok)
+      if(!$ok)
+       {
+         echo "This step can only be handled after everyone finished the last step. ".
+           "Seems like this is not the case, so you need to wait a bit... please check back later....<br />";
+       }
+      else
        {
-         echo "Everyone has finished checking their cards, the game can now start...<br />";
-         /* check what kind of game we are playing */
+         echo "Everyone has finished checking their cards, let's see what they said...<br />";
+
+         /* check what kind of game we are playing,  in case there are any solos this already 
+          *will have the correct information in it */
          $gametype    = DB_get_gametype_by_gameid($gameid);
          $startplayer = DB_get_startplayer_by_gameid($gameid);
-         
-         /* nines? */
-         $nines = 0;
+
+         /* check for different sickness and just output a general info */
+
          /* check for nines */
+         $nines = 0;
          foreach($userids as $user)
            if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'nines')
-             $nines = $user;
-         
-         /* gamestatus == normal, => cancel game */
-         if($nines && $gamestatus == "normal")
-           {
-             /* TODO: set game type to nines to be able to keep statistics? */
-             $message = "Hello, \n\n".
-               "the game has been canceled because ".DB_get_name_by_userid($nines)." has five or more nines.\n";
-             
-             $userids = DB_get_all_userid_by_gameid($gameid);
-             foreach($userids as $user)
-               {
-                 $To = DB_get_email_by_userid($user);
-                 mymail($To,$EmailName."game canceled",$message);
-               }
-             
-             /* delete everything from the dB */
-             DB_cancel_game($me);
-           }
-         
+             {
+               $nines = $user;
+               $name = DB_get_name_by_userid($user);
+               echo "$name has a Vorbehalt. <br />";
+               break;
+             }
+                 
          /* check players for poverty */
          $poverty = 0;
          foreach($userids as $user)
@@ -412,21 +451,19 @@ else if(myisset("me"))
                  echo "$name has a Vorbehalt. <br />";
                }
            }
-         /* if gamestatus == normal, set poverty or dpovert (in case two people have poverty) */
-         
+
          /* check players for wedding */
          $wedding = 0;
          foreach($userids as $user)
            {
              if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'wedding')
                {
-                 $wedding++;
+                 $wedding=$user;
                  $name = DB_get_name_by_userid($user);
                  echo "$name has a Vorbehalt. <br />"  ;
                }
-           }
-         /* if gamestatus == normal, set wedding  */
-         
+           };
+
          /* check for solo, output vorbehalt */
          $solo = 0;
          foreach($userids as $user)
@@ -439,13 +476,145 @@ else if(myisset("me"))
                }
            }
 
-         /* finished the setup, go to next stage */
-         DB_set_hand_status_by_hash($me,'play');
+         /* now check which sickness comes first and set the gametype to it */
+
+         /* gamestatus == normal, => cancel game */
+         if($gametype == "solo")
+           {
+             /* do nothing */
+           }
+         else if($nines)
+           {
+             /* cancle game */
+             /* TODO: should we keep statistics of this? */
+             $message = "Hello, \n\n".
+               "the game has been canceled because ".DB_get_name_by_userid($nines).
+               " has five or more nines and nobody is playing solo.\n";
+             
+             /* TODO: add info about redeal in case this is a game of a series */
+             
+             $userids = DB_get_all_userid_by_gameid($gameid);
+             foreach($userids as $user)
+               {
+                 $To = DB_get_email_by_userid($user);
+                 mymail($To,$EmailName."game canceled",$message);
+               }
+             
+             /* delete everything from the dB */
+             DB_cancel_game($me);
+             
+             echo "The game has been canceled because ".DB_get_name_by_userid($nines).
+               " has five or more nines and nobody is playing solo.\n";
+             output_footer();
+             exit();
+           }
+         else if($poverty==1 && $gametype !="poverty")
+           {
+             DB_set_gametype_by_gameid($gameid,"poverty");
+             $gametype = "poverty";
+           }
+         else if($poverty==2 && $gametype !="dpoverty")
+           {
+             DB_set_gametype_by_gameid($gameid,"dpoverty");
+             $gametype = "dpoverty";
+           }
+         else if($wedding> 0 && $gametype !="wedding")
+           {
+             DB_set_gametype_by_gameid($gameid,"wedding");
+             $gametype = "wedding";
+           };
+
+         echo "<br />\n";
+
+         /* now the gametype is set correctly (shouldn't matter that this is calculated for every user)
+          * output what kind of game we have */
+         
+         $poverty = 0;
+         foreach($userids as $user)
+           {
+             /* userids are sorted by position... 
+              * so output whatever the firstone has, then whatever the next one has
+              * stop when the sickness is the same as the gametype 
+              */
+             
+             $name     = DB_get_name_by_userid($user);
+             $usersick = DB_get_sickness_by_userid_and_gameid($user,$gameid);
+
+             if($usersick)
+               echo "$name has $usersick <br />"; /*TODO: perhaps save this in a string and store in Game? */
+
+             if($usersick=="poverty")
+               $poverty++;
+             if($usersick == "wedding" && $gametype =="wedding")
+               break;
+             if($usersick == "poverty" && $gametype =="poverty")
+               break;
+             if($usersick == "poverty" && $gametype =="dpoverty" && $poverty==2)
+               break;
+             if($usersick == "solo" && $gametype =="solo")
+               break;
+           };
+
+         /* output Schweinchen in case the rules need it */
+         if( $gametype != "solo")
+           if($GAME["schweinchen"] && $RULES["schweinchen"]=="both" )
+             echo DB_get_name_by_hash($GAME["schweinchen-who"])." has Schweinchen. <br />";
+         
+         echo "<br />\n";
+         
+         /* finished the setup, set re/contra parties if possible, go to next stage unless there is a case of poverty*/
+         switch($gametype)
+           {
+           case "solo":
+             /* are we the solo player? set us to re, else set us to contra */
+             $pos = DB_get_pos_by_hash($me);
+             if($pos == $startplayer)
+               DB_set_party_by_hash($me,"re");
+             else
+               DB_set_party_by_hash($me,"contra");
+             DB_set_hand_status_by_hash($me,'play');
+             break;
+
+           case "wedding":
+             /* set person with the wedding to re, do the rest during the game */
+             $usersick = DB_get_sickness_by_userid_and_gameid($myid,$gameid);
+             if($usersick == "wedding")
+               DB_set_party_by_hash($me,"re");
+             
+             echo "Don't know who will be Re and Contra, you need to ".
+               "figure that out at the end of the game yourself <br />\n";
+             DB_set_hand_status_by_hash($me,'play');
+             break;
+
+           case "normal":
+             $hand = DB_get_all_hand($me);
+             
+             if(in_array('3',$hand)||in_array('4',$hand))
+               DB_set_party_by_hash($me,"re");
+             else
+               DB_set_party_by_hash($me,"contra");
+             DB_set_hand_status_by_hash($me,'play');
+             break;
+           case "poverty":
+             /* use extra column in DB.Game to store whom to ask, 
+              * should be set for poverty and dpoverty(use two digits for dpoverty?) earlier*/
+
+             /* check if poverty resolved (e.g. DB.Game who set to NULL)
+              *   yes? =>trump was taken, start game; break; 
+              *   
+              * check if we are being asked now
+              *    no, display wait message, e.g. player X is asked at the moment
+              *    yes, display number of trump and user's hand, ask if he wants to take it 
+              *      no, set whom-to-ask to next player, email next player, cancle game if no next player
+              *      yes -> link to new page:display all cards, ask for N return cards
+              *          set re/contra 
+              *        
+              */
+           case "dpoverty":
+             echo "TODO: handle poverty here (almost done in my developing version)";
+             DB_set_hand_status_by_hash($me,'play');
+           };
        }
-      else
-       {
-         echo "You need to wait for the others, the game can only start after everyone finished checking their cards.<br />";
-       };
       
       /* check if all players are ready to play */
       $ok=1;
@@ -457,8 +626,25 @@ else if(myisset("me"))
        {
          /* only set this after all poverty, etc. are handled*/
          DB_set_game_status_by_gameid($gameid,'play');
+
+         /* email startplayer */
+         $startplayer = DB_get_startplayer_by_gameid($gameid);
+         $email       = DB_get_email_by_pos_and_gameid($startplayer,$gameid);
+         $hash        = DB_get_hash_from_game_and_pos($gameid,$startplayer);
+         
+         if($hash!=$me)
+           {
+             /* email startplayer) */
+             $message = "It's your turn now.\n".
+               "Use this link to play a card: ".$host."?me=".$hash."\n\n" ;
+             mymail($email,$EmailName."ready, set, go... ",$message);
+           }
+         else
+           echo " Please, <a href=\"$host?me=$me\">start</a> the game.<br />";  
        }
-      
+      else
+       echo "You finished the setup, once everyone else has done the same you'll get an email when it is your turn..<br />";    
+
       break;
     case 'play':
     case 'gameover': 
@@ -467,7 +653,8 @@ else if(myisset("me"))
        */
       
       /* figure out what kind of game we are playing, 
-       * set the global variables $TRUMP,$DIAMONDS,$HEARTS,$CLUBS,$SPADES
+       * set the global variables $CARDS["trump"],$CARDS["diamonds"],$CARDS["hearts"],
+       * $CARDS["clubs"],$CARDS["spades"],$CARDS["foxes"]
        * accordingly
        */
       
@@ -481,51 +668,33 @@ else if(myisset("me"))
       else
        $gametype="normal";
       
-      set_gametype($gametype);
+      set_gametype($gametype); /* this sets the $CARDS variable */
       
       /* get some infos about the game */
       $gamestatus = DB_get_game_status_by_gameid($gameid);
       
       /* display useful things in divs */
       
-      /* display local time */
-      echo "<div class=\"time\">\n Local times:<table>";
-      $users = array();
-      $users = DB_get_all_userid_by_gameid($gameid);
-      foreach($users as $user)
-       {
-         $offset = DB_get_user_timezone($user);
-         $zone   = return_timezone($offset);
-         date_default_timezone_set($zone);
-         $name   = DB_get_name_by_userid($user);
-         
-         echo "<tr> <td>$name</td> <td>".date("Y-m-d H:i:s")."</td></tr>\n";
-       };
-      echo "</table>\n</div>\n";
-      
-      if($gamestatus != 'pre')
-       display_status($GT);
-      
       /* display links to the users status page */
       $result = mysql_query("SELECT email,password from User WHERE id='$myid'" );
       $r      = mysql_fetch_array($result,MYSQL_NUM);
-      output_link_to_user_page($r[0],$r[1]);
       
-      display_news();
+      display_links($r[0],$r[1]);
       
       /* end display useful things*/
       
       /* has the game started? No, then just wait here...*/
       if($gamestatus == 'pre')
        {
-         echo "you need to wait for the others... <br />";
+         echo "You finished the setup, but not everyone else finished it...so you need to wait for the others... <br />";
          break; /* not sure this works... the idea is that you can 
                  * only  play a card after everyone is ready to play */
        }
       
       /* display the table and the names */
       $result = mysql_query("SELECT  User.fullname as name,".
-                           "        Hand.position as position ".
+                           "        Hand.position as position, ".
+                           "        User.id ".
                            "FROM Hand ".
                            "LEFT JOIN User ON User.id=Hand.user_id ".
                            "WHERE Hand.game_id='".$gameid."' ".
@@ -537,11 +706,20 @@ else if(myisset("me"))
        {
          $name = $r[0];
          $pos  = $r[1];
-         
-         echo " <span class=\"table".($pos-1)."\">$name</span>\n";
+         $user = $r[2];
+
+         $offset = DB_get_user_timezone($user);
+         $zone   = return_timezone($offset);
+         date_default_timezone_set($zone);
+
+         echo " <span class=\"table".($pos-1)."\">\n";
+         echo " $name <br />\n";
+         echo " local time: ".date("Y-m-d H:i:s")."\n";
+         echo " </span>\n";
+
        }
       echo  "</div>\n";
-      
+
       /* get everything relevant to display the tricks */
       $result = mysql_query("SELECT Hand_Card.card_id as card,".
                            "       Hand.position as position,".
@@ -565,7 +743,7 @@ else if(myisset("me"))
       $firstcard = ""; /* first card in a trick */
       
       echo "\n<ul class=\"tricks\">\n";
-      echo "  <li> Hello $myname!   History: </li>\n";
+      echo "  <li class=\"nohighlight\"> Game $gameid: </li>\n";
       
       while($r = mysql_fetch_array($result,MYSQL_NUM))
        {
@@ -574,6 +752,10 @@ else if(myisset("me"))
          $trick   = $r[3];
          $comment = $r[4];
          
+         /* check if first schweinchen has been played */
+         if($r[0] == 19 || $r[0] == 20 )
+           $GAME["schweinchen"]++;
+         
          /* save card to be able to find the winner of the trick later */
          $play[$seq] = array("card"=>$r[0],"pos"=>$pos); 
          
@@ -583,14 +765,14 @@ else if(myisset("me"))
              if($trick!=$lasttrick)
                {
                  /* start of an old trick? */
-                 echo "  <li onclick=\"hl('$trickNR');\"><a href=\"#\">Trick $trickNR</a>\n".
+                 echo "  <li onclick=\"hl('$trickNR');\" class=\"old\"><a href=\"#\">Trick $trickNR</a>\n".
                    "    <div class=\"trick\" id=\"trick".$trickNR."\">\n".
                    "      <img class=\"arrow\" src=\"pics/arrow".($pos-1).".png\" alt=\"table\" />\n";
                }
              else if($trick==$lasttrick)
                {
                  /* start of a last trick? */
-                 echo "  <li onclick=\"hl('$trickNR');\"><a href=\"#\">Current Trick</a>\n".
+                 echo "  <li onclick=\"hl('$trickNR');\" class=\"current\"><a href=\"#\">Trick $trickNR</a>\n".
                    "    <div class=\"trick\" id=\"trick".$trickNR."\">\n".
                    "      <img class=\"arrow\" src=\"pics/arrow".($pos-1).".png\" alt=\"table\" />\n";
                };
@@ -658,10 +840,26 @@ else if(myisset("me"))
          
          if($handcardid)
            {
+             $comment = "";
+
              /* mark card as played */
              mysql_query("UPDATE Hand_Card SET played='true' WHERE hand_id='$handid' AND card_id=".
                          DB_quote_smart($card));
-             
+             /* update Game timestamp */
+             DB_update_game_timestamp($gameid);
+
+             /* check for schweinchen */
+             //echo "schweinchen = ".$GAME["schweinchen"]." --$card-<br />";
+             if($card == 19 || $card == 20 )
+               {
+                 $GAME["schweinchen"]++;
+                 if($GAME["schweinchen"]==3 && $RULES["schweinchen"]=="second" )
+                   $comment="Schweinchen! ";
+                 if($RULES["schweinchen"]=="both" )
+                   $comment="Schweinchen! ";
+                 echo "schweinchen = ".$GAME["schweinchen"]." ---<br />";
+               }
+
              /* get trick id or start new trick */
              $a = DB_get_current_trickid($gameid);
              $trickid  = $a[0];
@@ -672,9 +870,11 @@ else if(myisset("me"))
              /* check for coment */
              if(myisset("comment"))
                {
-                 DB_insert_comment($_REQUEST["comment"],$playid,$myid);
+                 $comment.=$_REQUEST["comment"];
                };  
-             
+             if($comment != "")
+               DB_insert_comment($comment,$playid,$myid);
+
              /* display played card */
              echo "<div class=\"card\">";
              echo " you played  <br />";
@@ -717,15 +917,26 @@ else if(myisset("me"))
                    echo "ERROR during scoring";
                  
                  /* email all players */
-                 $result = mysql_query("SELECT fullname, SUM(score) FROM Score".
+                 /* individual score */
+                 $result = mysql_query("SELECT fullname, SUM(score), Hand.party FROM Score".
                                        " LEFT JOIN Hand ON Hand.id=hand_id".
                                        " LEFT JOIN User ON Hand.user_id=User.id".
                                        " WHERE Hand.game_id=$gameid".
                                        " GROUP BY fullname" );
                  $message = "The game is over. Thanks for playing :)\n";
+                 while( $r = mysql_fetch_array($result,MYSQL_NUM))
+                   $message .= " FINAL SCORE: ".$r[0]."(".$r[2].") ".$r[1]."\n";
+                 $message .= "\nIf your not in the list above your score is zero...\n\n";
+
+                 $result = mysql_query("SELECT Hand.party, SUM(score) FROM Score".
+                                       " LEFT JOIN Hand ON Hand.id=hand_id".
+                                       " LEFT JOIN User ON Hand.user_id=User.id".
+                                       " WHERE Hand.game_id=$gameid".
+                                       " GROUP BY Hand.party" );
+                 $message .= "\n";
                  while( $r = mysql_fetch_array($result,MYSQL_NUM))
                    $message .= " FINAL SCORE: ".$r[0]." ".$r[1]."\n";
-                 $message .= "\nIf your not in the list above your score is zero...\n";
+
                  foreach($userids as $user)
                    {
                      $To = DB_get_email_by_userid($user);
@@ -847,14 +1058,22 @@ else if(myisset("me"))
        {
          echo "the game is over now...<br />\n";
          
-         $result = mysql_query("SELECT fullname, SUM(score) FROM Score".
+         $result = mysql_query("SELECT fullname, SUM(score), Hand.party FROM Score".
                                " LEFT JOIN Hand ON Hand.id=hand_id".
                                " LEFT JOIN User ON Hand.user_id=User.id".
                                " WHERE Hand.game_id=$gameid".
                                " GROUP BY fullname" );
          while( $r = mysql_fetch_array($result,MYSQL_NUM))
-           echo " FINAL SCORE: ".$r[0]." ".$r[1]."<br />";
+           echo " FINAL SCORE: ".$r[0]."(".$r[2].") ".$r[1]."<br />";
          
+         $result = mysql_query("SELECT Hand.party, SUM(score) FROM Score".
+                               " LEFT JOIN Hand ON Hand.id=hand_id".
+                               " LEFT JOIN User ON Hand.user_id=User.id".
+                               " WHERE Hand.game_id=$gameid".
+                               " GROUP BY Hand.party" );
+         while( $r = mysql_fetch_array($result,MYSQL_NUM))
+           echo " FINAL SCORE: ".$r[0]." ".$r[1]."<br />\n";
+
          
          $session = DB_get_session_by_gameid($gameid);
          $result  = mysql_query("SELECT id,create_date FROM Game".
@@ -876,7 +1095,8 @@ else if(myisset("me"))
     default:
       echo "error in testing the status";
     }
-  exit();
+    output_footer();
+    exit();
  } 
 /* user status page */ 
  else if(myisset("email","password"))
@@ -884,62 +1104,88 @@ else if(myisset("me"))
      /* test id and password, should really be done in one step */
      $email     = $_REQUEST["email"];
      $password  = $_REQUEST["password"];
-     
-     if(strlen($password)!=32)
-       $password = md5($password);
-     
-     $ok=1;
-     $uid = DB_get_userid_by_email_and_password($email,$password);
-     if(!$uid)
-       $ok=0;
-     
-     if($ok)
+
+     if(myisset("forgot"))
        {
-        $time = DB_get_user_timestamp($uid);
-        $unixtime =strtotime($time);
-        
-        $offset = DB_get_user_timezone($uid);
-        $zone = return_timezone($offset);
-        date_default_timezone_set($zone);
-        
-        echo "last login: ".date("r",$unixtime)."<br />";
-        
-        DB_update_user_timestamp($uid);
+        $ok=1;
+
+        $uid = DB_get_userid_by_email($email);
+        if(!$uid)
+          $ok=0;
         
-        echo "<p>these are the games you are playing in:<br />\n";
-        $result = mysql_query("SELECT Hand.hash,Hand.game_id,Game.mod_date from Hand".
-                              " LEFT JOIN Game On Hand.game_id=Game.id".
-                              " WHERE Hand.user_id='$uid' AND Game.status<>'gameover'" );
-        while( $r = mysql_fetch_array($result,MYSQL_NUM))
+        if($ok)
           {
-            echo "<a href=\"".$host."?me=".$r[0]."\">game #".$r[1]." </a>";
-            if(time()-strtotime($r[2]) > 60*60*24*30)
-              echo " The game has been running for over a month.".
-                " Do you want to cancel it? <a href=\"$host?cancle=1&me=".$r[0]."\">yes</a>".
-                " (clicking here is final and can't be restored)";
-            echo "<br />";
+            echo "Hmm, you forgot your passwort...nothing I can do at the moment:(  ";
+            echo " you need to email Arun for now... in the future it will be all automated and an ";
+            echo "email with a new password will go to $email.";
           }
-        echo "</p>\n";
-        
-        
-        echo "<p>and these are your games that are already done:<br />Game: \n";
-        $result = mysql_query("SELECT hash,game_id from Hand WHERE user_id='$uid' AND status='gameover'" );
-        while( $r = mysql_fetch_array($result,MYSQL_NUM))
-          echo "<a href=\"".$host."?me=".$r[0]."\">#".$r[1]." </a>, ";
-        echo "</p>\n";
-        
-        $names = DB_get_all_names();
-        echo "<p>registered players:<br />\n";
-        foreach ($names as $name)
-          echo "$name, \n";
-        echo "</p>\n";
-        
-        echo "<p>Want to start a new game? Visit <a href=\"".$host."?new\">this page.</a></p>";
-       }
-     else
-       {
-        echo "sorry email and password don't match <br />";
+        else
+          {
+            if($email=="")
+              echo "you need to give me an email address!";
+            else
+              echo "couldn't find a player with this email, please contact Arun, if you think this is a mistake";
+          } 
        }
+     else 
+     {
+       if(strlen($password)!=32)
+        $password = md5($password);
+       
+       $ok=1;
+       $uid = DB_get_userid_by_email_and_password($email,$password);
+       if(!$uid)
+        $ok=0;
+       
+       if($ok)
+        {
+          $time = DB_get_user_timestamp($uid);
+          $unixtime =strtotime($time);
+          
+          $offset = DB_get_user_timezone($uid);
+          $zone = return_timezone($offset);
+          date_default_timezone_set($zone);
+          
+          echo "last login: ".date("r",$unixtime)."<br />";
+          
+          DB_update_user_timestamp($uid);
+          
+          echo "<p>these are the games you are playing in:<br />\n";
+          $result = mysql_query("SELECT Hand.hash,Hand.game_id,Game.mod_date from Hand".
+                                " LEFT JOIN Game On Hand.game_id=Game.id".
+                                " WHERE Hand.user_id='$uid' AND Game.status<>'gameover'" );
+          while( $r = mysql_fetch_array($result,MYSQL_NUM))
+            {
+              echo "<a href=\"".$host."?me=".$r[0]."\">game #".$r[1]." </a>";
+              if(time()-strtotime($r[2]) > 60*60*24*30)
+                echo " The game has been running for over a month.".
+                  " Do you want to cancel it? <a href=\"$host?cancle=1&amp;me=".$r[0]."\">yes</a>".
+                  " (clicking here is final and can't be restored)";
+              echo "<br />";
+            }
+          echo "</p>\n";
+          
+          
+          echo "<p>and these are your games that are already done:<br />Game: \n";
+          $result = mysql_query("SELECT hash,game_id from Hand WHERE user_id='$uid' AND status='gameover'" );
+          while( $r = mysql_fetch_array($result,MYSQL_NUM))
+            echo "<a href=\"".$host."?me=".$r[0]."\">#".$r[1]." </a>, ";
+          echo "</p>\n";
+          
+          $names = DB_get_all_names();
+          echo "<p>registered players:<br />\n";
+          foreach ($names as $name)
+            echo "$name, \n";
+          echo "</p>\n";
+          
+          echo "<p>Want to start a new game? Visit <a href=\"".$host."?new\">this page.</a></p>";
+        }
+       else
+        {
+          echo "sorry email and password don't match <br />";
+        }
+     };
+     output_footer();
      exit();
    }
 /* page for registration */
@@ -977,7 +1223,14 @@ else if(myisset("me"))
 /* default login page */
  else
    { 
-     output_home_page();
+     $pre=0;$game=0;$done=0;
+     $r=mysql_query("SELECT COUNT(id) FROM Game GROUP BY status");
+     if($r) {
+       $pre = mysql_fetch_array($r,MYSQL_NUM);     
+       $game = mysql_fetch_array($r,MYSQL_NUM);     
+       $done = mysql_fetch_array($r,MYSQL_NUM);     
+     }
+     output_home_page($pre[0],$game[0],$done[0]);
    }
 
 output_footer();