#!/usr/bin/perl

require "../config.cgi";

$mess eq "no";

my($mytime) = time();
my($t1) = time();
my($t2);
my($version) = "1.0c";

&parseForm;

$FORM{'base'} = "$monitor_base";
$FORM{'rbase'} = "$monitor_rbase";

$mytime = $mytime - 15;

&htmlTop;
&checkFiles($FORM{'base'});
&htmlBottom;
exit;

sub checkFiles {
    my($base) = shift;
    my($fullFilename);
    my(@lines);
    my($title);
    my($modtime);

    opendir(ROOT,$base);
    @lines = readdir(ROOT);
    closedir(ROOT);

    foreach (@lines) {
        next if /^\.|\.\.$/;

        $fullFilename = "$base/$_";

        if (-d $fullFilename) {
            checkFiles( $fullFilename);
            next;
        }

        if (!($fullFilename =~ m/\.htm/i)) { next; }

        $modTime = (stat($fullFilename))[9];

        if ($modTime < $mytime) { next; }

        $title = "Untitled";

        open(FILE,$fullFilename);
        while( <FILE> ) {
            if (m!<title>(.+)</title>!i) {
                $title = $1;
                last;
            }
        }
        close(FILE);

        $fullFilename =~ s/$FORM{'base'}//g;
        $fullFilename = "$FORM{'rbase'}$fullFilename";

if ($title ne "")
{
$mess = "yes";

if ($java eq "yes")
	{
	print "<applet code=\"Vivace.class\" width=0 height=0>\n
	<param name=\"uLaw8000AU\" value=\"$mon_beep\"></applet>\n";
	}

print "
<script>
<!--- hide script from other browsers
function initArray() {
  this.length = initArray.arguments.length
  for (var i = 0; i < this.length; i++)
    this[i+1] = initArray.arguments[i]
}
var hexChars = \"0123456789ABCDEF\";
function Dec2Hex (Dec) {
  var a = Dec % 16;
  var b = (Dec - a)/16;
  hex = \"\" + hexChars.charAt(b) + hexChars.charAt(a);
  return hex;
}
function bgChanger (begin, end, steps) {
  steps = steps -1 ;
  redA     = begin.charAt(0) + begin.charAt(1);
  red_valA = parseInt(redA,'16');
  redB     = end.charAt(0) + end.charAt(1);
  red_valB = parseInt(redB,'16');
  red_int  = ((red_valB - red_valA) / steps) * -1;
  grnA     = begin.charAt(2) + begin.charAt(3);
  grn_valA = parseInt(grnA,'16');
  grnB     = end.charAt(2) + end.charAt(3);
  grn_valB = parseInt(grnB,'16');
  grn_int  = ((grn_valB - grn_valA) / steps) * -1;
  bluA     = begin.charAt(4) + begin.charAt(5);
  blu_valA = parseInt(bluA,'16');
  bluB     = end.charAt(4) + end.charAt(5);
  blu_valB = parseInt(bluB,'16');
  blu_int  = ((blu_valB - blu_valA) / steps) * -1;
  step = 2;
  red = red_valA;
  grn = grn_valA;
  blu = blu_valA;
  document.bgColor = begin;
  while ( steps >= step ) {
    red -= red_int;
    red_round = Math.round(red);
    red_hex = Dec2Hex(red);
    grn -= grn_int;
    grn_round = Math.round(grn);
    grn_hex = Dec2Hex(grn);
    blu -= blu_int;
    blu_round = Math.round(blu);
    blu_hex = Dec2Hex(blu);
    document.bgColor = red_hex + grn_hex + blu_hex;
    step++;
  }
  document.bgColor = end;
}
// end hiding from old browsers -->

<!--- hide script from old browsers
<!-- 

  bgChanger(\"000000\",\"000000\",25);
  bgChanger(\"000000\",\"FF0000\",25);
  bgChanger(\"FF0000\",\"000000\",25);
  bgChanger(\"000000\",\"AA00EE\",25);
  bgChanger(\"AA00EE\",\"000000\",25);
  bgChanger(\"000000\",\"0000FF\",25);
  bgChanger(\"0000FF\",\"000000\",25);
  bgChanger(\"000000\",\"FF2400\",25);
// -->
// end hiding from old browsers -->
</script>";

print "
<font color=blue size=6>\n
$arrive</font>
<p>
<font size=4 color=000000>
$refresh\n"; </font>
}

    }

if ($mess ne "yes")
{
$modTime = $mytime - $modTime + 15;
print "<font size=5 color=000000>
$no_new<br>\n
<font size=4>
$recent_one "; 
if ($modTime > 300)
{
print " $modTime "; 
}
else
{
print " <font color=blue>$modTime</font> ";
}
print "
$recent_two.
</font>
</font>";
}

}

sub niceDate {
    my($date) = shift;
    my($myDate);

    $myDate = substr($date,0,3). " ". substr($date, 8,2)."/".substr($date,4,3)."/".substr($date,20,4);
    $myDate = "$myDate ".substr($date,11,8);
    return $myDate;
}

sub parseForm {
    my($key,$value);
    my($buffer);
    my(@lines);
    my($line);

    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
    if ($buffer eq "") { $buffer = $ENV{'QUERY_STRING'}; }

    @lines = split( /&/, $buffer);
    foreach $line (@lines) {
                chomp($line);
                chomp($line);
                chomp($line);
                chomp($line);
        ($key,$value) = split( /=/,$line);

        $key = lc($key);
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
        $value =~ s/\n//g;
        $value =~ s/\r/ /g;
        $value =~ s/</&lt;/g;
        $value =~ s/>/&gt;/g;
        $FORM{$key} = $value;
    }
        if ($FORM{'uname'} ne "") { 
                $FORM{'base'} = 
"/usr/people/patrol/premium/$FORM{'uname'}/User_html";
                $FORM{'rbase'} = "/~$FORM{'uname'}";
        }
}

sub myError {
   my($errmsg) = shift;

   print "Content-type: text/html\n\n";
   print "<HTML>
<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5\">
<HEAD><TITLE>Error</TITLE></HEAD><BODY>\n";
   print "Error<P>\n";
   print "</BODY></HTML>\n";
   exit;
}

sub writeLog {
    my($site);

    $site = $ENV{'REMOTE_HOST'};
    if ($site eq "") { $site = $ENV{'REMOTE_ADDR'}; }

    if (!(-e "$FORM{'log'}" )) {
        open( OUTFILE,">$FORM{'log'}") or return;
        print OUTFILE "\"time\",\"remote site\"\n";
        close(OUTFILE);
    }

    open( OUTFILE,">>$FORM{'log'}") or return;
    print OUTFILE "\"" . localtime() . "\",\"$site\"\n";
    close( OUTFILE );
}

sub htmlTop {
        print "Content-type: text/html\n\n";
        print "<HTML>
<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5\">
<HEAD>



<TITLE>New Message Monitor</TITLE></HEAD>\n";
        &doBody;
        $date = gmtime( $mytime );
	print "<font size=6 color=$link_color>New Message Monitor</font>
	<p>
	$description
	<hr noshade size=1>";
}

sub htmlBottom {
        $t2 = time();
}
sub doBody {
        my($line) = "<BODY BGCOLOR=$popup_bgcolor link = $link_color vlink = $vlink_color alink = $vlink_color";
        $line = "$line>\n";
        print $line;
}
