]> lifelog.hopto.org Git - LifeLog.git/commitdiff
Sun stable v.1.5 Initial. Knock your socks off.
authorMetabox <redacted>
Sat, 10 Aug 2019 01:02:24 +0000 (11:02 +1000)
committerMetabox <redacted>
Sat, 10 Aug 2019 01:02:24 +0000 (11:02 +1000)
htdocs/cgi-bin/config.cgi
htdocs/cgi-bin/login_ctr.cgi
htdocs/cgi-bin/main.cgi
htdocs/cgi-bin/stats.cgi
htdocs/cgi-bin/wsrc/main.css
htdocs/cgi-bin/wsrc/main_earth.css [new file with mode: 0644]
htdocs/cgi-bin/wsrc/main_moon.css [new file with mode: 0644]
htdocs/cgi-bin/wsrc/main_sun.css [new file with mode: 0644]

index 54051bd40d5c2168f99d448f1521ca3798520e44..0278f1d6d3996850b7b9af9b2149e3de1c192164 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -w
 #
-# Programed in vim by: Will Budic
+# Programed by: Will Budic
 # Open Source License -> https://choosealicense.com/licenses/isc/
 #
 use strict;
@@ -19,20 +19,22 @@ use DateTime::Duration;
 use Text::CSV;
 
 #DEFAULT SETTINGS HERE!
-our $REC_LIMIT   = 25;
-our $TIME_ZONE   = 'Australia/Sydney';
-our $LANGUAGE     = 'English';
-our $PRC_WIDTH   = '70';
-our $LOG_PATH    = '../../dbLifeLog/';
-our $SESSN_EXPR  = '+30m';
-our $DATE_UNI    = '0';
-our $RELEASE_VER = '1.4';
-our $AUTHORITY   = '';
-our $IMG_W_H     = '210x120';
-our $AUTO_WRD_LMT= 200;
-our $AUTO_LOGIN  = 0;
-our $FRAME_SIZE  = 0;
-our $RTF_SIZE  = 0;
+our $REC_LIMIT    = 25;
+our $TIME_ZONE    = 'Australia/Sydney';
+our $LANGUAGE     = 'English';
+our $PRC_WIDTH    = '70';
+our $LOG_PATH     = '../../dbLifeLog/';
+our $SESSN_EXPR   = '+30m';
+our $DATE_UNI     = '0';
+our $RELEASE_VER  = '1.4';
+our $AUTHORITY    = '';
+our $IMG_W_H      = '210x120';
+our $AUTO_WRD_LMT = 200;
+our $AUTO_LOGIN   = 0;
+our $FRAME_SIZE   = 0;
+our $RTF_SIZE     = 0;
+our $THEME        = 0;
+our $TH_CSS       = 'main.css';
 #END OF SETTINGS
 
 #This is the OS developer release key, replace on istallation. As it is not secure.
@@ -51,8 +53,8 @@ my  $sys = `uname -n`;
 #my $acumululator="";
 
 if(!$userid||!$dbname){
-       print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid");
-       exit;
+    print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid");
+    exit;
 }
 
 my $database = $LOG_PATH.$dbname;
@@ -65,38 +67,51 @@ my $today  = DateTime->now;
 my $tz     = $cgi->param('tz');
 my $csvp   = $cgi->param('csv');
    
-        switch ($csvp){
-                               case "1" {&exportLogToCSV}
-                               case "2" {&exportLogToCSV}
-                               case "3" {&exportCategoriesToCSV}
-                               case "4" {&exportCategoriesToCSV}                               
-        }
-
-       if($cgi->param('data_cat')){
-                       &importCatCSV;
-        }elsif($cgi->param('data_log')){
-                       &importLogCSV;
-        }  
-               
+     switch ($csvp){
+                case "1" {&exportLogToCSV}
+                case "2" {&exportLogToCSV}
+                case "3" {&exportCategoriesToCSV}
+                case "4" {&exportCategoriesToCSV}
+     }
+
+    if($cgi->param('data_cat')){
+            &importCatCSV;
+     }elsif($cgi->param('data_log')){
+            &importLogCSV;
+     }  
+        
 #####################
-       &getConfiguration;
+    &getConfiguration;
 #####################
 $today->set_time_zone( $TIME_ZONE );
-       
+    
 
 my $stmtCat = 'SELECT * FROM CAT ORDER BY ID;';
 my $status = "Ready for change!";
 
+
 ###############
 &processSubmit;
 ###############
 
+my $BGCOL = '#c8fff8';
+    if ( $THEME eq 'Sun' ) {
+        $BGCOL = '#D4AF37';
+        $TH_CSS = "main_sun.css";
+    }elsif ($THEME eq 'Moon'){
+        $TH_CSS = "main_moon.css";
+        $BGCOL = '#000000';
+
+    }elsif ($THEME eq 'Earth'){
+        $TH_CSS = "main_earth.css";
+        $BGCOL = 'green';
+    }
 
 print $cgi->header(-expires=>"+6s", -charset=>"UTF-8");
-print $cgi->start_html(-title => "Personal Log", -BGCOLOR=>"#c8fff8",
-               -onload  => "loadedBody();",               
-                   -style   => [
-          { -type => 'text/css', -src => 'wsrc/main.css' },
+print $cgi->start_html(-title => "Personal Log", -BGCOLOR=>"$BGCOL",
+           -onload  => "loadedBody();",                   
+            -style   => [
+          { -type => 'text/css', -src => "wsrc/$TH_CSS" },
           { -type => 'text/css', -src => 'wsrc/jquery-ui.css' },
           { -type => 'text/css', -src => 'wsrc/jquery-ui.theme.css' },
           {
@@ -123,7 +138,7 @@ print $cgi->start_html(-title => "Personal Log", -BGCOLOR=>"#c8fff8",
           },
           { -type => 'text/javascript', -src => 'wsrc/jquery.poshytip.js' }
       ],
-               );
+            );
 
 
 print qq(<div id="menu" title="To close this menu click on its heart, and wait.">
@@ -144,196 +159,213 @@ print qq(<div id="menu" title="To close this menu click on its heart, and wait."
 
 
 my $tbl = '<table id="cnf_cats" class="tbl" border="1" width="'.$PRC_WIDTH.'%">
-                 <tr class="r0"><td colspan="4"><b>* CATEGORIES CONFIGURATION *</b></td></tr>
+              <tr class="r0"><td colspan="4"><b>* CATEGORIES CONFIGURATION *</b></td></tr>
             <tr class="r1"><th>ID</th><th>Category</th><th  align="left">Description</th></tr>
           ';
 $dbs = dbExecute($stmtCat);
 while(my @row = $dbs->fetchrow_array()) {
-       if($row[0]>0){ 
-          $tbl = $tbl. 
-          '<tr class="r0"><td>'.$row[0].'</td>
+    if($row[0]>0){ 
+       $tbl = $tbl. 
+       '<tr class="r0"><td>'.$row[0].'</td>
             <td><input name="nm'.$row[0].'" type="text" value="'.$row[1].'" size="12"></td>
             <td align="left"><input name="ds'.$row[0].'" type="text" value="'.$row[2].'" size="64"></td>
-           </tr>';
-       }
+        </tr>';
+    }
  }
 
 my  $frm = qq(
-        <form id="frm_config" action="config.cgi">).$tbl.qq(
-         <tr class="r1">
-                <td><input type="text" name="caid" value="" size="3"/></td>
-                <td><input type="text" name="canm" value="" size="12"/></td>
-                <td align="left"><input type="text" name="cade" value="" size="64"/></td>               
-               </tr>
-         <tr class="r1">
-                <td colspan="2"><a href="#bottom">&#x21A1;</a>&nbsp;&nbsp;&nbsp;<input type="submit" value="Add New Category" onclick="return submitNewCategory()"/></td>
-                <td colspan="1" align="right"><b>Categories Configuration In -> $dbname</b>&nbsp;<input type="submit" value="Change"/></td>
-               </tr>
-               <tr class="r1">
-                 <td colspan="3"><div style="text-align:left; float"><font color="red">WARNING!</font> 
-                  Removing or changing categories is permanent! Each category one must have an unique ID. 
-                        Blank a category name to remove it. LOG records will change to the 
-                        <b>Unspecified</b> (id 1) category! And the categories <b>Unspecified</b>, <b>Income</b> and <b>Expense</b>  can't be removed!
-                        </div>
-                       </td>                   
-               </tr>
-               </table><input type="hidden" name="cchg" value="1"/></form><br>);
-        
+     <form id="frm_config" action="config.cgi">).$tbl.qq(
+      <tr class="r1">
+         <td><input type="text" name="caid" value="" size="3"/></td>
+         <td><input type="text" name="canm" value="" size="12"/></td>
+         <td align="left"><input type="text" name="cade" value="" size="64"/></td>              
+        </tr>
+      <tr class="r1">
+         <td colspan="2"><a href="#bottom">&#x21A1;</a>&nbsp;&nbsp;&nbsp;<input type="submit" value="Add New Category" onclick="return submitNewCategory()"/></td>
+         <td colspan="1" align="right"><b>Categories Configuration In -> $dbname</b>&nbsp;<input type="submit" value="Change"/></td>
+        </tr>
+        <tr class="r1">
+          <td colspan="3"><div style="text-align:left; float"><font color="red">WARNING!</font> 
+           Removing or changing categories is permanent! Each category one must have an unique ID. 
+             Blank a category name to remove it. LOG records will change to the 
+             <b>Unspecified</b> (id 1) category! And the categories <b>Unspecified</b>, <b>Income</b> and <b>Expense</b>  can't be removed!
+             </div>
+            </td>                      
+        </tr>
+        </table><input type="hidden" name="cchg" value="1"/></form><br>);
+     
 
 $tbl = qq(<table id="cnf_sys" class="tbl" border="1" width="$PRC_WIDTH%">
-                 <tr class="r0"><td colspan="3"><b>* SYSTEM CONFIGURATION *</b></td></tr>
+              <tr class="r0"><td colspan="3"><b>* SYSTEM CONFIGURATION *</b></td></tr>
             <tr class="r1" align="left">
-                                                   <th width="20%">Variable</th>
-                                                   <th width="20%">Value</th>
-                                                               <th width="60%">Description</th>
-                                               </tr>
+                            <th width="20%">Variable</th>
+                            <th width="20%">Value</th>
+                                <th width="60%">Description</th>
+                        </tr>
        );
 my $stm = 'SELECT ID, NAME, VALUE, DESCRIPTION FROM CONFIG;';
 $dbs = $db->prepare( $stm );
 $rv = $dbs->execute() or die or die "<p>Error->"& $DBI::errstri &"</p>";
 
 while(my @row = $dbs->fetchrow_array()) {
-                my $i = $row[0];
-                my $n = $row[1];
-                my $v = $row[2];
-                my $d = $row[3];
-                if($n eq "TIME_ZONE"){
-                         $n = '<a href="time_zones.cgi" target=_blank>'.$n.'</a>';
-                         if($tz){
-                                  $v = $tz;
-                         }
-                         $v = '<input name="var'.$i.'" type="text" value="'.$v.'" size="12">';         
-                }
-                elsif($n eq "DATE_UNI"){
-                         my($l,$u)=("","");
-                               if($v == 0){
-                                        $l = "SELECTED"
-                               }
-                               else{
-                            $u = "SELECTED"
-                               }
+         my $i = $row[0];
+         my $n = $row[1];
+         my $v = $row[2];
+         my $d = $row[3];
+         if($n eq "TIME_ZONE"){
+              $n = '<a href="time_zones.cgi" target=_blank>'.$n.'</a>';
+              if($tz){
+                   $v = $tz;
+              }
+              $v = '<input name="var'.$i.'" type="text" value="'.$v.'" size="12">';            
+         }
+         elsif($n eq "DATE_UNI"){
+              my($l,$u)=("","");
+                if($v == 0){
+                     $l = "SELECTED"
+                }
+                else{
+                 $u = "SELECTED"
+                }
         $v = qq(<select id="dumi" name="var$i">
-                                        <option value="0" $l>Locale</option>
-                                                                <option value="1" $u>Universal</option>
-                                                               </select>);
-                }
-                elsif($n eq "AUTO_LOGIN"){
-                         my($l,$u)=("","");
-                               if($v == 0){
-                                        $l = "SELECTED"
-                               }
-                               else{
-                            $u = "SELECTED"
-                               }
+                         <option value="0" $l>Locale</option>
+                                 <option value="1" $u>Universal</option>
+                                </select>);
+         }
+         elsif($n eq "AUTO_LOGIN"){
+              my($l,$u)=("","");
+                if($v == 0){
+                     $l = "SELECTED"
+                }
+                else{
+                 $u = "SELECTED"
+                }
         $v = qq(<select id="almi" name="var$i">
-                          <option value="0" $l>Disabled</option>
-                          <option value="1" $u>Enabled</option>
-                       </select>);
-                }
-                elsif($n eq "FRAME_SIZE"){
-                         my($l,$m,$s, $t)=("","");
-                               if($v == 0){
-                                        $l = "SELECTED"
-                               }
-                               elsif($v == 1){
-                                        $m = "SELECTED"
-                               }
-                               elsif($v == 2){
-                                        $s = "SELECTED"
-                               }
-                               else{
-                                $t = $v;
-                               }               
-               $v = qq(<select id="frms" name="var$i">
-                          <option value="0" $l>Large</option>
-                          <option value="1" $m>Medium</option>
-                                  <option value="2" $s>Small</option>
-                                  <option value="3" $t>---</option>
-                       </select>);     
-               }
-               elsif($n eq "RTF_SIZE"){
-                               my($l,$m,$s, $t)=("","");
-                               if($v == 0){
-                                        $l = "SELECTED"
-                               }
-                               elsif($v == 1){
-                                        $m = "SELECTED"
-                               }
-                               elsif($v == 2){
-                                        $s = "SELECTED"
-                               }
-                               else{
-                                $t = $v;
-                               }               
-               $v = qq(<select id="rtfs" name="var$i">
-                          <option value="0" $l>Large</option>
-                          <option value="1" $m>Medium</option>
-                                  <option value="2" $s>Small</option>
-                                  <option value="3" $t>---</option>
-                       </select>);     
-
-               }
-               elsif($n ne "RELEASE_VER"){              
-                        $v = '<input name="var'.$i.'" type="text" value="'.$v.'" size="12">';
-               }
-
-
-          $tbl = qq($tbl 
-          <tr class="r0" align="left">
-                   <td>$n</td>
-                   <td>$v</td>
-                               <td>$d</td>   
-           </tr>);
+                   <option value="0" $l>Disabled</option>
+                   <option value="1" $u>Enabled</option>
+                </select>);
+         }
+         elsif($n eq "FRAME_SIZE"){
+              my($l,$m,$s, $t)=("","");
+                if($v == 0){
+                     $l = "SELECTED"
+                }
+                elsif($v == 1){
+                     $m = "SELECTED"
+                }
+                elsif($v == 2){
+                     $s = "SELECTED"
+                }
+                else{
+                      $t = $v;
+                }              
+        $v = qq(<select id="frms" name="var$i">
+                   <option value="0" $l>Large</option>
+                   <option value="1" $m>Medium</option>
+                   <option value="2" $s>Small</option>
+                   <option value="3" $t>---</option>
+                </select>);    
+        }
+        elsif($n eq "RTF_SIZE"){
+                my($l,$m,$s, $t)=("","");
+                if($v == 0){
+                     $l = "SELECTED"
+                }
+                elsif($v == 1){
+                     $m = "SELECTED"
+                }
+                elsif($v == 2){
+                     $s = "SELECTED"
+                }
+                else{
+                      $t = $v;
+                }              
+        $v = qq(<select id="rtfs" name="var$i">
+                   <option value="0" $l>Large</option>
+                   <option value="1" $m>Medium</option>
+                   <option value="2" $s>Small</option>
+                   <option value="3" $t>---</option>
+                </select>);    
+
+        }
+        elsif($n eq "THEME"){
+            my($s0,$s1,$s2,$s3)=("","","","");
+             if($v eq 'Sun'){
+                $s1 = "SELECTED";
+            }
+            elsif($v == 'Moon'){
+                $s2 = "SELECTED";
+            }
+
+            $v = qq(<select id="theme" name="var$i">
+                   <option $s0>Standard</option>
+                   <option $s1>Sun</option>
+                   <option $s2>Moon</option>
+                   <option $s3>Earth</option>
+                </select>);    
+        }
+        elsif($n ne "RELEASE_VER"){             
+             $v = '<input name="var'.$i.'" type="text" value="'.$v.'" size="12">';
+        }
+
+
+
+       $tbl = qq($tbl 
+       <tr class="r0" align="left">
+            <td>$n</td>
+            <td>$v</td>
+                <td>$d</td>   
+        </tr>);
 }
 
 
 my  $frmVars = qq(
-        <form id="frm_vars" action="config.cgi">$tbl
-         <tr class="r1">               
-                <td colspan="3" align=right><b>System Settings In -> $dbname</b>&nbsp;<input type="submit" value="Change"/></td>
-               </tr>   
-               <input type="hidden" name="sys" value="1"/>
-               </table></form><br>);
+     <form id="frm_vars" action="config.cgi">$tbl
+      <tr class="r1">          
+         <td colspan="3" align=right><b>System Settings In -> $dbname</b>&nbsp;<input type="submit" value="Change"/></td>
+        </tr>  
+        <input type="hidden" name="sys" value="1"/>
+        </table></form><br>);
 
 
 
 $tbl = qq(<table id="cnf_fix" class="tbl" border="0" width="$PRC_WIDTH%">
-                 <tr class="r0"><td colspan="2"><b>* DATA FIX *</b></td></tr>
-                        );
+              <tr class="r0"><td colspan="2"><b>* DATA FIX *</b></td></tr>
+             );
 my $cats = &cats;                       
 my  $frmDB = qq(
-        <form id="frm_DB" action="config.cgi">$tbl
-               <tr class="r1" align="left"><th>Extra Action</th><th>Description</th></tr>
-               <tr class="r0" align="left"><td><input type="checkbox" name="reset_cats"/>Reset Categories</td><td>Resets Categories to factory values (will initiate logoff).</td></tr>
-               <tr class="r1" align="left"><td><input type="checkbox" name="reset_syst"/>Reset Settings</td><td>Resets system settings to default values.</td></tr>
-               <tr class="r0" align="left"><td><input type="checkbox" name="wipe_syst"/>Wipe Settings</td><td>Resets and wipes system settings for migration  (will initiate logoff).</td></tr>
-               <tr class="r1" align="left"><td><input type="checkbox" name="del_by_cats"/>Delete by Category <font color=red>*UD</font><br>$cats</td><td>Selects and displays by category logs to delete.</td></tr>
-               <tr class="r0" align="left"><td><input type="checkbox" name="del_from"/>Delete from Date <font color=red>*UD</font><br><input id="fldFrom" size/></td><td>Selects and displays from a date to into deep past logs to delete..</td></tr>
-               <tr class="r1">         
-                <td colspan="2" align="right"><b>Data maintenance for -> $dbname</b>&nbsp;<input type="submit" value="Fix"/></td>
-               </tr>                   
-               <tr class="r1" align="left">
-                    <td colspan="2">Perform this change/check in the event of experiencing data problems. Or periodically for data check and maintenance. <br>
-                                                <font color="red">WARNING!</font> Checking any of the above extra actions will cause loss
-                                                                                                 of your changes. Please, export/backup first.<br><font color=red>*UD</font> - Under Development, not working!</td>
-               </tr>
-               <input type="hidden" name="db_fix" value="1"/>
-               </table></form><br>
-               );
+     <form id="frm_DB" action="config.cgi">$tbl
+        <tr class="r1" align="left"><th>Extra Action</th><th>Description</th></tr>
+        <tr class="r0" align="left"><td><input type="checkbox" name="reset_cats"/>Reset Categories</td><td>Resets Categories to factory values (will initiate logoff).</td></tr>
+        <tr class="r1" align="left"><td><input type="checkbox" name="reset_syst"/>Reset Settings</td><td>Resets system settings to default values.</td></tr>
+        <tr class="r0" align="left"><td><input type="checkbox" name="wipe_syst"/>Wipe Settings</td><td>Resets and wipes system settings for migration  (will initiate logoff).</td></tr>
+        <tr class="r1" align="left"><td><input type="checkbox" name="del_by_cats"/>Delete by Category <font color=red>*UD</font><br>$cats</td><td>Selects and displays by category logs to delete.</td></tr>
+        <tr class="r0" align="left"><td><input type="checkbox" name="del_from"/>Delete from Date <font color=red>*UD</font><br><input id="fldFrom" size/></td><td>Selects and displays from a date to into deep past logs to delete..</td></tr>
+        <tr class="r1">                
+         <td colspan="2" align="right"><b>Data maintenance for -> $dbname</b>&nbsp;<input type="submit" value="Fix"/></td>
+        </tr>                  
+        <tr class="r1" align="left">
+             <td colspan="2">Perform this change/check in the event of experiencing data problems. Or periodically for data check and maintenance. <br>
+                                 <font color="red">WARNING!</font> Checking any of the above extra actions will cause loss
+                                                  of your changes. Please, export/backup first.<br><font color=red>*UD</font> - Under Development, not working!</td>
+        </tr>
+        <input type="hidden" name="db_fix" value="1"/>
+        </table></form><br>
+        );
 $tbl = qq(<table id="cnf_fix" class="tbl" border="1" width="$PRC_WIDTH%">
-                 <tr class="r0"><td colspan="2"><b>* CHANGE PASSWORD *</b></td></tr>
-                        );
+              <tr class="r0"><td colspan="2"><b>* CHANGE PASSWORD *</b></td></tr>
+             );
 my  $frmPASS = qq(
-        <form id="frm_PASS" action="config.cgi">$tbl
-               <tr class="r1" align="left"><td style="width:100px">Existing:</td><td><input type="password" name="existing" value="" size="12"/></td></tr>
-               <tr class="r1" align="left"><td>New:</td><td><input type="password" name="new" value="" size="12"/></td></tr>
-               <tr class="r1" align="left"><td>Confirmation:</td><td><input type="password" name="confirm" value="" size="12"/></td></tr>
-               <tr class="r1">         
-                <td colspan="2" align="right"><b>Password change for -> $userid</b>&nbsp;<input type="submit" value="Change"/></td>
-               </tr>                   
-               <input type="hidden" name="pass_change" value="1"/>
-               </table></form><br>
-               );
+     <form id="frm_PASS" action="config.cgi">$tbl
+        <tr class="r1" align="left"><td style="width:100px">Existing:</td><td><input type="password" name="existing" value="" size="12"/></td></tr>
+        <tr class="r1" align="left"><td>New:</td><td><input type="password" name="new" value="" size="12"/></td></tr>
+        <tr class="r1" align="left"><td>Confirmation:</td><td><input type="password" name="confirm" value="" size="12"/></td></tr>
+        <tr class="r1">                
+         <td colspan="2" align="right"><b>Password change for -> $userid</b>&nbsp;<input type="submit" value="Change"/></td>
+        </tr>                  
+        <input type="hidden" name="pass_change" value="1"/>
+        </table></form><br>
+        );
 
 
 #
@@ -342,94 +374,94 @@ my  $frmPASS = qq(
 my $prc_hdr = $PRC_WIDTH-2;
   print qq(
 <a name="top"/><center>
-       <div>$frm</div>
+    <div>$frm</div>
   <div>$frmVars</div>
-       <div>$frmDB</div>
-       <div>$frmPASS</div>
-       <div id="rz" style="text-align:center;width:$PRC_WIDTH%;">
-                               <a href="#top">&#x219F;</a>&nbsp;Configuration status -> <b>$status</b>&nbsp;<a href="#bottom">&#x21A1;</a></div>               
-                       <br><div id="rz" style="text-align:center;width:$PRC_WIDTH%;">
-                       <a href="main.cgi"><h3>Back to Main Log</h3></a><h3><a href="login_ctr.cgi?logout=bye">LOGOUT</a></h3></div>
-                       <br><hr> 
-                       
-                       <table border="0">
-                               <tr><td><H3>CSV File Format</H3></td></tr> 
-                               <form action="config.cgi" method="post" enctype="multipart/form-data"> 
-                               <tr style="border-left: 1px solid black;"><td> 
-                                               <b>Import Categories</b>: <input type="file" name="data_cat" /></td></tr> 
-                               <tr style="border-left: 1px solid black;"><td style="text-align:right;">
-                                               <input type="submit" name="Submit" value="Submit"/></p></td></tr> 
-                               </form> 
-                               <form action="config.cgi" method="post" enctype="multipart/form-data"> 
-                               <tr style="border-top: 1px solid black;border-right: 1px solid black;"><td> 
-                                               <b>Import Log</b>: <input type="file" name="data_log" /></td></tr> 
-                               <tr style="border-right: 1px solid black;"><td style="text-align:right;"> 
-                                               <input type="submit" name="Submit" value="Submit"/></p></td></tr> 
-                               </form> 
-                                       <tr><td style="text-align:right"><H3>To Server -> $sys -> $dbname</H3></td></tr>
-                       </table>
-       </div>
-                                       
-                                       <br><div><a href="#top">&#x219F;</a>&nbsp;&nbsp;&nbsp;[<a href="config.cgi?csv=1">Export Log to CSV</a>] &nbsp;
-                                        [<a href="config.cgi?csv=2">View the Log in CSV Format</a>]</div>                                      
-                                       <br><div>[<a href="config.cgi?csv=3">Export Categories to CSV</a>] &nbsp;
-                                       [<a href="config.cgi?csv=4">View the Categories in CSV Format</a>]</div> 
-                                       <hr>
-
-                                       <center>
-                                       <div id="rz" style="text-align:left; position:relative;width:640px; padding:10px;">
-                                       <h2>L-Tags Specs</h2>                                   
-                                       <p>
-                                       Life Log Tags are simple markup allowing fancy formatting and functionality 
-                                       for your logs HTML layout.
-                                       </p>
-                                       <p>
-                                       <b>&#60;&#60;B&#60;<i>{Text To Bold}</i><b>&#62;</b>
-                                       </p>
-                                       <p>
-                                       <b>&#60;&#60;I&#60;<i>{Text To Italic}</i><b>&#62;</b>
-                                       </p>                                    
-                                       <p>
-                                       <b>&#60;&#60;TITLE&#60;<i>{Title Text}</i><b>&#62;</b>
-                                       </p>
-                                       <p>
-                                       <b>&#60;&#60;LIST&#60;<i>{List of items delimited by new line to terminate item or with '~' otherwise.}</i><b>&#62;</b>
-                                       </p>
-                                       <p>
-                                       <b>&#60;&#60;IMG&#60;<i>{url to image}</i><b>&#62;</b>
-                                       </p>
-                                       <p>
-                                               <b>&#60;&#60;FRM&#60;<i>{file name}_frm.png}</i><b>&#62;</b><br><br>
-                                               *_frm.png images file pairs are located in the ./images folder of the cgi-bin directory.<br>
-                                               These are manually resized by the user. Next to the original.
-                                               Otherwise considered as stand alone icons. *_frm.png Image resized to ->  width="210" height="120"
-                                               <br><i>Example</i>:
-                                               <pre>
-               ../cgi-bin/images/
-                       my_cat_simon_frm.png
-                       my_cat_simon.jpg        
+    <div>$frmDB</div>
+    <div>$frmPASS</div>
+    <div id="rz" style="text-align:center;width:$PRC_WIDTH%;">
+                <a href="#top">&#x219F;</a>&nbsp;Configuration status -> <b>$status</b>&nbsp;<a href="#bottom">&#x21A1;</a></div>              
+            <br><div id="rz" style="text-align:center;width:$PRC_WIDTH%;">
+            <a href="main.cgi"><h3>Back to Main Log</h3></a><h3><a href="login_ctr.cgi?logout=bye">LOGOUT</a></h3></div>
+            <br><hr> 
+            
+            <table border="0">
+                <tr><td><H3>CSV File Format</H3></td></tr> 
+                <form action="config.cgi" method="post" enctype="multipart/form-data"> 
+                <tr style="border-left: 1px solid black;"><td> 
+                        <b>Import Categories</b>: <input type="file" name="data_cat" /></td></tr> 
+                <tr style="border-left: 1px solid black;"><td style="text-align:right;">
+                        <input type="submit" name="Submit" value="Submit"/></p></td></tr> 
+                </form> 
+                <form action="config.cgi" method="post" enctype="multipart/form-data"> 
+                <tr style="border-top: 1px solid black;border-right: 1px solid black;"><td> 
+                        <b>Import Log</b>: <input type="file" name="data_log" /></td></tr> 
+                <tr style="border-right: 1px solid black;"><td style="text-align:right;"> 
+                        <input type="submit" name="Submit" value="Submit"/></p></td></tr> 
+                </form> 
+                    <tr><td style="text-align:right"><H3>To Server -> $sys -> $dbname</H3></td></tr>
+            </table>
+    </div>
+                    
+                    <br><div><a href="#top">&#x219F;</a>&nbsp;&nbsp;&nbsp;[<a href="config.cgi?csv=1">Export Log to CSV</a>] &nbsp;
+                     [<a href="config.cgi?csv=2">View the Log in CSV Format</a>]</div>                                         
+                    <br><div>[<a href="config.cgi?csv=3">Export Categories to CSV</a>] &nbsp;
+                    [<a href="config.cgi?csv=4">View the Categories in CSV Format</a>]</div> 
+                    <hr>
+
+                    <center>
+                    <div id="rz" style="text-align:left; position:relative;width:640px; padding:10px;">
+                    <h2>L-Tags Specs</h2>                                      
+                    <p>
+                    Life Log Tags are simple markup allowing fancy formatting and functionality 
+                    for your logs HTML layout.
+                    </p>
+                    <p>
+                    <b>&#60;&#60;B&#60;<i>{Text To Bold}</i><b>&#62;</b>
+                    </p>
+                    <p>
+                    <b>&#60;&#60;I&#60;<i>{Text To Italic}</i><b>&#62;</b>
+                    </p>                                       
+                    <p>
+                    <b>&#60;&#60;TITLE&#60;<i>{Title Text}</i><b>&#62;</b>
+                    </p>
+                    <p>
+                    <b>&#60;&#60;LIST&#60;<i>{List of items delimited by new line to terminate item or with '~' otherwise.}</i><b>&#62;</b>
+                    </p>
+                    <p>
+                    <b>&#60;&#60;IMG&#60;<i>{url to image}</i><b>&#62;</b>
+                    </p>
+                    <p>
+                        <b>&#60;&#60;FRM&#60;<i>{file name}_frm.png}</i><b>&#62;</b><br><br>
+                        *_frm.png images file pairs are located in the ./images folder of the cgi-bin directory.<br>
+                        These are manually resized by the user. Next to the original.
+                        Otherwise considered as stand alone icons. *_frm.png Image resized to ->  width="210" height="120"
+                        <br><i>Example</i>:
+                        <pre>
+        ../cgi-bin/images/
+            my_cat_simon_frm.png
+            my_cat_simon.jpg   
 
           For log entry, place:
 
-         &#60;&#60;FRM&#62;my_cat_simon_frm.png&#62; &#60;&#60;TITLE&#60;Simon The Cat&#62;
-         This is my pet, can you hold him for a week while I am on holiday?
+      &#60;&#60;FRM&#62;my_cat_simon_frm.png&#62; &#60;&#60;TITLE&#60;Simon The Cat&#62;
+      This is my pet, can you hold him for a week while I am on holiday?
             </pre>
-                                       </p>
-                                       <p>
-                                       <b>&#60;&#60;LNK&#60;<i>{url to image}</i><b>&#62;</b><br><br>
-                                       Explicitly tag an URL in the log entry. 
-                                       Required if using in log IMG or FRM tags. 
-                                       Otherwise link appears as plain text.
-                                       </p>
-                                       <hr>
+                    </p>
+                    <p>
+                    <b>&#60;&#60;LNK&#60;<i>{url to image}</i><b>&#62;</b><br><br>
+                    Explicitly tag an URL in the log entry. 
+                    Required if using in log IMG or FRM tags. 
+                    Otherwise link appears as plain text.
+                    </p>
+                    <hr>
           </p>
-                                               <h3>Log Page Particulars</h3>
-                                               &#x219F; or &#x21A1; - Jump links to top or bottom of page respectivelly.
-                                       </p>
-                                       </div>
-                                       </center><a name="bottom"/><a href="#top">&#x219F;</a>
-                                       <hr>
-       );
+                        <h3>Log Page Particulars</h3>
+                        &#x219F; or &#x21A1; - Jump links to top or bottom of page respectivelly.
+                    </p>
+                    </div>
+                    </center><a name="bottom"/><a href="#top">&#x219F;</a>
+                    <hr>
+    );
 
 print '</center>';
 
@@ -452,580 +484,581 @@ try{
 
 $dbs = $db->prepare( $stmtCat );
 $rv = $dbs->execute() or die or die "<p>Error->"& $DBI::errstri &"</p>";
-       
+    
 if($passch){
-       my ($ex,$ne,$cf) = ($cgi->param("existing"),$cgi->param("new"),$cgi->param("confirm"));
-       if($ne ne $cf){
-                $status = "New password must match confirmation!";
-                print "<center><div><p><font color=red>Client Error</font>: $status</p></div></center>";
-       }
-       else{
-               if(&confirmExistingPassword($ex)){
-                        &changePassword($ne);
-                        $status = "Password Has Been Changed";
-               }
-               else{
-                       $status = "Wrong existing password was entered, are you user by alias: $userid ?";
-                       print "<center><div><p><font color=red>Client Error</font>: $status</p></div></center>";
-               }
-       }       
+    my ($ex,$ne,$cf) = ($cgi->param("existing"),$cgi->param("new"),$cgi->param("confirm"));
+    if($ne ne $cf){
+         $status = "New password must match confirmation!";
+         print "<center><div><p><font color=red>Client Error</font>: $status</p></div></center>";
+    }
+    else{
+        if(&confirmExistingPassword($ex)){
+             &changePassword($ne);
+             $status = "Password Has Been Changed";
+        }
+        else{
+            $status = "Wrong existing password was entered, are you user by alias: $userid ?";
+            print "<center><div><p><font color=red>Client Error</font>: $status</p></div></center>";
+        }
+    }  
 }
 elsif ($change == 1){
 
-       while(my @row = $dbs->fetchrow_array()) {
-
-             my $cid = $row[0];
-             my $cnm = $row[1];
-             my $cds = $row[2];
-             
-             my $pnm  = $cgi->param('nm'.$cid);
-             my $pds  = $cgi->param('ds'.$cid);
-
-         if($pnm ne $cnm || $pds ne $cds){
-               
-                if( ($cid!=1 && $cid!=32 && $cid!=35) && $pnm eq  ""){
-
-                  $s = "SELECT rowid, ID_CAT FROM LOG WHERE ID_CAT =".$cid.";";
-                  $d = $db->prepare($s); 
-                  $d->execute();
-
-                   while(my @r = $d->fetchrow_array()) {
-                            $s = "  LOG SET ID_CAT=1 WHERE rowid=".$r[0].";";
-                            $d = $db->prepare($s); 
-                            $d->execute();
-                    }
-
-                       #Delete
-                   $s = "DELETE FROM CAT WHERE ID=".$cid.";"; 
-                   $d = $db->prepare($s); 
-                   $d->execute();   
-
-               }else{
-                       #Update
-                   $s = "UPDATE CAT SET NAME='".$pnm."', DESCRIPTION='".$pds."' WHERE ID=".$cid.";"; 
-                       $d = $db->prepare($s); 
-                       $d->execute();
-               }                
-         
-       }
-       $status = "Upadated Categories!";
+    while(my @row = $dbs->fetchrow_array()) {
+
+          my $cid = $row[0];
+          my $cnm = $row[1];
+          my $cds = $row[2];
+          
+          my $pnm  = $cgi->param('nm'.$cid);
+          my $pds  = $cgi->param('ds'.$cid);
+
+      if($pnm ne $cnm || $pds ne $cds){
+        
+         if( ($cid!=1 && $cid!=32 && $cid!=35) && $pnm eq  ""){
+
+           $s = "SELECT rowid, ID_CAT FROM LOG WHERE ID_CAT =".$cid.";";
+           $d = $db->prepare($s); 
+           $d->execute();
+
+            while(my @r = $d->fetchrow_array()) {
+                     $s = "  LOG SET ID_CAT=1 WHERE rowid=".$r[0].";";
+                     $d = $db->prepare($s); 
+                     $d->execute();
+             }
+
+            #Delete
+            $s = "DELETE FROM CAT WHERE ID=".$cid.";"; 
+            $d = $db->prepare($s); 
+            $d->execute();   
+
+        }else{
+            #Update
+            $s = "UPDATE CAT SET NAME='".$pnm."', DESCRIPTION='".$pds."' WHERE ID=".$cid.";"; 
+               $d = $db->prepare($s); 
+               $d->execute();
+        }               
+      } 
+    }
+    $status = "Upadated Categories!";
 }
 
 
 if($change > 1){
 
-               #UNDER DEVELOPMENT!
-                                       my $caid  = $cgi->param('caid');
-                                       my $canm  = $cgi->param('canm');
-                                       my $cade  = $cgi->param('cade');
-                                       my $valid = 1;
-
-                                       while(my @row = $dbs->fetchrow_array()) {
-
-                                               my $cid = $row[0];
-                                               my $cnm = $row[1];
-                                               my $cds = $row[2];
-                                               
-
-                                               if($cid==$caid || $cnm eq $canm){
-                                                                               $valid = 0;
-                                                                               last;
-                                               }
-                                       }
-
-               if($valid){
-                       $d = $db->prepare('INSERT INTO CAT VALUES (?,?,?)');
-                       $d->execute($caid,$canm, $cade);
-                       $status = "Added Category $canm!";
-               }
-               else{
-                       $status = "ID->".$caid." or -> Category->".$canm." is already assigned, these must be unique!";
-                       die "<div><p><font color=red>Client Error</font>: $status</p></div>";
-               }
-               $status = "Inserted new category[$canm]";
-               
-       
+        #UNDER DEVELOPMENT!
+                    my $caid  = $cgi->param('caid');
+                    my $canm  = $cgi->param('canm');
+                    my $cade  = $cgi->param('cade');
+                    my $valid = 1;
+
+                    while(my @row = $dbs->fetchrow_array()) {
+
+                        my $cid = $row[0];
+                        my $cnm = $row[1];
+                        my $cds = $row[2];
+                        
+
+                        if($cid==$caid || $cnm eq $canm){
+                                        $valid = 0;
+                                        last;
+                        }
+                    }
+
+        if($valid){
+            $d = $db->prepare('INSERT INTO CAT VALUES (?,?,?)');
+            $d->execute($caid,$canm, $cade);
+            $status = "Added Category $canm!";
+        }
+        else{
+            $status = "ID->".$caid." or -> Category->".$canm." is already assigned, these must be unique!";
+            die "<div><p><font color=red>Client Error</font>: $status</p></div>";
+        }
+        $status = "Inserted new category[$canm]";
+        
+    
 }elsif ($chgsys == 1){
-       &changeSystemSettings;          
-       $status = "Changed System Settings!";
+    &changeSystemSettings;             
+    $status = "Changed System Settings!";
 }elsif($chdbfix){              
-       &processDBFix;
-       $status = "Performed Database Fixes!";
+    &processDBFix;
+    $status = "Performed Database Fixes!";
 }
 
 
 }
 catch{   
-       $ERROR = qq(<p><font color=red><b>SERVER ERROR</b></font> -> $_</p>);
+    $ERROR = qq(<p><font color=red><b>SERVER ERROR</b></font> -> $_</p>);
 }
 }
 
 sub confirmExistingPassword {
-               my $pass = $_[0];
-         my $crypt = encryptPassw($pass);
-               my $sql = "SELECT ALIAS, PASSW from AUTH WHERE ALIAS='$userid' AND PASSW='$crypt';";
-       #               print "<center><div><p><font color=red><b>DEBUG</b></font>:[$pass]<br>$sql</p></div></center>";
-               $dbs = $db->prepare($sql);
-               $dbs->execute();
-               if($dbs->fetchrow_array()){
-                       return 1;
-               }
-               return 0;
+        my $pass = $_[0];
+      my $crypt = encryptPassw($pass);
+        my $sql = "SELECT ALIAS, PASSW from AUTH WHERE ALIAS='$userid' AND PASSW='$crypt';";
+    #          print "<center><div><p><font color=red><b>DEBUG</b></font>:[$pass]<br>$sql</p></div></center>";
+        $dbs = $db->prepare($sql);
+        $dbs->execute();
+        if($dbs->fetchrow_array()){
+            return 1;
+        }
+        return 0;
 }
 sub changePassword {
-         my $pass = encryptPassw($_[0]);
-               $dbs = $db->prepare("UPDATE AUTH SET PASSW='$pass' WHERE ALIAS='$userid';");
-               $dbs->execute();
-               if($dbs->fetchrow_array()){
-                       return 1;
-               }
-               return 0;       
+      my $pass = encryptPassw($_[0]);
+        $dbs = $db->prepare("UPDATE AUTH SET PASSW='$pass' WHERE ALIAS='$userid';");
+        $dbs->execute();
+        if($dbs->fetchrow_array()){
+            return 1;
+        }
+        return 0;      
 }
 sub encryptPassw {
-       return uc crypt $_[0], hex $cipher_key;
+    return uc crypt $_[0], hex $cipher_key;
 }
 
 
 
 sub processDBFix {
 
-        my $rs_syst = $cgi->param("reset_syst");
-        my $rs_cats = $cgi->param("reset_cats");
-        my $wipe_ss = $cgi->param("wipe_syst");
-        my $issue;
-        my $date;
-        my $cntr_upd =0;
+     my $rs_syst = $cgi->param("reset_syst");
+     my $rs_cats = $cgi->param("reset_cats");
+     my $wipe_ss = $cgi->param("wipe_syst");
+     my $issue;
+     my $date;
+     my $cntr_upd =0;
 try{
 
-       
-               my %dates  = ();
-               my @dlts = ();
-               #Hash is unreliable for returning sequential order of keys so array must do.
-               my @updts = ();
-               my $cntr_del =0;                
-               my $existing;
-               my @row;
-               
-               $db->do('BEGIN TRANSACTION;');
-               #Check for duplicates, which are possible during imports or migration as internal rowid is not primary in log.
-               $dbs = dbExecute('select rowid, DATE from LOG ORDER BY DATE;');                 
-               while(my @row = $dbs->fetchrow_array()) {
-                       my $existing = $dates{$row[0]};
-                       if($existing && $existing eq $row[1]){
-                               $dlts[$cntr_del++] = $row[0];
-                       }
-                       else{
-                               $dates{$row[0]} = $row[1];
-                               $updts[$cntr_upd++] = $row[0];
-                       }
-               }       
-
-               foreach my $del (@dlts){
-                       $issue = "DELETE FROM LOG WHERE rowid=$del;";
-                                       #print "$issue\n<br>";
-                                       my $st_del = $db->prepare($issue);
-                                       $st_del->execute();
-               }
-
-               #Renumerate!
-               my $cnt = 1;
-               my $st_upd;
-               $dbs = dbExecute("select count(rowid) from LOG;");              
-               @row = $dbs->fetchrow_array();
-               $cntr_upd =$row[0];
-               
-               
-               $dbs = dbExecute("select rowid, RTF from LOG order by DATE;");          
-               while(@row = $dbs->fetchrow_array()) {
-                       $issue    = "UPDATE LOG SET rowid=$cnt WHERE rowid=$row[0];";
-                       $st_upd = $db->prepare($issue);
-                       $st_upd->execute();
-                       if($row[1]){#RTF                                
-                               my @doc = dbExecute("SELECT LID FROM NOTES WHERE LID='$row[0]';");
-                               if(scalar @doc>0){
-                                                 dbExecute("UPDATE NOTES SET LID = $cnt WHERE LID='$row[0]';");                                        
-                               }
-                       }                               
-                       $cnt++;
-               }                       
-               # Delete Orphaned Notes entries.                        
-               $dbs = dbExecute("SELECT LID, LOG.rowid from NOTES LEFT JOIN LOG ON 
-                                                                               NOTES.LID = LOG.rowid WHERE LOG.rowid is NULL;");                       
-               while(my @row = $dbs->fetchrow_array()) {                               
-                       $db->do("DELETE FROM NOTES WHERE LID=$row[0];");
-               }
-
-                                       
-               &resetCategories if $rs_cats;
-               &resetSystemConfiguration($db) if $rs_syst;                     
-               &wipeSystemConfiguration if $wipe_ss;
-
-               $db->do('COMMIT;');
-               $db->disconnect();
-               $db = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die "<p>Error->"& $DBI::errstri &"</p>";
-               $dbs = $db->do("VACUUM;");
-
-               if($LOGOUT){
-                               &logout; 
-               }               
-                       
-                       
+    
+        my %dates  = ();
+        my @dlts = ();
+        #Hash is unreliable for returning sequential order of keys so array must do.
+        my @updts = ();
+        my $cntr_del =0;               
+        my $existing;
+        my @row;
+        
+        $db->do('BEGIN TRANSACTION;');
+        #Check for duplicates, which are possible during imports or migration as internal rowid is not primary in log.
+        $dbs = dbExecute('select rowid, DATE from LOG ORDER BY DATE;');                        
+        while(my @row = $dbs->fetchrow_array()) {
+            my $existing = $dates{$row[0]};
+            if($existing && $existing eq $row[1]){
+                $dlts[$cntr_del++] = $row[0];
+            }
+            else{
+                $dates{$row[0]} = $row[1];
+                $updts[$cntr_upd++] = $row[0];
+            }
+        }      
+
+        foreach my $del (@dlts){
+            $issue = "DELETE FROM LOG WHERE rowid=$del;";
+                    #print "$issue\n<br>";
+                    my $st_del = $db->prepare($issue);
+                    $st_del->execute();
+        }
+
+        #Renumerate!
+        my $cnt = 1;
+        my $st_upd;
+        $dbs = dbExecute("select count(rowid) from LOG;");             
+        @row = $dbs->fetchrow_array();
+        $cntr_upd =$row[0];
+        
+        
+        $dbs = dbExecute("select rowid, RTF from LOG order by DATE;");         
+        while(@row = $dbs->fetchrow_array()) {
+            $issue    = "UPDATE LOG SET rowid=$cnt WHERE rowid=$row[0];";
+            $st_upd = $db->prepare($issue);
+            $st_upd->execute();
+            if($row[1]){#RTF                           
+                my @doc = dbExecute("SELECT LID FROM NOTES WHERE LID='$row[0]';");
+                if(scalar @doc>0){
+                          dbExecute("UPDATE NOTES SET LID = $cnt WHERE LID='$row[0]';");                                       
+                }
+            }                          
+            $cnt++;
+        }                      
+        # Delete Orphaned Notes entries.                       
+        $dbs = dbExecute("SELECT LID, LOG.rowid from NOTES LEFT JOIN LOG ON 
+                                        NOTES.LID = LOG.rowid WHERE LOG.rowid is NULL;");                      
+        while(my @row = $dbs->fetchrow_array()) {                              
+            $db->do("DELETE FROM NOTES WHERE LID=$row[0];");
+        }
+
+                    
+        &resetCategories if $rs_cats;
+        &resetSystemConfiguration($db) if $rs_syst;                    
+        &wipeSystemConfiguration if $wipe_ss;
+
+        $db->do('COMMIT;');
+        $db->disconnect();
+        $db = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die "<p>Error->"& $DBI::errstri &"</p>";
+        $dbs = $db->do("VACUUM;");
+
+        if($LOGOUT){
+                &logout; 
+        }              
+            
+            
 }
 catch{ 
-       $db->do('ROLLBACK;');
-       die qq(@&processDBFix error:$_ with statement->$issue for $date update counter:$cntr_upd);      
+    $db->do('ROLLBACK;');
+    die qq(@&processDBFix error:$_ with statement->$issue for $date update counter:$cntr_upd); 
 }
 }
 
 sub resetCategories {
-       $db->do("DELETE FROM CAT;");
-       $db->do("DROP TABLE CAT;");
-       $LOGOUT = 1;
+    $db->do("DELETE FROM CAT;");
+    $db->do("DROP TABLE CAT;");
+    $LOGOUT = 1;
 }
 
 sub wipeSystemConfiguration {
-       $db->do("DELETE FROM CONFIG;");
-       $db->do("DROP TABLE CONFIG;");
-       $LOGOUT = 1;
+    $db->do("DELETE FROM CONFIG;");
+    $db->do("DROP TABLE CONFIG;");
+    $LOGOUT = 1;
 }
 
 
 sub resetSystemConfiguration {
 
-               open(my $fh, '<', $LOG_PATH.'main.cnf' ) or die "Can't open main.cnf: $!";
-               my $db = shift;
-               my ($did,$name, $value, $desc);
-               my $inData = 0;
-               my $err = "";
-               my %vars = {};
+        open(my $fh, '<', $LOG_PATH.'main.cnf' ) or die "Can't open main.cnf: $!";
+        my $db = shift;
+        my ($did,$name, $value, $desc);
+        my $inData = 0;
+        my $err = "";
+        my %vars = {};
 
 try{
-               
-               my $insert = $db->prepare('INSERT INTO CONFIG VALUES (?,?,?,?)');
-               my $update = $db->prepare("UPDATE CONFIG SET VALUE=? WHERE ID=?;");
-               $dbs->finish();
+          
+        my $insert = $db->prepare('INSERT INTO CONFIG VALUES (?,?,?,?)');
+        my $update = $db->prepare("UPDATE CONFIG SET VALUE=? WHERE ID=?;");
+        $dbs->finish();
     while (my $line = <$fh>) {
-                                       chomp $line;
-                                       my @tick = split("`",$line);
-                                       if(scalar(@tick)==2){
-                                                                       my %hsh = $tick[0] =~ m[(\S+)\s*=\s*(\S+)]g;
-                                                                       if(scalar(%hsh)==1){                                                                            
-                                                                                       for my $key (keys %hsh) {
-
-                                                                                                       my %nash = $key =~ m[(\S+)\s*\|\$\s*(\S+)]g;
-                                                                                                       if(scalar(%nash)==1){
-                                                                                                                       for my $id (keys %nash) {
-                                                                                                                               my $name  = $nash{$id};
-                                                                                                                               my $value = $hsh{$key};
-                                                                                                                               if($vars{$id}){
-                                                       $err .= "UID{$id} taken by $vars{$id}-> $line\n";
-                                                                                                                               }
-                                                                                                                               else{
-                                                                                                                                       $dbs = dbExecute(
-                                                                                                                                               "SELECT ID, NAME, VALUE, DESCRIPTION FROM CONFIG WHERE NAME LIKE '$name';");
-                                                                                                                                       $inData = 1;
-                                                                                                                                       my @row = $dbs->fetchrow_array();
-                                                                                                                                       if(scalar @row == 0){
-                                                                                                                                                       $insert->execute($id,$name,$value,$tick[1]);
-                                                                                                                                       }
-                                                                                                                                       else{
-                                                                                                                                                       $update->execute($value,$id);
-                                                                                                                                       }
-                                                                                                                               }
-                                                                                                                       }
-                                                                                                       }else{
-                                                       $err .= "Invalid, spec'ed {uid}|{setting}`{description}-> $line\n";
-                                                                                                       }
-
-                                                                                       }#rof
-                                                                       }
-                                                                       else{
-                                                       $err .= "Invalid, speced entry -> $line\n";
-                                                                       }
-
-                                       }elsif($inData && length($line)>0){
-                                   if(scalar(@tick)==1){
-                                                        $err .= "Corrupt Entry, no description supplied -> $line\n";
-                                               }
-                                               else{   
-                                                  $err .= "Corrupt Entry -> $line\n";
-                                               }
-                                       }
-               }    
-               #die "Configuration script './main.cnf' [$fh] contains errors." if $err;
-               close $fh;
-               &getConfiguration;
+                    chomp $line;
+                    my @tick = split("`",$line);
+                    if(scalar(@tick)==2){
+                                    my %hsh = $tick[0] =~ m[(\S+)\s*=\s*(\S+)]g;
+                                    if(scalar(%hsh)==1){                                                                               
+                                            for my $key (keys %hsh) {
+
+                                                    my %nash = $key =~ m[(\S+)\s*\|\$\s*(\S+)]g;
+                                                    if(scalar(%nash)==1){
+                                                            for my $id (keys %nash) {
+                                                                my $name  = $nash{$id};
+                                                                my $value = $hsh{$key};
+                                                                if($vars{$id}){
+                            $err .= "UID{$id} taken by $vars{$id}-> $line\n";
+                                                                }
+                                                                else{
+                                                                    $dbs = dbExecute(
+                                                                        "SELECT ID, NAME, VALUE, DESCRIPTION FROM CONFIG WHERE NAME LIKE '$name';");
+                                                                    $inData = 1;
+                                                                    my @row = $dbs->fetchrow_array();
+                                                                    if(scalar @row == 0){
+                                                                            $insert->execute($id,$name,$value,$tick[1]);
+                                                                    }
+                                                                    else{
+                                                                            $update->execute($value,$id);
+                                                                    }
+                                                                }
+                                                            }
+                                                    }else{
+                            $err .= "Invalid, spec'ed {uid}|{setting}`{description}-> $line\n";
+                                                    }
+
+                                            }#rof
+                                    }
+                                    else{
+                            $err .= "Invalid, speced entry -> $line\n";
+                                    }
+
+                    }elsif($inData && length($line)>0){
+                    if(scalar(@tick)==1){
+                             $err .= "Corrupt Entry, no description supplied -> $line\n";
+                        }
+                        else{  
+                           $err .= "Corrupt Entry -> $line\n";
+                        }
+                    }
+        }    
+        #die "Configuration script './main.cnf' [$fh] contains errors." if $err;
+        close $fh;
+        &getConfiguration;
  } catch{              
-         close $fh;    
-         print $cgi->header;
-               print "<font color=red><b>SERVER ERROR!</b></font><br> ".$_."<br><pre>$err</pre>";
+      close $fh;       
+      print $cgi->header;
+        print "<font color=red><b>SERVER ERROR!</b></font><br> ".$_."<br><pre>$err</pre>";
     print $cgi->end_html;
-               exit;
+        exit;
  }
 }
 
 
 sub logout{
-       $session->delete();
-       $session->flush();
-       print $cgi->redirect("login_ctr.cgi");
-       exit;
+    $session->delete();
+    $session->flush();
+    print $cgi->redirect("login_ctr.cgi");
+    exit;
 }
 
 
 sub changeSystemSettings {
-       try{
-                       $dbs = dbExecute("SELECT ID, NAME FROM CONFIG;");
-                       while (my @r=$dbs->fetchrow_array()){ 
-                               my $var = $cgi->param('var'.$r[0]);
-                               if(defined $var){                                       
-                                       switch ($r[1]) {
-                                               case "REC_LIMIT" {$REC_LIMIT=$var;  updCnf($r[0],$var)}
-                                               case "TIME_ZONE" {$TIME_ZONE=$var;  updCnf($r[0],$var)}
-                                               case "PRC_WIDTH" {$PRC_WIDTH=$var;  updCnf($r[0],$var)}
-                                               case "SESSN_EXPR"{$SESSN_EXPR=$var; updCnf($r[0],$var)}
-                                               case "DATE_UNI"  {$DATE_UNI=$var; updCnf($r[0],$var)}
-                                               case "LANGUAGE"  {$LANGUAGE=$var; updCnf($r[0],$var)}
-                                               case "AUTHORITY" {$AUTHORITY=$var; updCnf($r[0],$var)}
-                                               case "IMG_W_H"   {$IMG_W_H=$var; updCnf($r[0],$var)}
-                                               case "AUTO_WRD_LMT"{$AUTO_WRD_LMT=$var; updCnf($r[0],$var)}
-                                               case "AUTO_LOGIN" {$AUTO_LOGIN=$var; updCnf($r[0],$var)}
-                                               case "FRAME_SIZE" {$FRAME_SIZE=$var; updCnf($r[0],$var)}
-                                               case "RTF_SIZE"   {$RTF_SIZE=$var; updCnf($r[0],$var)}
-                                        }
-                               }
-                       }
-       }
-       catch{
-               print "<font color=red><b>SERVER ERROR->changeSystemSettings</b></font>:".$_;
-       }
+    try{
+            $dbs = dbExecute("SELECT ID, NAME FROM CONFIG;");
+            while (my @r=$dbs->fetchrow_array()){ 
+                my $var = $cgi->param('var'.$r[0]);
+                if(defined $var){                                      
+                    switch ($r[1]) {
+                        case "REC_LIMIT" {$REC_LIMIT=$var;  updCnf($r[0],$var)}
+                        case "TIME_ZONE" {$TIME_ZONE=$var;  updCnf($r[0],$var)}
+                        case "PRC_WIDTH" {$PRC_WIDTH=$var;  updCnf($r[0],$var)}
+                        case "SESSN_EXPR"{$SESSN_EXPR=$var; updCnf($r[0],$var)}
+                        case "DATE_UNI"  {$DATE_UNI=$var; updCnf($r[0],$var)}
+                        case "LANGUAGE"  {$LANGUAGE=$var; updCnf($r[0],$var)}
+                        case "AUTHORITY" {$AUTHORITY=$var; updCnf($r[0],$var)}
+                        case "IMG_W_H"   {$IMG_W_H=$var; updCnf($r[0],$var)}
+                        case "AUTO_WRD_LMT"{$AUTO_WRD_LMT=$var; updCnf($r[0],$var)}
+                        case "AUTO_LOGIN" {$AUTO_LOGIN=$var; updCnf($r[0],$var)}
+                        case "FRAME_SIZE" {$FRAME_SIZE=$var; updCnf($r[0],$var)}
+                        case "RTF_SIZE"   {$RTF_SIZE=$var; updCnf($r[0],$var)}
+                        case "THEME"      {$THEME=$var; updCnf($r[0],$var)}
+                     }
+                }
+            }
+    }
+    catch{
+        print "<font color=red><b>SERVER ERROR->changeSystemSettings</b></font>:".$_;
+    }
 }
 
 sub updCnf {
-       my ($id, $val) = @_;
-       my ($s,$d);
-       $s = "UPDATE CONFIG SET VALUE='".$val."' WHERE ID=".$id.";"; 
-       try{
-                 dbExecute($s); 
-       }
-       catch{
-               print "<font color=red><b>SERVER ERROR</b>->updCnf[$s]</font>:".$_;
-       }
+    my ($id, $val, $s) = @_;    
+    $s = "UPDATE CONFIG SET VALUE='".$val."' WHERE ID=".$id.";"; 
+    try{
+          dbExecute($s); 
+    }
+    catch{
+        print "<font color=red><b>SERVER ERROR</b>->updCnf[$s]</font>:".$_;
+    }
 }
 
 sub exportLogToCSV {
-       try{
-                 
-               my $csv = Text::CSV->new ( { binary => 1, strict => 1 , quote_space=>1, auto_diag => 1, eol => $/} );             
-           $dbs = dbExecute("SELECT * FROM LOG;");
-               if($csvp==2){
-                                print $cgi->header(-charset=>"UTF-8", -type=>"text/html");     
-                                print "<pre>\n";
-                       }
-                       else{
-                                print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.csv");
-                       }
-                       
-                # print "ID_CAT,DATE,LOG,AMOUNT, AFLAG\n";
-                       while (my $r=$dbs->fetchrow_arrayref()){ 
-                                                print $csv->print(*STDOUT, $r)."\n";
-                       }
-                       if($csvp==1){                   
-                                print "</pre>";
-                       }
-                       $dbs->finish();
-                       $db->disconnect();
-                       exit;
-       }
-       catch{
-               print "<font color=red><b>SERVER ERROR</b>->exportLogToCSV</font>:".$_;
-       }
+    try{
+          
+        my $csv = Text::CSV->new ( { binary => 1, strict => 1 , quote_space=>1, auto_diag => 1, eol => $/} );            
+        $dbs = dbExecute("SELECT * FROM LOG;");
+        if($csvp==2){
+                 print $cgi->header(-charset=>"UTF-8", -type=>"text/html");    
+                 print "<pre>\n";
+            }
+            else{
+                 print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.csv");
+            }
+            
+         # print "ID_CAT,DATE,LOG,AMOUNT, AFLAG\n";
+            while (my $r=$dbs->fetchrow_arrayref()){ 
+                         print $csv->print(*STDOUT, $r)."\n";
+            }
+            if($csvp==1){                      
+                 print "</pre>";
+            }
+            $dbs->finish();
+            $db->disconnect();
+            exit;
+    }
+    catch{
+        print "<font color=red><b>SERVER ERROR</b>->exportLogToCSV</font>:".$_;
+    }
 }
 
 sub exportCategoriesToCSV {
-       try{
-                 
-               my $csv = Text::CSV->new ( { binary => 1, strict => 1,eol => $/ } );
-           $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT ORDER BY ID;");
-               if($csvp==4){
-                                print $cgi->header(-charset=>"UTF-8", -type=>"text/html");     
-                                print "<pre>\n";
-               }
-               else{
-                print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.categories.csv");
-               }
-                       
-               #print "ID,NAME,DESCRIPTION\n";
-               while (my $row=$dbs->fetchrow_arrayref()){ 
-                               print $csv->print(*STDOUT, $row),"\n";
-               }
-               if($csvp==4){                   
-                        print "</pre>";
-               }                               
-               $dbs->finish();         
-               $db->disconnect();
-               exit;
-       }
-       catch{
-               print "<font color=red><b>SERVER ERROR</b>->exportLogToCSV</font>:".$_;
-       }
+    try{
+          
+        my $csv = Text::CSV->new ( { binary => 1, strict => 1,eol => $/ } );
+        $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT ORDER BY ID;");
+        if($csvp==4){
+                 print $cgi->header(-charset=>"UTF-8", -type=>"text/html");    
+                 print "<pre>\n";
+        }
+        else{
+         print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.categories.csv");
+        }
+            
+        #print "ID,NAME,DESCRIPTION\n";
+        while (my $row=$dbs->fetchrow_arrayref()){ 
+                print $csv->print(*STDOUT, $row),"\n";
+        }
+        if($csvp==4){                  
+             print "</pre>";
+        }                              
+        $dbs->finish();                
+        $db->disconnect();
+        exit;
+    }
+    catch{
+        print "<font color=red><b>SERVER ERROR</b>->exportLogToCSV</font>:".$_;
+    }
 }
 
 
 sub importCatCSV {
-       my $hndl = $cgi->upload("data_cat");
-       my $csv = Text::CSV->new ( { binary => 1, strict => 1, eol => $/ } );   
-       while (my $line = <$hndl>) {
-               chomp $line;
-               if ($csv->parse($line)) { 
-               my @flds   = $csv->fields();
-                       updateCATDB(@flds);
-               }else{
-                warn "Data could not be parsed: $line\n";
-               }                
-       }
+    my $hndl = $cgi->upload("data_cat");
+    my $csv = Text::CSV->new ( { binary => 1, strict => 1, eol => $/ } );      
+    while (my $line = <$hndl>) {
+        chomp $line;
+        if ($csv->parse($line)) { 
+              my @flds   = $csv->fields();
+            updateCATDB(@flds);
+        }else{
+              warn "Data could not be parsed: $line\n";
+          }             
+    }
 }
 
 sub updateCATDB {
-       my @flds = @_;
-       if(@flds>2){
-       try{    
-                       my $id   = $flds[0];
-                       my $name = $flds[1];
-                       my $desc = $flds[2];
-                       
-                       #is it existing entry?
-                       $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT WHERE ID = '$id';");                    
-                       if(not defined $dbs->fetchrow_array()){
-                                       $dbs = $db->prepare('INSERT INTO CAT VALUES (?,?,?)');
-                                       $dbs->execute($id, $name, $desc);
-                                       $dbs->finish;
-                       }
-                       else{
-                               #TODO Update
-                       }
-               
-       }
-       catch{
-               print "<font color=red><b>SERVER ERROR</b>->updateCATDB</font>:".$_;
-       }
-       }
+    my @flds = @_;
+    if(@flds>2){
+    try{       
+            my $id   = $flds[0];
+            my $name = $flds[1];
+            my $desc = $flds[2];
+            
+            #is it existing entry?
+            $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT WHERE ID = '$id';");                       
+            if(not defined $dbs->fetchrow_array()){
+                    $dbs = $db->prepare('INSERT INTO CAT VALUES (?,?,?)');
+                    $dbs->execute($id, $name, $desc);
+                    $dbs->finish;
+            }
+            else{
+                #TODO Update
+            }
+        
+    }
+    catch{
+        print "<font color=red><b>SERVER ERROR</b>->updateCATDB</font>:".$_;
+    }
+    }
 }
 sub importLogCSV {
-       my $hndl = $cgi->upload("data_log");
-       my $csv = Text::CSV->new ( { binary => 1, strict => 1, eol => $/ } );   
-       while (my $line = <$hndl>) {
-                       chomp $line;
-                       if ($csv->parse($line)) { 
-                       my @flds   = $csv->fields();
-                               updateLOGDB(@flds);
-                       }else{
-                                        warn "Data could not be parsed: $line\n";
-                       
-       }       
-       $db->disconnect();
-       print $cgi->redirect('main.cgi');
-       exit;
+    my $hndl = $cgi->upload("data_log");
+    my $csv = Text::CSV->new ( { binary => 1, strict => 1, eol => $/ } );      
+    while (my $line = <$hndl>) {
+            chomp $line;
+            if ($csv->parse($line)) { 
+                  my @flds   = $csv->fields();
+                updateLOGDB(@flds);
+            }else{
+                     warn "Data could not be parsed: $line\n";
+            } 
+    }  
+    $db->disconnect();
+    print $cgi->redirect('main.cgi');
+    exit;
 }
 
 sub updateLOGDB {
-       my @flds = @_;
-       if(@flds>3){
-       try{    
-                       my $id_cat = $flds[0];
-                       my $date   = $flds[1];
-                       my $log    = $flds[2];
-                       my $amv    = $flds[3];
-                       my $amf    = $flds[4];
-                       my $rtf    = $flds[5];
-                       my $pdate = DateTime::Format::SQLite->parse_datetime($date);
-                       #Check if valid date log entry?
-                       if($id_cat==0||$id_cat==""||!$pdate){
-                               return;
-                       }
-                       #is it existing entry?
-                       $dbs = $db->prepare("SELECT ID_CAT, DATE, LOG, AMOUNT, AFLAG, RTF  FROM LOG WHERE date = '$date';");
-                       $dbs->execute();
-                       if(!$dbs->fetchrow_array()){
-                                       $dbs = $db->prepare('INSERT INTO LOG VALUES (?,?,?,?,?,?)');
-                                       $dbs->execute( $id_cat, $pdate, $log, $amv, $amf, $rtf);
-                       }
-                       #Renumerate
-                       $dbs = $db->prepare('select rowid from LOG ORDER BY DATE;');
-                       $dbs->execute();
-                       my @row = $dbs->fetchrow_array();
-                       my $cnt = 1;
-                       while(my @row = $dbs->fetchrow_array()) {
-                       my $st_upd = $db->prepare("UPDATE LOG SET rowid=".$cnt.
-                                                   " WHERE rowid='".$row[0]."';");
-                               $st_upd->execute();
-                               $cnt = $cnt + 1;
-                       }
-                       $dbs->finish;
-       }
-       catch{
-               print "<font color=red><b>SERVER ERROR</b>->exportLogToCSV</font>:".$_;
-       }
-       }
+    my @flds = @_;
+    if(@flds>3){
+    try{       
+            my $id_cat = $flds[0];
+            my $date   = $flds[1];
+            my $log    = $flds[2];
+            my $amv    = $flds[3];
+            my $amf    = $flds[4];
+            my $rtf    = $flds[5];
+            my $pdate = DateTime::Format::SQLite->parse_datetime($date);
+            #Check if valid date log entry?
+            if($id_cat==0||$id_cat==""||!$pdate){
+                return;
+            }
+            #is it existing entry?
+            $dbs = $db->prepare("SELECT ID_CAT, DATE, LOG, AMOUNT, AFLAG, RTF  FROM LOG WHERE date = '$date';");
+            $dbs->execute();
+            if(!$dbs->fetchrow_array()){
+                    $dbs = $db->prepare('INSERT INTO LOG VALUES (?,?,?,?,?,?)');
+                    $dbs->execute( $id_cat, $pdate, $log, $amv, $amf, $rtf);
+            }
+            #Renumerate
+            $dbs = $db->prepare('select rowid from LOG ORDER BY DATE;');
+            $dbs->execute();
+            my @row = $dbs->fetchrow_array();
+            my $cnt = 1;
+             while(my @row = $dbs->fetchrow_array()) {
+            my $st_upd = $db->prepare("UPDATE LOG SET rowid=".$cnt.
+                                        " WHERE rowid='".$row[0]."';");
+                $st_upd->execute();
+                $cnt = $cnt + 1;
+            }
+            $dbs->finish;
+    }
+    catch{
+        print "<font color=red><b>SERVER ERROR</b>->exportLogToCSV</font>:".$_;
+    }
+    }
 }
 
 
 sub getConfiguration {
-       try{
-               $dbs = dbExecute("SELECT * FROM CONFIG;");
-               while (my @r=$dbs->fetchrow_array()){
-                       
-                       switch ($r[1]) {
-                               case "REC_LIMIT"    {$REC_LIMIT=$r[2]}
-                               case "TIME_ZONE"    {$TIME_ZONE=$r[2]}
-                               case "PRC_WIDTH"    {$PRC_WIDTH=$r[2]}          
-                               case "SESSN_EXPR"   {$SESSN_EXPR=$r[2]}
-                               case "DATE_UNI"     {$DATE_UNI=$r[2]}
-                               case "LANGUAGE"     {$LANGUAGE=$r[2]}
-                               case "IMG_W_H"      {$IMG_W_H=$r[2]}
-                               case "AUTO_WRD_LMT" {$AUTO_WRD_LMT=$r[2]}
-                               case "AUTO_LOGIN"       {$AUTO_LOGIN=$r[2]}
-                               case "FRAME_SIZE"       {$FRAME_SIZE=$r[2]}
-                               case "RTF_SIZE"         {$RTF_SIZE=$r[2]}
-                       }
-               }
-       }
-       catch{
-               print "<font color=red><b>SERVER ERROR</b></font>:".$_;
-       }
+    try{
+        $dbs = dbExecute("SELECT * FROM CONFIG;");
+        while (my @r=$dbs->fetchrow_array()){
+            
+            switch ($r[1]) {
+                case "REC_LIMIT"    {$REC_LIMIT=$r[2]}
+                case "TIME_ZONE"    {$TIME_ZONE=$r[2]}
+                case "PRC_WIDTH"    {$PRC_WIDTH=$r[2]}         
+                case "SESSN_EXPR"   {$SESSN_EXPR=$r[2]}
+                case "DATE_UNI"     {$DATE_UNI=$r[2]}
+                case "LANGUAGE"     {$LANGUAGE=$r[2]}
+                case "IMG_W_H"      {$IMG_W_H=$r[2]}
+                case "AUTO_WRD_LMT" {$AUTO_WRD_LMT=$r[2]}
+                case "AUTO_LOGIN"      {$AUTO_LOGIN=$r[2]}
+                case "FRAME_SIZE"      {$FRAME_SIZE=$r[2]}
+                case "RTF_SIZE"                {$RTF_SIZE=$r[2]}
+                case "THEME"        {$THEME= $r[2]}
+            }
+        }
+    }
+    catch{
+        print "<font color=red><b>SERVER ERROR</b></font>:".$_;
+    }
 
 }
 
 sub cats{
 
-               my $cats = qq(<select id="cats" name="cats"><option value="0">---</option>\n);
-               $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT ORDER BY ID;");
-               while ( my @row = $dbs->fetchrow_array() ) {
+        my $cats = qq(<select id="cats" name="cats"><option value="0">---</option>\n);
+        $dbs = dbExecute("SELECT ID, NAME, DESCRIPTION FROM CAT ORDER BY ID;");
+        while ( my @row = $dbs->fetchrow_array() ) {
 
-                               $cats .= qq(<option value="$row[0]">$row[1]</option>\n);
-               }
-               $cats .= '</select>';
+                $cats .= qq(<option value="$row[0]">$row[1]</option>\n);
+        }
+        $cats .= '</select>';
 
-       return $cats;
+    return $cats;
 }
 
 sub dbExecute{
-       my $ret = $db->prepare(shift);
-          $ret->execute() or die "<p>Error->"& $DBI::errstri &"</p>";
-       return $ret;
+    my $ret    = $db->prepare(shift);
+       $ret->execute() or die "<p>Error->"& $DBI::errstri &"</p>";
+    return $ret;
 }
 
 sub error{
-       my $url = $cgi->url();
-       print qq(<h2>Sorry Encountered Errors</h2><p>Page -> $url</p><p>$ERROR</p>);
-       print qq(<h3>CGI Parameters</h3>);
-       print "<ol>\n";
-       foreach ($cgi->param){
-               print '<li>'.$_.'=='. $cgi->param($_).'</li>';
-       }
-       print "</ol>\n";
-       print "<a href=$cgi>Return to -> $url</a>";
-       print $cgi->end_html;
-       $db->disconnect();
-       exit;
+    my $url = $cgi->url();
+    print qq(<h2>Sorry Encountered Errors</h2><p>Page -> $url</p><p>$ERROR</p>);
+    print qq(<h3>CGI Parameters</h3>);
+    print "<ol>\n";
+    foreach ($cgi->param){
+        print '<li>'.$_.'=='. $cgi->param($_).'</li>';
+    }
+    print "</ol>\n";
+    print "<a href=$cgi>Return to -> $url</a>";
+    print $cgi->end_html;
+    $db->disconnect();
+    exit;
 }
\ No newline at end of file
index d2545191b17d0332bcffd94c5660a5b6cca5b5c2..f9175a2fc5a2e719b126b0fdc59109bc08505d02 100755 (executable)
@@ -444,7 +444,7 @@ sub logout{
        <br>
        <form action="login_ctr.cgi"><input type="submit" value="No, no, NO! Log me In Again."/></form><br>
        </br>
-       <iframe width="60%" height="600px" src="https://www.youtube.com/embed/HQ5SEieVbSI?autoplay=1" 
+       <iframe width="60%" height="600px" src="https://www.youtube.com/embed/qTFojoffE78?autoplay=1" 
          frameborder="0" 
                allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>
        </iframe>
index 88b1d1c44cbbe94789378283693e3fe3130744c9..23c483f4e9da907608f5220ca9d2e96e3b39a0b7 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 #
-# Programed in vim by: Will Budic
+# Programed in by: Will Budic
 # Open Source License -> https://choosealicense.com/licenses/isc/
 #
 use strict;
@@ -37,6 +37,7 @@ our $AUTO_WRD_LMT = 1000;
 our $FRAME_SIZE   = 0;
 our $RTF_SIZE     = 0;
 our $THEME        = 'Standard';
+our $TH_CSS       = 'main.css';
 
 #END OF SETTINGS
 
@@ -115,21 +116,26 @@ else {    #defaults
     $imgh = 120;
 }
 
-my $bgcol = '#c8fff8';
-if ( $THEME eq 'Sun' ) {
-    $bgcol = '#D4AF37';
-}
+my $BGCOL = '#c8fff8';
+    if ( $THEME eq 'Sun' ) {
+        $BGCOL = '#D4AF37';
+        $TH_CSS = "main_sun.css";
+    }elsif ($THEME eq 'Moon'){
+        $TH_CSS = "main_moon.css";
+        $BGCOL = '#000000';
+
+    }elsif ($THEME eq 'Earth'){
+        $TH_CSS = "main_earth.css";
+        $BGCOL = 'green';
+    }
 
-print $cgi->header(
-    -expires => "0s",
-    -charset => "UTF-8"
-);
+print $cgi->header(-expires => "0s", -charset => "UTF-8");
 print $cgi->start_html(
     -title   => "Personal Log",
-    -BGCOLOR => $bgcol,
+    -BGCOLOR => $BGCOL,
     -onload  => "loadedBody('" . $toggle . "');",
     -style   => [
-        { -type => 'text/css', -src => 'wsrc/main.css' },
+        { -type => 'text/css', -src => "wsrc/$TH_CSS" },
         { -type => 'text/css', -src => 'wsrc/jquery-ui.css' },
         { -type => 'text/css', -src => 'wsrc/jquery-ui.theme.css' },
         {
@@ -489,7 +495,7 @@ qq(\n<img src="$lnk" width="$imgw" height="$imgh" class="tag_FRM"/>);
         }
         elsif ( 1 == $row[1] ) {
             $log =
-"<font color='midnightblue' style='font-weight:bold;font-style:italic'>$log</font>";
+"<font class='midnight' style='font-weight:bold;font-style:italic'>$log</font>";
             $tagged = 1;
         }
 
@@ -1097,7 +1103,7 @@ sub authenticate {
         }
     }
 
-    sub getConfiguration {
+    sub getConfiguration{
         my $db = shift;
         try {
             $st = $db->prepare("SELECT * FROM CONFIG;");
@@ -1106,6 +1112,7 @@ sub authenticate {
             while ( my @r = $st->fetchrow_array() ) {
 
                 switch ( $r[1] ) {
+                    case "$RELEASE_VER" { $RELEASE_VER  = $r[2] }
                     case "REC_LIMIT"    { $REC_LIMIT    = $r[2] }
                     case "TIME_ZONE"    { $TIME_ZONE    = $r[2] }
                     case "PRC_WIDTH"    { $PRC_WIDTH    = $r[2] }
@@ -1116,6 +1123,7 @@ sub authenticate {
                     case "AUTO_WRD_LMT" { $AUTO_WRD_LMT = $r[2] }
                     case "FRAME_SIZE"   { $FRAME_SIZE   = $r[2] }
                     case "RTF_SIZE"     { $RTF_SIZE     = $r[2] }
+                    case "THEME"        { $THEME        = $r[2] }
                     else {
                         print "Unknow variable setting: " . $r[1] . " == " . $r[2];
                     }
index 5b506f8aa29821a14a965d58ea42ecff7252ca0e..39f4ed994ae571c50bf55ddb80464db3f5fc66b8 100755 (executable)
@@ -1,10 +1,11 @@
 #!/usr/bin/perl -w
-#
-# Programed in vim by: Will Budic
+# Programed by: Will Budic
 # Open Source License -> https://choosealicense.com/licenses/isc/
 #
 use strict;
 use warnings;
+use Try::Tiny;
+use Switch;
  
 use CGI;
 use CGI::Session '-ip_match';
@@ -13,7 +14,14 @@ use DateTime;
 use DateTime::Format::SQLite;
 use Number::Bytes::Human qw(format_bytes);
 
-our $LOG_PATH    = '../../dbLifeLog/';
+#SETTINGS HERE!
+my $REC_LIMIT = 25;
+my $TIME_ZONE    = 'Australia/Sydney';
+my $LOG_PATH     = '../../dbLifeLog/';
+my $RELEASE_VER  = "";
+my $THEME        = 0;
+my $TH_CSS       = 'main.css';
+#END OF SETTINGS
 
 my $cgi = CGI->new;
 my $session = new CGI::Session("driver:File",$cgi, {Directory=>$LOG_PATH});
@@ -23,35 +31,42 @@ my $userid  =$session->param('alias');
 my $password=$session->param('passw');
 
 if(!$userid||!$dbname){
-       print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid");
-       exit;
+    print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid");
+    exit;
 }
 
-
 my $database = '../../dbLifeLog/' . $dbname;
 my $dsn      = "DBI:SQLite:dbname=$database";
 my $db       = DBI->connect( $dsn, $userid, $password, { RaiseError => 1 } ) or die "<p>Error->" & $DBI::errstri & "</p>";
-
-
 my @stat = stat $database;
 
+##################
+&getConfiguration;
+##################
+
 
-#SETTINGS HERE!
-my $REC_LIMIT = 25;
-my $TIME_ZONE = 'Australia/Sydney';
-#
-#END OF SETTINGS
 my $today = DateTime->now;
 $today->set_time_zone( $TIME_ZONE );
 
-my $q = CGI->new;
 
-print $q->header(-expires=>"+6os", -charset=>"UTF-8");
-print $q->start_html(-title => "Log Data Stats", -BGCOLOR=>"#c8fff8",
-                                -script=>{-type => 'text/javascript', -src => 'wsrc/main.js'},
-                            -style =>{-type => 'text/css', -src => 'wsrc/main.css'},
-                            -onload => ""
-                       );        
+my $BGCOL = '#c8fff8';
+    if ( $THEME eq 'Sun' ) {
+        $BGCOL = '#D4AF37';
+        $TH_CSS = "main_sun.css";
+    }elsif ($THEME eq 'Moon'){
+        $TH_CSS = "main_moon.css";
+        $BGCOL = '#000000';
+
+    }elsif ($THEME eq 'Earth'){
+        $TH_CSS = "main_earth.css";
+        $BGCOL = 'green';
+    }
+
+print $cgi->header(-expires=>"+6os", -charset=>"UTF-8");
+print $cgi->start_html(-title => "Log Data Stats", -BGCOLOR=>"$BGCOL",
+                       -script=>{-type => 'text/javascript', -src => 'wsrc/main.js'},
+                       -style =>{-type => 'text/css', -src => "wsrc/$TH_CSS"}                       
+                );       
 
 
 my $tbl = '<table class="tbl" border="1px"><tr class="r0"><td colspan="5"><b>* Personal Log Data Statistics *</b></td></tr>';
@@ -86,34 +101,43 @@ my  $processes = `$prc | sort -u -r -`;
 $processes =~ s/\s*0.00.*//gd;
 my $year =$today->year();
  
-$tbl .=qq(     <tr class="r1"><td>Number of Records:</td><td>$log_rc</td></tr>
-                       <tr class="r0"><td>No. of Records This Year:</td><td>$log_this_year_rc</td></tr>
-                       <tr class="r1"><td>No. of RTF Documents:</td><td>$notes_rc</td></tr>
-                       <tr class="r0"><td># Sum of Expenses For Year $year</td><td>$expense</td></tr>
-                       <tr class="r0"><td># Sum of Income For Year $year</td><td>$income</td></tr>
-                       <tr class="r0"><td>Gross For Year $year</td><td>$gross</td></tr>
-                       <tr class="r1"><td>$database</td><td>).(uc format_bytes($stat[7], bs => 1000)).q(</td></tr>                     
+$tbl .=qq(<tr class="r1"><td>LifeLog App. Version:</td><td>$RELEASE_VER</td></tr>
+             <tr class="r0"><td>Number of Records:</td><td>$log_rc</td></tr>
+          <tr class="r1"><td>No. of Records This Year:</td><td>$log_this_year_rc</td></tr>
+          <tr class="r0"><td>No. of RTF Documents:</td><td>$notes_rc</td></tr>
+          <tr class="r1"><td># Sum of Expenses For Year $year</td><td>$expense</td></tr>
+          <tr class="r0"><td># Sum of Income For Year $year</td><td>$income</td></tr>
+          <tr class="r1"><td>Gross For Year $year</td><td>$gross</td></tr>
+          <tr class="r0"><td>$database</td><td>).(uc format_bytes($stat[7], bs => 1000)).q(</td></tr>                  
 </table>);
 
-print qq(<div style="text-align:left; border: 1px solid black; padding:5px;"><h2>Your Life Log Server Statistics</h2><hr>
-       <span style="text-align:left; float:left; padding:15px;">$tbl<br><br><br><br></span>
-       <span style="text-align:left; margin:1px;  padding-right:15px; float:none;"><b>Server Info</b><hr><br>
-       $hardware_status</span></div>
+print qq(<div id="menu" title="To close this menu click on its heart, and wait." style="border: 1px solid black;">
+<a class="a_" href="config.cgi">Config</a><hr>
+<a class="a_" href="main.cgi">Log</a><hr>
+<br>
+<a class="a_" href="login_ctr.cgi?logout=bye">LOGOUT</a>
+</div>);
+
+print qq(<div style="text-align:left; border: 1px solid black; padding:5px;"><h2>Life Log Server Statistics</h2><hr>
+    <span style="text-align:left; float:left; padding:15px;">$tbl<br></span>
+    <span style="text-align:left; margin:1px;  padding-right:15px; float:none;"><b>Server Info</b><hr><br>
+    $hardware_status</span></div>
 <div class="tbl" style="text-align:left; border: 0px; padding:5px; float:none;">
 <b>Server Side Processes</b><hr>
 <pre style="text-align:left;">$processes </pre><div>);
 
-print $q->end_html;
+
+print $cgi->end_html;
 $db->disconnect();
 exit;
 
 sub selectSQL{
 
 
-       my $sth = $db->prepare( @_ );
-       $sth->execute();
-       my @row = $sth->fetchrow_array();
-       $sth->finish;
+    my $sth = $db->prepare( @_ );
+    $sth->execute();
+    my @row = $sth->fetchrow_array();
+    $sth->finish;
 
 return $row[0];
 }
@@ -133,4 +157,30 @@ sub camm {
  1 while $amm =~ s/^(-?\d+)(\d\d\d)/$1,$2/;
 return $amm;
 }
+
+
+
+
+sub getConfiguration {
+    try{
+        my $st = dbExecute('SELECT ID, NAME, VALUE FROM CONFIG;');
+        while (my @r=$st->fetchrow_array()){            
+            switch ($r[1]) {
+                case "RELEASE_VER" { $RELEASE_VER  = $r[2] }
+                case "THEME"       {$THEME= $r[2]}
+            }
+        }
+    }
+    catch{
+        print "<font color=red><b>SERVER ERROR</b></font>:".$_;
+    }
+
+}
+
+sub dbExecute{
+    my $ret    = $db->prepare(shift);
+       $ret->execute() or die "<p>Error->"& $DBI::errstri &"</p>";
+    return $ret;
+}
+
 ### CGI END
index eb96a95078ab4bc50027895f32e258280090429a..77452fa639fb31682f5f3b3ccd2ca15f8b1dc393 100644 (file)
@@ -226,3 +226,19 @@ img {
     float: right;
 }
 
+.midnight{
+    color:midnightblue;
+}
+
+
+a:link {
+    color:#5b06fa;
+}
+a:visited {
+color: #065bfa;
+}
+
+a:hover {
+    color: #2d7081;
+    font-style: oblique;
+}
\ No newline at end of file
diff --git a/htdocs/cgi-bin/wsrc/main_earth.css b/htdocs/cgi-bin/wsrc/main_earth.css
new file mode 100644 (file)
index 0000000..5d948af
--- /dev/null
@@ -0,0 +1,242 @@
+p {
+    font-family: Bookman;
+    margin-left: 70px;
+    font-weight: bold;
+}
+
+table,
+th,
+td {
+    font-family: Bookman;
+    border-collapse: collapse;
+    padding: 5px;
+    margin: auto;
+}
+
+div {
+    font-family: Bookman;
+    text-align: center;
+    vertical-align: middle;
+}
+
+#div_srh {
+    text-align: center;
+    vertical-align: middle;
+    display: none;
+    margin-top: 5px;
+    margin-bottom: 0px;
+}
+
+TABLE,
+th,
+.tbl {
+    border: 1px solid black;
+    padding-top: 5px;
+    padding-right: 5px;
+    padding-bottom: 5px;
+    padding-left: 5px;
+    margin-bottom: 0px;
+    margin-top: 5px;
+}
+
+.tbl_rem {
+    border: 1px solid black;
+    border-right: 1px solid black;
+    border-bottom: 1px solid black;
+    padding-top: 5px;
+    padding-right: 5px;
+    padding-bottom: 5px;
+    padding-left: 5px;
+    text-align: left;
+}
+
+.r0 {
+    background-color: #e46331;
+    border: 1px solid black;
+    border-right: 1px solid black;
+    vertical-align: top;
+}
+
+.r1 {
+    background-color: #a5682f;
+    border: 1px solid black;
+    border-right: 1px solid black;
+    vertical-align: top;
+}
+
+.hdr {
+    font-style: normal;
+    font-weight: bold;
+    font-size: large;
+    background-color: #7a3d03;
+    border: 1px solid #16380f;
+    border-right: 1px solid black;
+    text-align: center;
+}
+
+.edit {
+    margin: 2px;
+    padding: 2px;
+    font-size: 9pt;
+    color: midnightblue
+}
+
+#al {
+    align-items: left;
+    align-content: left;
+    text-align: left;
+}
+
+.log {
+    text-align: left;
+    word-wrap: break-word;
+    padding-left: 5px;
+}
+
+.rz {
+    border: 1px solid black;
+    text-align: left;
+    background-color: #118107;
+    vertical-align: top;
+    align-self: baseline;
+    height: auto;
+    padding: 2%;
+    margin: 0px auto;
+}
+
+div#rz {
+    border: 1px solid black;
+    text-align: left;
+    background-color: #08fa08;
+    vertical-align: top;
+    align-self: baseline;
+    height: auto;
+    padding: 2px;
+    margin: 0px auto;
+}
+
+#tag_FRM {
+    border: 2px solid #07750d;
+    padding: 5px;
+    text-align: right;
+    vertical-align: top;
+}
+
+img {
+    float: left;
+    padding: 0 10px
+}
+
+#cat_desc {
+    position: absolute;
+    border: 2px solid #7a3d03;
+    padding: 5px;
+    text-align: center;
+    background: #c28a4a;
+    margin-top: 15px;
+    width: 280px;
+    text-decoration-style: wavy;
+}
+
+#menu {
+    position: fixed;
+    float: left;
+    margin: 0;
+    border: 2px solid #118107;
+    padding: 5px;
+    text-align: center;
+    background: #c28a4a;
+    margin-left: 90%;
+}
+
+#cat_lst {
+    visibility: hidden;
+}
+
+#frm_login {
+    vertical-align: middle;
+    margin: 0;
+}
+
+.ui-button,
+.ui-button-text .ui-button {
+    font-size: 12px !important;
+}
+
+.ui-menu {
+    list-style: none;
+    padding: 10px;
+    margin: 0;
+    display: block;
+    width: 227px;
+    text-align: left;
+}
+
+.ui-menu .ui-menu {
+    margin-top: -3px;
+}
+
+.ui-menu .ui-menu-item {
+    margin: 0;
+    padding: 0;
+    width: 200px;
+}
+
+.ui-menu .ui-menu-item a {
+    text-decoration: none;
+    display: block;
+    padding: .2em .4em;
+    line-height: 1.5;
+    zoom: 1;
+}
+
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+    margin: -1px;
+}
+
+.ui-icon{
+    float:right;
+}
+
+#standalone-container {
+    margin-top: 5px;
+    border: 1px solid black;
+}
+
+#editor-container {
+    height: 140px;
+    max-height: 480px;
+    border-top: 1px solid gray;
+    border-right: 1px solid gray;
+    background-color: #118107;
+}
+
+#toolbar-container {
+    border: 1px solid black;
+    background-color: #118107;
+    margin-bottom: 3px;
+}
+
+.save_button {
+    margin-top: 3px;
+    float: right;
+}
+
+.midnight{
+    color:#adeccc;
+}
+
+
+a:link {
+    color:#f8f868;
+  }
+  a:visited {
+    color: #d2d8d2;
+  }
+  a:hover {
+    color: #04f87e;
+  }
+  a:active {
+      color: #ff7b00;
+  }
\ No newline at end of file
diff --git a/htdocs/cgi-bin/wsrc/main_moon.css b/htdocs/cgi-bin/wsrc/main_moon.css
new file mode 100644 (file)
index 0000000..515d4c8
--- /dev/null
@@ -0,0 +1,244 @@
+p {
+    font-family: Bookman;
+    margin-left: 70px;
+    font-weight: bold;
+}
+
+table,
+th,
+td {
+    font-family: Bookman;
+    border-collapse: collapse;
+    padding: 5px;
+    margin: auto;
+    color: white;
+}
+
+div {
+    font-family: Bookman;
+    text-align: center;
+    vertical-align: middle;
+    color: white;
+}
+
+#div_srh {
+    text-align: center;
+    vertical-align: middle;
+    display: none;
+    margin-top: 5px;
+    margin-bottom: 0px;
+}
+
+TABLE,
+th,
+.tbl {
+    border: 1px solid white;
+    padding-top: 5px;
+    padding-right: 5px;
+    padding-bottom: 5px;
+    padding-left: 5px;
+    margin-bottom: 0px;
+    margin-top: 5px;
+}
+
+.tbl_rem {
+    border: 1px solid white;
+    border-right: 1px solid white;
+    border-bottom: 1px solid white;
+    padding-top: 5px;
+    padding-right: 5px;
+    padding-bottom: 5px;
+    padding-left: 5px;
+    text-align: left;
+}
+
+.r0 {
+    background-color: #535353;
+    border: 1px solid white;
+    border-right: 1px solid white;
+    vertical-align: top;
+}
+
+.r1 {
+    background-color: #272626;
+    border: 1px solid white;
+    border-right: 1px solid white;
+    vertical-align: top;
+}
+
+.hdr {
+    font-style: normal;
+    font-weight: bold;
+    font-size: large;
+    background-color: #363531;
+    border: 1px solid white;
+    border-right: 1px solid white;
+    text-align: center;
+}
+
+.edit {
+    margin: 2px;
+    padding: 2px;
+    font-size: 9pt;
+    color: #aeaee4;
+}
+
+#al {
+    align-items: left;
+    align-content: left;
+    text-align: left;
+}
+
+.log {
+    text-align: left;
+    word-wrap: break-word;
+    padding-left: 5px;
+}
+
+.rz {
+    border: 1px solid white;
+    text-align: left;
+    background-color: #363531 
+    vertical-align: top;
+    align-self: baseline;
+    height: auto;
+    padding: 2%;
+    margin: 0px auto;
+}
+
+div#rz {
+    border: 1px solid white;
+    text-align: left;
+    background-color: #e6ffff;
+    vertical-align: top;
+    align-self: baseline;
+    height: auto;
+    padding: 2px;
+    margin: 0px auto;
+}
+
+#tag_FRM {
+    border: 2px solid #2b3d46;
+    padding: 5px;
+    text-align: right;
+    vertical-align: top;
+}
+
+img {
+    float: left;
+    padding: 0 10px
+}
+
+#cat_desc {
+    position: absolute;
+    border: 2px solid #9bb6c3;
+    padding: 5px;
+    text-align: center;
+    background: #0f0f0f;
+    margin-top: 15px;
+    width: 280px;
+    text-decoration-style: wavy;
+}
+
+#menu {
+    position: fixed;
+    float: left;
+    margin: 0;
+    border: 2px solid #9bb6c3;
+    padding: 5px;
+    text-align: center;    
+    margin-left: 90%;
+    color: white;
+    background-color: #363531;
+}
+
+#cat_lst {
+    visibility: hidden;
+}
+
+#frm_login {
+    vertical-align: middle;
+    margin: 0;
+}
+
+.ui-button,
+.ui-button-text .ui-button {
+    font-size: 12px !important;
+}
+
+.ui-menu {
+    list-style: none;
+    padding: 10px;
+    margin: 0;
+    display: block;
+    width: 227px;
+    text-align: left;
+}
+
+.ui-menu .ui-menu {
+    margin-top: -3px;
+}
+
+.ui-menu .ui-menu-item {
+    margin: 0;
+    padding: 0;
+    width: 200px;
+}
+
+.ui-menu .ui-menu-item a {
+    text-decoration: none;
+    display: block;
+    padding: .2em .4em;
+    line-height: 1.5;
+    zoom: 1;
+}
+
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+    margin: -1px;
+}
+
+.ui-icon{
+    float:right;
+}
+
+#standalone-container {
+    margin-top: 5px;
+    border: 1px solid white;
+}
+
+#editor-container {
+    height: 140px;
+    max-height: 480px;
+    border-top: 1px solid gray;
+    border-right: 1px solid gray;
+    background-color: #363531;
+}
+
+#toolbar-container {
+    border: 1px solid white;
+    background-color: #363531;
+    margin-bottom: 3px;
+}
+
+.save_button {
+    margin-top: 3px;
+    float: right;
+}
+
+.midnight{
+   color:#f8f868;
+}
+
+a:link {
+  color:#f8f868;
+}
+a:visited {
+  color: #d2d8d2;
+}
+a:hover {
+  color: #04c7f8;
+}
+a:active {
+    color: #ff7b00;
+} 
\ No newline at end of file
diff --git a/htdocs/cgi-bin/wsrc/main_sun.css b/htdocs/cgi-bin/wsrc/main_sun.css
new file mode 100644 (file)
index 0000000..7731e25
--- /dev/null
@@ -0,0 +1,227 @@
+p {
+    font-family: Bookman;
+    margin-left: 70px;
+    font-weight: bold;
+}
+
+table,
+th,
+td {
+    font-family: Bookman;
+    border-collapse: collapse;
+    padding: 5px;
+    margin: auto;
+}
+
+div {
+    font-family: Bookman;
+    text-align: center;
+    vertical-align: middle;
+}
+
+#div_srh {
+    text-align: center;
+    vertical-align: middle;
+    display: none;
+    margin-top: 5px;
+    margin-bottom: 0px;
+}
+
+TABLE,
+th,
+.tbl {
+    border: 1px solid black;
+    padding-top: 5px;
+    padding-right: 5px;
+    padding-bottom: 5px;
+    padding-left: 5px;
+    margin-bottom: 0px;
+    margin-top: 5px;
+}
+
+.tbl_rem {
+    border: 1px solid black;
+    border-right: 1px solid black;
+    border-bottom: 1px solid black;
+    padding-top: 5px;
+    padding-right: 5px;
+    padding-bottom: 5px;
+    padding-left: 5px;
+    text-align: left;
+}
+
+.r0 {
+    background-color: #FFDF00;
+    border: 1px solid black;
+    border-right: 1px solid black;
+    vertical-align: top;
+}
+
+.r1 {
+    background-color: #CFB53B;
+    border: 1px solid black;
+    border-right: 1px solid black;
+    vertical-align: top;
+}
+
+.hdr {
+    font-style: normal;
+    font-weight: bold;
+    font-size: large;
+    background-color: #D4AF37;
+    border: 1px solid black;
+    border-right: 1px solid black;
+    text-align: center;
+}
+
+.edit {
+    margin: 2px;
+    padding: 2px;
+    font-size: 9pt;
+    color: midnightblue
+}
+
+#al {
+    align-items: left;
+    align-content: left;
+    text-align: left;
+}
+
+.log {
+    text-align: left;
+    word-wrap: break-word;
+    padding-left: 5px;
+}
+
+.rz {
+    border: 1px solid black;
+    text-align: left;
+    background-color: #D4AF37 vertical-align: top;
+    align-self: baseline;
+    height: auto;
+    padding: 2%;
+    margin: 0px auto;
+}
+
+div#rz {
+    border: 1px solid black;
+    text-align: left;
+    background-color: #e6ffff;
+    vertical-align: top;
+    align-self: baseline;
+    height: auto;
+    padding: 2px;
+    margin: 0px auto;
+}
+
+#tag_FRM {
+    border: 2px solid rgb(148, 205, 231);
+    padding: 5px;
+    text-align: right;
+    vertical-align: top;
+}
+
+img {
+    float: left;
+    padding: 0 10px
+}
+
+#cat_desc {
+    position: absolute;
+    border: 2px solid black;
+    padding: 5px;
+    text-align: center;
+    background: #D4AF37;
+    margin-top: 15px;
+    width: 280px;
+    text-decoration-style: wavy;
+}
+
+#menu {
+    position: fixed;
+    float: left;
+    margin: 0;
+    border: 1px solid black;
+    padding: 5px;
+    text-align: center;
+    background: #D4AF37;
+    margin-left: 90%;
+}
+
+#cat_lst {
+    visibility: hidden;
+}
+
+#frm_login {
+    vertical-align: middle;
+    margin: 0;
+}
+
+.ui-button,
+.ui-button-text .ui-button {
+    font-size: 12px !important;
+}
+
+.ui-menu {
+    list-style: none;
+    padding: 10px;
+    margin: 0;
+    display: block;
+    width: 227px;
+    text-align: left;
+}
+
+.ui-menu .ui-menu {
+    margin-top: -3px;
+}
+
+.ui-menu .ui-menu-item {
+    margin: 0;
+    padding: 0;
+    width: 200px;
+}
+
+.ui-menu .ui-menu-item a {
+    text-decoration: none;
+    display: block;
+    padding: .2em .4em;
+    line-height: 1.5;
+    zoom: 1;
+}
+
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+    margin: -1px;
+}
+
+.ui-icon{
+    float:right;
+}
+
+#standalone-container {
+    margin-top: 5px;
+    border: 1px solid black;
+}
+
+#editor-container {
+    height: 140px;
+    max-height: 480px;
+    border-top: 1px solid gray;
+    border-right: 1px solid gray;
+    background-color: #D4AF37;
+}
+
+#toolbar-container {
+    border: 1px solid black;
+    background-color: #D4AF37;
+    margin-bottom: 3px;
+}
+
+.save_button {
+    margin-top: 3px;
+    float: right;
+}
+
+.midnight{
+    color:midnightblue;
+}
\ No newline at end of file