#!/usr/bin/perl -Tw
### msgboard.cgi

use CGI qw/:standard/;
use CGI::Cookie;
require "/home/ericll75/www/common/dbcommon.sub";
require "/home/ericll75/www/common/eltaint.sub";

BEGIN {
  use CGI::Carp qw(carpout);
  open(LOG, ">>/home/ericll75/www/steepturns.com/binladen/msgs2001-2002/msgboard.log") or
       die("Unable to open msgboard.log: $!\n");
  carpout(LOG);
}
use CGI::Carp qw(fatalsToBrowser);
$CGI::POST_MAX = 1024;
print "Content-Type: text/html\n\n";

my $ii;
my $key;
my $value;
my $ThisGroup;

my $LastMessage;
my $ThisMessage;
my @both;
my @temp;
my %cookies = fetch CGI::Cookie;

$ThisMessage = elonlynum(param('ThisMsg'));
$LastMessage = elonlynum(param('LastMsg'));

unless($ThisMessage) {
  if (length($cookies{'LastMessage1'}) > 0) {
    $LastMessage = $cookies{'LastMessage1'}->value;
    $ThisMessage = $LastMessage; }
  if ($ThisMessage eq '/' || $ThisMessage eq '') {
    $ThisMessage = 1;
  }
}
#  while (($key,$value) = each(%cookies)) {
#    if ($key =~ m/LastMessage/) {
#      $LastMessage = $value;
#      $LastMessage = substr $LastMessage,12;
#      @temp = split /;/,$LastMessage;
#      $LastMessage = $temp[0];
#      $ThisMessage = $temp[0];
#    }
#  }
#  unless ($ThisMessage) {
#    $ThisMessage = 1;
#  }
#}

open (MsgMax, "/home/ericll75/www/steepturns.com/binladen/msgs2001-2002/MsgBinLaden1.max") || croak ("Cannot open message max data file!");
flock(MsgMax,1) || croak ("Cannot flock message max data file!");
  $TotalMsgs = <MsgMax>;      #The second line of PicScores tells total # of pics whose data is stored in that file. 
close (MsgMax) || croak ("Cannot close message max data file!");
chomp($TotalMsgs); 

if ($ThisMessage > $TotalMsgs || $ThisMessage < 1) {
  print "<font color=red>That message does not exist.  You may have reached the last message. (error 1)</font><br>";
  if ($LastMessage <= $TotalMsgs && $LastMessage >= 1) {
    $ThisMessage = $LastMessage;
  }
  else {
    $ThisMessage = $TotalMsgs;
  }
}


my $jj;
&GetMsg;
if ($jj==0) {           #If that message number does not exist, get the
                        #last message viewed instead.
  $ThisMessage = $LastMessage;
  &GetMsg;
  print "<font color=red>That message does not exist.  You may have reached the last message.</font><br>";
}


my $MsgNum;
my $PostDate;
my $FromName;
my $ToName;
my $MsgSubject;
my $ReplyOf;
my @FollowUps;
my $MsgContent;
my $ThPrev;
my $ThNext;

foreach (@$ThisGroup) {
  $MsgNum           = @$_[0];
  $PostDate         = @$_[1];
  $FromName         = @$_[2];
  $ToName           = @$_[3];
  $MsgSubject       = @$_[4];
  $ReplyOf          = @$_[5];
  @FollowUps        = split(/\^/, @$_[6]);
  $MsgContent       = @$_[7];
  $ThPrev           = @$_[9];
  $ThNext           = @$_[10];
}

if (length($MsgContent) > 3072) {
  $MsgContent = substr($MsgContent,0,3072);
}
$MsgContent =~ s/\r\n/\<br\>/g;   #Change return + newline to <br>.

#-----------------------------------------------
print qq`
<html>
<head>
  <title>Where is Bin Laden? Message Board</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <SCRIPT language=JavaScript>
  <!--
    var ThisMessage = Number("$ThisMessage");
    var LastMessage = Number("$LastMessage");
    var PostDate    = "$PostDate";
    var TotalMsgs   = "$TotalMsgs";
    var MsgContent  = '$MsgContent';
    var MsgNum      = "$MsgNum";
    var FromName    = "$FromName";
    var MsgSubject  = "$MsgSubject";
    var ThreadPrev  = "$ThPrev";
    var ThreadNext  = "$ThNext";

    function GoDirectMsg(ThatOne) {
      document.MsgFunc.JumpValue.value = ThatOne
      GoThere("jump");
    }
    function GoThere(GoWhere) {
      expireDate = new Date;
      expireDate.setDate(expireDate.getDate()+365);
      if (GoWhere=="jump") {
        if (Number(document.MsgFunc.JumpValue.value) < 1 || Number(document.MsgFunc.JumpValue.value) > 65000) {
          alert("Please enter the message number to jump to.");
        }
        else if (Number(document.MsgFunc.JumpValue.value) > TotalMsgs) {
          alert("Invalid Message Number!  Valid Messages Numbers are 1 through "+TotalMsgs+".");
        }
        else {
          document.MsgFunc.ThisMsg.value = Number(document.MsgFunc.JumpValue.value);
          document.MsgFunc.LastMsg.value = ThisMessage;
          document.cookie = "LastMessage1=" + document.MsgFunc.JumpValue.value + ";path=/;expires=" + expireDate.toGMTString();
          document.MsgFunc.submit();
        }
      }
      else if (GoWhere=="prev") {
        var GoDest = ThisMessage - 1;
        if (GoDest < 1) {
          alert("You are already at the first message.");
        }
        else {
          document.MsgFunc.ThisMsg.value = GoDest;
          document.MsgFunc.LastMsg.value = ThisMessage;
          document.cookie = "LastMessage1=" + GoDest + ";path=/;expires=" + expireDate.toGMTString();
          document.MsgFunc.submit();
        }
      }          
      else if (GoWhere=="next") {
        var GoDest = ThisMessage + 1;
        if (GoDest > TotalMsgs) {
          alert("You are already at the last message.");
        }
        else {
          document.MsgFunc.ThisMsg.value = GoDest;
          document.MsgFunc.LastMsg.value = ThisMessage;
          document.cookie = "LastMessage1=" + GoDest + ";path=/;expires=" + expireDate.toGMTString();
          document.MsgFunc.submit();
        }
      }
      else if (GoWhere=="lastviewed") {       
        document.MsgFunc.ThisMsg.value = LastMessage;
        document.MsgFunc.LastMsg.value = ThisMessage;
        document.cookie = "LastMessage1=" + document.MsgFunc.ThisMsg.value + ";path=/;expires=" + expireDate.toGMTString();
        document.MsgFunc.submit();
      }
      else if (GoWhere=="post") {
        window.open ('postmessage1.html', 'PostMsg', config='height=500, width=750, toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes, location=no, directories=no, status=no');  
      }
      else if (GoWhere=="reply") {
        var ReplyHandle = window.open('blank.htm', 'ReplyMsg', config='height=500, width=750, toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes, location=no, directories=no, status=no');
        ReplyHandle.document.writeln('<html><body>');
        ReplyHandle.document.writeln('<form name="ReplyFunc" action="replymessage.cgi" method="post">');
        ReplyHandle.document.writeln('<input type=hidden name=FromName value="' + FromName + '">');
        ReplyHandle.document.writeln('<input type=hidden name=MsgNum value=' + MsgNum + '>');
        ReplyHandle.document.writeln('<input type=hidden name=MsgSubject value="' + MsgSubject + '">');
        ReplyHandle.document.write  ('<input type=hidden name=RepText value="');
        ReplyHandle.document.write  (MsgContent);
        ReplyHandle.document.writeln('"><\/form>');
        ReplyHandle.document.writeln('<\/body><\/html>');
        ReplyHandle.document.ReplyFunc.submit();
      }
    }
  //-->
  </SCRIPT>
<style type="text/css">
<!--
td {font-family: "Times New Roman", Times, serif; font-size: 16px}
-->
</style>
</head>

<body bgcolor="#FFFFFF" text="#000000" onLoad="if(parent.frames.length!=0)top.location='http://steepturns.com/binladen/msgs2001-2002/';">
<a href="http://steepturns.com/binladen">Return to HOME</a>
  <div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size=7><i><b>
    Where is Bin Laden?</b></i></font>
  </div>
  <br>
  <table width="90%" border=0><tr><td>
    <table border=0>
      <SCRIPT language=JAVASCRIPT>
      <!-- Hiding JavaScript from older browsers
        if (ThreadPrev > 0 || ThreadNext > 0) {
          document.writeln ('<tr><td colspan=2>');
          document.write ('<table border=1 cellspacing=0 cellpadding=0 align=left><tr>');
          if (ThreadPrev > 0) { document.write('<td valign=middle>  <font size=2><a href="javascript:GoDirectMsg('+ThreadPrev+');">Previous in Thread</a></font>  </td>'); }
          if (ThreadNext > 0) { document.write('<td valign=middle>  <font size=2><a href="javascript:GoDirectMsg('+ThreadNext+');">Next in Thread</a></font>  </td>'); }
          document.writeln ('</tr></table>');
          document.writeln ('</td></tr>');
        }
        document.write  ('<tr><td><br><br><font color=blue>Msg Number  : </font></td><td><br><br><font color=black>');
        document.writeln(MsgNum + ' out of $TotalMsgs</font><br></td></tr>');
        document.writeln('<tr><td><font color=blue>Date of Post: </font></td><td><font color=black>');
        document.writeln(PostDate.substring(4,6)+'-'+PostDate.substring(6,8)+'-'+PostDate.substring(0,4));
        document.write  (PostDate.substring(8,10)+':'+PostDate.substring(10,12)+':'+PostDate.substring(12));
        document.writeln('</font><br></td></tr>');
        document.writeln('<tr><td><font color=blue>Posted by   : </font></td><td><font color=black>' + FromName + '</font><br></td></tr>');
        document.writeln('<tr><td><font color=blue>Addressed to: </font></td><td><font color=black>$ToName</font><br></td></tr>');
        document.write  ('<tr><td><font color=blue>Subject     : </font></td><td><font color=black>');
        document.writeln(MsgSubject + '</font><br></td></tr>');
      // done hiding -->
      </SCRIPT>`;
if ($ReplyOf) {
  print qq`      <tr><td><font color=blue>In Reply to : </font></td><td><font color=black><a href="javascript:GoDirectMsg($ReplyOf);">$ReplyOf</a></font><br></td></tr>`;
}
if (scalar(@FollowUps) > 0) {
  print qq`      <tr><td><font color=blue>Follow-Ups  : </font></td><td><font color=black>`;
  print qq`<a href="javascript:GoDirectMsg($FollowUps[0]);">$FollowUps[0]</a>`;
  for ($ii=1;$ii<=$#FollowUps;$ii++) {
    print qq`, <a href="javascript:GoDirectMsg($FollowUps[$ii]);">$FollowUps[$ii]</a>`;
  }
  print "</font><br></td></tr>";
}
print qq`
    </table>
    <br><br>
  </td></tr>
  <tr><td>
    <SCRIPT language=JavaScript>
    <!--
      document.writeln(MsgContent);
    //-->
    </SCRIPT>
  </td></tr>
  </table>
  <p> </p>
<form name="MsgFunc" method="post" action="http://steepturns.com/binladen/msgs2001-2002/">
  <input type=hidden name=LastMsg value="">
  <input type=hidden name=ThisMsg value="">
  <table border=1 width=600>
    <tr>
      <td> </td>
      <td align=center><input type="button" name="ReplyMsg" value="Reply to Message" onClick="GoThere('reply')"></td>
      <td> </td>
    </tr>
    <tr>
      <td align=center><input type="button" name="PrevMsg" value="Previous Msg" onClick="GoThere('prev')"></td>
      <td align=center><INPUT TYPE="button" name="PostMsg" value="Post a Message" onClick="GoThere('post')"></td>
      <td align=center><input type="button" name="NextMsg" value="Next Msg" onClick="GoThere('next')"></td>
    </tr>
  </table>
  <br>
  <table border=1 width=600>
    <tr>
      <td align=center><input type="button" name="JumpMsg" value="Jump to Message:" onClick="GoThere('jump')">    
        <SCRIPT language=JavaScript>
        <!--
var uagent = window.navigator.userAgent.toLowerCase();
if (uagent.indexOf('opera') != -1) {
  document.writeln('<input type="text" name="JumpValue" maxlength=6 size=4 onchange=GoThere("jump")>');
}
else if (navigator.appName == "Netscape") {
  document.writeln('<input type="text" name="JumpValue" maxlength=6 size=4 onchange=GoThere("jump")>');
}
else if (navigator.appName == "Microsoft Internet Explorer") {
  function JumpNoEnter() {
    if (!(window.event && window.event.keyCode == 13)) { return true }
    else { GoThere("jump") }
  }
  document.writeln('<input type="text" name="JumpValue" maxlength=6 size=4 onkeypress="return JumpNoEnter()">');
}
else if (navigator.appName != "Microsoft Internet Explorer" && navigator.appName != "Netscape") {
  document.writeln('<input type="text" name="JumpValue" maxlength=6 size=4 onchange=GoThere("jump")>');
}
        //-->
        </SCRIPT>
      </td>
      <td align=center><input type="button" name="JumpLast" value="Jump to Last Message Viewed" onClick="GoThere('lastviewed')"></td>
    </tr>
  </table>
</form>
Indexes:<br><img src="icons/bullet-tri-h.gif" height=7 width=7>  <a href="dateindex1.html">By Date</a>
        <br><img src="icons/bullet-tri-h.gif" height=7 width=7>  <a href="threadindex1.html">By Thread</a>
  <br><br><br>
<table border=0 align=left width="100%">
  <tr><td align=left width=88 cellspacing=0 cellpadding=0>`;
#    <!-- TradeMyTraffic! Banner Code v1.00 -->
#    <script language="javascript1.2" type="text/javascript" src="http://www.trademytraffic.com/adhtml.php?siteid=92&size=88x31"> </script>
#    <noscript>
#      <a href="http://www.trademytraffic.com/adhref.php"><img src="http://www.trademytraffic.com/adhtml.php?siteid=92&size=88x31&noscript=1" border=0></a>
#    </noscript>
#    <!-- TradeMyTraffic! Banner Code End -->

print qq`---  </td><td align=center width="*">
    <P><FONT color="#0000ff" size=1><A href="http://steepturns.com/" target=_top>©2001 Steep Turns(SM) Web Design</A> </FONT></P>
  <p><a href="http://steepturns.com" target=_top>
    <img alt="Steep Turns(SM) Web Design" border=0 height=46 src="http://steepturns.com/SALMiniWhite.gif" width=50></a>
  </p>
  </td><td width=88> </td></tr>
</table>
</body>
</html>`;
exit;
#---------------------------------------------
sub GetMsg {       #Pull a message from the database, and check for errors.
  &CreateDBConnection;
    $SQL = "SELECT * FROM MsgBinLaden1 WHERE MsgNum = $ThisMessage";
    &DoSQL;
    $ThisGroup = $sth->fetchall_arrayref;
  $dbh->disconnect;

  if(defined($str)) {          #If they tried to retrieve a non-existant message, then...
    &CreateDBConnection;
      $SQL = "SELECT * FROM MsgBinLaden1 WHERE MsgNum = $LastMessage";
      &DoSQL;
      $ThisGroup = $sth->fetchall_arrayref;
    $dbh->disconnect;
    if(defined($str)) {
      &CreateDBConnection;
        $SQL = "SELECT * FROM MsgBinLaden1 WHERE MsgNum = 1";
        &DoSQL;
        $ThisGroup = $sth->fetchall_arrayref;
      $dbh->disconnect;
      if (defined($str)) {
        print "MySQL Error! $str";
        exit;
      }
    }
  }
  $jj = 0;
  foreach (@$ThisGroup) {
    $jj ++;
  }
}


