<?php

/*
 * config 
 */

$host  = "http://doko.nubati.net/database/index.php";
$wiki  = "http://wiki.nubati.net/index.php?title=EmailDoko";
$debug = 1;

$last=-2;

/*
 * end config
 */	


/* helper function */
function mymail($To,$Subject,$message)
{  
  global $debug;

  if($debug)
    {
      $message = str_replace("\n","<br />",$message);
      echo "<br />To: $To<br />Subject: $Subject <br />$message<br />\n";
    }
  else
    mail($To,$Subject,$message);
  return;
}

function is_trump($c) { return (($c<27) ? 1:0);}
function is_club($c)  { return (in_array($c,array('27','28','29','30','31','32','33','34')));}
function is_spade($c) { return (in_array($c,array('35','36','37','38','39','40','41','42')));}
function is_heart($c) { return (in_array($c,array('43','44','45','46','47','48')));}

function compare_cards($a,$b)
{
  /* if a is higher than b return 1, else 0, a being the card first played */
  
  /* first map all cards to the odd number */
  if( $a/2 - (int)($a/2) != 0.5)
    $a--;
  if( $b/2 - (int)($b/2) != 0.5)
    $b--;
  
  if(is_trump($a) && $a<=$b)
    return 1;
  else if(is_trump($a) && $a>$b)
    return 0;
  else 
    { /*$a is not a trump */
      if(is_trump($b))
	return 0;
      else
	{
	  /* both clubs? */
	  if( is_club($a) && is_club($b))
	    if($a<=$b)
	      return 1;
	    else
	      return 0;
	  /* both spade? */
	  if( is_spade($a) && is_spade($b))
	    if($a<=$b)
	      return 1;
	    else
	      return 0;
	  /* both heart? */
	  if( is_heart($a) && is_heart($b))
	    if($a<=$b)
	      return 1;
	    else
	      return 0;
      return 1;
	}	  
    }
      
} 

function get_winner($p)
{
  /* get all 4 cards played in a trick */
  $c1 = $p[1];
  $c2 = $p[2];
  $c3 = $p[3];
  $c4 = $p[4];

  /* find out who won */
  if( compare_cards($c1,$c2) && compare_cards($c1,$c3) && compare_cards($c1,$c4) )
    return 1;
  if( compare_cards($c2,$c3) && compare_cards($c2,$c4) )
    return 2;
  if( compare_cards($c3,$c4) )
    return 3;
  return 4;
}

function count_nines($cards)
{
  $nines = 0;

  foreach($cards as $c)
    {
      if($c == "25" || $c == "26") $nines++;
      else if($c == "33" || $c == "34") $nines++;
      else if($c == "41" || $c == "42") $nines++;
      else if($c == "47" || $c == "48") $nines++;
    }
  
  return $nines;
}

function check_wedding($cards)
{

  if( in_array("3",$cards) && in_array("2",$cards) )
    return 1;

  return 0;
}

function count_trump($cards)
{
  $trump = 0;

  /* count each trump */
  foreach($cards as $c)
    if( (int)($c) <27) 
      $trump++;

  /* subtract foxes */
  if( in_array("19",$cards))
    $trump--;
  if( in_array("20",$cards) )
    $trump--;
  /* add one, in case the player has both foxes (schweinchen) */
  if( in_array("19",$cards) && in_array("20",$cards) )
    $trump++;

  return $trump;
}

function card_to_name($card)
{
  switch($card)
    {
      case 1:
      case 2:
        return "ten of hearts";
      case 3:
      case 4:
      return "queen of clubs";
      case 5:
      case 6:
      return "queen of spades";
      case 7:
      case 8:
      return "queen of hearts";
      case 9:
      case 10:
      return "queen of diamonds";
      case 11:
      case 12:
      return "jack of clubs";
      case 13:
      case 14:
      return "jack of spades";
      case 15:
      case 16:
      return "jack of hearts";
      case 17:
      case 18:
      return "jack of diamonds";
      case 19:
      case 20:
      return "ace of diamonds";
      case 21:
      case 22:
      return "ten of diamonds";
      case 23:
      case 24:
      return "king of diamonds";
      case 25:
      case 26:
      return "nine of diamonds";;
      case 27:
      case 28:
      return "ace of clubs";
      case 29:
      case 30:
      return "ten of clubs";
      case 31:
      case 32:
      return "king of clubs";
      case 33:
      case 34:
      return "nine of clubs";
      case 35:
      case 36:
      return "ace of spades";
      case 37:
      case 38:
      return "ten of spades";
      case 39:
      case 40:
      return "king of spades";
      case 41:
      case 42:
      return "nine of spades";
      case 43:
      case 44:
      return "ace of hearts";
      case 45:
      case 46:
      return "king of hearts";
      case 47:
      case 48:
      return "nine of hearts";
      default:
      return "something went wrong, please contact the admin. Error: code1.";
    }
}

function card_value($card)
{
  switch($card)
    {
    case 1:      /* heart */
    case 2:
      return 10;
    case 3:     /* clubes */	 
    case 4:	                 
    case 5:     /* spades */	 
    case 6:	                 
    case 7:     /* hearts */	 
    case 8:	                 
    case 9:     /* diamonds */	 
    case 10:                     
      return 3;
    case 11:    /* clubes */	 
    case 12:	                 
    case 13:	/* spades */	 
    case 14:	                 
    case 15:	/* hearts */	 
    case 16:	                 
    case 17:	/* diamonds */	 
    case 18:
      return 2;	                 
    case 19:    /* diamonds */ 
    case 20:	               
    case 27:    /* clubs */    
    case 28:	               
    case 35:    /* spades */   
    case 36:	               
    case 43:    /* hearts */   
    case 44:                   
      return 11;
    case 21:    /* diamonds */    
    case 22:
    case 29:    /* clubs */
    case 30:
    case 37:    /* spades */
    case 38:
      return 10;
    case 23:    /* diamonds */ 
    case 24:	               
    case 31:	/* clubs */    
    case 32:	               
    case 39:	/* spades */   
    case 40:	               
    case 45:	/* hearts */   
    case 46:	               
      return 4;
    case 25:    /* diamonds */   
    case 26:	               
    case 33:	/* clubs */    
    case 34:	               
    case 41:	/* spades */   
    case 42:	               
    case 47:	/* hearts */   
    case 48:	               
      return 0;
    default:
      echo "something went wrong, please contact the admin. ErrorCode: 2<br>";
      return 0;
    }
}

function display_card($card)
{
  /* cards are only availabl for the odd values, e.g. 1.png, 3.png, ... 
   * convert even cards to the matching odd value */

  if( $card/2 - (int)($card/2) == 0.5)
    echo "<img src=\"cards/".$card.".png\"  alt=\"".card_to_name($card)."\" />\n";
  else
    echo "<img src=\"cards/".($card-1).".png\"  alt=\"".card_to_name($card-1)."\" />\n";

  return;
}

function display_link_card($card)
{
  if( $card/2 - (int)($card/2) == 0.5)
    echo "<input type=\"radio\" name=\"card\" value=\"".$card."\" /><img src=\"cards/".$card.".png\" alt=\"\" />\n";
  else
    echo "<input type=\"radio\" name=\"card\" value=\"".$card."\" /><img src=\"cards/".($card-1).".png\" alt=\"\" />\n";
  return;
}

function  create_array_of_random_numbers()
{
  $r = array();
  $a = array();
  
  for($i=1;$i<49;$i++)
    $a[$i]=$i;
  
  $r = array_rand($a,48);
   
  return $r;
}

function check_want_to_play($me)
{
   ?>
 <form action="index.php" method="post">
   Do you want to play a game of DoKo?
   yes<input type="radio" name="in" value="yes" />
   no<input type="radio" name="in" value="no" /> <br />

   Do you want to get an email for every card played or only if it your move?
   every card<input type="radio" name="update" value="card" />
   only on my turn<input type="radio" name="update" value="turn" /> <br />
<?php   
  echo "<input type=\"hidden\" name=\"me\" value=\"$me\" />\n";
  echo "\n";
  echo "<input type=\"submit\" value=\"count me in\" />\n";
  echo " </form>\n";

  return;
}

function check_for_sickness($me,$mycards)
{
 ?>
  <p> nothing implemented so far, but give it a try anyway ;) </p>	 	  

  <form action="index.php" method="post">

    do you want to play solo? 
    <select name="solo" size="1">
      <option>No</option>
      <option>trumpless</option>
      <option>trump</option>
      <option>queen</option>
      <option>jack</option>
      <option>club</option>
      <option>spade</option>
      <option>heart</option>
    </select>     
    <br />

 <?php   
      
   echo "wedding?";
  if(check_wedding($mycards))
     {
       echo " yes<input type=\"radio\" name=\"wedding\" value=\"yes\" />";
       echo " no <input type=\"radio\" name=\"wedding\" value=\"no\" /> <br />\n";
     }
   else
     {
       echo " no <input type=\"hidden\" name=\"wedding\" value=\"no\" /> <br />\n";
     };

  echo "do you have poverty?";
  if(count_trump($mycards)<4)
    {
      echo " yes<input type=\"radio\" name=\"poverty\" value=\"yes\" />";
      echo " no <input type=\"radio\" name=\"poverty\" value=\"no\" /> <br />\n";
    }
  else
    {
      echo " no <input type=\"hidden\" name=\"poverty\" value=\"no\" /> <br />\n";
    };

   echo "do you have too many nines?";
  if(count_nines($mycards)>4)
     {
       echo " yes<input type=\"radio\" name=\"nines\" value=\"yes\" />";
       echo " no <input type=\"radio\" name=\"nines\" value=\"no\" /> <br />\n";
     }
   else
     {
       echo " no <input type=\"hidden\" name=\"nines\" value=\"no\" /> <br />\n";
     };

   echo "<input type=\"hidden\" name=\"me\" value=\"$me\" />\n";
   echo "<input type=\"submit\" value=\"count me in\" />\n";

   echo "</form>\n";

  return;
}

function display_status()
{
  echo "<div class=\"info\">";
  echo " is someone playing solo, etc?";
  echo "</div>";
  
  return;
}

function display_news()
{
  global $wiki;
  echo "<div class=\"bug\"> ".
    "Please hit shift+reload.<br /><hr />".
    "New Database backend, lost a few features on the way.<br /><hr />".
    "If you find more bugs, please list them in the <a href=\"".$wiki.
    "\">wiki</a>.</div>\n";
  return;
}

function display_cards($me,$myturn)
{
  return;
}

?>