<?php
class ZehnTausend {

  public function __construct() {
    $this->spielerliste = array();
    $this->spielerfarbe = array();
    $this->werte = array();
    $this->summe = array();
    $this->highlight = array();
    $this->tmp_highlight = array();
    $this->debug = array();
    $this->spieler_komplett = false;
    $this->queryCounter = 0;
    $this->rundenzaehler = 0;
    $this->spieler_zaehler = 0;
    $this->gewonnen = 10000;
    $this->letzter_spieler = false;
    $this->farben = array(
      "FE2E2E",
      "FFFF00",
      "80FF00",
      "0000FF",
      "D8D8D8",
      "F781D8",
      "FF00FF",
      "8000FF",
      "01A9DB",
      "00FFFF",
      "3ADF00",
      "DF7401"
    );
    $this->cookie_ids = $this->get_cookie();

  }


  public function game_start() {  // verteilung, spielen oder spielereingabe
    if ($this->spieler_komplett  == false) {  // spielereingabe noch nicht begonnen oder abgeschlossen
      if (count($this->spielerliste) == 0) {
        $this->show_sql_user();
        echo "<div id =\"spieleranzeige2\">\n";
        echo "Keine Spieler vorhanden!\n";
        echo "</div>\n<br class=\"clear\" />\n";
      }
      $this->spielerform();
      echo "<div id =\"spieleranzeige\">\n";
      foreach($this->spielerliste as $k => $name) {
        echo "<span class=\"spalten".$this->spielerfarbe[$k]."\">$name</span> | ";
      }
      echo "</div>\n<br class=\"clear\" />\n";
    } else {  // im Spiel
      $this->rechne();
      $this->highlight();
      $this->zeige_tabelle();
      $this->zahlenform($this->spieler_zaehler);
    }
  }

  public function user_laden($spieler, $farben) {
    $this->spielerliste = explode(",",$spieler);
    $this->spielerfarbe = explode(",",$farben);
    $this->spieler_fertig();
  }

  public function user_add_cookie($post) {
    $erste = array_shift($post);
    $erste = array_shift($post);
    $erste = array_shift($post);
    $letzte = array_pop($post);
    echo "<div id=\"debug\">";
    foreach ($post as $key => $value) {
      # code...
      echo "$key - $value<br/>";
    }
    $string = implode(",",$post);
    echo "$string";
    echo "</div>";
    setcookie("10000-eblok", $string, (time()+60*60*24*3000));
    // $this->debug($post);
  }

  public function add_spieler($spieler, $farben) {
    $this->spielerliste[] = $spieler;
    $this->spielerfarbe[] = $farben;
    #$this->zeige_tabelle();
  }

  public function spieler_fertig(){
    $this->spieler_komplett = true;
    $this->spieleranzahl = count($this->spielerliste);
    $this->add_spieler_sql();
  }

  private function get_cookie() {
    if(isset($_COOKIE['10000-eblok']))  {
      $this->cookie = $_COOKIE["10000-eblok"];
      $testfile=substr($this->cookie,0,1);#echo "erster buchstabe ".$testfile." - $file<br>";
      // $this->debug($testfile);
      if ($testfile != ",") {
        $this->cookie = $_COOKIE["10000-eblok"];
      } else {
        $this->cookie = substr($_COOKIE["10000-eblok"],1,strlen($_COOKIE["10000-eblok"]));
      }
    } else {
      $this->cookie = "";
    }
    // $this->debug("cookie");
    // $this->debug($this->cookie);
    return $this->cookie;
  }

  private function set_cookie($id) {
    $this->get_cookie("10000-eblok");
    if($this->cookie =="") {
      $value = $this->cookie.$id;
    } else {
      $value = $this->cookie.",".$id;
    }
    setcookie("10000-eblok", $value, (time()+60*60*24*3000));
    $this->get_cookie("10000-eblok");
  }

  public function add_werte($uid, $wert) {
    $this->spieler_id = $uid;
    if ($wert =="") $wert = 0;
    $this->werte[$uid][$this->rundenzaehler] = $wert;
    if (($this->spieler_zaehler ) == count($this->spielerliste)-1) {
      $this->letzter_spieler = true;
      $this->rundenzaehler++;
      $this->spieler_zaehler = 0;
    } else {
      $this->spieler_zaehler++;
    }
  }

  public function reset_werte() {
    $this->werte = array();
    $this->summe = array();
    $this->rundenzaehler = 0;
    $this->spieler_zaehler = 0;
    $this->highlight = array();
    $this->tmp_highlight = array();
    // $_SESSION['debugzaehler'] =0;
  }

  public function zurueck() { // eine Rückgängig funktion
    $this->spieler_zaehler -1;
    if ($this->spieler_zaehler <= 0) { // beim ersten spieler
      $this->spieler_zaehler = (count($this->spielerliste)-1) ;
      if ($this->rundenzaehler > 0 ) {
        $this->rundenzaehler --;
      }
      unset($this->werte[$this->spieler_zaehler][$this->rundenzaehler]) ;
      $del_highlight = array_pop($this->highlight);
    } else {
      $this->spieler_zaehler = $this->spieler_zaehler -1  ;
      unset($this->werte[$this->spieler_zaehler][$this->rundenzaehler]) ;
      #$del = array_pop($this->highlight);
    }
  }

  private function get_sql_user($standard = true) {
    // print "<pre>".print_r($selected,true)."</pre>";

    //  array($spieler);
    // ) {
    // $lastInsertId =0;
    // };
    if($standard == true) {
      $standard = " WHERE id in (".$this->cookie.") ";
    } else {
      $tandard = "";
    }

    $sql = "SELECT id,datum,spieler,farben FROM spieler $standard ORDER BY id DESC";
    // echo "$sql";
    $ergebnis = $this->select($sql);
    // $this-debug($ergebnis);
    return $ergebnis;
  }

  private function add_spieler_sql() {
    $spieler = implode(",",$this->spielerliste);
    $farben = implode(",",$this->spielerfarbe);
    $spieler_sql = $this->umlaute($spieler);
    $datum = date('Y.m.d');
    // $this->debug($spieler);
    // $this->debug($farben);
    // $this->debug($datum);
    $sql = "INSERT INTO spieler (spieler,farben,datum) VALUES (?,?,?)";
    $werte = array($spieler_sql,$farben,$datum);
    $this->_query($sql,$werte);
    $this->lastInsertId = $this->lastInsertId();
    // $this->debug($this->lastInsertId);
    $this->set_cookie($this->lastInsertId);
  }

  private function insert_sql_gewinner($summen) {
    $cookie = $this->get_cookie();
    $array = explode(",",$cookie);
    $hid = array_pop($array);
    $summe = implode(",",$summen);
    // $this->debug($summe);
    // $this->debug($hid);
    // $this->debug(explode(",",$cookie));

    $sql = "INSERT INTO summen (hid,summen) VALUES (?,?)";
    $werte = array($cookie,$summe);
    $this->_query($sql,$werte);
    // $this->debug($werte);

    $this->lastInsertId = $this->lastInsertId();
    // $this->debug($this->lastInsertId);

  }

  private function zeige_tabelle() {
    #$this->debug($this->werte);
      // Tabellenkopf
      echo "<div id=\"spielertabelle\">\n";
      echo "<table border=1 cellpadding=\"3\">\n";
      // Tabellenkopf
      echo "<tr>\n";
      echo "<th>#\n";echo "</th>\n";
      foreach($this->spielerliste as $k => $sp) { // überschrift
        echo "<th class=\"spalten".$this->spielerfarbe[$k]."\">".$sp."</th>\n";
      }
      echo "<th nowrap>Bester Wurf</th>\n";
      echo "</tr>\n";
      // Rundenausgabe
      $c = 0; // classen toogle hintergrundfarbe
      for($i=0;$i<=$this->rundenzaehler;$i++) { // Zeilen
        $class = $c%2 ? "heller" : "dunkler" ;
        echo "<tr>\n";
        echo "<td class=\"$class\" align=\"right\">".($i+1)."</td>\n";
        $z = 0; // zähler um die bereits gespielten Spieler zu zählen
        foreach($this->spielerliste as $k => $w) { // Spalten
          if(isset($this->werte[$k][$i])) {
            if ($this->werte[$k][$i] == "") { //
              $wert = "";
            } else {
              $wert = $this->werte[$k][$i];
            }
          }
          $z++;
          if ($z == count($this->spielerliste)) {
            // if(isset($wert)) { $wert  = "".$wert; } else { $wert="";}
          }
          echo "<td ";
          if ($this->rundenzaehler == $i && $this->spieler_zaehler == $k) {
            echo " class=\"tdaktiv\" ";
          } else {
            echo " class=\"$class\" ";
          }
            // if(!isset($wert)) {  $wert="";}
          echo "align=\"right\">";
          if (!empty($this->werte[$k][$i])
          // and array_key_exists($k, $this->werte)
          ) {
            if($this->werte[$k][$i] == NULL) echo "0";
            if($this->werte[$k][$i] == 0) echo "0";
            echo $this->werte[$k][$i];
          } else {
            echo "0";
          }

          echo "</td>\n";
          #$this->summe[$k] +=$this->werte[$k][$i];
          // Spalten Ende
        }
        echo "<td class=\"spalten";
        if(isset($this->highlight[$i]))   echo $this->spielerfarbe[$this->highlight[$i]];
        echo "\"><b>";
        // $this->spielerliste[$this->highlight[$i]];
        if(isset($this->highlight[$i]))  echo $this->spielerliste[$this->highlight[$i]];
        echo "</b></td>\n";
        echo "</tr>\n";
        $c++;
      }
      // Ergebnis
      echo "<tr>\n";
      echo "<th>&nbsp;</th>\n";
      foreach($this->spielerliste as $spk => $sp) {
        echo "<th align=\"right\">".$this->summe[$spk]."</th>\n";
      }
      echo "<th>&nbsp;</th>\n";
      echo "</table>\n";
      echo "</div>\n<br class=\"clear\" />\n";
      // $this->debug($this->werte);
      // $this->debug($this->highlight);
    $this->is_win();
  }

  private function rechne() {
    foreach($this->spielerliste as $spk => $sp) {
      $s=0;
      if(isset($this->werte[$spk])) {
        foreach($this->werte[$spk] as $k => $w) {
          $s=$s+$w;
        }
      }
      $this->summe[$spk] =  $s;
    }
  }

  private function highlight() { // den höchsten Wurf in der Runde feststellen
    if ($this->letzter_spieler == true && $this->rundenzaehler > 0) {
      $tmp_runde = $this->rundenzaehler-1;
      foreach($this->spielerliste as $spk => $sp) {
        $this->tmp_highlight[$spk] = $this->werte[$spk][$tmp_runde];
      }
      $groesster_wert = max($this->tmp_highlight);
      $key = array_search($groesster_wert, $this->tmp_highlight);
      $this->highlight[] = $key;
      $this->letzter_spieler = false;
    }

  }

  private function is_win(){  // ist das Spiel gewonnen?
      $check = false;
      echo "$check <br>";
      if ($_SESSION['spielende'] == 0) {
        $check = true;
      } else {
        if($this->spieler_id == count($this->spielerliste)-1) {
          $check = true;
        }
      }
      if ($check) {
        $test = false;
        foreach($this->spielerliste as $spk => $sp) {
          if ($this->summe[$spk] >= $this->gewonnen) {
            $test = true;
          }
        }
        if($test) {
          $arr = $this->summe;
          $maxKey = null;
          foreach ($arr as $key=>$val) {
            if (is_int($val)) {
              if ($maxKey===null || $val>$arr[$maxKey]) {
                $maxKey = $key;
              }
            }
          }
          echo "<div id=\"gewinnertext\">Der Gewinner steht fest: <span id=\"gewinner\">".$this->spielerliste[$maxKey]."</span> (".$this->summe[$maxKey].")</div>\n<br class=\"clear\" />\n";
          $this->insert_sql_gewinner($this->summe);
          exit();
        }
        // echo("Der größte Wert ist {$arr[$maxKey]} mit dem Schlüssel $maxKey.");
      }
  }

  private function zahlenform($uid) {
    echo "<div id =\"zahlenfeld\">\n";
    echo "<span id=\"Spielername\">".$this->spielerliste[$uid]."</span><br />\n";
    echo "<span id=\"Rundenzaehler\">Runde: <b>".($this->rundenzaehler+1)."</b></span><br />\n";
    echo "<div id=\"zahlen\">\n";
    echo "<form action=\"index.php\" method=\"post\" name=\"zahlenform\" onSubmit=\"return pruefe_zahl()\">";
    echo "<input type=\"hidden\" name=\"spieler_id\" value=\"".$uid."\"><br />\n";?>
      <table align="center" border="0">
        <tr>
          <td><input type="button" name="z1" value="1" onclick="add_text('1')"></td>
          <td><input type="button" name="z2" value="2" onclick="add_text('2')"></td>
          <td><input type="button" name="z3" value="3" onclick="add_text('3')"></td>
        </tr>
        <tr>
          <td><input type="button" name="z4" value="4" onclick="add_text('4')"></td>
          <td><input type="button" name="z5" value="5" onclick="add_text('5')"></td>
          <td><input type="button" name="z6" value="6" onclick="add_text('6')"></td>
        </tr>
        <tr>
          <td><input type="button" name="z7" value="7" onclick="add_text('7')"></td>
          <td><input type="button" name="z8" value="8" onclick="add_text('8')"></td>
          <td><input type="button" name="z9" value="9" onclick="add_text('9')"></td>
        </tr>
        <tr>
          <td><input type="button" name="z10" value="X" onclick="loesche_text()"></td> <!-- &Oslash; //-->
          <td><input type="button" name="z11" value="0" onclick="add_text('0')"></td>
          <td><input type="submit" name="submit" value="&crarr;"></td>
        </tr>
        <tr>
          <td colspan="3"><input type="text" name="wert" value="" size="4" ></td>
        </tr>
      </table>
    </form>
    <?php
    // $this->debug($this->rundenzaehler);
    // $this->debug($this->spieler_zaehler);
    if (
      ($this->rundenzaehler >= 0 && $this->spieler_zaehler > 0)
      || ($this->rundenzaehler > 0 )) { ?>

      <form action="index.php" method="post" name="rueckgaengig">
        <table align="center" border="0">
          <tr>
            <td colspan="3"><input type="submit" name="zurueck" value="R&uuml;ckg&auml;ngig" ></td>
          </tr>
        </table>
      </form>
    <?php }     ?>
    </div>
    <br class="clear" />
      </div>
      <br class="clear" />


    <?php
    $this->js_autoload("zahlenform", "wert");
  }

  private function in_array_r($needle, $haystack, $strict = true) {
	    foreach ($haystack as $item) {
	        if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && $this->in_array_r($needle, $item, $strict))) {
	            return true;
	        }
	    }
	    return false;
  }

  private function show_sql_user($standard = true) {
    $standard = $_SESSION['zmenue'] == true ? false : true;
    // true bedeutet standard sql abfrage
    $ergebnis = $this->get_sql_user($standard);
    // $this->debug("ergebnis");
    // $this->debug($ergebnis);
    if(!$standard) {
        $array = $ergebnis;
    } else {

      $z=0;
      $array = array();
      if(count($ergebnis[0])>0) {
        foreach ($ergebnis as $zeile) {
          if($this->in_array_r($zeile["spieler"],$array) &&
            $this->in_array_r($zeile["spieler"],$array)) {
    	       // returns true
          } else {
            $array[$z]["id"] = $zeile["id"];
            $array[$z]["spieler"] = $zeile["spieler"];
            $array[$z]["farben"] = $zeile["farben"];
            $array[$z]["datum"] = $zeile["datum"];
            $z++;
          }

        }
      }
      // $this->debug($array);
      krsort($array);
      // $this->debug($array);
    }

    if($array=="") $array = NULL;
    if (isset($array) &&
     count($array) > 0) {
       echo "<div id =\"sql_user\">\n";
       echo "<form action=\"index.php\" method=\"post\" name=\"user_laden\" onSubmit=\"return check()\">\n";
       echo "<table border=\"0\" cellpadding=\"3\" >\n";
       $z=0;
      foreach ($array as $zeile) {

        echo "<tr>\n";
        if(!$standard) {
          echo "<td><input type=\"checkbox\" name=\"cookie_$z\" value=\"".$zeile["id"]."\"></td>\n";
          echo "<td>".$zeile["id"]."</td>\n";
        } else {
          echo "<td><input type=\"radio\" name=\"laden\" value=\"".$zeile["id"]."\"></td>\n";
        }
        echo  "<td><input type=\"hidden\" name=\"spieler\" value=\"" . htmlspecialchars($zeile["spieler"]) . "\">" . $zeile["spieler"] . "</td>\n";
        echo  "<td>";
        $tmp_farben = explode(",", htmlspecialchars($zeile["farben"]));
        foreach ($tmp_farben as $key => $value) {
          echo "<span style=\"background-color: #".$this->farben[$value]."\">&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;";
        }
        echo "<input type=\"hidden\" name=\"farben\" value=\"" . htmlspecialchars($zeile["farben"]) . "\">";
        echo  "</td>\n";
        echo  "<td><input type=\"hidden\" name=\"datum\" value=\"" . htmlspecialchars($zeile["datum"]) . "\">" . htmlspecialchars($zeile["datum"]) . "</td>\n";
        if(!$standard) {
          $tmp = $this->select("SELECT hid FROM summen WHERE hid =".$zeile["id"]);
          if($this->rowcount()>0) {$hg="00ff00";} else {$hg="ff0000";}
          echo "<td style=\"background-color:#$hg;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
          echo "<td><a href=\"index.php?delsql=".$zeile["id"]."\"><img src =\"pics/drop.png\" /></a></td>\n";
        }
        echo "</tr>\n";
        $z++;
      }
      echo "<tr>\n";
      if(!$standard) {
        // false bedeutet keine standard sql abfrage
        echo "<td colspan=\"3\" align=\"center\"><input type=\"submit\" name=\"spieler_cookie\" value=\"Spieler in Cookie speichern\" ></td>\n";
      } else {
        echo "<td colspan=\"3\" align=\"center\"><input type=\"submit\" name=\"spieler_laden\" value=\"Spieler laden\" ></td>\n";
      }
      echo "</tr>\n";
      echo "</table>\n";
      echo "</form>\n";
      echo "</div>\n";
      echo "<br class=\"clear\" />\n";
    }
  }

  private function spielerform() {
    echo "<div id =\"Spielerformular\">\n";
    echo "<form action=\"index.php\" method=\"post\" name=\"spielerform\" >\n";
    echo "<b>Bitte Spielername eingeben:</b> \n";
    echo "<br />\n";
    echo "<br />\n";
    echo "<input class=\"name\" type=\"text\" name=\"spielername\" value=\"\" >\n";
    echo "<br />\n";
    echo "<br />\n";
    echo "<br />\n";
    echo "<br />\n";
    echo "<br />\n";
    echo "<br />\n";
    echo "<br />\n";
    echo "<br />\n";
    echo "<br />\n";
    echo "<input type=\"submit\" name=\"spieler_neu\" value=\"Hinzu\" onclick=\"return pruefe_spieler();\">\n"; #&crarr;
    if (count($this->spielerliste)!=0) {
      echo "<div id=\"fertigbutton\">\n";
      echo "<input type=\"submit\" name=\"fertig\" value=\"Start\" >\n";
      echo "</div>\n<br class=\"clear\" />\n";
    }
      // echo "<form action=\"index.php\" method=\"post\" name=\"spieler\">\n";
      // echo "<form action=\"index.php\" method=\"post\" name=\"spielerfertig\">\n";
      #echo "<br />\n";
      // echo "";
      // echo "</form>\n";
    echo "<div id=\"farben\">\n";
    $z=0;$y=0;
    foreach($this->farben as $k => $v) {
      if(!in_array($k,$this->spielerfarbe)) {
        echo "<span class=\"spalten$k\"><input type=\"radio\" name=\"farben\" value=\"$k\" ";
        if ($y==0) echo " checked ";
        $y++;
        echo "></span>&nbsp;&nbsp;\n";
        // echo "<span class=\"spalten$k\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;\n";
        if($z==3 || $z ==7) echo "<br /><br />"; $z=0;
        $z++;
      }
    }
    echo "</div>\n";
    echo "</form>\n";
    echo "<br class=\"clear\" />\n";
    echo "</div>\n";
    $this->js_autoload("spielerform", "spielername");
  }

  // private function zusatzmenue() {
  //   $this->show_sql_user(false);
  //   // false bedeutet keine standard sql abfrage
  // }

  private function js_autoload($formname,$feld) {
    echo "<script type=\"text/javascript\" language=\"JavaScript\">\n";
    echo "<!--\n";
    echo "function start() {\n";
    echo "document.forms[\"".$formname."\"].".$feld.".select();}\n";
    echo "window.onload=start;\n";
    echo "-->\n";
    echo "</script>\n";
  }

  public function debug($wert) {
    $this->debug[] = $wert;
  }

  public function debuggen($ausgabe="", $array=true) {
    if ($_SESSION['debug'] == true) {
      echo "<div id=\"debug\">\n";
      echo "<pre>\n";
      print_r($this->debug);
      echo "</pre>\n";
      echo "</div>\n<br class=\"clear\" />\n";
    }
  }

  public function umlaute ($text) {
  	#echo "text:$text";
  	$text= str_replace('Ü','&Uuml;',$text);
  	$text= str_replace('Ä','&Auml;',$text);
  	$text= str_replace('Ö','&Ouml;',$text);
  	$text= str_replace('ü','&uuml;',$text);
  	$text= str_replace('ä','&auml;',$text);
  	$text= str_replace('ö','&ouml;',$text);

  	$text= str_replace('�','&Uuml;',$text);
  	$text= str_replace('�','&Auml;',$text);
  	$text= str_replace('�','&Ouml;',$text);
  	$text= str_replace('�','&uuml;',$text);
  	$text= str_replace('�','&auml;',$text);
  	$text= str_replace('�','&ouml;',$text);

  	$text= str_replace('ß','&szlig;',$text);
  	// $text= str_replace('�','&szlig;',$text);
  	// $text= str_replace('','&ouml;',$text);
  	// $text= str_replace('','ue',$text);
  	// $text= str_replace('','oe',$text);
  	// $text= str_replace('','ae',$text);
  	// $text= str_replace('','ss',$text);

  	// $text= str_replace('_',' ',$text);
  	// $text= str_replace('|','-',$text);
  	#echo "geaendert".$text."<br>";
	   return $text;
  }

  public function delsql($get) {
    $id = $get['delsql'];
    $this->delete("DELETE FROM spieler WHERE id = ?", array($id));
    $this->delete("DELETE FROM summen WHERE hid = ?", array($id));
  }

// -------------------------------------------------------------------------

  // public function debug ($ausgabe, $array=true) {
	//    echo "<div id=\"debug\">\n";
  //    if (isset($_SESSION['debug']) and ($_SESSION['debug'] == true)) {
	// 			echo "<pre>\n";
	// 			print_r($ausgabe);
	// 			echo "</pre>\n";
	// 	 }
  //   //  echo "<br class=\"clear\" />\n";
	// 	 echo "</div>\n";
  //   //  echo "<br class=\"clear\" />\n";
  // }


  //--------- Datenbank ----------------------------------

  public function select($qry, array $params = array())    {
    $this->connect();
      // if (($type = $this->getQueryType($qry)) !== "select")
      //     throw new Exception("Incorrect Select Query");

      if ($stmnt = $this->_query($qry, $params))
      {
          return $stmnt->fetchAll(PDO::FETCH_ASSOC);
      } else
      {
          return false;
      }
  }
  public function delete($qry, array $params = array())    {
    $this->connect();
      // if (($type = $this->getQueryType($qry)) !== "delete")
          // throw new Exception("Incorrect Delete Query");

      return $this->_query($qry, $params);
  }
  public function connect() {
    try {
      $this->setting = parse_ini_file("../SQL-10000-settings.ini.php");
      // foreach ($this->setting as $key => $value) {              echo "$key - $value<br>";            }
      $db = new PDO("mysql:host=".$this->setting['db_host'].";dbname=".$this->setting['db'],$this->setting['db_user'],$this->setting['db_pw']);
      //error behaviour
      // $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      // $db->query("set character set utf8");
      // $db->query("set names utf8");
      $this->db = $db;
    } catch (PDOException $e) {
      echo 'Fehler: ' . htmlspecialchars($e->getMessage());
    }
  }
  public function _query($qry, array $params)    {
    list($type, ) = explode(" ", strtolower($qry), 2);
    // echo $type;
    $this->connect();
      // if (in_array($type, array("insert", "select", "update", "delete")) === false)
      //     throw new Exception("Unsupported Query Type");

      $this->lastInsertId = false;
      $this->rowCount = false;

      $stmnt = $this->db->prepare($qry);

      // try
      // {
          $success = (count($params) !== 0) ? $stmnt->execute($params) : $stmnt->execute();
          if(isset($this->queryCounter)) $this->queryCounter++;

          if (!$success)
              return false;

          if ($type === "insert")
              $this->lastInsertId = $this->db->lastInsertId();
          $this->rowCount = $stmnt->rowCount();

          return ($type === "select") ? $stmnt : true;
      // } catch (PDOException $ex)
      // {
          // throw new PDOException("PDO-Exception: " . $ex->getMessage());
      // }
  }
  public function query($qry)    {
      $this->lastInsertId = false;
      $this->rowCount = false;
      $this->rowCount = $this->db->exec($qry);
      $this->queryCounter++;
  }
  public function lastInsertId()    {
      return $this->lastInsertId;
  }
  public function rowCount()    {
      return $this->rowCount;
  }
  public function disconnect()    {
      $this->db = null;
      #unset(self::$instances);
  }

  //--------- Klassen-Ende ----------------------------------
}
?>
