Index: trunk/MagicSoft/Mars/datacenter/db/builddatasets.php
===================================================================
--- trunk/MagicSoft/Mars/datacenter/db/builddatasets.php	(revision 9486)
+++ trunk/MagicSoft/Mars/datacenter/db/builddatasets.php	(revision 9498)
@@ -1,5 +1,23 @@
 <?php
-{
-    function CreateQuery($_GET, $alias, $checkwhere, $checkgroup, $checkstatusgroup, $needs)
+
+    function PrintDataSetFile()
+    {
+            printf("AnalysisNumber: 1\n\n");
+            printf("SeqencesOn: %s \n", $_SESSION["sequon"]);
+            if ($_SESSION["sequoff"]!=" ")
+                printf("SeqencesOff: %s \n\n", $_SESSION["sequoff"]);
+            else
+                printf("\n");
+
+            printf("SourceName: %s \n", $_SESSION["realsourcename"]);
+            printf("Catalog: /magic/datacenter/setup/magic_favorites_dc.edb \n");
+            if ($_SESSION["sequoff"]==" ")
+                printf("WobbleMode: On \n\n");
+            printf("RunTime: %s \n", $_SESSION["runtime"]);
+            printf("Name: %s \n", $_SESSION["name"]);
+            printf("Comment: %s \n", $_SESSION["comment"]);
+    }
+
+    function CreateQuery($alias, $checkwhere, $checkgroup, $checkstatusgroup, $needs)
     {
         $fromtable="Sequences";
@@ -15,5 +33,5 @@
                 $statusgroups++;
 
-        $query0 = "SELECT ";
+        $query0 = "SELECT SQL_CALC_FOUND_ROWS ";
 
         if ($groups>0)
@@ -37,5 +55,4 @@
                     if ($element==-1)
                         $query0 .= " (if(IsNull(" . $key . "), if(isnull(fStartTime), 'not done', if(isnull(fFailedTime),if(isnull(" . $needs[$key] . "),'not done',if(date_sub(Now(),interval 12 hour) < fStartTime,'running','crashed')),if(isnull(" . $needs[$key] . "),'not done','failed'))) ,if(" . $key . "='1970-01-01 00:00:00','dont do','done'))) as '" . $alias[$key] . "', ";
-//                        $query0 .= " (if(IsNull(" . $key . "), 'not done' ,if(" . $key . "='1970-01-01 00:00:00','dont do','done'))) as '" . $alias[$key] . "', ";
 
                 $query0 .= " COUNT(*) as '# Sequ'";
@@ -45,8 +62,8 @@
             {
                 $query0 .= " " . $fromtable . ".fSequenceFirst as '" . $alias["fSequenceFirst"] . "' ";
-                if (!empty($_GET["fLinks"]))
+                if (!empty($_SESSION["fLinks"]))
                 {
                     $query0 .= ", CONCAT('<A&ws;HREF=\"runinfo-aio.php?',  'fRunStart=On', '&amp;fZenithDistance=On', '&amp;fRunMin=', Sequences.fSequenceFirst, '&amp;fMeanTriggerRate=On', '&amp;fTest=On', '&amp;fRunTypeName=On', '&amp;fRunMax=', fSequenceLast, '&amp;fNumEvents=On', '&amp;fSourceName=On&amp;', 'fExcludedFDAKEY=1', '&amp;fSequenceFirst=On', '&amp;fRawFileAvail=On', '&amp;fCCFileAvail=On', '&amp;fCaCoFileAvail=On', '&amp;fNumResults=500\">r</A>' ";
-                    //                        $query0 .= " as " . $alias["fSequenceFirst"];
+                    //$query0 .= " as " . $alias["fSequenceFirst"];
                     $query0 .= ", '&nbsp;<A&ws;HREF=\"http://www.astro.uni-wuerzburg.de/datacenter/callisto/' , LEFT(LPAD(CONCAT(Sequences.fSequenceFirst, '.'), 9,'0'),4), '/', LPAD(CONCAT(Sequences.fSequenceFirst, '/'), 9,'0'), 'callisto', LPAD(CONCAT(Sequences.fSequenceFirst , '.html'), 13,'0') , '\">cl</A>'";
                     $query0 .= ", '&nbsp;<A&ws;HREF=\"http://www.astro.uni-wuerzburg.de/datacenter/callisto/' , LEFT(LPAD(CONCAT(Sequences.fSequenceFirst, '.'), 9,'0'),4), '/', LPAD(CONCAT(Sequences.fSequenceFirst, '/'), 9,'0'), '\">c</A>'";
@@ -58,9 +75,10 @@
                 }
 
-                foreach ($_GET as $key => $element)
-                    if ($_GET[$key]=="On")
+                foreach ($_SESSION as $key => $element)
+                    if ($_SESSION[$key]=="On")
                         if ($key!="fLinks" && $key!="fOff" && $key!="fOnlyOff")
-                            if (empty($checkwhere[$key]) || $checkwhere[$key]==0)
-                                $query0 .= ", " . $key . " as '" . $alias[$key] . "' ";
+                            if (!(ereg("^[0-9]*ON$", $key) || ereg("^[0-9]*Off$", $key)))
+                                if (empty($checkwhere[$key]) || $checkwhere[$key]==0)
+                                    $query0 .= ", " . $key . " as '" . $alias[$key] . "' ";
             }
         }
@@ -72,17 +90,53 @@
         $query0 .= " LEFT JOIN Star USING(fSequenceFirst,fTelescopeNumber) ";
 
-        foreach ($_GET as $key => $element)
-            if (($_GET[$key]=="On" || $groups>0))// && !empty(GetJoin($fromtable,$key)))
+        foreach ($_SESSION as $key => $element)
+            if (($_SESSION[$key]=="On" || $groups>0))// && !empty(GetJoin($fromtable,$key)))
                 $query0 .= GetJoin($fromtable,$key);
 
-        if ($_GET["fTest"]!="On")
-        {
-            if ($_GET["fSourceName"]!="On")
-                $query0 .= " LEFT JOIN Source USING(fSourceKEY) ";
-            $query0 .= " WHERE fTest='no'";
-        }
-
-        if ($_GET["fOff"]=="Off")
-        {
+        if ($_SESSION["DisplaySelected"]!="yes" || ($_SESSION["sequon"]==" " && $_SESSION["sequoff"]==" "))
+        {
+            if ($_SESSION["fTest"]!="On")
+            {
+                if ($_SESSION["fSourceName"]!="On")
+                    $query0 .= " LEFT JOIN Source USING(fSourceKEY) ";
+                $query0 .= " WHERE fTest='no'";
+            }
+
+            if ($_SESSION["fOff"]=="Off")
+            {
+                if (strpos($query0, " WHERE ")==FALSE)
+                    $query0 .= " WHERE ";
+                else
+                    $query0 .= " AND ";
+
+                $query0 .= " NOT (fSourceName like '%Off%')";
+            }
+
+            if ($_SESSION["fOnlyOff"]=="On")
+            {
+                if (strpos($query0, " WHERE ")==FALSE)
+                    $query0 .= " WHERE ";
+                else
+                    $query0 .= " AND ";
+
+                $query0 .= " fSourceName like '%Off%'";
+            }
+
+            foreach ($checkwhere as $key => $element)
+            {
+                if (empty($element) || $element<=0)
+                    continue;
+
+                if (strpos($query0, " WHERE ")==FALSE)
+                    $query0 .= " WHERE ";
+                else
+                    if ($element!=-1)
+                        if (strrpos($query0, " AND ")!=strlen($query0)-5)
+                            $query0 .= " AND ";
+
+                if ($element!=-1)
+                    $query0 .= GetCheck($fromtable, $key) . "=" . $element;
+            }
+
             if (strpos($query0, " WHERE ")==FALSE)
                 $query0 .= " WHERE ";
@@ -90,245 +144,129 @@
                 $query0 .= " AND ";
 
-            $query0 .= " NOT (fSourceName like '%Off%')";
-        }
-
-        if ($_GET["fOnlyOff"]=="On")
-        {
-            if (strpos($query0, " WHERE ")==FALSE)
-                $query0 .= " WHERE ";
+            $query0 .= StatusQuery("fSequenceFileWritten", $needs, $timelimits);
+            $query0 .= StatusQuery("fAllFilesAvail", $needs, $timelimits);
+            $query0 .= StatusQuery("fCallisto", $needs, $timelimits);
+            $query0 .= StatusQuery("fFillCallisto", $needs, $timelimits);
+            $query0 .= StatusQuery("fStar", $needs, $timelimits);
+            $query0 .= StatusQuery("fFillStar", $needs, $timelimits);
+
+            if (!empty($_SESSION["fRunMin"]) && !empty($_SESSION["fRunMax"]))
+                $query0 .= "Sequences.fSequenceFirst BETWEEN " . $_SESSION["fRunMin"] . " AND " . $_SESSION["fRunMax"] . " ";
             else
-                $query0 .= " AND ";
-
-            $query0 .= " fSourceName like '%Off%'";
-        }
-
-        foreach ($checkwhere as $key => $element)
-        {
-            if (empty($element) || $element<=0)
-                continue;
-
-            if (strpos($query0, " WHERE ")==FALSE)
-                $query0 .= " WHERE ";
-            else
-                if ($element!=-1)
-                    if (strrpos($query0, " AND ")!=strlen($query0)-5)
-                        $query0 .= " AND ";
-
-            if ($element!=-1)
-                $query0 .= GetCheck($fromtable, $key) . "=" . $element;
-        }
-
-        if (strpos($query0, " WHERE ")==FALSE)
-            $query0 .= " WHERE ";
+                $query0 = substr($query0, 0, -4);
+
+            if ((!empty($_SESSION["fZDMin"]) || $_SESSION["fZDMin"]==0) && !empty($_SESSION["fZDMax"]))
+                $query0 .= "AND (fZenithDistanceMin >= " . $_SESSION["fZDMin"] . " AND fZenithDistanceMax <= " . $_SESSION["fZDMax"] . ") ";
+
+            if (!empty($_SESSION["fSourceN"]))
+                $query0 .= " AND fSourceName REGEXP \"^" . $_SESSION["fSourceN"] . "\" ";
+
+            if (!empty($_SESSION["fStartDate"]))
+            {
+                if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
+                    $query0 .= " AND ";
+
+                $startdate=substr($_SESSION["fStartDate"], 0, 10);
+                if ($startdate=="0000-00-00")
+                    $query0 .=" fRunStart >= '" . $startdate . " 00:00:00' ";
+                else
+                    $query0 .= " fRunStart >= ADDDATE('" . $startdate . " 13:00:00', INTERVAL -1 DAY) ";
+            }
+
+            if (!empty($_SESSION["fStopDate"]))
+            {
+                if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
+                    $query0 .= " AND ";
+
+                $stopdate=substr($_SESSION["fStopDate"], 0, 10);
+                $query0 .= " fRunStart < '" . $stopdate . " 13:00:00' ";
+            }
+
+            if (!empty($_SESSION["fStarStart"]))
+            {
+                if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
+                    $query0 .= " AND ";
+
+                $starstart=substr($_SESSION["fStarStart"], 0, 10);
+                $query0 .=" fStar >= '" . $starstart . " 00:00:00' ";
+            }
+
+            if (!empty($_SESSION["fStarStop"]))
+            {
+                if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
+                    $query0 .= " AND ";
+
+                $starstop=substr($_SESSION["fStarStop"], 0, 10);
+                $query0 .= " fStar < '" . $starstop . " 23:59:59' ";
+            }
+
+            if ($groups>0)
+            {
+                $query0 .= " GROUP BY ";
+                $num = $groups;
+                foreach ($checkgroup as $key => $element)
+                    if ($element==-1)
+                    {
+                        $query0 .= GetCheck($fromtable,$key);
+                        if ($num-->1)
+                            $query0 .= ", ";
+                    }
+            }
+
+            if ($statusgroups>0)
+            {
+                $query0 .= " GROUP BY ";
+                $num = $statusgroups;
+                foreach ($checkstatusgroup as $key => $element)
+                    if ($element==-1)
+                    {
+                        $query0 .= $alias[$key];
+                        if ($num-->1)
+                            $query0 .= ", ";
+                    }
+            }
+
+        }
         else
-            $query0 .= " AND ";
-
-        $query0 .= StatusQuery("fSequenceFileWritten", $needs, $timelimits);
-        $query0 .= StatusQuery("fAllFilesAvail", $needs, $timelimits);
-        $query0 .= StatusQuery("fCallisto", $needs, $timelimits);
-        $query0 .= StatusQuery("fFillCallisto", $needs, $timelimits);
-        $query0 .= StatusQuery("fStar", $needs, $timelimits);
-        $query0 .= StatusQuery("fFillStar", $needs, $timelimits);
-
-        if (!empty($_GET["fRunMin"]) && !empty($_GET["fRunMax"]))
-            $query0 .= "Sequences.fSequenceFirst BETWEEN " . $_GET["fRunMin"] . " AND " . $_GET["fRunMax"] . " ";
+        {
+            $displsequ=str_replace("  ", " ", $_SESSION["sequon"].$_SESSION["sequoff"]);
+            $displsequ=ereg_replace("^ ", "(", $displsequ);
+            $displsequ=ereg_replace(" $", ")", $displsequ);
+            $displsequ=str_replace(" ",  ",", $displsequ);
+
+            $query0 .= "WHERE fSequenceFirst IN " . $displsequ;
+        }
+
+        if (!empty($_SESSION["fSortBy"]))
+        {
+            $val=substr($_SESSION["fSortBy"], 0, -1);
+            $query0 .= " ORDER BY " . GetTable($fromtable,$val) . " ";
+            if (substr($_SESSION["fSortBy"], -1)=="-")
+                $query0 .= "DESC";
+        }
+
+        if (empty($_SESSION["fSortBy"]) && $groups==0 && $statusgroups==0)
+            $query0 .= " ORDER BY Sequences.fSequenceFirst DESC ";
+
+        if (empty($_SESSION["fNumStart"]))
+            $start=0;
         else
-            $query0 = substr($query0, 0, -4);
-
-        if ((!empty($_GET["fZDMin"]) || $_GET["fZDMin"]==0) && !empty($_GET["fZDMax"]))
-            $query0 .= "AND (fZenithDistanceMin >= " . $_GET["fZDMin"] . " AND fZenithDistanceMax <= " . $_GET["fZDMax"] . ") ";
-
-        if (!empty($_GET["fSourceN"]))
-            $query0 .= " AND fSourceName REGEXP \"^" . $_GET["fSourceN"] . "\" ";
-
-        if (!empty($_GET["fStartDate"]))
-        {
-            if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
-                $query0 .= " AND ";
-
-            $startdate=substr($_GET["fStartDate"], 0, 10);
-            if ($startdate=="0000-00-00")
-                $query0 .=" fRunStart >= '" . $startdate . " 00:00:00' ";
-            else
-                $query0 .= " fRunStart >= ADDDATE('" . $startdate . " 13:00:00', INTERVAL -1 DAY) ";
-        }
-
-        if (!empty($_GET["fStopDate"]))
-        {
-            if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
-                $query0 .= " AND ";
-
-            $stopdate=substr($_GET["fStopDate"], 0, 10);
-            $query0 .= " fRunStart < '" . $stopdate . " 13:00:00' ";
-        }
-
-        if (!empty($_GET["fStarStart"]))
-        {
-            if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
-                $query0 .= " AND ";
-
-            $starstart=substr($_GET["fStarStart"], 0, 10);
-            $query0 .=" fStar >= '" . $starstart . " 00:00:00' ";
-        }
-
-        if (!empty($_GET["fStarStop"]))
-        {
-            if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
-                $query0 .= " AND ";
-
-            $starstop=substr($_GET["fStarStop"], 0, 10);
-            $query0 .= " fStar < '" . $starstop . " 23:59:59' ";
-        }
-
-        if ($groups>0)
-        {
-            $query0 .= " GROUP BY ";
-            $num = $groups;
-            foreach ($checkgroup as $key => $element)
-                if ($element==-1)
-                {
-                    $query0 .= GetCheck($fromtable,$key);
-                    if ($num-->1)
-                        $query0 .= ", ";
-                }
-        }
-
-        if ($statusgroups>0)
-        {
-            $query0 .= " GROUP BY ";
-            $num = $statusgroups;
-            foreach ($checkstatusgroup as $key => $element)
-                if ($element==-1)
-                {
-                    $query0 .= $alias[$key];
-                    if ($num-->1)
-                        $query0 .= ", ";
-                }
-        }
-
-        if (!empty($_GET["fSortBy"]))
-        {
-            $val=substr($_GET["fSortBy"], 0, -1);
-            $query0 .= " ORDER BY " . GetTable($fromtable,$val) . " ";
-            if (substr($_GET["fSortBy"], -1)=="-")
-                $query0 .= "DESC";
-        }
-
-        if (empty($_GET["fSortBy"]) && $groups==0 && $statusgroups==0)
-            $query0 .= "ORDER BY Sequences.fSequenceFirst DESC ";
-
-        if (empty($_GET["fNumStart"]))
-            $_GET["fNumStart"]=0;
-
-        if (empty($_GET["fSendTxt"]))
-            $query0 .= " LIMIT " . $_GET["fNumStart"] . ", " . $_GET["fNumResults"];
-
-        return $query0;
-    }
-
-    function InitGet($_GET)
-    {
-        // Find out whether it is the first call to the php script
-        $first = empty($_GET["fRunMin"]) && empty($_GET["fRunMax"]);
-
-        if (empty($_GET["fNumResults"]))
-            $_GET["fNumResults"]="100";
-
-        if (empty($_GET["fRunStart"]))
-            $_GET["fRunStart"]=$first?"On":"";
-
-        if (empty($_GET["fRunTime/60"]))
-            $_GET["fRunTime/60"]=$first?"On":"";
-
-        if (empty($_GET["fZenithDistanceMin"]))
-            $_GET["fZenithDistanceMin"]=$first?"On":"";
-
-        if (empty($_GET["fZenithDistanceMax"]))
-            $_GET["fZenithDistanceMax"]=$first?"On":"";
-
-        if (empty($_GET["fSourceName"]))
-            $_GET["fSourceName"]=$first?"On":"";
-
-        if (empty($_GET["fObservationModeName"]))
-            $_GET["fObservationModeName"]=$first?"On":"";
-
-        if (empty($_GET["fUnsuitableInner"]))
-            $_GET["fUnsuitableInner"]=$first?"On":"";
-
-        if (empty($_GET["fUnreliableInner"]))
-            $_GET["fUnreliableInner"]=$first?"On":"";
-
-        if (empty($_GET["fIsolatedInner"]))
-            $_GET["fIsolatedInner"]=$first?"On":"";
-
-        if (empty($_GET["fIsolatedMaxCluster"]))
-            $_GET["fIsolatedMaxCluster"]=$first?"On":"";
-
-//        if (empty($_GET["fArrTimeMeanInner"]))
-//            $_GET["fArrTimeMeanInner"]=$first?"On":"";
-
-        if (empty($_GET["fArrTimeRmsInner"]))
-            $_GET["fArrTimeRmsInner"]=$first?"On":"";
-
-        if (empty($_GET["fMeanPedRmsInner"]))
-            $_GET["fMeanPedRmsInner"]=$first?"On":"";
-
-        if (empty($_GET["fPulsePosMean"]))
-            $_GET["fPulsePosMean"]=$first?"On":"";
-
-        if (empty($_GET["fConvFactorInner"]))
-            $_GET["fConvFactorInner"]=$first?"On":"";
-
-        if (empty($_GET["fInhomogeneity"]))
-            $_GET["fInhomogeneity"]=$first?"On":"";
-
-        if (empty($_GET["fPSF"]))
-            $_GET["fPSF"]=$first?"On":"";
-
-        if (empty($_GET["fMuonNumber"]))
-            $_GET["fMuonNumber"]=$first?"On":"";
-
-        if (empty($_GET["fEffOnTime/fRunTime"]))
-            $_GET["fEffOnTime/fRunTime"]=$first?"On":"";
-
-        if (empty($_GET["fMuonRate"]))
-            $_GET["fMuonRate"]=$first?"On":"";
-
-        if (empty($_GET["fDataRate"]))
-            $_GET["fDataRate"]=$first?"On":"";
-
-//        if (empty($_GET["fMaxHumidity"]))
-//            $_GET["fMaxHumidity"]=$first?"On":"";
-
-        if (empty($_GET["fBrightnessMed"]))
-            $_GET["fBrightnessMed"]=$first?"On":"";
-
-        if (empty($_GET["fNumStarsMed"]))
-            $_GET["fNumStarsMed"]=$first?"On":"";
-
-        if (empty($_GET["fNumStarsCorMed"]))
-            $_GET["fNumStarsCorMed"]=$first?"On":"";
-
-        if (empty($_GET["fOff"]))
-            $_GET["fOff"]=$first?"On":"";
-
-        if (empty($_GET["fLinks"]))
-            $_GET["fLinks"]=$first?"On":"";
-
-        if (empty($_GET["fOnlyOff"]))
-            $_GET["fOnlyOff"]=$first?"Off":"";
-
-        InitFindOffData($_GET, $first);
-    }
-
-    function PrintForm($_GET, $host, $user, $pw, $db, $limitsmean, $limitsmin, $limitsmax, $alias)
+            $start=$_SESSION["fNumStart"];
+
+        if (empty($_SESSION["fSendTxt"]))
+            $query0 .= " LIMIT " . $start . ", " . $_SESSION["fNumResults"];
+
+            return $query0;
+    }
+
+    function PrintForm($host, $user, $pw, $db, $limitsmean, $limitsmin, $limitsmax, $alias)
     {
         printf("<center>\n");
         printf("<form action='builddatasets.php' METHOD='GET'>\n");
         printf("<input id='sh' type='hidden' name='fShowHide' value='");
-        if (!empty($_GET["fShowHide"]))
-            printf("%s", $_GET["fShowHide"]);
+        if (!empty($_SESSION["fShowHide"]))
+            printf("%s", $_SESSION["fShowHide"]);
         else
-            printf("1000000000");
+            printf("1000000010");//display Ranges
         printf("'>\n");
         printf("<img id='allbutton' src='minus.png' alt='-' onclick='showhide(\"all\")'> <b>Menu</b>&nbsp;&nbsp;&nbsp;&nbsp;\n");
@@ -370,20 +308,4 @@
         PrintButtons("builddatasets.php");
 
-        $sequon=" ";
-        $sequoff=" ";
-        foreach($_POST as $key => $val)
-            if ($val=="On")
-            {
-                if (ereg("ON$", $key))
-                    $sequon.=str_replace("ON", " ", $key);
-                if (ereg("Off$", $key))
-                    $sequoff.=str_replace("Off", " ", $key);
-            }
-        printf("<input name='Set' type='hidden' value='%s'>\n", $sequon);
-        printf("<input name='Set2' type='hidden' value='%s'>\n", $sequoff);
-        printf("<input name='name' type='hidden' value='%s'>\n", $_POST["name"]);
-        printf("<input name='comment' type='hidden' value='%s'>\n", $_POST["comment"]);
-        printf("<input name='obsmode' type='hidden' value='%s'>\n", $_POST["fObservationModeKEY"]);
-        printf("<input name='username' type='hidden' value='%s'>\n", $_POST["fUserKEY"]);
         printf("</form>\n");
         printf("</center>\n");
@@ -394,4 +316,62 @@
     }
 
+    function InsertDataSet($values, $dataset)
+    {
+        $insquery[0]="INSERT DataSets SET fDataSetNumber=" . $dataset . ", fUserKEY=" . $_SESSION["user"];
+        $insquery[0].=", fComment='" . $_SESSION["comment"] . "', fObservationModeKEY=" . $_SESSION["obsmode"];
+        $insquery[0].=", fDataSetName='" . $_SESSION["name"] . "', fSourceKEY= " . $_SESSION["realsourcekey"];
+        $insquery[0].=", fRunStart='" . $values["Min(fRunStart)"]["on"];
+        $insquery[0].="', fRunStop='" . $values["Max(fRunStop)"]["on"];
+        $insquery[0].="', fZenithDistanceMin=" . $values["Min(fZenithDistanceMin)"]["on"];
+        $insquery[0].=", fZenithDistanceMax=" . $values["Max(fZenithDistanceMax)"]["on"];
+        $insquery[0].=", fRunTime=" . $_SESSION["runtime"];
+        $insquery[1]="INSERT DataSetProcessStatus SET fDataSetNumber=" . $dataset . ", fDataSetInserted=Now()";
+        $i=2;
+        foreach(explode(" ", trim($_SESSION["sequon"])) as $key => $sequ)
+        {
+            $insquery[$i]="INSERT DataSetSequenceMapping SET fDataSetNumber=" . $dataset;
+            $insquery[$i].=", fSequenceFirst=" . $sequ . ", fOnOff=1";
+            $i=$i+1;
+        }
+        if (!empty($off))
+        {
+            foreach(explode(" ", trim($_SESSION["sequoff"])) as $key => $sequ)
+            {
+                $insquery[$i]="INSERT DataSetSequenceMapping SET fDataSetNumber=" . $dataset;
+                $insquery[$i].=", fSequenceFirst=" . $sequ . ", fOnOff=2";
+                $i=$i+1;
+            }
+        }
+        // insert
+        if (!empty($_SESSION["insert"]) && $numerr==0)
+        {
+            printf("<br><br>\n");
+            foreach($insquery as $num => $q)
+            {
+                printf("Inserted Query #%s: %s<br>\n", $num, $q);
+                $insresult=mysql_query($q);
+                if (mysql_errno()>0)
+                    printf("&nbsp; Errorno: %s <br>\n", mysql_errno());
+                if (mysql_error()!="")
+                    printf("&nbsp; Errormsg: %s <br>\n", mysql_error());
+                if (mysql_info()!="")
+                    printf("&nbsp; Info: %s <br>\n", mysql_info());
+                printf("&nbsp; Affected Rows: %s <br><br>\n", mysql_affected_rows());
+                mysql_free_result($insresult);
+                if (mysql_errno()>0)
+                {
+                    printf("ERROR => stop inserting. <br><br>\n");
+                    break;
+                }
+            }
+            // reset after insert
+            unset($_SESSION["insert"]);
+            unset($_SESSION["name"]);
+            unset($_SESSION["comment"]);
+        }
+        else
+            printf("<input type='button' value='Insert Data Set' onClick='self.location.href=\"%s&insert=yes\"'>&nbsp;&nbsp;&nbsp;\n", GetClearedURL());
+    }
+
     function PrintPage($html, $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $limitsmean, $limitsmin, $limitsmax, $needs)
     {
@@ -404,7 +384,8 @@
         mysql_select_db($db);
 
-        $query0 = CreateQuery($_GET, $alias, $checkwhere, $checkgroup, $checkstatusgroup, $needs);
+        $query0 = CreateQuery($alias, $checkwhere, $checkgroup, $checkstatusgroup, $needs);
 
         $result0 = mysql_query($query0, $db_id);
+        $result1 = mysql_query("SELECT FOUND_ROWS()", $db_id);
 
         if ($result0)
@@ -412,415 +393,352 @@
             if ($html=="1" || $html=="2")
             {
-                PrintMagicTable($result0, $alias, $rightalign, $limitsmean, $limitsmin, $limitsmax, "yes", $_GET);
-                foreach($_POST as $key => $val)
-                    if ($val=="On")
+                PrintMagicTable($result0, $alias, $rightalign, $limitsmean, $limitsmin, $limitsmax, $result1, "yes");
+
+                if ($_SESSION["sequon"]!=" " || $_SESSION["sequoff"]!=" ")
+                {
+                    printf("<div align='left'>\n");
+                    printf("Remark: To store your selection you have to press 'Update Data Set'<br> \n");
+                    if ($_SESSION["DisplaySelected"]!="yes" && ($_SESSION["sequon"]!=" " || $_SESSION["sequoff"]!=" "))
                     {
-                        if (ereg("ON$", $key))
-                            $sequon.=str_replace("ON", " ", $key);
-                        if (ereg("Off$", $key))
-                            $sequoff.=str_replace("Off", " ", $key);
+                        printf("Remark: To be able to remove sequence(s) from your selection you have to \n");
+                        printf("'Display Selected Sequences'");
+//                        printf("<input type='button' value='Display Selected Sequences' onClick='self.location.href=\"%s&DisplaySelected=yes\"'>\n", GetClearedURL("yes"));
+                        printf(" only.<br>\n");
                     }
-
-                printf("<input type='submit' value='Get Dataset'><br><br>\n");
-                printf("<input name='submit' type='hidden' value='post'>\n");
-
-                $on=str_replace(" ", ",", trim($sequon));
-                $off=str_replace(" ", ",", trim($sequoff));
-
-                $values=array("Sum(fRunTime)/60"         => $runtime,
-                              "Min(fRunTime)/60"         => $runtimemin,
-                              "Max(fUnsuitableInner)"    => $unsuitablemax,
-                              "Max(fUnreliableInner)"    => $unreliablemax,
-                              "Max(fIsolatedInner)"      => $isolatedmax,
-                              "Max(fIsolatedMaxCluster)" => $imcmax,
-                              "Max(fArrTimeMeanInner)"   => $arrtimemax,
-                              "Min(fArrTimeMeanInner)"   => $arrtimemin,
-                              "Max(fArrTimeRmsInner)"    => $arrtimermsmax,
-                              "Avg(fMeanPedRmsInner)"    => $pedrmsmean,
-                              "Std(fMeanPedRmsInner)"    => $pedrmsrms,
-                              "Min(fMeanPedRmsInner)"    => $pedrmsmin,
-                              "Max(fMeanPedRmsInner)"    => $pedrmsmax,
-                              "Min(fPulsePosMean)"       => $pulseposmin,
-                              "Max(fPulsePosMean)"       => $pulseposmax,
-                              "Max(fPulsePosRms)"        => $pulseposrmsmax,
-                              "Max(fMaxHumidity)"        => $hummax,
-                              "Max(fInhomogeneity)"      => $inhommax,
-                              "Avg(fInhomogeneity)"      => $inhommean,
-                              "Std(fInhomogeneity)"      => $inhomrms,
-                              "Min(fMeanNumberIslands)"  => $numislmin,
-                              "Max(fMeanNumberIslands)"  => $numislmax,
-                              "Min(fDataRate)"           => $clratemin,
-                              "Max(fDataRate)"           => $clratemax,
-                              "Min(fMuonRate)"           => $muonratemin,
-                              "Max(fMuonRate)"           => $muonratemax,
-                              "Min(fMuonNumber)"         => $muonnumbermin,
-                              "Avg(fPSF)"                => $psfmean,
-                              "Std(fPSF)"                => $psfrms,
-                              "Min(fPSF)"                => $psfmin,
-                              "Max(fPSF)"                => $psfmax,
-                              "Min(fEffOnTime/fRunTime)" => $relontimemin,
-                              "Max(fEffOnTime/fRunTime)" => $relontimemax,
-                              "Min(fBrightnessMed)"      => $brightmin,
-                              "Max(fBrightnessMed)"      => $brightmax,
-                              "Min(fNumStarsMed)"        => $idstarsmin,
-                              "Max(fNumStarsMed)"        => $idstarsmax,
-                              "Min(fNumStarsCorMed)"     => $corstarsmin,
-                              "Max(fNumStarsCorMed)"     => $corstarsmax,
-                              "Min(fZenithDistanceMin)"  => $zdmin,
-                              "Max(fZenithDistanceMax)"  => $zdmax,
-                              "Min(fRunStart)"           => $starttime,
-                              "Max(fRunStop)"            => $stoptime,
-                             );
-                //get runtimes of dataset
-                function GetSequenceValues($db_id, $sequences, $txt, &$values)
-                {
-                    $query="SELECT COUNT(*) ";
-                    foreach($values as $name => $varname)
-                        $query.=", " . $name;
-                    $query.=" FROM Sequences ";
-                    $query.=" LEFT JOIN Calibration USING(fSequenceFirst,fTelescopeNumber) ";
-                    $query.=" LEFT JOIN Star USING(fSequenceFirst,fTelescopeNumber) ";
-                    $query.=" WHERE Sequences.fSequenceFirst IN (" . $sequences . ")";
+                    printf("<br>\n");
+
+                    printf("<u>Your Data Set:</u> <br>\n");
+
+                    $on=str_replace(" ", ",", trim($_SESSION["sequon"]));
+                    $off=str_replace(" ", ",", trim($_SESSION["sequoff"]));
+
+                    $values=array("Sum(fRunTime)/60"         => $runtime,
+                                  "Min(fRunTime)/60"         => $runtimemin,
+                                  "Max(fUnsuitableInner)"    => $unsuitablemax,
+                                  "Max(fUnreliableInner)"    => $unreliablemax,
+                                  "Max(fIsolatedInner)"      => $isolatedmax,
+                                  "Max(fIsolatedMaxCluster)" => $imcmax,
+                                  "Max(fArrTimeMeanInner)"   => $arrtimemax,
+                                  "Min(fArrTimeMeanInner)"   => $arrtimemin,
+                                  "Max(fArrTimeRmsInner)"    => $arrtimermsmax,
+                                  "Avg(fMeanPedRmsInner)"    => $pedrmsmean,
+                                  "Std(fMeanPedRmsInner)"    => $pedrmsrms,
+                                  "Min(fMeanPedRmsInner)"    => $pedrmsmin,
+                                  "Max(fMeanPedRmsInner)"    => $pedrmsmax,
+                                  "Min(fPulsePosMean)"       => $pulseposmin,
+                                  "Max(fPulsePosMean)"       => $pulseposmax,
+                                  "Max(fPulsePosRms)"        => $pulseposrmsmax,
+                                  "Max(fMaxHumidity)"        => $hummax,
+                                  "Max(fInhomogeneity)"      => $inhommax,
+                                  "Avg(fInhomogeneity)"      => $inhommean,
+                                  "Std(fInhomogeneity)"      => $inhomrms,
+                                  "Min(fMeanNumberIslands)"  => $numislmin,
+                                  "Max(fMeanNumberIslands)"  => $numislmax,
+                                  "Avg(fDataRate)"           => $clratemean,
+                                  "Min(fDataRate)"           => $clratemin,
+                                  "Max(fDataRate)"           => $clratemax,
+                                  "Min(fMuonRate)"           => $muonratemin,
+                                  "Max(fMuonRate)"           => $muonratemax,
+                                  "Min(fMuonNumber)"         => $muonnumbermin,
+                                  "Avg(fPSF)"                => $psfmean,
+                                  "Std(fPSF)"                => $psfrms,
+                                  "Min(fPSF)"                => $psfmin,
+                                  "Max(fPSF)"                => $psfmax,
+                                  "Min(fEffOnTime/fRunTime)" => $relontimemin,
+                                  "Max(fEffOnTime/fRunTime)" => $relontimemax,
+                                  "Min(fBrightnessMed)"      => $brightmin,
+                                  "Max(fBrightnessMed)"      => $brightmax,
+                                  "Min(fNumStarsMed)"        => $idstarsmin,
+                                  "Max(fNumStarsMed)"        => $idstarsmax,
+                                  "Min(fNumStarsCorMed)"     => $corstarsmin,
+                                  "Max(fNumStarsCorMed)"     => $corstarsmax,
+                                  "Min(fZenithDistanceMin)"  => $zdmin,
+                                  "Max(fZenithDistanceMax)"  => $zdmax,
+                                  "Min(fRunStart)"           => $starttime,
+                                  "Max(fRunStop)"            => $stoptime,
+                                 );
+                    //get runtimes of dataset
+                    function GetSequenceValues($db_id, $sequences, $txt, &$values)
+                    {
+                        $query="SELECT COUNT(*) ";
+                        foreach($values as $name => $varname)
+                            $query.=", " . $name;
+                        $query.=" FROM Sequences ";
+                        $query.=" LEFT JOIN Calibration USING(fSequenceFirst,fTelescopeNumber) ";
+                        $query.=" LEFT JOIN Star USING(fSequenceFirst,fTelescopeNumber) ";
+                        $query.=" WHERE Sequences.fSequenceFirst IN (" . $sequences . ")";
+                        $result = mysql_query($query, $db_id);
+                        $row = mysql_fetch_assoc($result);
+                        foreach($values as $name => $varname)
+                            $values[$name][$txt]=$row[$name];
+                        mysql_free_result($result);
+                    }
+
+                    //get next dataset#
+                    $query="SELECT fDataSetNumber+1 FROM DataSets ORDER BY fDataSetNumber DESC LIMIT 0,1";
                     $result = mysql_query($query, $db_id);
                     $row = mysql_fetch_assoc($result);
-                    foreach($values as $name => $varname)
-                        $values[$name][$txt]=$row[$name];
+                    $dataset=$row["fDataSetNumber+1"];
+                    if (empty($dataset))
+                        $dataset=1;
                     mysql_free_result($result);
+
+                    //get sourcenames
+                    function GetSources($db_id, $sequences)
+                    {
+                        $query="SELECT fSourceName FROM Source LEFT JOIN Sequences USING(fSourceKEY) ";
+                        $query.="WHERE fSequenceFirst IN (" . $sequences . ") GROUP BY fSourceName";
+                        $result = mysql_query($query, $db_id);
+                        while ($row = mysql_fetch_assoc($result))
+                            $sources.=" " . $row["fSourceName"];
+                        mysql_free_result($result);
+                        return $sources;
+                    }
+                    $sourceson=GetSources($db_id, $on);
+                    $sourcesoff=GetSources($db_id, $off);
+
+                    //get sourcename for dataset
+                    $son=str_replace(" ", "','", trim($sourceson));
+                    $query="SELECT fRealSourceKEY, Count(*), fSourceName FROM Source where fSourceName IN ('" . $son . "') GROUP BY fRealSourceKEY";
+                    $result = mysql_query($query, $db_id);
+                    $row = mysql_fetch_assoc($result);
+                    $numsources=$row["Count(*)"];
+                    $numrealkeys=mysql_num_rows($result);
+                    $_SESSION["realsourcekey"]=$row["fRealSourceKEY"];
+                    $_SESSION["realsourcename"]=$row["fSourceName"];
+                    mysql_free_result($result);
+                    //printf("found %s sources with real sourcekey %s", $numsources, $realsourcekey);
+                    //printf("found %s keys", $numrealkeys);
+
+                    //check observationmode for on-sequences
+                    $query="SELECT fObservationModeKEY FROM Sequences where fSequenceFirst IN (" . $on . ") GROUP BY fObservationModeKEY";
+                    $result = mysql_query($query, $db_id);
+                    $row = mysql_fetch_assoc($result);
+                    $obskey=$row["fObservationModeKEY"];
+                    $numobskeys=mysql_num_rows($result);
+                    mysql_free_result($result);
+
+                    //check dt for on-sequences
+                    $query="SELECT fDiscriminatorThresholdTableKEY FROM Sequences where fSequenceFirst IN (" . $on . ") GROUP BY fDiscriminatorThresholdTableKEY";
+                    $result = mysql_query($query, $db_id);
+                    $numdtkeys=mysql_num_rows($result);
+                    mysql_free_result($result);
+
+
+                    //set limit
+                    $runtimelimit=5;
+                    $unsuitablemaxlimit=15;
+                    $isolatedlimit=0;
+                    $imclimit=0;
+                    $pedrmsrms=0.09;
+                    $scalelimit=1.3;
+                    $inhomlimit=13;
+                    $numstarslimit=20;
+                    $numstarscorlimit=10;
+
+
+                    //check values for infos, warnings and errors
+                    $numerr=0;
+                    if (!empty($on))
+                    {
+                        $color=array("INFO"  => "#000000",
+                                     "WARN"  => "#FF9900",
+                                     "ERROR" => "#FF0000");
+                        printf("<div align='left'><font><ul>\n");
+                        $vals=array("on", "off");
+                        foreach($vals as $num => $val)
+                        {
+                            if (empty(${$val}))
+                                continue;
+                            //get information from the database
+                            GetSequenceValues($db_id, ${$val}, $val, $values);
+
+                            if ($values["Min(fNumStarsCorMed)"][$val]<$numstarscorlimit)
+                                printf("<li style='color:%s'>%s: One of your %s-sequences has less than %s correlated stars (%s). </li>\n",
+                                       $color["WARN"], "WARN", $val, $numstarscorlimit, $values["Min(fNumStarsCorMed)"][$val]);
+                            if ($values["Min(fNumStarsMed)"][$val]<$numstarslimit)
+                                printf("<li style='color:%s'>%s: One of your %s-sequences has less than %s identified stars (%s). </li>\n",
+                                       $color["WARN"], "WARN", $val, $numstarslimit, $values["Min(fNumStarsMed)"][$val]);
+                            if ($values["Min(fRunTime)/60"][$val]<$runtimelimit)
+                                printf("<li style='color:%s'>%s: One of your %s-sequences is shorter than %s min (%s min). </li>\n",
+                                       $color["INFO"], "INFO", $val, $runtimelimit, $values["Min(fRunTime)/60"][$val]);
+                            if ($values["Max(fInhomogeneity)"][$val]>$inhomlimit)
+                                printf("<li style='color:%s'>%s: One of your %s-sequences has an inhomogeneity larger than %s (%s). </li>\n",
+                                       $color["WARN"], "WARN", $val, $inhomlimit, $values["Max(fInhomogeneity)"][$val]);
+                            if ($values["Max(fUnsuitableInner)"][$val]>$unsuitablemaxlimit)
+                                printf("<li style='color:%s'>%s: One of your %s-sequences has more than %s unsuitable inner pixel (%s). </li>\n",
+                                       $color["WARN"], "WARN", $val, $unsuitablemaxlimit, $values["Max(fUnsuitableInner)"][$val]);
+                            if ($values["Max(fIsolatedInner)"][$val]>$isolatedlimit)
+                            printf("<li style='color:%s'>%s: One of your %s-sequences has more than %s isolated inner pixel (%s). </li>\n",
+                                   $color["WARN"], "WARN", $val, $isolatedlimit, $values["Max(fIsolatedInner)"][$val]);
+                            if ($values["Max(fIsolatedMaxCluster)"][$val]>$imclimit)
+                                printf("<li style='color:%s'>%s: One of your %s-sequences has more than %s isolated max cluster (%s). </li>\n",
+                                       $color["WARN"], "WARN", $val, $imclimit, $values["Max(fIsolatedMaxCluster)"][$val]);
+                        }
+                        //check selected dataset for errors
+                        if (!empty($on) && $values["Max(fMeanPedRmsInner)"]["on"]>$values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms)
+                            printf("<li style='color:%s'>%s: One of your on-sequences has a PedRms larger than %s (%s).</li>\n",
+                                   $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms, $values["Max(fMeanPedRmsInner)"]["on"]);
+                        if (!empty($off) && $values["Max(fMeanPedRmsInner)"]["off"]>$values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms)
+                            printf("<li style='color:%s'>%s: One of your off-sequences has a PedRms larger than %s (%s). </li>\n",
+                                   $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms, $values["Max(fMeanPedRmsInner)"]["off"]);
+                        if (!empty($off) && $values["Min(fMeanPedRmsInner)"]["off"]<$values["Avg(fMeanPedRmsInner)"]["on"]-$pedrmsrms)
+                            printf("<li style='color:%s'>%s: One of your off-sequences has a PedRms smaller than %s (%s). </li>\n",
+                                   $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]-$pedrmsrms, $values["Min(fMeanPedRmsInner)"]["off"]);
+                        $scale=$values["Sum(fRunTime)/60"]["on"]/$values["Sum(fRunTime)/60"]["off"];
+                        if ($scale > $scalelimit)
+                            printf("<li style='color:%s'>%s: Your scale factor is larger than %s (%0.2f). Try to find more offdata! </li>\n",
+                                   $color["WARN"], "WARN", $scalelimit, $scale);
+                        $doubleseq=0;
+                        foreach(explode(" ", $_SESSION["sequon"]) as $n => $s)
+                        {
+                            if (ereg($s, $_SESSION["sequoff"]))
+                                $doubleseq++;
+                        }
+                        if ($obskey!=$_SESSION["obsmode"])
+                        {
+                            printf("<li style='color:%s'>%s: You have not selected any Off sequences. </li>\n",
+                                   $color["ERROR"], "ERROR", $doubleseq);
+                            $numerr=$numerr+1;
+                        }
+                        if ($doubleseq>0)
+                        {
+                            printf("<li style='color:%s'>%s: You have selected sequences (%s) as On AND Off. </li>\n",
+                                   $color["ERROR"], "ERROR", $doubleseq);
+                            $numerr=$numerr+1;
+                        }
+                        if ($numrealkeys>1)
+                        {
+                            printf("<li style='color:%s'>%s: You have selected more than one (%s) on source. </li>\n",
+                                   $color["ERROR"], "ERROR", $numrealkeys);
+                            $numerr=$numerr+1;
+                        }
+                        if ($numobskeys>1)
+                        {
+                            printf("<li style='color:%s'>%s: You have selected more than one (%s) different observation modes in your on sequences. </li>\n",
+                                   $color["ERROR"], "WARN", $numobskeys);
+                            //$numerr=$numerr+1;
+                        }     
+                        if ($numdtkeys>1)
+                        {
+                            printf("<li style='color:%s'>%s: Your selected on sequences have more than one (%s) different discriminator threshold tables. </li>\n",
+                                   $color["ERROR"], "WARN", $numdtkeys);
+                        }
+                        if (empty($_SESSION["realsourcekey"]))
+                        {
+                            printf("<li style='color:%s'>%s: The source you selected does not have a real sourcekey, yet. Please insert fRealSourceKEY in the DB for %s (contact: datacenter@astro.uni-wuerzburg.de). </li>\n",
+                                   $color["ERROR"], "ERROR", $sourceson);
+                            $numerr=$numerr+1;
+                        }
+                        if (empty($_SESSION["name"]))
+                        {
+                            printf("<li style='color:%s'>%s: You have to choose a name. </li>\n",
+                                   $color["ERROR"], "ERROR");
+                            $numerr=$numerr+1;
+                        }
+                        if (empty($_SESSION["comment"]))
+                        {
+                            printf("<li style='color:%s'>%s: You have to comment your data set. </li>\n",
+                                   $color["ERROR"], "ERROR");
+                            $numerr=$numerr+1;
+                        }
+                        printf("</ul></font>\n");
+                        printf("</div>");
+
+                        //set runtime in session (has to be after calling GetSequenceValues())
+                        $_SESSION["runtime"]  = $values["Sum(fRunTime)/60"]["on"];
+                        $_SESSION["zdmin"]    = $values["Min(fZenithDistanceMin)"]["on"];
+                        $_SESSION["zdmax"]    = $values["Max(fZenithDistanceMax)"]["on"];
+                        $_SESSION["meanrate"] = $values["Avg(fDataRate)"]["on"];
+                        $_SESSION["psfmean"]  = $values["Avg(fPSF)"]["on"];
+                        $_SESSION["psfmin"]   = $values["Min(fPSF)"]["on"];
+                        $_SESSION["psfmax"]   = $values["Max(fPSF)"]["on"];
+
+                        printf("SequencesOn: %s<br>\n", $_SESSION["sequon"]);
+                        if ($_SESSION["sequoff"]!=" ")
+                            printf("SequencesOff: %s<br>\n", $_SESSION["sequoff"]);
+
+                        //set observation mode
+                        if ($_SESSION["sequoff"]==" ")
+                            $obsmode="Wobble";
+                        else
+                            $obsmode="On";
+                        //get key from db for insert query
+                        $query   = "SELECT fObservationModeKEY FROM ObservationMode WHERE fObservationModeName='".$obsmode."'";
+                        $result  = mysql_query($query);
+                        $row = mysql_fetch_assoc($result);
+                        $_SESSION["obsmode"] = $row["fObservationModeKEY"];
+                        mysql_free_result($result);
+                        printf("Observation mode: %s <br>\n", $obsmode);
+                        printf("RunTime: %s min <br>\n", $_SESSION["runtime"]);
+                        printf("Mean Rate after cleaning: %s Hz <br>\n", $_SESSION["meanrate"]);
+                        printf("Zd: %s - %s deg <br>\n", $_SESSION["zdmin"], $_SESSION["zdmax"]);
+                        printf("PSF: %s (%s - %s) mm <br>\n", $_SESSION["psfmean"], $_SESSION["psfmin"], $_SESSION["psfmax"]);
+
+                        //user name
+                        printf("User name: %s <br><br>\n", $_SERVER['PHP_AUTH_USER']);
+
+                        // data set name and comment: to be inserted by the user
+                        printf("Data set name: &nbsp;<input name='name' type='text' size='20' maxlength='20' value='%s'><br>\n", $_SESSION["name"]);
+                        printf("Comment: &nbsp;<input name='comment' type='text' size='50' maxlength='255' value='%s'><br><br>\n", $_SESSION["comment"]);
+
+
+                        //PrintUpdateDataSetButton() has to be called before InsertDataSet()
+                        //   to ensure that there are no problem with insert and $_SESSION["insert"]
+
+                        //allow 'insert/get dataset' in case no error is found
+                        if ($numerr!=0)
+                        {
+                            printf("Remark: Only data sets without errors can be inserted.<br>");
+                            printf("<font color='red'>Your data set has %s error(s).</font><br><br>", $numerr);
+                            PrintUpdateDataSetButton();
+                        }
+                        else
+                        {
+                            PrintUpdateDataSetButton();
+
+                            if ($_SERVER['PHP_AUTH_USER']=="MAGIC")
+                                printf("<br><br>\n Remark: As user MAGIC you are not allowed to insert data sets into the database. For an own account, please contact datacenter@astro.uni-wuerzburg.de <br><br>\n");
+                            else
+                                InsertDataSet($values, $dataset);
+
+                            printf("<input type='button' value='Get Data Set File' onClick='self.location.href=\"%s&fSendTxt=2\"'>&nbsp;&nbsp;&nbsp;\n", GetClearedURL());
+                        }
+
+
+                        //print table with more information on dataset
+                        printf("<br><br><br>\n");
+                        printf("<table><tr><td colspan='2'><b>More Information on Your Data Set:<b></td></tr>");
+                        printf("<tr><td>Next DataSet# in DB: </td><td>%s</td></tr>", $dataset);
+                        printf("<tr><td valign='top'>SequencesOn:</td><td> %s</td></tr>", $_SESSION["sequon"]);
+                        if ($_SESSION["sequoff"]!=" ")
+                        {
+                            printf("<tr><td valign='top'>SequencesOff:</td><td> %s</td></tr>", $_SESSION["sequoff"]);
+                            printf("<tr><td>Scale factor (On/Off): </td><td>%0.2f</td></tr>", $scale);
+                        }
+                        printf("<tr><td>SourcenamesOn [%s]: </td><td>%s</td></tr>", str_word_count($sourceson, 0, "1234567890+"), $sourceson);
+                        if ($_SESSION["sequoff"]!=" ")
+                            printf("<tr><td>SourcenamesOff [%s]: </td><td>%s</td></tr>", str_word_count($sourcesoff, 0, "1234567890+"), $sourcesoff);
+                        printf("</table>\n");
+
+                        printf("<table border='1'>\n");
+                        printf("<tr><td>Value</td><td>On</td>");
+                        if (!empty($off))
+                            printf("<td>Off</td></tr>\n");
+                        foreach($values as $name => $varname)
+                        {
+                            printf("<tr><td>%s</td>\n", $name);
+                            foreach($vals as $num => $val)
+                                if (!empty(${$val}))
+                                    printf("<td>%s</td>\n", $varname[$val]);
+                            printf("</tr>\n");
+                        }
+                        printf("</table>\n");
+                    }
                 }
-
-                //get next dataset#
-                $query="SELECT fDataSetNumber+1 FROM DataSets ORDER BY fDataSetNumber DESC LIMIT 0,1";
-                $result = mysql_query($query, $db_id);
-                $row = mysql_fetch_assoc($result);
-                $dataset=$row["fDataSetNumber+1"];
-                if (empty($dataset))
-                    $dataset=1;
-                mysql_free_result($result);
-
-                //get sourcenames
-                function GetSources($db_id, $sequences)
-                {
-                    $query="SELECT fSourceName FROM Source LEFT JOIN Sequences USING(fSourceKEY) ";
-                    $query.="WHERE fSequenceFirst IN (" . $sequences . ") GROUP BY fSourceName";
-                    $result = mysql_query($query, $db_id);
-                    while ($row = mysql_fetch_assoc($result))
-                        $sources.=" " . $row["fSourceName"];
-                    mysql_free_result($result);
-                    return $sources;
-                }
-                $sourceson=GetSources($db_id, $on);
-                $sourcesoff=GetSources($db_id, $off);
-
-                //get sourcename for dataset
-                $son=str_replace(" ", "','", trim($sourceson));
-                $query="SELECT fRealSourceKEY, Count(*) FROM Source where fSourcename IN ('" . $son . "') GROUP BY fRealSourceKEY";
-//                printf("q: %s <br>", $query);
-                $result = mysql_query($query, $db_id);
-                $row = mysql_fetch_assoc($result);
-                $numsources=$row["Count(*)"];
-                $numrealkeys=mysql_num_rows($result);
-                $realsourcekey=$row["fRealSourceKEY"];
-                mysql_free_result($result);
-//                printf("found %s sources with real sourcekey %s", $numsources, $realsourcekey);
-//                printf("found %s keys", $numrealkeys);
-
-                //check observationmode for on-sequences
-                $query="SELECT fObservationModeKEY FROM Sequences where fSequenceFirst IN (" . $on . ") GROUP BY fObservationModeKEY";
-                $result = mysql_query($query, $db_id);
-                $numobskeys=mysql_num_rows($result);
-                mysql_free_result($result);
-
-                //check dt for on-sequences
-                $query="SELECT fDiscriminatorThresholdTableKEY FROM Sequences where fSequenceFirst IN (" . $on . ") GROUP BY fDiscriminatorThresholdTableKEY";
-                $result = mysql_query($query, $db_id);
-                $numdtkeys=mysql_num_rows($result);
-                mysql_free_result($result);
-
-
-                //set limit
-                $runtimelimit=5;
-                $unsuitablemaxlimit=15;
-                $isolatedlimit=0;
-                $imclimit=0;
-                $pedrmsrms=0.09;
-                $scalelimit=1.3;
-                $inhomlimit=13;
-                $numstarslimit=20;
-                $numstarscorlimit=10;
-
-
-                //check values for infos, warnings and errors
-                $numerr=0;
-                if (!empty($on))
-                {
-                    $color=array("INFO"  => "#000000",
-                                 "WARN"  => "#FF9900",
-                                 "ERROR" => "#FF0000");
-                    printf("<div align='left'><font><ul>\n");
-                    $vals=array("on", "off");
-                    foreach($vals as $num => $val)
-                    {
-                        if (empty(${$val}))
-                            continue;
-                        GetSequenceValues($db_id, ${$val}, $val, $values);
-
-                        if ($values["Min(fNumStarsCorMed)"][$val]<$numstarscorlimit)
-                            printf("<li style='color:%s'>%s: one of your %s-sequences has less than %s correlated stars (%s)</li>",
-                                   $color["WARN"], "WARN", $val, $numstarscorlimit, $values["Min(fNumStarsCorMed)"][$val]);
-                        if ($values["Min(fNumStarsMed)"][$val]<$numstarslimit)
-                            printf("<li style='color:%s'>%s: one of your %s-sequences has less than %s identified stars (%s)</li>",
-                                   $color["WARN"], "WARN", $val, $numstarslimit, $values["Min(fNumStarsMed)"][$val]);
-                        if ($values["Min(fRunTime)/60"][$val]<$runtimelimit)
-                            printf("<li style='color:%s'>%s: one of your %s-sequences is shorter than %s min (%s min)</li>",
-                                   $color["INFO"], "INFO", $val, $runtimelimit, $values["Min(fRunTime)/60"][$val]);
-                        if ($values["Max(fInhomogeneity)"][$val]>$inhomlimit)
-                            printf("<li style='color:%s'>%s: one of your %s-sequences has an inhomogeneity larger than %s (%s)</li>",
-                                   $color["WARN"], "WARN", $val, $inhomlimit, $values["Max(fInhomogeneity)"][$val]);
-                        if ($values["Max(fUnsuitableInner)"][$val]>$unsuitablemaxlimit)
-                            printf("<li style='color:%s'>%s: one of your %s-sequences has more than %s unsuitable inner pixel (%s)</li>",
-                                   $color["WARN"], "WARN", $val, $unsuitablemaxlimit, $values["Max(fUnsuitableInner)"][$val]);
-                        if ($values["Max(fIsolatedInner)"][$val]>$isolatedlimit)
-                            printf("<li style='color:%s'>%s: one of your %s-sequences has more than %s isolated inner pixel (%s)</li>",
-                                   $color["WARN"], "WARN", $val, $isolatedlimit, $values["Max(fIsolatedInner)"][$val]);
-                        if ($values["Max(fIsolatedMaxCluster)"][$val]>$imclimit)
-                            printf("<li style='color:%s'>%s: one of your %s-sequences has more than %s isolated max cluster (%s)</li>",
-                                   $color["WARN"], "WARN", $val, $imclimit, $values["Max(fIsolatedMaxCluster)"][$val]);
-                    }
-                    if (!empty($on) && $values["Max(fMeanPedRmsInner)"]["on"]>$values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms)
-                        printf("<li style='color:%s'>%s: one of your on-sequences has a PedRms larger than %s (%s)</li>",
-                               $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms, $values["Max(fMeanPedRmsInner)"]["on"]);
-                    if (!empty($off) && $values["Max(fMeanPedRmsInner)"]["off"]>$values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms)
-                        printf("<li style='color:%s'>%s: one of your off-sequences has a PedRms larger than %s (%s)</li>",
-                               $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms, $values["Max(fMeanPedRmsInner)"]["off"]);
-                    if (!empty($off) && $values["Min(fMeanPedRmsInner)"]["off"]<$values["Avg(fMeanPedRmsInner)"]["on"]-$pedrmsrms)
-                        printf("<li style='color:%s'>%s: one of your off-sequences has a PedRms smaller than %s (%s)</li>",
-                               $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]-$pedrmsrms, $values["Min(fMeanPedRmsInner)"]["off"]);
-                    $scale=$values["Sum(fRunTime)/60"]["on"]/$values["Sum(fRunTime)/60"]["off"];
-                    if ($scale > $scalelimit)
-                        printf("<li style='color:%s'>%s: Your scale factor is larger than %s (%0.2f). Try to find more offdata!",
-                               $color["WARN"], "WARN", $scalelimit, $scale);
-                    /*
-                    if (str_word_count($sourceson) > 1)
-                        printf("<li style='color:%s'>%s: You have selected more than one (%s) on source",
-                               $color["WARN"], "WARN", str_word_count($sourceson));
-                    */
-                    $doubleseq=0;
-//                    printf("finding: %s<br>", $sequon);
-                    foreach(explode(" ", $sequon) as $n => $s)
-                    {
-//                        printf("finding %s in %s <br>", $s, $sequoff);
-                        if (ereg($s, $sequoff))
-                        $doubleseq++;
-                    }
-                    if ($doubleseq>0)
-                    {
-                        printf("<li style='color:%s'>%s: You have selected sequences (%s) as On AND Off",
-                               $color["ERROR"], "ERROR", $doubleseq);
-                        $numerr=$numerr+1;
-                    }
-                    if ($numrealkeys>1)
-                    {
-                        printf("<li style='color:%s'>%s: You have selected more than one (%s) on source",
-                               $color["ERROR"], "ERROR", $numrealkeys);
-                        $numerr=$numerr+1;
-                    }
-                    if ($numobskeys>1)
-                    {
-                        printf("<li style='color:%s'>%s: You have selected more than one (%s) different observation modes for your on sequences",
-                               $color["ERROR"], "WARN", $numobskeys);
-//                        $numerr=$numerr+1;
-                    }
-                    if ($numdtkeys>1)
-                    {
-                        printf("<li style='color:%s'>%s: Your selected on sequences have more than one (%s) different discriminator threshold tables ",
-                               $color["ERROR"], "WARN", $numdtkeys);
-                    }
-                    if (empty($_POST["fObservationModeKEY"]) && !empty($_GET["obsmode"]))
-                        $_POST["fObservationModeKEY"]=$_GET["obsmode"];
-                    if ($_POST["fObservationModeKEY"]==3 && empty($off))
-                    {
-                        printf("<li style='color:%s'>%s: You have selected on/off mode, but you haven't chosen any off sequences.",
-                               $color["ERROR"], "WARN");
-//                        $numerr=$numerr+1;
-                    }
-                    if (empty($realsourcekey))
-                    {
-                        printf("<li style='color:%s'>%s: The source you selected doesn't have a real sourcekey yet. Please insert fRealSourceKEY in the DB for %s",
-                               $color["ERROR"], "ERROR", $sourceson);
-                        $numerr=$numerr+1;
-                    }
-                    if (empty($_POST["fObservationModeKEY"]))
-                    {
-                        printf("<li style='color:%s'>%s: You have to choose an observation mode.",
-                               $color["ERROR"], "ERROR");
-                        $numerr=$numerr+1;
-                    }
-                    if (empty($_POST["fUserKEY"]))
-                    {
-                        printf("<li style='color:%s'>%s: You have to choose your username.",
-                               $color["ERROR"], "ERROR");
-                        $numerr=$numerr+1;
-                    }
-                    if (empty($_POST["name"]))
-                    {
-                        printf("<li style='color:%s'>%s: You have to choose a name.",
-                               $color["ERROR"], "ERROR");
-                        $numerr=$numerr+1;
-                    }
-                    if (empty($_POST["comment"]))
-                    {
-                        printf("<li style='color:%s'>%s: You have to comment your dataset.",
-                               $color["ERROR"], "ERROR");
-                        $numerr=$numerr+1;
-                    }
-                    //                printf("<li></li>");
-                    printf("</ul></font>\n");
-
-                    printf("<div align='left'>");
-                    printf("SequencesOn: %s<br>", $sequon);
-                    printf("SequencesOff: %s<br>", $sequoff);
-                    $insquery[0]="INSERT DataSets SET fDataSetNumber=" . $dataset . ", fUserKEY=" . $_POST["fUserKEY"];
-                    $insquery[0].=", fComment='" . $_POST["comment"] . "', fObservationModeKEY=" . $_POST["fObservationModeKEY"];
-                    $insquery[0].=", fDataSetName='" . $_POST["name"] . "', fSourceKEY= " . $realsourcekey;
-                    $insquery[0].=", fRunStart='" . $values["Min(fRunStart)"]["on"];
-                    $insquery[0].="', fRunStop='" . $values["Max(fRunStop)"]["on"];
-                    $insquery[0].="', fZenithDistanceMin=" . $values["Min(fZenithDistanceMin)"]["on"];
-                    $insquery[0].=", fZenithDistanceMax=" . $values["Max(fZenithDistanceMax)"]["on"];
-                    $insquery[0].=", fRunTime=" . $values["Sum(fRunTime)/60"]["on"];
-                    $insquery[1]="INSERT DataSetProcessStatus SET fDataSetNumber=" . $dataset . ", fDataSetInserted=Now()";
-                    $i=2;
-                    foreach(explode(" ", trim($sequon)) as $key => $sequ)
-                    {
-                        $insquery[$i]="INSERT DataSetSequenceMapping SET fDataSetNumber=" . $dataset;
-                        $insquery[$i].=", fSequenceFirst=" . $sequ . ", fOnOff=1";
-                        $i=$i+1;
-                    }
-                    if (!empty($off))
-                    {
-                        foreach(explode(" ", trim($sequoff)) as $key => $sequ)
-                        {
-                            $insquery[$i]="INSERT DataSetSequenceMapping SET fDataSetNumber=" . $dataset;
-                            $insquery[$i].=", fSequenceFirst=" . $sequ . ", fOnOff=2";
-                            $i=$i+1;
-                        }
-                    }
-                    foreach($insquery as $num => $q)
-                    {
-                        if (!empty($_POST["insert"]) && $numerr==0)
-                        {
-                            printf("Inserted Query #%s: %s<br>", $num, $q);
-                            $insresult=mysql_query($q);
-                            if (mysql_errno()>0)
-                                printf("&nbsp; Errorno: %s <br>", mysql_errno());
-                            if (mysql_error()!="")
-                                printf("&nbsp; Errormsg: %s <br>", mysql_error());
-                            if (mysql_info()!="")
-                                printf("&nbsp; Info: %s <br>", mysql_info());
-                            printf("&nbsp; Affected Rows: %s <br>", mysql_affected_rows());
-                            mysql_free_result($insresult);
-                            if (mysql_errno()>0)
-                            {
-                                printf("ERROR => stop inserting");
-                                break;
-                            }
-                        }
-                    }
-                    printf("</div>");
-                    if (empty($_POST["name"]) && !empty($_GET["name"]))
-                        $_POST["name"]=$_GET["name"];
-                    if (empty($_POST["comment"]) && !empty($_GET["comment"]))
-                        $_POST["comment"]=$_GET["comment"];
-                    if (empty($_POST["fUserKEY"]) && !empty($_GET["username"]))
-                        $_POST["fUserKEY"]=$_GET["username"];
-                    printf("Name: &nbsp;<input name='name' type='text' size='20' maxlength='20' value='%s'><br>\n", $_POST["name"]);
-                    printf("Comment: &nbsp;<input name='comment' type='text' size='50' maxlength='255' value='%s'><br>\n", $_POST["comment"]);
-
-                    $query   = "SELECT fObservationModeKEY, fObservationModeName FROM ObservationMode ORDER BY fObservationModeName";
-                    $result  = mysql_query($query);
-                    if (!$result)
-                        printf("-N/A-");
-
-                    $numrows = mysql_num_rows($result);
-
-                    printf("ObservationMode&nbsp;<select name='fObservationModeKEY' size='1' class='Width'>\n");
-                    while ($row = mysql_fetch_row($result))
-                    {
-                        if (!empty($_POST["fObservationModeKEY"]) && $_POST["fObservationModeKEY"]==$row[0])
-                            printf("<option value='%s' selected>%s</option>\n", $row[0], $row[1]);
-                        else
-                            printf("<option value='%s'>%s</option>\n", $row[0], $row[1]);
-                    }
-                    printf("</select><br>\n");
-                    mysql_free_result($result);
-
-                    $query   = "SELECT fUserKEY, fUserName FROM User ORDER BY fUserKEY";
-                    $result  = mysql_query($query);
-                    if (!$result)
-                        printf("-N/A-");
-
-                    $numrows = mysql_num_rows($result);
-
-                    printf("UserName&nbsp;<select name='fUserKEY' size='1' class='Width'>\n");
-                    while ($row = mysql_fetch_row($result))
-                    {
-                        if (!empty($_POST["fUserKEY"]) && $_POST["fUserKEY"]==$row[0])
-                            printf("<option value='%s' selected>%s</option>\n", $row[0], $row[1]);
-                        else
-                            printf("<option value='%s'>%s</option>\n", $row[0], $row[1]);
-                    }
-                    printf("</select><br>\n");
-                    mysql_free_result($result);
-
-                    if ($numerr!=0)
-                    {
-                        printf("Remark: only datasets without errors can be inserted.<br>");
-                        printf("Your dataset has %s error(s).<br>", $numerr);
-                    }
-                    printf("<input type='checkbox' name='insert' value='On'>insert\n");
-
-                    printf("<table><tr><td colspan='2' align='center'>Dataset</td></tr>");
-                    printf("<tr><td>proposed DataSet#: </td><td>%s</td></tr>", $dataset);
-                    printf("<tr><td valign='top'>SequencesOn:</td><td> %s</td></tr>", $sequon);
-                    if (!empty($sequoff))
-                        printf("<tr><td valign='top'>SequencesOff:</td><td> %s</td></tr>", $sequoff);
-                    printf("<tr><td>Scale: </td><td>%0.2f</td></tr>", $scale);
-                    printf("<tr><td>SourcenamesOn[%s]: </td><td>%s</td></tr>", str_word_count($sourceson), $sourceson);
-                    printf("<tr><td>SourcenamesOff[%s]: </td><td>%s</td></tr>", str_word_count($sourcesoff), $sourcesoff);
-                    printf("</table>\n");
-
-                    printf("<table border='1'>\n");
-                    printf("<tr><td>Value</td><td>On</td>");
-                    if (!empty($off))
-                        printf("<td>Off</td></tr>\n");
-                    foreach($values as $name => $varname)
-                    {
-                        printf("<tr><td>%s</td>\n", $name);
-                        foreach($vals as $num => $val)
-                            if (!empty(${$val}))
-                                printf("<td>%s</td>\n", $varname[$val]);
-                        printf("</tr>\n");
-                    }
-                    printf("</table>\n");
-                }
+                else
+                    printf("<input type='submit' value='Get Data Set'><br><br>\n");
 
                 printf("</div>\n");
-                /*
-                printf("<table border='1'><tr>\n");
-                printf("<td>--</td>\n");
-                foreach($values as $name => $varname)
-                        printf("<td>%s</td>\n", $name);
-                $vals=array("on", "off");
-                foreach($vals as $num => $val)
-                {
-                    GetSequenceValues($db_id, ${$val}, $val, $values);
-                    printf("</tr><tr>\n");
-                    printf("<td>On</td>\n");
-                    foreach($values as $name => $varname)
-                        printf("<td>%s</td>\n", $varname[$val]);
-                }
-                printf("</tr></table>\n");
-                */
-
-                printf("</center>\n");
                 printf("</td>\n");
                 printf("</tr>\n");
@@ -832,4 +750,5 @@
 
             mysql_free_result($result0);
+            mysql_free_result($result1);
         }
         mysql_close($db_id);
@@ -843,37 +762,127 @@
     include ("magicdefs.php");
 
+//    $debug="yes";
+    session_start();
+    if ($debug)
+    {
+        echo "GET: ";
+        print_r($_GET);
+        echo " <br>";
+
+        echo "POST: ";
+        print_r($_POST);
+        echo " <br>";
+    }
+
+    // set values given by $_GET
+    foreach ($_GET as $element => $value)
+        $_SESSION[$element]=$value;
+
+    // unset values in case of 'Reset'
+    if (empty($_GET))
+        foreach($_SESSION as $element => $value)
+            unset($_SESSION[$element]);
+
+    // set values given by $_POST
+    if (!empty($_POST))
+        foreach ($_POST as $element => $value)
+            $_SESSION[$element]=$value;
+
+
+
+    if ($debug)
+        print_r($_SESSION);
+
+    // remove sequence from selection
+    if (!empty($_POST) && $_SESSION["DisplaySelected"]=="yes" && $_SESSION["DisplaySelectedOld"]=="yes")
+        foreach ($_SESSION as $key => $element)
+            if (($_SESSION[$key]=="On") //value is set
+                && (ereg("^[0-9]*ON$", $key) || ereg("^[0-9]*Off$", $key)) // it is a sequence number
+                && (!$_POST[$key]==On)) // the sequence is not given in $_POST any more
+                unset($_SESSION[$key]);
+
+    //store old value of $_SESSION["DisplaySelected"]
+    if ($_SESSION["DisplaySelected"]=="yes")
+    {
+        unset($_SESSION["fNumStart"]);
+        $_GET["fNumStart"]=0;
+        $_SESSION["DisplaySelectedOld"]="yes";
+    }
+    else
+        $_SESSION["DisplaySelectedOld"]="no";
+
+    $_SESSION["sequon"]=" ";
+    $_SESSION["sequoff"]=" ";
+    foreach($_SESSION as $key => $val)
+        if ($val=="On")
+        {
+            if (ereg("^[0-9]*ON$", $key))
+                $_SESSION["sequon"].=str_replace("ON", " ", $key);
+            if (ereg("^[0-9]*Off$", $key))
+                $_SESSION["sequoff"].=str_replace("Off", " ", $key);
+        }
+    if ($_SESSION["sequon"]==" " && $_SESSION["sequoff"]==" ")
+    {
+        $_SESSION["DisplaySelected"]="no";
+        $_SESSION["DisplaySelectedOld"]="no";
+    }
+
     ini_set("display_errors", "On");
     ini_set("mysql.trace_mode", "On");
 
-    $sitepw="\$1\$ml/Gld67\$zOvhC4vFrLCkbAzQs2swo1";
-    $siteuser="dcdb";
-
-
-    if (!isset($_SERVER['PHP_AUTH_USER']) || crypt($_SERVER['PHP_AUTH_PW'], $sitepw)!=$sitepw || $_SERVER['PHP_AUTH_USER']!=$siteuser)
+    if (!isset($_SERVER['PHP_AUTH_USER']))
     {
         header('WWW-Authenticate: Basic realm="Build Datasets"');
         header('HTTP/1.0 401 Unauthorized');
-        echo 'Cancelled.';
         return;
     }
     else
     {
-//    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
-//    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
-//    printf("pw: %s", crypt($_SERVER['PHP_AUTH_PW']));
-
-        if (crypt($_SERVER['PHP_AUTH_PW'], $sitepw)!=$sitepw || $_SERVER['PHP_AUTH_USER']!=$siteuser)
-        {
-            printf("<br>pw or user incorrect<br>");
+        $db_id = mysql_connect($host, $user, $pw);
+        if ($db_id==FALSE)
+        {
+            printf("mysql_connect returned the following error:<br>");
+            printf("%s<br>", mysql_error());
+            die("");
+        }
+
+        $userquery   = "SELECT fUserName, fPassword, fUserKEY FROM " . $db . ".User ORDER BY fUserKEY";
+        $userresult  = mysql_query($userquery);
+        if (!$userresult)
+            echo "query failed";
+        $validuser="no";
+        while ($userrow = mysql_fetch_assoc($userresult))
+        {
+//            echo crypt($_SERVER['PHP_AUTH_PW']). "<br>";
+            if (crypt($_SERVER['PHP_AUTH_PW'], $userrow["fPassword"])==$userrow["fPassword"]
+                && $_SERVER['PHP_AUTH_USER']==$userrow["fUserName"])
+            {
+                $validuser="yes";
+                $_SESSION["user"]=$userrow["fUserKEY"];
+            }
+        }
+        mysql_free_result($userresult);
+        if ($validuser=="no")
+        {
+            printf("<br>Password or username incorrect<br>");
             return;
         }
     }
 
-    if (!empty($_GET["fSendTxt"]))
-    {
-        header("Content-type: application/octet");
-        header("Content-Disposition: attachment; filename=query-result.txt");
-
-        PrintPage("0", $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $limitsmean, $limitsmin, $limitsmax, $needs);
+    if (!empty($_SESSION["fSendTxt"]))
+    {
+        header("Content-Type: application/octet");
+        switch($_SESSION["fSendTxt"])
+        {
+        case 1:
+            header("Content-Disposition: attachment; filename=query-result.txt");
+            PrintPage("0", $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $limitsmean, $limitsmin, $limitsmax, $needs);
+            break;
+        case 2:
+            header("Content-Disposition: attachment; filename=dataset_".str_replace(" ", "_", $_SESSION["name"]).".txt");
+            PrintDataSetFile();
+            echo "hallo\n";
+        }
+        unset($_SESSION["fSendTxt"]);
     }
     else
@@ -883,7 +892,9 @@
         $environment = sizeof($_GET);
 
-        InitGet($_GET);
-        if (empty($_GET["fPrintTable"]))
-            PrintForm($_GET, $host, $user, $pw, $db, $limitsmean, $limitsmin, $limitsmax, $alias);
+        // Find out whether it is the first call to the php script
+        $first = empty($_GET["fRunMin"]) && empty($_GET["fRunMax"]);
+        InitBuildDataSets($first);
+        if (empty($_SESSION["fPrintTable"]))
+            PrintForm($host, $user, $pw, $db, $limitsmean, $limitsmin, $limitsmax, $alias);
 
         if ($environment==0)
@@ -891,5 +902,5 @@
         else
         {
-            if (empty($_GET["fPrintTable"]))
+            if (empty($_SESSION["fPrintTable"]))
                 PrintPage("1", $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $limitsmean, $limitsmin, $limitsmax, $needs);
             else
@@ -902,4 +913,4 @@
     ini_set("display_errors", "Off");
     ini_set("mysql.trace_mode", "Off");
-}
+
 ?>
