<?php

global $PHP_SELF;

// Fragen prüfen
$fragen = array();
if(isset($_REQUEST["fragen"]) && is_array($_REQUEST["fragen"]))
{
	foreach($_REQUEST["fragen"] as $frage)
	{
		$frage = trim($frage);
		if(empty($frage))
			continue;
		$fragen[] = $frage;
	}
}

// Hilfsfunktion für FormHiddenRequest()
function FormHiddenArray($array, $name)
{
	$str = "";
	foreach($array as $key=>$val)
	{
		if(is_array($val))
		{
			$str .= FormHiddenarray($val, $name.'['.$key.']');
		}
		else
		{
			$str .= '<input type="hidden" name="'.$name.'['.$key.']" value="'.htmlentities($val).'">';
		}
	}
	return $str;
}

// Gibt alle Variablen in $_REQUEST als Hidden-Felder für HTML-Formulare zurück
// Arrays werden auch berücksichtigt.
function FormHiddenRequest($except = array())
{
	$str = "";
	foreach($_REQUEST as $key=>$val)
	{
		if(in_array($key, $except)) continue;
		if(is_array($val))
		{
			$str .= FormHiddenArray($val, $key);
		}
		else
		{
			$str .= '<input type="hidden" name="'.$key.'" value="'.htmlentities($val).'">';
		}
	}
	return $str;
}


if($_REQUEST['submit'] == "Starten")
{
	if(count($fragen)==0)
	{
		$body .= "<p>Es muss mindestens (besser mehr als) eine Frage eingetragen sein.</p>";
	}
	else
	{
		// Einstellungen prüfen
		$seed = abs((int)$_REQUEST["seed"]);
		$anzahl = abs((int)$_REQUEST["anzahl"]);
		if($anzahl>500) $anzahl = 500;
		if($anzahl<1) $anzahl = 1;
	
		if($_REQUEST["seedType"]=="zufall") $seed = microtime()*1000000;
		if($_REQUEST["quant"] == "einmal") $anzahl = 1;
	
		$body .= "<p>";
		$body .= "Starte den Zufallsgenerator mit <b>".count($fragen)."</b> Fragen.<br />";
		$body .= "Startwert des Zufallsgenerators (Seed): <b>".$seed."</b><br />";
		$body .= "W&auml;hle Ergebnis in ".($anzahl==1 ? "<b>einem</b> Durchlauf" : "<b>".$anzahl."</b> Durchl&auml;ufen").".<br />";
		$body .= "</p>";
	
		srand($seed);
	
		if($anzahl==1)
		{
			$zufall = rand(0, count($fragen)-1);
			$body .= "<p>Der Zufallsgenerator hat folgende Frage gew&auml;hlt: <b>".htmlentities($fragen[$zufall])."</b></p>";
		}
		else
		{
			// So oft Zufallsgenerator machen, wie in $anzahl steht
			$zufall = array();
			for($i=0; $i<$anzahl; $i++)
			{
				$zufall[rand(0, count($fragen)-1)]++;
			}
			
			$max = max($zufall);
			$min = min($zufall);
			// Ausgabe des Ergebnisses
			$body .= '<p><table border="0" cellpadding="0" cellspacing="3">';
			foreach($fragen as $i => $frage)
			{
				$body .= '<tr>';
				$body .= '<td><table border="0" cellpadding="0" cellspacing="0" align="right" style="background-color: #000;"><tr><td width="'.round(200/($max-$min+1)*($zufall[$i]-$min+1) + 25).'" class="text-right"><b>'.$zufall[$i].'</b></td></tr></table></td>';
				$body .= '<td>'.htmlentities($frage).'</td>';
				$body .= '</tr>';
			}
			$body .= '</table></p>';
		}
	}
	$body .= '<p><form method="post" action="'.$PHP_SELF.'">';
	$body .= FormHiddenRequest(array("submit"));
	$body .= '<input type="submit" value="&Auml;ndern">';
	$body .= '</form></p>';
}
else
{
	$body .= '<form method="post" action="'.$PHP_SELF.'">';
	$body .= '<fieldset><legend>Zufall</legend>';
	$body .= '<input type="radio" name="seedType" value="zufall" id="seedTypeZufall" class="checkbox"'.($_REQUEST["seedType"]=="zufall" || !isset($_REQUEST["seedType"]) ? " checked" : "").'><label for="seedTypeZufall">(Pseudo-)Zuf&auml;llig (aktuelle Mikrosekunde)</label><br>';
	$body .= '<input type="radio" name="seedType" value="seed" id="seedTypeSeed" class="checkbox"'.($_REQUEST["seedType"]=="seed" ? " checked" : "").'><label for="seedTypeSeed">Folgenden Startwert benutzen (Ganzzahl):</label> <input type="text" name="seed" value="'.(isset($_REQUEST["seed"]) ? htmlentities($_REQUEST["seed"]) : (microtime()*1000000)).'" size="10" maxlength="10" class="zahl" style="width:100px;"><br>';
	$body .= '</fieldset>';
	$body .= '<fieldset><legend>Quantit&auml;t</legend>';
	$body .= '<input type="radio" name="quant" value="einmal" id="seedQuantEinmal" class="checkbox"'.($_REQUEST["quant"]=="einmal" || !isset($_REQUEST["quant"]) ? " checked" : "").'><label for="seedQuantEinmal">Nur einmal ausf&auml;hren (es gibt genau einen &quot;Gewinner&quot;)</label><br>';
	$body .= '<input type="radio" name="quant" value="statistik" id="seedQuantStat" class="checkbox"'.($_REQUEST["quant"]=="statistik" ? " checked" : "").'><label for="seedQuantStat">Mehrere &quot;Ziehungen&quot; mit Statistik:</label> <input type="text" name="anzahl" value="'.(isset($_REQUEST["anzahl"]) ? htmlentities($_REQUEST["anzahl"]) : 50).'" size="4" maxlength="3" class="zahl" style="width:50px;"><br>';
	$body .= '</fieldset>';
	$body .= '<fieldset><legend>Folgende Optionen/Fragen sollen zur Auswahl stehen:</legend>';
	foreach($fragen as $frage)
	{
		$body .= '<input type="text" name="fragen[]" value="'.htmlentities($frage).'" class="maxwidth p" title="Um die Frage zu l&ouml;schen, dieses Feld leeren"><br>';
	}
	$body .= '<input type="text" name="fragen[]" value="" class="maxwidth p" title="Hier eine neue Frage eingeben, oder das Feld leer lassen"><br>';
	$body .= '</fieldset>';
	$body .= '<p><input type="submit" name="submit" value="Neue Frage"> <input type="submit" name="submit" value="Starten"></p>';
	$body .= '</form>';
}

echo $body;

?>
