#!/usr/bin/perl


$| = 1;
$demo="off";
$version = "300001"; # August 15th 2001
$bversion = "b3.1";

&subdirectory;
&ver204;

&cookie_vars; #basic cookie variable
$salt = "active"; # to help crypt
$enc = crypt(active, $salt); # set default password
$location_of_lock_file = "guestbook.lock"; ## thanks to extropia.com
unless (-e "$guestbook_data_name")
{
	@months = ("January","February","March","April","May","June","July","August","September","October","November","December");
	&GetDate;
	$now = &amqdate($messagedate);
}
&startup;
&open_prefs;
&GetDate;
&check_update;
&check_new_files;

$alignment = "center" if ($alignment eq "");
# &get_colors;
if ($ENV{'REQUEST_METHOD'} eq "GET") {
		$buffer = $ENV{'QUERY_STRING'};
}
elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
		read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
	($name, $value) = split(/=/, $pair);
	# Un-Webify plus signs and %-encoding
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$FORM{$name} = $value;
	$name =~ s/_/ /g;
	$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
}
$action = $FORM{'action'};
$direct = $FORM{'direct'};
@old_words = split (/\,/, $bad_words);
$added_words = "skcuf daehtihs etihs tihs stihs tawt reggin rekcufrehtom rekcuf tnuc rekcus kcoc dratsab kcuf gnikcuf sknaw knaw stnuc sdratsab sreknaw reknaw elohesra selohesra esra sesra";
@letters = split (//, $added_words) ;
$reverse = join ("", reverse @letters);
@new_words = split (/ /, $reverse);
@words = (@new_words, @old_words);

@anti_ips = split (/\,/, $anti_ips);
$ipoops = "no";
$RemoteHost = $ENV{'REMOTE_HOST'};
if ((!$RemoteHost) || ($RemoteHost =~ m!^\d+\.\d+\.\d+\.\d+$!)) {
	if ($ENV{'REMOTE_ADDR'} =~ m!^(\d+)\.(\d+)\.(\d+)\.(\d+)$!) {
			$RemoteHost = (gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0] || $ENV{'REMOTE_ADDR'};
	}
	$RemoteHost =~ tr[A-Z][a-z];
}
foreach (@anti_ips) {
	next unless $_;
	$ipoops = "yes" if ($RemoteHost =~ m!$_!);
	$ipoops = "yes" if ($ENV{'REMOTE_ADDR'} =~ m!$_!);
}
sub end
{
	&basic_header;
	print qq~ <center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1><b> <a href="javascript:history.go(-1)">$TXT_blocked_IP</a> </b></font> ~;
	exit;
}
&actions;
########### read
sub read
{
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@datalist = ();
	@data = ();
	@data = <USER_FILE>;
	close(USER_FILE);
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		unless (($fields[10] eq "del") || ($fields[15] eq "waiting"))
		{
			push (@datalist, $row);
		}
	}
	$number_of_messages = @datalist;
	if ($order eq "reversed")
	{
		@data_ordered = reverse(@datalist);
	}
	else
	{
		@data_ordered = @datalist;
	}
	##############
	&content;
	&main_header;
	&active_header if $active_header eq "on";

print qq~ <table border=0 cellspacing=0 cellpadding=0><tr><td width=$table_width align=center> ~;

	&user_image if $user_image eq "yes";
	&title if $use_title eq "on";
	&user_html if $use_user_html eq "yes";
	&menu;
	&no_of_messages_display if $show_no_of_messages eq "yes";
	$count = 1;
	$grouped = 0;
	$no_displayed = int($no_displayed); # fix any funny numbers entered by user
	# fix any numbers entered less than one
	if ($no_displayed <1)
	{
		$no_displayed = 1;
	}
	$start_number = $FORM{'start_number'};
	$new_start_number = ($start_number + $no_displayed);
	$old_start_number = ($start_number - $no_displayed);
	$startplus = $start_number +1;
	# print qq~ <font face=$textfontface size= $textfontsize color=#ff0000> ~;
	unless ($old_start_number < 0)
	{
		print qq~ <font face= "$textfontface" size=$textfontsize> [<a href="$ENV{'SCRIPT_NAME'}\?start_number=$old_start_number">$TXT_previous</a>] </font> ~;
	}
	&show_number_menu unless ($number_of_messages <($no_displayed+1));
	unless ($new_start_number > ($number_of_messages -1 ))
	{
		print qq~ <font face= "$textfontface" size=$textfontsize> [<a href="$ENV{'SCRIPT_NAME'}\?start_number=$new_start_number">$TXT_next</a>] </font><br> ~;
	}
	if (($new_start_number > ($number_of_messages -1 )) && ($number_of_messages >($no_displayed)))
	{
		print qq~ <br> ~;
	}




	print qq~ <font face= "$textfontface" size=$textfontsize> ~;
	if ($new_start_number < $number_of_messages)
	{
		print qq~ $TXT_viewing_messages$startplus$TXT_to$new_start_number$TXT_after_last_number</font> ~;
	}
	else
	{
		if ($startplus == $number_of_messages)
		{
			print qq~ $TXT_viewing_message$startplus$TXT_after_last_number1</font> ~;
		}
		else
		{
			print qq~ $TXT_viewing_messages$startplus$TXT_to$number_of_messages$TXT_after_last_number</font> ~;
		}



	}
	foreach $row (@data_ordered)
	{
		@fields = split (/\|/, $row);
		$grouped++;
		if (($grouped > ($start_number)) && ($grouped < ($start_number + $no_displayed + 1)))
		{
			&main_table_results;
		} # end if number is right
	} # end for each row
	print qq~ <font face= "$textfontface" size= $textfontsize color=#ff0000> ~;
		unless ($old_start_number < 0)
	{
		print qq~ <font face="$textfontface" size=$textfontsize> [<a href="$ENV{'SCRIPT_NAME'}\?start_number=$old_start_number">$TXT_previous</a>] </font> ~;
	}
	&show_number_menu unless ($number_of_messages <($no_displayed+1));
	unless ($new_start_number > ($number_of_messages -1 ))
	{
		print qq~ <font face= "$textfontface" size=$textfontsize> [<a href="$ENV{'SCRIPT_NAME'}\?start_number=$new_start_number">$TXT_next</a>] </font> ~;
	}
	&search_form;
	&user_html_footer if $use_user_html_footer eq "yes";
	print qq~
		<!-- version $version -->
		~;
	&inter_footer;

 print qq~ </td></tr></table> ~;
} # end sub read
############ write
sub write
{
	###### anti-spam bit
	if ($anti_spam eq "on")
	{
		$multiple_ip = "no";
		open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
		@data = <USER_FILE>;
		close(USER_FILE);
		foreach $row (@data)
		{
			@fields = split (/\|/, $row);
			if (($ENV{'REMOTE_ADDR'} eq $fields[7]) && ($fields[9] eq $revdate))
			{
				$multiple_ip = "yes";
			}
		}
		if ($multiple_ip eq "yes")
		{
			&content;
			print qq~ <html><head><title>$title</title><META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=reload"> </head>
				<body bgcolor=#ffffff>
				<center><font face=Arial size=+1>Active Guestbook</font><p><font face=Arial size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=reload"><B>$TXT_has_been_added</B></a>
				</font></center> ~;
			&inter_footer;
			exit;
		}
	}
	######
	$full_name = $FORM{'requiredfull_name'};
	$message = $FORM{'requiredmessage'};
	$guest_email = $FORM{'guest_email'};
	$location = $FORM{'location'};
	$url = $FORM{'url'};
	$url =~ s/http\:\/\///i;
	if ($guest_email)
	{
		&check_address_for_mistakes;
	}
	unless ($action eq "post_preview")
	{
		$message =~ s/<([^>]|\n)*>//g if $allow_html eq "no";
	}
	$full_name =~ s/<([^>]|\n)*>//g;
	$location =~ s/<([^>]|\n)*>//g;
	$number_of_words = @words_in_message = split(/ /,$message);
	$message =~ s/\|//g;
	$location =~ s/\|//g;
	$url =~ s/\|//g;
	$full_name =~ s/\|//g;
	$guest_email =~ s/\|//g;
	$message =~ s/\r\n/<br>/g;
	$message =~ s/\r/ /g;
	$message =~ s/\n/<br>/g;
	$message =~ s/(<br>)+/<br>/g;
	$message =~ s/\s+/ /g;
	##### block multiple posts
	$multiple_post = "no";
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if (($full_name eq $fields[1]) && ($fields[2] eq $message))
		{
			$multiple_post = "yes";
		}
	}
	if ($multiple_post eq "yes")
	{
		&thanks;
		exit;
	}
	if ($number_of_words > $max_length)
	{
		&basic_header;
		print qq~ <center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1><b> <a href="javascript:history.go(-1)">$TXT_too_many_words</a> </b></font> ~;
		exit;
	}
	# check bad words
	$oops = "no";
	foreach (@words)
	{
		if (($message =~ /\b$_\b/i) || ($full_name =~ /\b$_\b/i) || ($guest_email =~ /\b$_\b/i) || ($location =~ /\b$_\b/i) || ($url =~ /\b$_\b/i))
		{
			$oops = "yes";
			last;
		}
	}
	if ($oops eq "yes")
	{
		&basic_header;
		print qq~ <center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1><b> <a href="javascript:history.go(-1)">$TXT_disallowed_word</a> </b></font> ~;
		exit;
	}
	# end check bad words
	# check for blocked IP
	if ($ipoops eq "yes")
	{
		&basic_header;
		print qq~ <center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1><b> <a href="$ENV{'SCRIPT_NAME'}\?action=reload">$TXT_blocked_IP</a> </b></font> ~;
		exit;
	}
	# end check for blocked IP
	if ($action eq "preview")
	{
		&preview;
	}
	&get_file_lock("$location_of_lock_file");
	open(NUMBER,"$counter_name") || &oops('$counter_name');
	$num = <NUMBER>;
	close(NUMBER);
	$plus = $num+1;
	open (NUMBER,">$counter_name");
	print NUMBER "$plus";
	close(NUMBER);
	open(DATABASE,">>$guestbook_data_name");
 if ($moderated eq "yes")
 {
	print DATABASE "$plus|$full_name|$message|$mydate|$guest_email|$location||$ENV{'REMOTE_ADDR'}|$now|$revdate||$url||||waiting||||||||||||||||\n";
  }
  else
 {
	print DATABASE "$plus|$full_name|$message|$mydate|$guest_email|$location||$ENV{'REMOTE_ADDR'}|$now|$revdate||$url||||||||||||||||||||\n";
  }
	close(DATABASE);
	&backup_to_dir;
	&release_file_lock("$location_of_lock_file");
	if ($send_email_to_admin eq "on")
	{
		unless (-e $mail_path)
		{
			&content;
			print qq~ The path to the mail path which you have given as - $mail_path - in the Control Panel does not seem to exist. <p>Please check and change. <p>In the short term you can turn off the email options and the program will run okay. ~;
			exit;
		}
		open (MAIL, "|$mail_path $admin_email");
		print MAIL "To: $admin_email\n";
		print MAIL "From: $admin_email\n";
		print MAIL "Subject: Guestbook message\n\n";
  if ($moderated eq "yes")
    {
		print MAIL "You have a new message in your guestbook which requires your approval. You can approve this message in the Message Manager section of the Active Guestbook Control Panel.\n\n";
  }
  else
      {
		print MAIL "You have a new message in your guestbook\n\n";
  }
		$converted_message = $message;
		$converted_message =~ s/<br>/\n/g;
		print MAIL "=========================\n";
		print MAIL "From: $full_name\n";
		if ($guest_email) {
			print MAIL "Email: $guest_email\n";
		}
		if ($location) {
			print MAIL "Location: $location\n";
		}
		if ($url) {
			print MAIL "URL: $url\n";
		}
		print MAIL "$converted_message\n\n";
		print MAIL "=========================\n";
		close(MAIL);
	}
	if (($guest_email) && ($send_email_to_guest eq "on"))
	{
		open (MAIL, "|$mail_path $guest_email");
		print MAIL "To: $guest_email\n";
		print MAIL "From: $admin_email\n";
		print MAIL "Subject: $thanks_title\n\n";
		print MAIL "$thank_you\n\n";
		if ($thanks_include_message eq "on")
		{
			$converted_message = $message;
			$converted_message =~ s/<br>/\n/g;
			print MAIL "=========================\n";
			print MAIL "Your message:\n\n";
			print MAIL "$converted_message\n\n";
			print MAIL "=========================\n";
		}
		close(MAIL);
	}
	&thanks;
}
sub convert
{
}
sub add
{
	&end if ($ipoops eq "yes");
	&content;
	&main_header;
	&active_header if $active_header eq "on";

 print qq~ <table border=0 cellspacing=0 cellpadding=0><tr><td width=$table_width align=center> ~;
	&user_image if $user_image eq "yes";
	&title if $use_title eq "on";
	&user_html if $use_user_html eq "yes";
	&menu;
	$col1 = ($table_width/3);
	$col2 = ($table_width - $col1);
$table_width1 = $table_width+30;

	#########<tr><td colspan=2><center><hr width=$table_width size=1></center></td></tr>
	print qq~ <center><FORM ACTION="$ENV{'SCRIPT_NAME'}" METHOD="POST" onSubmit="return checkrequired(this)"><input type=hidden name=action value="preview">

		<tr><td>
		<center>
		<table border=0>

		<tr><td width="$col1"><font face="$textfontface" size=$textfontsize><B>$TXT_your_name</B> $TXT_required </td>
		<td><font face="$textfontface" size=$textfontsize><INPUT TYPE="text" maxlength = 60 NAME="requiredfull_name" SIZE="$field_length"></td></tr>

		<tr valign="top"><td><font face="$textfontface" size=$textfontsize>
		<B>$TXT_your_message</B> $TXT_required</td><td><font face="$textfontface" size=$textfontsize>
		<TEXTAREA wrap="virtual" NAME="requiredmessage" ROWS="6" COLS="$field_length"></TEXTAREA></td></tr>

		<tr valign="top"><td><font face="$textfontface" size=$textfontsize>
		<B>$TXT_where_in_the_world</B></td><td><font face="$textfontface" size=$textfontsize>
		<INPUT TYPE="text" maxlength = 60 NAME="location" SIZE="$field_length"></td></tr>

		<tr valign="top"><td><font face="$textfontface" size=$textfontsize>
		<B>$TXT_your_email_address</B></td><td><font face="$textfontface" size=$textfontsize>
		<INPUT TYPE="text" maxlength = 60 NAME="guest_email" SIZE="$field_length"></td></tr>

		<tr valign="top"><td><font face="$textfontface" size=$textfontsize>
		<B>$TXT_your_web_page_address</B> <br>$TXT_if_you_have_one</td><td><font face="$textfontface" size=$textfontsize>
		<INPUT TYPE="text" maxlength = 120 NAME="url" SIZE="$field_length"></td></tr>

		<tr><td colspan=2> <font face="$textfontface" size=$textfontsize>
		<INPUT TYPE="submit" VALUE="$TXT_continue"></td></tr>

		</table>
		~;
	print qq~ </td></tr></table></form> </td></tr></table> ~;

 	&user_html_footer if $use_user_html_footer eq "yes";
	print "\n\n</body>";
} # end sub add
########## startup
sub startup
{

	unless (-e "$guestbook_backups_directory")
	{
		mkdir ($guestbook_backups_directory, 0777);
		chmod(0777, "$guestbook_backups_directory");
		open(BAK,">./$guestbook_backups_directory/undo_restore.bak");
		close(BAK);
	}
	unless (-e "$guestbook_files_directory")
	{
		mkdir ($guestbook_files_directory, 0777);
		chmod(0777, "$guestbook_files_directory");

	}


	########## months
	unless (-e "$months_name")
	{
		open(MONTHS,">$months_name");
		chmod(0777, "$months_name");
		print MONTHS "January\nFebruary\nMarch\nApril\nMay\nJune\nJuly\nAugust\nSeptember\nOctober\nNovember\nDecember\n";
		close(MONTHS);
	}
	unless (-e "$months_bak_name")
	{
		open(MONTHS,">$months_bak_name");
		chmod(0777, "$months_bak_name");
		print MONTHS "January\nFebruary\nMarch\nApril\nMay\nJune\nJuly\nAugust\nSeptember\nOctober\nNovember\nDecember\n";
		close(MONTHS);
	}
	############ added for version 1.9 # create user and factory style defaults and style
	unless (-e "$user_style_name")
	{
		open(STYLE,">$user_style_name");
		chmod(0777, "$user_style_name");
		print STYLE "<!-- You can add css information here --> \n";
		print STYLE "<style type=\"text/css\">\n";
		print STYLE "a {text-decoration: none; color: #ff0000 }\n";
		print STYLE "a:hover {text-decoration: none; color: #0000ff }\n";
		print STYLE "</style>\n";
		close(STYLE);
	}
	####################
	unless (-e "$senddate_name")
	{
		open(UPDATE1,">$senddate_name");
		chmod(0777, "$senddate_name");
		print UPDATE1 "$now";
		close(UPDATE1);
	}
	unless (-e "$update_name")
	{
		open(UPDATE,">$update_name");
		chmod(0777, "$update_name");
		print UPDATE "$revdate";
		close(UPDATE);
	}
	unless (-e "$user_html_name")
	{
		open(USER_HTML,">$user_html_name");
		chmod(0777, "$user_html_name");
		print USER_HTML "You can type some html here which will appear just above the menu. <br>";
		close(USER_HTML);
	}
	unless (-e "$user_html_footer_name")
	{
		open(USER_HTML,">$user_html_footer_name");
		chmod(0777, "$user_html_footer_name");
		print USER_HTML "You can type some html here which will appear at the bottom of your page.";
		close(USER_HTML);
	}
	unless (-e "$user_default_html_name")
	{
		open(USER_DEFAULT_HTML,">$user_default_html_name");
		chmod(0777, "$user_default_html_name");
		print USER_DEFAULT_HTML "You can type some html here which will appear just above the menu. <br>";
		close(USER_DEFAULT_HTML);
	}
	unless (-e "$user_default_html_footer_name")
	{
		open(USER_DEFAULT_HTML,">$user_default_html_footer_name");
		chmod(0777, "$user_default_html_footer_name");
		print USER_DEFAULT_HTML "You can type some html here which will appear at the bottom of your page.";
		close(USER_DEFAULT_HTML);
	}
	unless (-e "$thank_you_name")
	{
		open(THANKS,">$thank_you_name");
		chmod(0777, "$thank_you_name");
		print THANKS "Thank you very much for adding a message to our guestbook. Your support is much appreciated.\n\n";
		print THANKS "Regards\n";
		print THANKS "All at active-scripts.net\n\n";
		print THANKS "=================================\n";
		close(THANKS);
	}
	unless (-e "$thank_you_user_default_name")
	{
		open(THANKS,">$thank_you_user_default_name");
		chmod(0777, "$thank_you_user_default_name");
		print THANKS "Thank you very much for adding a message to our guestbook. Your support is much appreciated.\n\n";
		print THANKS "Regards\n";
		print THANKS "All at active-scripts.net\n\n";
		print THANKS "=================================\n";
		close(THANKS);
	}
	unless (-e "$tempcolprefs_name")
	{
		open(COLFILE,">$tempcolprefs_name");
		chmod(0777, "$tempcolprefs_name");
		close(COLFILE);
	}
	unless (-e "$counter_name")
	{
		open(COUNTER,">>$counter_name");
		chmod(0777, "$counter_name");
		print COUNTER "1000100";
		close(COUNTER);
		chmod(0777, "$counter_name");
	}
	unless (-e "$active_name")
	{
		if (&GetCookies('activea'))
		{
			$coolkiepass = $Cookies{'activea'};
			open(ACTIVE,">>$active_name");
			chmod(0777, "$active_name");
			print ACTIVE "$coolkiepass";
			close(ACTIVE);
		}
		else
		{
			open(ACTIVE,">>$active_name");
			chmod(0777, "$active_name");
			print ACTIVE "$enc";
			close(ACTIVE);
		}
	}
	############# # language prefs added version 1.9
	unless (-e "$langprefs_name")
	{
		open(PREFS,">>$langprefs_name");
		chmod(0777, "$langprefs_name");
		print PREFS "TXT_add_a_message=Add a message=\n";
		print PREFS "TXT_search=Search=\n";
		print PREFS "TXT_previous=Previous=\n";
		print PREFS "TXT_next=Next=\n";
		print PREFS "TXT_there_is_now=There is now =\n";
		print PREFS "TXT_there_are_now=There are now =\n";
		print PREFS "TXT_messages_in_our_guestbook= messages in our guestbook.=\n";
		print PREFS "TXT_message_in_our_guestbook= message in our guestbook.=\n";
		print PREFS "TXT_viewing_message=Viewing message =\n";
		print PREFS "TXT_viewing_messages=Viewing messages =\n";
		print PREFS "TXT_to= to =\n";
		print PREFS "TXT_after_last_number=.=\n";
		print PREFS "TXT_after_last_number1=.=\n";
		print PREFS "TXT_you_can_search_this_guestbook_by=You can search this guestbook by:=\n";
		print PREFS "TXT_searchmessage=Message :=\n";
		print PREFS "TXT_searchname=Name :=\n";
		print PREFS "TXT_searchall=All :=\n";
		print PREFS "TXT_searchsearch=Search=\n";
		print PREFS "TXT_searchtext=Please type some text:=\n";
		print PREFS "TXT_back_to_guestbook=Back to guestbook=\n";
		print PREFS "TXT_your_name=Your name=\n";
		print PREFS "TXT_your_message=Your message=\n";
		print PREFS "TXT_required=(required)=\n";
		print PREFS "TXT_where_in_the_world=Where in the world?=\n";
		print PREFS "TXT_your_email_address=Your email address=\n";
		print PREFS "TXT_your_web_page_address=Your web page address=\n";
		print PREFS "TXT_if_you_have_one=(if you have one)=\n";
		print PREFS "TXT_continue=Continue=\n";
		print PREFS "TXT_these_are_the=These are the details you have given.=\n";
		print PREFS "TXT_if_correct=If they are correct, please click Continue.=\n";
		print PREFS "TXT_if_not=If not, please =\n";
		print PREFS "TXT_go_back=go back =\n";
		print PREFS "TXT_and_edit=and edit.=\n";
		print PREFS "TXT_none_given=None given=\n";
		print PREFS "TXT_has_been_added=Thanks. Your message has been added to our guestbook.=\n";
		print PREFS "TXT_has_been_added_moderated=Thanks. Your message has been sent to our webmaster and will be added shortly.=\n";
		print PREFS "TXT_search_results=Search results=\n";
		print PREFS "TXT_back_search_again=Back to Guestbook/Search again=\n";
		print PREFS "TXT_one_match=One guestbook message matches your search criteria.=\n";
		print PREFS "TXT_no_match=Sorry, no messages in our guestbook match your search criteria.=\n";
		print PREFS "TXT_more_matches_1=There are =\n";
		print PREFS "TXT_more_matches_2= guestbook messages that match your search criteria.=\n";
		print PREFS "TXT_please_fill_in=Please fill in all required fields.=\n";
		print PREFS "TXT_please_go_back_and_edit=Please go back and edit=\n";
		print PREFS "TXT_no_dot_at_start=Email addresses don't start with dots or @ signs.=\n";
		print PREFS "TXT_no_www_at_start=Email addresses don't start with www. That's a web page address.=\n";
		print PREFS "TXT_no_squiggles_in_domain=There should not be any underlines or squiggles or hashes after the @ in your email address.=\n";
		print PREFS "TXT_only_one_at=There should be one (and only one) @ in your email address.=\n";
		print PREFS "TXT_no_dots_next=You are not allowed to have dots next to each other or next to @ sign in your email address.=\n";
		print PREFS "TXT_wrong_end=All email addresses end in a dot and some letters (such as .com, .net, .uk, .ac etc.).=\n";
		print PREFS "TXT_too_many_words=Your message contains too many words. Please go back and edit.=\n";
		print PREFS "TXT_disallowed_word=Your message contains a disallowed word. Please go back and edit.=\n";
		print PREFS "TXT_blocked_IP=This service is currently unavailable.=\n";
		close(PREFS);
	}
	######## create and write FACTORY DEFAULT $langprefs_backup_name
	unless (-e "$langprefs_backup_name")
	{
		open(FILE,"$langprefs_name");
		@lines = <FILE>;
		close(FILE);
		open(BAK,">$langprefs_backup_name");
		chmod(0777, "$langprefs_backup_name");
		foreach $line (@lines)
		{
			print BAK "$line";
		}
		close(BAK);
	}
	###############
	unless (-e "$prefs_name")
	{
		open(PREFS,">>$prefs_name");
		chmod(0777, "$prefs_name");
		print PREFS "textfontface=Arial=\n";
		print PREFS "textfontsize=2=\n";
		print PREFS "alignment=center=\n";
		print PREFS "title=Active Guestbook=\n";
		print PREFS "show_line=yes=\n";
		print PREFS "home_page=http://active-scripts.net/=\n";
		print PREFS "show_home_page_link=yes=\n";
		print PREFS "home_page_target=_top=\n";
		print PREFS "home_page_title=Active Scripts=\n";
		print PREFS "order=reversed=\n";
		print PREFS "border_size=0=\n";
		print PREFS "mail_path=/usr/lib/sendmail=\n";
		print PREFS "admin_email=webmaster\@active-scripts.net=\n";
		print PREFS "send_email_to_admin=off=\n";
		print PREFS "send_email_to_guest=off=\n";
		print PREFS "thanks_title=Active Scripts Guestbook=\n";
		print PREFS "thanks_include_message=off=\n";
		print PREFS "anti_ips=111.111.111.3,server.isp.com=\n";
		print PREFS "bad_words=wankle,rotary,engine=\n";
		print PREFS "no_displayed=5=\n";
		print PREFS "max_length=400=\n";
		print PREFS "max=300=\n";
		print PREFS "use_hr_image=no=\n";
		print PREFS "hr_image=http://www.active-scripts.net/line.gif=\n";
		print PREFS "max=300=\n";
		print PREFS "days_to_delete=1000=\n";
		print PREFS "days_to_trash=365=\n";
		print PREFS "days_to_delete_backup_files=60=\n";
		print PREFS "mail_backup_to_admin=no=\n";
		print PREFS "mail_admin_backups_interval=monthly=\n";
		print PREFS "mail_admin_backups_day=1=\n";
		print PREFS "mail_admin_backups_month=1=\n";
		print PREFS "anti_spam=off=\n";
		print PREFS "allow_html=no=\n";
		print PREFS "active_header=on=\n";
		print PREFS "use_title=off=\n";
		print PREFS "show_no_of_messages=yes=\n";
		print PREFS "use_mailto=yes=\n";
		print PREFS "web_enabled=yes=\n";
		print PREFS "user_image=no=\n";
		print PREFS "user_image_url==\n";
		print PREFS "use_user_html=no=\n";
		print PREFS "use_user_html_footer=no=\n";
		print PREFS "table_width=600=\n";
		print PREFS "usebackgroundimage=no=\n";
		print PREFS "backgroundimage=http://active-scripts.net/active_guestbook/background.jpg=\n";
		print PREFS "table_width=600=\n";
		print PREFS "web_comment=Webmaster comments=\n";
		print PREFS "style=on=\n";
		print PREFS "moderated=no=\n";
		print PREFS "field_length=40=\n";
		close(PREFS);
	}
	######## create and write FACTORY DEFAULT $prefs_backup_name
	unless (-e "$prefs_backup_name")
	{
		open(FILE,"$prefs_name");
		@lines = <FILE>;
		close(FILE);
		open(BAK,">$prefs_backup_name");
		chmod(0777, "$prefs_backup_name");
		foreach $line (@lines)
		{
			print BAK "$line";
		}
		close(BAK);
	}
	######## create and write USER DEFAULT $prefs_backup_name
	unless (-e "$userprefs_backup_name")
	{
		open(USERDEFAULT,">$userprefs_backup_name");
		chmod(0777, "$userprefs_backup_name");
		foreach $line (@lines)
		{
			print USERDEFAULT "$line";
		}
		close(USERDEFAULT);
	}
	######## create and write COLOR preferences
	unless (-e "$colprefs_name")
	{
		open(COLPREFS,">>$colprefs_name");
		chmod(0777, "$colprefs_name");
		print COLPREFS "trans_search=no=\n";
		print COLPREFS "trans_message_header=no=\n";
		print COLPREFS "trans_message_footer=no=\n";
		print COLPREFS "backcolor=#ffffff=\n";
		print COLPREFS "data_color1=#66cc99=\n";
		print COLPREFS "data_color2=#cc9900=\n";
		print COLPREFS "textdata_color1=#000000=\n";
		print COLPREFS "textdata_color2=#000000=\n";
		print COLPREFS "table_color1=#fffff0=\n";
		print COLPREFS "table_color2=#ffffd0=\n";
		print COLPREFS "texttable_color1=#000000=\n";
		print COLPREFS "texttable_color2=#000000=\n";
		print COLPREFS "backcolor=#ffffff=\n";
		print COLPREFS "link=#000000=\n";
		print COLPREFS "vlink=#000000=\n";
		print COLPREFS "alink=#000000=\n";
		print COLPREFS "text=#000000=\n";
		print COLPREFS "commentcolor=#ff0000=\n";
		print COLPREFS "searchcolor=#eeeeee=\n";
		close(COLPREFS);
	}
	######## create and write FACTORY DEFAULT COLOR preferences
	unless (-e "$colprefs_backup_name")
	{
		open(FILE,"$colprefs_name");
		@lines = <FILE>;
		close(FILE);
		open(BAK,">$colprefs_backup_name");
		chmod(0777, "$colprefs_backup_name");
		foreach $line (@lines)
		{
			print BAK "$line";
		}
		close(BAK);
	}
	######## create and write USER DEFAULT COLOR preferences
	unless (-e "$usercolprefs_backup_name")
	{
		open(USERDEFAULT,">$usercolprefs_backup_name");
		chmod(0777, "$usercolprefs_backup_name");
		foreach $line (@lines)
		{
			print USERDEFAULT "$line";
		}
		close(USERDEFAULT);
		#########
	}





	unless (-e "$guestbook_data_name")
	{

		chmod(0777, "$prefs_name");
		chmod(0777, "$colprefs_name");
		&open_prefs;
		umask 000;
		open(TEMP,">>$guestbook_data_name");
		print TEMP "1000001|Sample user|Great guestbook.|$mydate||Uganda|||$now|$revdate||||||||||||||||||||||\n";
		for ($w=2;$w<10;$w++)
		{
			print TEMP "100000$w|Sample user $w|Sample message $w.|$mydate||Uganda|||$now|$revdate||||||||||||||||||||||\n";
		}
		print TEMP "1000030|Active Scripts |Well done. You have successfully installed Active Guestbook. <p>";
		print TEMP "Once you have browsed the features in the public part of the guestbook, you will want to access the Active Guestbook Control Panel which allows you to manage your guestbook. To access the Control Panel, you will normally need to use a password.  The default password is the word <b>active</b> in lower case but you can change it to anything you like.";
		print TEMP "<p><b>The first thing you should do once you visit the Control Panel is to add the page to your Bookmarks/Favorites so that you can easily get there in the future.</b><p>You can now go to the Control Panel by clicking <a href=\"$ENV{'SCRIPT_NAME'}\?action=control_panel\"> here.</a><p> ";
		print TEMP "You will of course want to delete all these sample messages once you get things set up the way you want.|$mydate|anthony\@active-scripts.net|active-scripts.net|||$now|$revdate||www.active-scripts.net||||||||||||||||||||\n";
		close(TEMP);
		chmod(0777, "$guestbook_data_name");

  &finish_start;

		exit;

	}



} # end startup

sub finish_start
{
	&content;
	print qq~
		<HTML><head><title>$title</title></head>
		<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
		<font face=Arial ><b><center>Active Guestbook Installation Manager<br></font>
		<font face=Arial size=-1> Active Guestbook has been successfully installed and all support files have been generated.<br>
		<a href="$ENV{'SCRIPT_NAME'}?action=reload">Click here to view the guestbook</a>
		~;
}
############ Get Date
sub GetDate {
	($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
	$bakday = $mday;
	if ($sec < 10) { $sec = "0$sec"; }
		if ($min < 10) { $min = "0$min"; }
		if ($hour < 10) { $hour = "0$hour"; }
	# if ($mon < 10) { $mon = "0$mon"; }
	if ($mday < 10) { $mday = "0$mday"; }
		$month = ($mon + 1);
	if ($month < 10) { $month = "0$month"; }
	# @months = ("January","February","March","April","May","June","July","August","September","October","November","December");
	@weekdaysbak = ("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
	$today = "$year"."$month"."$mday";
	$bugyear = ($year + 1900);
	$bugtoday = "$bugyear"."$month"."$mday";
	$messagedate = "$mday"."/"."$month"."/"."$bugyear";
	$mydate = "$mday"." "."$months[$mon]"." "."$bugyear";
	$amqdate = "$mday"."/"."$month"."/"."$bugyear";
	$revdate = "$bugyear"."$month"."$mday";
	$housetoday1 = "$bugyear"."$month"."$mday";
} ###
sub get_file_lock
{
	local ($lock_file) = @_;
	local ($endtime);
	$endtime = 2;
	$endtime = time + $endtime;
	while (-e $lock_file && time < $endtime)
	{
		sleep(2);
	}
	open(LOCK_FILE, ">$lock_file");
}
sub release_file_lock
{
	local ($lock_file) = @_;
	close(LOCK_FILE);
	unlink($lock_file);
}
################# preferences
sub edit_prefs
{
	&seek_cook;
	&get_file_lock("$location_of_lock_file");
	open(FILE,"$prefs_name");
	@lines = <FILE>;
	close(FILE);
	open(FILE,">$prefs_name");
	print FILE "textfontface=$FORM{'textfontface'}=\n";
	print FILE "textfontsize=$FORM{'textfontsize'}=\n";
	print FILE "title=$FORM{'title'}=\n";
	print FILE "show_line=$FORM{'show_line'}=\n";
	print FILE "alignment=$FORM{'alignment'}=\n";
	print FILE "border_size=$FORM{'border_size'}=\n";
	print FILE "max=$FORM{'max'}=\n";
	print FILE "home_page=$FORM{'home_page'}=\n";
	print FILE "show_home_page_link=$FORM{'show_home_page_link'}=\n";
	print FILE "home_page_target=$FORM{'home_page_target'}=\n";
	print FILE "order=$FORM{'order'}=\n";
	print FILE "mail_path=$FORM{'mail_path'}=\n";
	print FILE "admin_email=$FORM{'admin_email'}=\n";
	print FILE "send_email_to_admin=$FORM{'send_email_to_admin'}=\n";
	print FILE "send_email_to_guest=$FORM{'send_email_to_guest'}=\n";
	print FILE "home_page_title=$FORM{'home_page_title'}=\n";
	print FILE "no_displayed=$FORM{'no_displayed'}=\n";
	print FILE "max_length=$FORM{'max_length'}=\n";
	print FILE "anti_spam=$FORM{'anti_spam'}=\n";
	print FILE "days_to_delete=$FORM{'days_to_delete'}=\n";
	print FILE "days_to_trash=$FORM{'days_to_trash'}=\n";
	print FILE "days_to_delete_backup_files=$FORM{'days_to_delete_backup_files'}=\n";
	print FILE "mail_admin_backups_interval=$FORM{'mail_admin_backups_interval'}=\n";
	print FILE "mail_admin_backups_day=$FORM{'mail_admin_backups_day'}=\n";
	print FILE "mail_admin_backups_month=$FORM{'mail_admin_backups_month'}=\n";
	print FILE "allow_html=$FORM{'allow_html'}=\n";
	print FILE "active_header=$FORM{'active_header'}=\n";
	print FILE "use_title=$FORM{'use_title'}=\n";
	print FILE "show_no_of_messages=$FORM{'show_no_of_messages'}=\n";
	print FILE "use_mailto=$FORM{'use_mailto'}=\n";
	print FILE "web_enabled=$FORM{'web_enabled'}=\n";
	print FILE "use_hr_image=$FORM{'use_hr_image'}=\n";
	print FILE "hr_image=$FORM{'hr_image'}=\n";
	print FILE "user_image=$FORM{'user_image'}=\n";
	print FILE "user_image_url=$FORM{'user_image_url'}=\n";
	print FILE "use_user_html=$FORM{'use_user_html'}=\n";
	print FILE "use_user_html_footer=$FORM{'use_user_html_footer'}=\n";
	print FILE "table_width=$FORM{'table_width'}=\n";
	print FILE "usebackgroundimage=$FORM{'usebackgroundimage'}=\n";
	print FILE "backgroundimage=$FORM{'backgroundimage'}=\n";
	print FILE "mail_backup_to_admin=$FORM{'mail_backup_to_admin'}=\n";
	print FILE "thanks_title=$FORM{'thanks_title'}=\n";
	print FILE "thanks_include_message=$FORM{'thanks_include_message'}=\n";
	print FILE "web_comment=$FORM{'web_comment'}=\n";
	print FILE "style=$FORM{'style'}=\n";
	print FILE "moderated=$FORM{'moderated'}=\n";
	print FILE "field_length=$FORM{'field_length'}=\n";
	open(USER_FILE,">$user_html_name");
	print USER_FILE "$FORM{'user_html'}";
	close(USER_FILE);
	open(USER_FILE,">$user_html_footer_name");
	print USER_FILE "$FORM{'user_html_footer'}";
	close(USER_FILE);
	open(THANKS,">$thank_you_name");
	print THANKS "$FORM{'thank_you'}";
	close(THANKS);
	open(UDS,">$user_style_name");
	print UDS "$FORM{'user_style'}";
	close(UDS);
	$bad = $FORM{'bad_words'};
	$bad =~ s/\s\s/ /g;
	$bad =~ s/\s\s/ /g;
	$bad =~ s/\s/,/g;
	$bad =~ s/\,\,/,/g;
	print FILE "bad_words=$bad=\n";
	$bad1 = $FORM{'anti_ips'};
	$bad1 =~ s/\s\s/ /g;
	$bad1 =~ s/\s\s/ /g;
	$bad1 =~ s/\s/,/g;
	$bad1 =~ s/\,\,/,/g;
	print FILE "anti_ips=$bad1=\n";
	close(FILE);
	&release_file_lock("$location_of_lock_file");
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}\?action=view_prefs"> ~;
	&main_headerb;
	print qq~
		<center>
		<font face="Arial" size=+1><B>Active Guestbook Message Editor</B> <p>
		</font><font face="Arial" size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_prefs"><B>Standard preferences updated.</B></a>
		</font>
		~;
	&inter_footer;
}
########## open prefs
sub open_prefs
{
	open(FILE,"$prefs_name");
	@LINES = <FILE>;
	close(FILE);
	open(COLFILE,"$colprefs_name");
	@COLLINES = <COLFILE>;
	close(COLFILE);
	open(LANGFILE,"$langprefs_name");
	@LANGLINES = <LANGFILE>;
	close(LANGFILE);
	open(MONTHS,"$months_name");
	@monthlist = <MONTHS>;
	close(MONTHS);
	@months = ();
	foreach $monthss (@monthlist)
	{
		$monthss =~ s/\n//g;
		$monthss =~ s/\r//g;
		push (@months, $monthss);
	}
	foreach $LANGLINE (@LANGLINES)
	{
		@langterms = split(/=/,$LANGLINE);
		$LANGPREFS{$langterms[0]} = $langterms[1];
	}
	foreach $COLLINE (@COLLINES)
	{
		@colterms = split(/=/,$COLLINE);
		$COLPREFS{$colterms[0]} = $colterms[1];
	}
	foreach $LINE (@LINES)
	{
		@terms = split(/=/,$LINE);
		$PREFS{$terms[0]} = $terms[1];
	}
	################
	$TXT_add_a_message = $LANGPREFS{'TXT_add_a_message'};
	$TXT_search = $LANGPREFS{'TXT_search'};
	$TXT_previous = $LANGPREFS{'TXT_previous'};
	$TXT_next = $LANGPREFS{'TXT_next'};
	$TXT_there_is_now = $LANGPREFS{'TXT_there_is_now'};
	$TXT_there_are_now = $LANGPREFS{'TXT_there_are_now'};
	$TXT_messages_in_our_guestbook = $LANGPREFS{'TXT_messages_in_our_guestbook'};
	$TXT_message_in_our_guestbook = $LANGPREFS{'TXT_message_in_our_guestbook'};
	$TXT_viewing_message = $LANGPREFS{'TXT_viewing_message'};
	$TXT_viewing_messages = $LANGPREFS{'TXT_viewing_messages'};
	$TXT_to = $LANGPREFS{'TXT_to'};
	$TXT_after_last_number = $LANGPREFS{'TXT_after_last_number'};
	$TXT_after_last_number1 = $LANGPREFS{'TXT_after_last_number1'};
	$TXT_you_can_search_this_guestbook_by = $LANGPREFS{'TXT_you_can_search_this_guestbook_by'};
	$TXT_searchmessage = $LANGPREFS{'TXT_searchmessage'};
	$TXT_searchname = $LANGPREFS{'TXT_searchname'};
	$TXT_searchall = $LANGPREFS{'TXT_searchall'};
	$TXT_searchsearch = $LANGPREFS{'TXT_searchsearch'};
	$TXT_searchtext = $LANGPREFS{'TXT_searchtext'};
	$TXT_back_to_guestbook = $LANGPREFS{'TXT_back_to_guestbook'};
	$TXT_your_name = $LANGPREFS{'TXT_your_name'};
	$TXT_your_message = $LANGPREFS{'TXT_your_message'};
	$TXT_required = $LANGPREFS{'TXT_required'};
	$TXT_where_in_the_world = $LANGPREFS{'TXT_where_in_the_world'};
	$TXT_your_email_address = $LANGPREFS{'TXT_your_email_address'};
	$TXT_your_web_page_address = $LANGPREFS{'TXT_your_web_page_address'};
	$TXT_if_you_have_one = $LANGPREFS{'TXT_if_you_have_one'};
	$TXT_continue = $LANGPREFS{'TXT_continue'};
	$TXT_these_are_the = $LANGPREFS{'TXT_these_are_the'};
	$TXT_if_correct = $LANGPREFS{'TXT_if_correct'};
	$TXT_if_not = $LANGPREFS{'TXT_if_not'};
	$TXT_go_back = $LANGPREFS{'TXT_go_back'};
	$TXT_and_edit = $LANGPREFS{'TXT_and_edit'};
	$TXT_none_given = $LANGPREFS{'TXT_none_given'};
	$TXT_has_been_added = $LANGPREFS{'TXT_has_been_added'};
	$TXT_has_been_added_moderated = $LANGPREFS{'TXT_has_been_added_moderated'};
	$TXT_back_search_again = $LANGPREFS{'TXT_back_search_again'};
	$TXT_one_match = $LANGPREFS{'TXT_one_match'};
	$TXT_no_match = $LANGPREFS{'TXT_no_match'};
	$TXT_more_matches_1 = $LANGPREFS{'TXT_more_matches_1'};
	$TXT_more_matches_2 = $LANGPREFS{'TXT_more_matches_2'};
	$TXT_please_fill_in = $LANGPREFS{'TXT_please_fill_in'};
	$TXT_please_go_back_and_edit = $LANGPREFS{'TXT_please_go_back_and_edit'};
	$TXT_search_results = $LANGPREFS{'TXT_search_results'};
	$TXT_no_dot_at_start = $LANGPREFS{'TXT_no_dot_at_start'};
	$TXT_no_www_at_start = $LANGPREFS{'TXT_no_www_at_start'};
	$TXT_no_squiggles_in_domain = $LANGPREFS{'TXT_no_squiggles_in_domain'};
	$TXT_only_one_at = $LANGPREFS{'TXT_only_one_at'};
	$TXT_no_dots_next = $LANGPREFS{'TXT_no_dots_next'};
	$TXT_wrong_end = $LANGPREFS{'TXT_wrong_end'};
	$TXT_too_many_words = $LANGPREFS{'TXT_too_many_words'};
	$TXT_disallowed_word = $LANGPREFS{'TXT_disallowed_word'};
	$TXT_blocked_IP = $LANGPREFS{'TXT_blocked_IP'};
	$lang_months = $LANGPREFS{'lang_months'};
	$lang_days = $LANGPREFS{'lang_days'};

 $TXT_has_been_added_moderated = "Thanks. Your message has been sent to our webmaster and will be added shortly." if ($TXT_has_been_added_moderated eq "");
	

	#$ = $LANGPREFS{''};
	######################
	$textfontface = $PREFS{'textfontface'};
	$textfontsize = $PREFS{'textfontsize'};
	$title = $PREFS{'title'};
	$max = $PREFS{'max'};
	$border_size = $PREFS{'border_size'};
	$alignment = $PREFS{'alignment'};
	$home_page = $PREFS{'home_page'};
	$home_page_title = $PREFS{'home_page_title'};
	$show_home_page_link = $PREFS{'show_home_page_link'};
	$home_page_target = $PREFS{'home_page_target'};
	$order = $PREFS{'order'};
	$show_line = $PREFS{'show_line'};
	$mail_path = $PREFS{'mail_path'};
	$admin_email = $PREFS{'admin_email'};
	$send_email_to_admin = $PREFS{'send_email_to_admin'};
	$send_email_to_guest = $PREFS{'send_email_to_guest'};
	$bad_words = $PREFS{'bad_words'};
 $moderated = $PREFS{'moderated'};
 $field_length = $PREFS{'field_length'};
	$no_displayed = $PREFS{'no_displayed'};
	$max_length = $PREFS{'max_length'};
	$anti_spam = $PREFS{'anti_spam'};
	$anti_ips = $PREFS{'anti_ips'};
	$days_to_delete = $PREFS{'days_to_delete'};
	$days_to_trash = $PREFS{'days_to_trash'};
	$days_to_delete_backup_files = $PREFS{'days_to_delete_backup_files'};
	$mail_admin_backups_interval = $PREFS{'mail_admin_backups_interval'};
	$mail_admin_backups_day = $PREFS{'mail_admin_backups_day'};
	$mail_admin_backups_month = $PREFS{'mail_admin_backups_month'};
	$allow_html = $PREFS{'allow_html'};
	$active_header = $PREFS{'active_header'};
	$use_title = $PREFS{'use_title'};
	$show_no_of_messages = $PREFS{'show_no_of_messages'};
	$use_mailto = $PREFS{'use_mailto'};
	$web_enabled = $PREFS{'web_enabled'};
	$user_image = $PREFS{'user_image'};
	$user_image_url = $PREFS{'user_image_url'};
	$use_hr_image = $PREFS{'use_hr_image'};
	$hr_image = $PREFS{'hr_image'};
	$use_user_html = $PREFS{'use_user_html'};
	$use_user_html_footer = $PREFS{'use_user_html_footer'};
	$table_width = $PREFS{'table_width'};
	$usebackgroundimage = $PREFS{'usebackgroundimage'};
	$backgroundimage = $PREFS{'backgroundimage'};
	$mail_backup_to_admin = $PREFS{'mail_backup_to_admin'};
	$thanks_title = $PREFS{'thanks_title'};
	$thanks_include_message = $PREFS{'thanks_include_message'};
	$web_comment = $PREFS{'web_comment'};
	$style = $PREFS{'style'};
	$trans_search = $COLPREFS{'trans_search'};
	$trans_message_header = $COLPREFS{'trans_message_header'};
	$trans_message_body = $COLPREFS{'trans_message_body'};
	$backcolor = $COLPREFS{'backcolor'};
	$data_color1 = $COLPREFS{'data_color1'};
	$data_color2 = $COLPREFS{'data_color2'};
	$textdata_color1 = $COLPREFS{'textdata_color1'};
	$textdata_color2 = $COLPREFS{'textdata_color2'};
	$table_color1 = $COLPREFS{'table_color1'};
	$table_color2 = $COLPREFS{'table_color2'};
	$texttable_color1 = $COLPREFS{'texttable_color1'};
	$texttable_color2 = $COLPREFS{'texttable_color2'};
	#$back = $COLPREFS{'back'};
	$link = $COLPREFS{'link'};
	$vlink = $COLPREFS{'vlink'};
	$alink = $COLPREFS{'alink'};
	$text = $COLPREFS{'text'};
	$searchcolor = $COLPREFS{'searchcolor'};
	$commentcolor = $COLPREFS{'commentcolor'};
	$user_html = "";
	$user_style = "";
	$user_html_footer = "";
	$thank_you = "";
	open(FILE,"$user_html_name") || &oops("$user_html_name");
	@user_html = <FILE>;
	foreach $row(@user_html)
	{
		$user_html = $user_html . $row;
	}
	close(FILE);
	open(FILE,"$user_style_name") || &oops('$user_style_name');
	@user_style = <FILE>;
	foreach $row(@user_style)
	{
		$user_style = $user_style . $row;
	}
	close(FILE);
	open(FILE,"$user_html_footer_name") || &oops('$user_html_footer_name');
	@user_html_footer = <FILE>;
	foreach $frow(@user_html_footer)
	{
		$user_html_footer = $user_html_footer . $frow;
	}
	close(FILE);
	open(FILE,"$thank_you_name") || &oops('$thank_you_name');
	@thank_you = <FILE>;
	foreach $row(@thank_you)
	{
		$thank_you = $thank_you . $row;
	}
	close(FILE);
	open(NUMBER,"$active_name") || &oops('$active_name');
	$active_string = <NUMBER>;
	close(NUMBER);

 #upgrade
 ($home_page_target = "_top") if ($home_page_target eq "");
 ($border_size = "0") if ($border_size eq "");
 ($field_length = 40) if ($field_length eq "");
 # end upgrade

}
### View Standard Preferences
sub view_prefs
{
	&seek_cook;
	&content;
 #upgrade
 ($home_page_target = "_top") if ($home_page_target eq "");
 ($border_size = "0") if ($border_size eq "");
 ($field_length = 40) if ($field_length eq "");
 # end upgrade
	print qq~
		<center>
		<html><head><title>Active Guestbook - Standard Preferences Manager</title></head>
		<body bgcolor=#ffffff>
		<font face=Arial size=+1><B>Active Guestbook - Standard Preferences Manager</B></font><p><font face=Arial size=-1>
		<a href="$ENV{'SCRIPT_NAME'}?action=reload">Return to Guestbook</a> | <a href="$ENV{'SCRIPT_NAME'}?action=control_panel">Return to Control Panel</a><br>
		<a href="$ENV{'SCRIPT_NAME'}?action=restore_defaults">Restore FACTORY defaults</a> | <a href="$ENV{'SCRIPT_NAME'}?action=restore_user_defaults">Restore USER defaults</a><br>
		<a href="$ENV{'SCRIPT_NAME'}?action=save_user_defaults">Save these settings as USER defaults</a><br></font><font face=Arial size=-2>(If you have made any changes, you first need to UPDATE using the button at the bottom.) </font><font face=Arial size=-1>
		~;
	print qq~
		<form action="$ENV{'SCRIPT_NAME'}" METHOD="POST" >
		<INPUT TYPE="hidden" NAME="action" VALUE="edit_prefs">
		<table border=1 width=600>
		<tr valign=top><td colspan=4 bgcolor = Red><font face=Arial size=-1 color=white><B>Presentation</B></font></td></tr>
   <tr valign=top><td><font face=Arial size=-1>Alignment</td><td colspan=3> <font face=Arial size=-1> ~;


  	if ($alignment eq "left")
	{
		print qq~
			Left: <INPUT TYPE="radio" NAME="alignment" VALUE="left" checked> - Center: <INPUT TYPE="radio" NAME="alignment" VALUE="center"> - Right: <INPUT TYPE="radio" NAME="alignment" VALUE="right" >
			~;
	}
	elsif ($alignment eq "right")
	{
		print qq~
		Left: <INPUT TYPE="radio" NAME="alignment" VALUE="left" > - Center: <INPUT TYPE="radio" NAME="alignment" VALUE="center" > - Right: <INPUT TYPE="radio" NAME="alignment" VALUE="right" checked>
			~;
	}

 	else
	{
		print qq~
		Left: <INPUT TYPE="radio" NAME="alignment" VALUE="left" > - Center: <INPUT TYPE="radio" NAME="alignment" VALUE="center" checked> - Right: <INPUT TYPE="radio" NAME="alignment" VALUE="right" >
			~;
	}

  print qq~ </td></tr>  ~;


  	print qq~
		<tr valign=top><td><font face=Arial size=-1>Title of your home page</font><font face=Arial size=-2><br>(or whatever page you want to link<br>to from your guestbook)</font></td><td colspan=3><font face=Arial size=-1><input type=text name="home_page_title" value="$home_page_title"></font></td></tr>
		<tr valign=top><td><font face=Arial size=-1>Your home page address</font></td><td colspan=3><font face=Arial size=-1><input type=text size=30 name="home_page" value="$home_page"></td></tr>
		<tr valign=top><td><font face=Arial size=-1>Size of border around<br>each message</font></td><td><font face=Arial size=-1><input type=text size=2 name="border_size" value="$border_size"></font><br><font face=Arial size=-2> (set to "0" for no border)</td>
		<td><font face=Arial size=-1>Show horizontal line between messages </font></td> <td> <font face=Arial size=-1>
		~;
	if ($show_line eq "no")
	{
		print qq~
			No: <INPUT TYPE="radio" NAME="show_line" VALUE="no" checked><br>Yes: <INPUT TYPE="radio" NAME="show_line" VALUE="yes">
			~;
	}
	else
	{
		print qq~
			No: <INPUT TYPE="radio" NAME="show_line" VALUE="no"><br>Yes: <INPUT TYPE="radio" NAME="show_line" VALUE="yes" checked>
			~;
	}
	print qq~
		</tr>
		<tr valign=top><td><font face=Arial size=-1>Show links to home page</font><font face=Arial size=-2><br>(you may not want to if<br>using frames)</font></td><td> <font face=Arial size=-1>
		~;
	if ($show_home_page_link eq "no")
	{
		print qq~
			No: <INPUT TYPE="radio" NAME="show_home_page_link" VALUE="no" checked><br>Yes: <INPUT TYPE="radio" NAME="show_home_page_link" VALUE="yes">
			~;
	}
	else
	{
		print qq~
			No: <INPUT TYPE="radio" NAME="show_home_page_link" VALUE="no"><br>Yes: <INPUT TYPE="radio" NAME="show_home_page_link" VALUE="yes" checked>
			~;
	}
	print qq~ </font></td>
		<td><font face=Arial size=-1>Frame target for home page address</font><font face=Arial size=-2><br>(if using frames. If you are NOT<br>using frames, just leave blank)</font></td>
		<td><font face=Arial size=-1><input size=5 type=text name="home_page_target" value="$home_page_target"></font></td>
		~;
	print qq~
		</tr>
		<tr valign=top><td><font face=Arial size=-1>Font face</font></td><td><font face=Arial size=-1><input size=10 type=text name="textfontface" value="$textfontface"></font></td>
		<td><font face=Arial size=-1>Font size</font></td><td><font face=Arial size=-1><input size=5 type=text name="textfontsize" value="$textfontsize"></font></td></tr>
		<tr valign=top><td><font face=Arial size=-1>Board width (600 suits all screens)</font></td><td><font face=Arial size=-1><input size=5 type=text name="table_width" value="$table_width"></font></td>
		<td><font face=Arial size=-1>Number of messages per page</font></td><td><font face=Arial size=-1><input size=5 type=text name="no_displayed" value="$no_displayed"></font></td></tr>

  <tr valign=top><td><font face=Arial size=-1>Width of the fields in the<br>Add a Message page</font></td><td colspan=3><font face=Arial size=-1><input type=text size=5 name="field_length" value="$field_length"></td></tr>
	

		<tr valign=top><td><font face=Arial size=-1>Maximum number of words in message</font></td><td><font face=Arial size=-1><input size=5 type=text name="max_length" value="$max_length"></font></td>
		~;
	if ($order eq "normal")
	{
		print qq~
			<td><font face=Arial size=-1>Order of messages</font></td><td><font face=Arial size=-1>
			Normal: <INPUT TYPE="radio" NAME="order" VALUE="normal" checked><br>Reversed: <INPUT TYPE="radio" NAME="order" VALUE="reversed">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<td><font face=Arial size=-1>Order of messages</font></td><td><font face=Arial size=-1>
			Normal: <INPUT TYPE="radio" NAME="order" VALUE="normal"><br>Reversed: <INPUT TYPE="radio" NAME="order" VALUE="reversed" checked>
			</font></td></tr>
			~;
	}
	if ($use_mailto eq "no")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Enable email mailto links</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="use_mailto" VALUE="no" checked><br>Yes: <INPUT TYPE="radio" NAME="use_mailto" VALUE="yes">
			</font></td>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Enable email mailto links</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="use_mailto" VALUE="no" ><br>Yes: <INPUT TYPE="radio" NAME="use_mailto" VALUE="yes" checked>
			</font></td>
			~;
	}
	if ($web_enabled eq "no")
	{
		print qq~
			<td rowspan=2><font face=Arial size=-1>Show guest web page links</font></td><td rowspan=2><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="web_enabled" VALUE="no" checked><br>Yes: <INPUT TYPE="radio" NAME="web_enabled" VALUE="yes">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<td><font face=Arial size=-1>Show guest web page links</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="web_enabled" VALUE="no" ><br>Yes: <INPUT TYPE="radio" NAME="web_enabled" VALUE="yes" checked>
			</font></td></tr>
			~;
	}
	if ($show_no_of_messages eq "no")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Display total number of messages</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="show_no_of_messages" VALUE="no" checked><br>Yes: <INPUT TYPE="radio" NAME="show_no_of_messages" VALUE="yes">
			</font></td>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Display total number of messages</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="show_no_of_messages" VALUE="no" ><br>Yes: <INPUT TYPE="radio" NAME="show_no_of_messages" VALUE="yes" checked>
			</font></td>
			~;
	}
	print qq~
		<td colspan=2><font face=Arial size=-1>Text for "comment" title<br>
		<input size=30 type=text name="web_comment" value="$web_comment"></font></td></tr>
		~;
	############
	print qq~
		</table>
		<p>
		<table border=1 width=600>
		<tr valign=top><td colspan=2 bgcolor = red><font face=Arial size=-1 color=white><B>Style/CSS</B></font></td></tr>
		~;
	if ($style ne "off")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use Style/CSS</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="style" VALUE="off"> Yes: <INPUT TYPE="radio" NAME="style" VALUE="on" checked>
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use Style/CSS</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="style" VALUE="off" checked> Yes: <INPUT TYPE="radio" NAME="style" VALUE="on" >
			</font></td></tr>
			~;
	}
	print qq~
		<tr valign=top><td><font face=Arial size=-1>Style code</font></td><td><font face=Arial size=-1><TEXTAREA wrap=virtual NAME="user_style" ROWS="9" COLS="40">~;
	foreach $row(@user_style)
	{
		print "$row";
	}
	print "</TEXTAREA></font></td></tr>";
	####################
	print qq~
		</table><p>
		<table border=1 width=600>
		<tr valign=top><td colspan=2 bgcolor = red><font face=Arial size=-1 color=white><B>Email info</B></font></td></tr>
		<tr valign=top><td><font face=Arial size=-1>Path to your sendmail programme</font></td><td><font face=Arial size=-1><input size=40 type=text name="mail_path" value="$mail_path"></font></td></tr>
		<tr valign=top><td><font face=Arial size=-1>Your email address</font></td><td><font face=Arial size=-1><input size=40 type=text name="admin_email" value="$admin_email"></font></td></tr>
		~;
	if ($send_email_to_admin eq "off")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Send you email notification of new messages?</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="send_email_to_admin" VALUE="off" checked> Yes: <INPUT TYPE="radio" NAME="send_email_to_admin" VALUE="on">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Send you email notification of new messages?</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="send_email_to_admin" VALUE="off" > Yes: <INPUT TYPE="radio" NAME="send_email_to_admin" VALUE="on" checked>
			</font></td></tr>
			~;
	}
	if ($send_email_to_guest eq "off")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Send guest a thank you message?</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="send_email_to_guest" VALUE="off" checked> Yes: <INPUT TYPE="radio" NAME="send_email_to_guest" VALUE="on">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Send guest a thank you message?</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="send_email_to_guest" VALUE="off" > Yes: <INPUT TYPE="radio" NAME="send_email_to_guest" VALUE="on" checked>
			</font></td></tr>
			~;
	}
	print qq~
		<tr valign=top><td><font face=Arial size=-1>Subject to be shown in your thank you message</font></td><td><font face=Arial size=-1><input size=40 type=text name="thanks_title" value="$thanks_title"></font></td></tr>
		~;
	print qq~
		<tr valign=top><td><font face=Arial size=-1>Text of your thank you message</font></td><td><font face=Arial size=-1><TEXTAREA wrap=virtual NAME="thank_you" ROWS="9" COLS="40">~;
	foreach $row(@thank_you)
	{
		print "$row";
	}
	print "</TEXTAREA></font></td></tr>";
	if ($thanks_include_message eq "off")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Include original guestbook message in thank you message?</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="thanks_include_message" VALUE="off" checked> Yes: <INPUT TYPE="radio" NAME="thanks_include_message" VALUE="on">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Include original guestbook message in thank you message?</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="thanks_include_message" VALUE="off" > Yes: <INPUT TYPE="radio" NAME="thanks_include_message" VALUE="on" checked>
			</font></td></tr>
			~;
	}
	print qq~
		</table>
		<p>
		<table border=1 width=600>
		<tr valign=top><td colspan=2 bgcolor = red><font face=Arial size=-1 color=white><B>Images/titles</B></font></td></tr>
		~;
	if ($active_header eq "off")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Show Active-Scripts header</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="active_header" VALUE="off" checked> Yes: <INPUT TYPE="radio" NAME="active_header" VALUE="on">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Show Active-Scripts header</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="active_header" VALUE="off" > Yes: <INPUT TYPE="radio" NAME="active_header" VALUE="on" checked>
			</font></td></tr>
			~;
	}
	if ($user_image eq "no")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use your own image at top of guestbook</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="user_image" VALUE="no" checked> Yes: <INPUT TYPE="radio" NAME="user_image" VALUE="yes">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use your own image at top of guestbook</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="user_image" VALUE="no" > Yes: <INPUT TYPE="radio" NAME="user_image" VALUE="yes" checked>
			</font></td></tr>
			~;
	}
	print qq~
		<tr valign=top><td><font face=Arial size=-1>Address of your image</font></td><td><font face=Arial size=-1><input type=text size=50 name="user_image_url" value="$user_image_url"></font></td></tr>
		~;
	if ($use_title eq "off")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use text title</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="use_title" VALUE="off" checked> Yes: <INPUT TYPE="radio" NAME="use_title" VALUE="on">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use text title</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="use_title" VALUE="off" > Yes: <INPUT TYPE="radio" NAME="use_title" VALUE="on" checked>
			</font></td></tr>
			~;
	}
	print qq~
		<tr valign=top><td><font face=Arial size=-1>Title of your guestbook</font></td><td><font face=Arial size=-1><input type=text name="title" value="$title"></font></td></tr>
		~;
	if ($usebackgroundimage eq "no")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use your own background image</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="usebackgroundimage" VALUE="no" checked> Yes: <INPUT TYPE="radio" NAME="usebackgroundimage" VALUE="yes">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use your own background image</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="usebackgroundimage" VALUE="no" > Yes: <INPUT TYPE="radio" NAME="usebackgroundimage" VALUE="yes" checked>
			</font></td></tr>
			~;
	}
	print qq~
		<tr valign=top><td><font face=Arial size=-1>Address of your<br>background image</font></td><td><font face=Arial size=-1><input type=text size=50 name="backgroundimage" value="$backgroundimage"></font></td></tr>
		~;
 ##############


 ($hr_image = "http://www.active-scripts.net/line.gif") if ($hr_image eq "");

 if ($use_hr_image ne "yes")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use your own image<br>between messages</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="use_hr_image" VALUE="no" checked> Yes: <INPUT TYPE="radio" NAME="use_hr_image" VALUE="yes">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use your own image<br>between messages</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="use_hr_image" VALUE="no" > Yes: <INPUT TYPE="radio" NAME="use_hr_image" VALUE="yes" checked>
			</font></td></tr>
			~;
	}
	print qq~
		<tr valign=top><td><font face=Arial size=-1>Address of your image<br>between messages</font></td><td><font face=Arial size=-1><input type=text size=50 name="hr_image" value="$hr_image"></font></td></tr>
		~;


	############
	if ($use_user_html eq "no")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use your own html header at top of guestbook?</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="use_user_html" VALUE="no" checked> Yes: <INPUT TYPE="radio" NAME="use_user_html" VALUE="yes">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use your own html header at top of guestbook?</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="use_user_html" VALUE="no" > Yes: <INPUT TYPE="radio" NAME="use_user_html" VALUE="yes" checked>
			</font></td></tr>
			~;
	}
	print qq~
		<tr valign=top><td><font face=Arial size=-1>User header html</font></td><td><font face=Arial size=-1><TEXTAREA wrap=virtual NAME="user_html" ROWS="9" COLS="40">~;
	foreach $row(@user_html)
	{
		print "$row";
	}
	print "</TEXTAREA></font></td></tr>";
	####################
	############
	if ($use_user_html_footer eq "no")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use your own html footer at bottom of guestbook?</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="use_user_html_footer" VALUE="no" checked> Yes: <INPUT TYPE="radio" NAME="use_user_html_footer" VALUE="yes">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Use your own html footer at bottom of guestbook?</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="use_user_html_footer" VALUE="no" > Yes: <INPUT TYPE="radio" NAME="use_user_html_footer" VALUE="yes" checked>
			</font></td></tr>
			~;
	}
	print qq~
		<tr valign=top><td><font face=Arial size=-1>User footer html</font></td><td><font face=Arial size=-1><TEXTAREA wrap=virtual NAME="user_html_footer" ROWS="9" COLS="40">~;
	foreach $frow(@user_html_footer)
	{
		print "$frow";
	}
	print "</TEXTAREA></font></td></tr>";
	####################
	if ($allow_html eq "no")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Allow html in messages (best not to)</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="allow_html" VALUE="no" checked> Yes: <INPUT TYPE="radio" NAME="allow_html" VALUE="yes">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Allow html in messages (best not to)</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="allow_html" VALUE="no" > Yes: <INPUT TYPE="radio" NAME="allow_html" VALUE="yes" checked>
			</font></td></tr>
			~;
	}
	print qq~
		</table>
		<p>
		<table border=1 width=600>
		<tr valign=top><td colspan=2 bgcolor = red><font face=Arial size=-1 color=white><B>Message control</B></font></td></tr>
		~;
	if ($anti_spam eq "off")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Block multiple posts in same day by same IP?<br></font><font face=Arial size=-2>(Only use this if you suffer from regular spamming.)</font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="anti_spam" VALUE="off" checked> Yes: <INPUT TYPE="radio" NAME="anti_spam" VALUE="on">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Block multiple posts in same day by same IP?<br></font><font face=Arial size=-2>(Only use this if you suffer from regular spamming.)</font><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="anti_spam" VALUE="off" > Yes: <INPUT TYPE="radio" NAME="anti_spam" VALUE="on" checked>
			</font></td></tr>
			~;
	}
	$anti_ips =~ s/\,/ /g;
	print qq~
		<tr valign=top><td><font face=Arial size=-1>List any servers or IP addresses (or parts thereof) that you wish to block. </font><font face=Arial size=-2>
	(use a white space between multiple addresses)</td><td><font face=Arial size=-1><input type=text name="anti_ips" value="$anti_ips"></font></td></tr>
		~;
	$bad_words =~ s/\,/ /g;
	print qq~
		<tr valign=top><td><font face=Arial size=-1>List words you would rather your guest did not use<br>in your guestbook. (Use your imagination.)</font></td><td><font face=Arial size=-1><input type=text name="bad_words" value="$bad_words"></font></td></tr>
		</table>
		<p>
		<table border=1 width=600>
		<tr valign=top><td colspan=3 bgcolor = red><font face=Arial size=-1 color=white><B>Guestbook management</B></font></td></tr>
 ~;
  if ($moderated eq "yes")
	{
		print qq~
			<tr valign=top><td colspan=2><font face=Arial size=-1>Approve messages before they are added?<br></font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="moderated" VALUE="no" > Yes: <INPUT TYPE="radio" NAME="moderated" VALUE="yes" checked>
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
  	<tr valign=top><td colspan=2><font face=Arial size=-1>Approve messages before they are added?<br></font></td><td><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="moderated" VALUE="no" checked> Yes: <INPUT TYPE="radio" NAME="moderated" VALUE="yes" >
			</font></td></tr>
			~;
	}


  print qq~
		<tr valign=top><td colspan=2><font face=Arial size=-1>Maximum number of messages in entire guestbook</font></td><td><font face=Arial size=-1><input type=text name="max" value="$max" size=7></font></td></tr>
		<tr valign=top><td colspan=2><font face=Arial size=-1>Number of days until a message is automatically <br>removed from guestbook.</font></td><td><font face=Arial size=-1><input type=text name="days_to_delete" value="$days_to_delete" size=7></font></td></tr>
		<tr valign=top><td colspan=2><font face=Arial size=-1>Number of days to complete wipe of messages<br>following removal.</font></td><td><font face=Arial size=-1><input type=text name="days_to_trash" value="$days_to_trash" size=7></font></td></tr>
		<tr valign=top><td colspan=2><font face=Arial size=-1>No of days your daily automatic backups are retained</font></td><td><font face=Arial size=-1><input size=7 type=text name="days_to_delete_backup_files" value="$days_to_delete_backup_files"></font></td></tr>
		</table>
		<p>
		<table border=1 width=600>
		<tr valign=top><td colspan=3 bgcolor = red><font face=Arial size=-1 color=white><B>Backup email</B></font></td></tr>
		~;
	if ($mail_backup_to_admin eq "no")
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Send regular email backup to admin?</font></td><td colspan=2><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="mail_backup_to_admin" VALUE="no" checked> Yes: <INPUT TYPE="radio" NAME="mail_backup_to_admin" VALUE="yes">
			</font></td></tr>
			~;
	}
	else
	{
		print qq~
			<tr valign=top><td><font face=Arial size=-1>Send regular email backup to admin?</font></td><td colspan=2><font face=Arial size=-1>
			No: <INPUT TYPE="radio" NAME="mail_backup_to_admin" VALUE="no" > Yes: <INPUT TYPE="radio" NAME="mail_backup_to_admin" VALUE="yes" checked>
			</font></td></tr>
			~;
	}
	print qq~
		<tr valign=top><td rowspan=3><font face=Arial size=-1>Frequency of regular email of backup to admin</font></td>
		~;
	if ($mail_admin_backups_interval eq "daily")
	{
		print qq~
			<td colspan=2><font face=Arial size=-1>Daily: <INPUT TYPE="radio" NAME="mail_admin_backups_interval" VALUE="daily" checked></font></td>
			</tr>
			~;
	}
	else
	{
		print qq~
			<td colspan=2><font face=Arial size=-1>Daily: <INPUT TYPE="radio" NAME="mail_admin_backups_interval" VALUE="daily" ></font></td>
			</tr>
			~;
	}
	if ($mail_admin_backups_interval eq "weekly")
	{
		print qq~
			<td ><font face=Arial size=-1>Weekly: <INPUT TYPE="radio" NAME="mail_admin_backups_interval" VALUE="weekly" checked></font></td>
			~;
	}
	else
	{
		print qq~
			<td><font face=Arial size=-1>Weekly: <INPUT TYPE="radio" NAME="mail_admin_backups_interval" VALUE="weekly"></font></td>
			~;
	}
	print qq~
		<td><font face=Arial size=-1>
		Day of week : <SELECT NAME="mail_admin_backups_day">
		<OPTION value = "$mail_admin_backups_day" selected>$weekdaysbak[$mail_admin_backups_day]
		<OPTION value = "0">Sunday
		<OPTION value = "1">Monday
		<OPTION value = "2">Tuesday
		<OPTION value = "3">Wednesday
		<OPTION value = "4">Thursday
		<OPTION value = "5">Friday
		<OPTION value = "6">Saturday
		</SELECT>
		</font></td></tr>
		~;
	if ($mail_admin_backups_interval eq "monthly")
	{
		print qq~
			<tr>
			<td><font face=Arial size=-1>
			Monthly: <INPUT TYPE="radio" NAME="mail_admin_backups_interval" VALUE="monthly" checked></font></td>
			~;
	}
	else
	{
		print qq~
			<tr>
			<td><font face=Arial size=-1>
			Monthly: <INPUT TYPE="radio" NAME="mail_admin_backups_interval" VALUE="monthly"></font></td>
			~;
	}
	print qq~
		<td><font face=Arial size=-1>
		Day of month: <SELECT NAME="mail_admin_backups_month">
		<OPTION selected>$mail_admin_backups_month
		<OPTION >1
		<OPTION>2
		<OPTION>3
		<OPTION>4
		<OPTION>5
		<OPTION>6
		<OPTION>7
		<OPTION>8
		<OPTION>9
		<OPTION>10
		<OPTION>11
		<OPTION>12
		<OPTION>13
		<OPTION>14
		<OPTION>15
		<OPTION>16
		<OPTION>17
		<OPTION>18
		<OPTION>19
		<OPTION>20
		<OPTION>21
		<OPTION>22
		<OPTION>23
		<OPTION>24
		<OPTION>25
		<OPTION>26
		<OPTION>27
		<OPTION>28
		</SELECT>
		</font></td></tr>
		~;
	print qq~
		</table><INPUT TYPE="submit" VALUE="Update standard preferences">
		</form>
		~;
} # end view_prefs
###############
sub view_to_edit
{
	&seek_cook;
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
		@data_ordered = reverse(@data);
	&basic_header;
	print qq~
		<center><font face=Arial size=+1>
		<B>Active Guestbook Message Manager</B>
		<p></font>
		<font face=Arial size=-1>
		<a href="$ENV{'SCRIPT_NAME'}?action=control_panel">Control Panel</a>
		</font>
		~;
	@datalist = ();
	$count = 1;
	foreach $row (@data_ordered)
	{
		@fields = split (/\|/, $row);
		unless ($fields[10] eq "del")
		{
			push (@datalist, $row);
		}
	}
#################### ###################### ################### ###################

   print "<br>";
 $count = 1;
	$grouped = 0;
	$no_displayed = 5;
	$start_number = $FORM{'start_number'};
	$new_start_number = ($start_number + $no_displayed);
	$old_start_number = ($start_number - $no_displayed);
	$startplus = $start_number +1;
$number_of_messages = @datalist;
	unless ($old_start_number < 0)
	{
		print qq~ <font face= "Arial" size=-1> [<a href="$ENV{'SCRIPT_NAME'}\?start_number=$old_start_number&action=view_to_edit">Previous</a>] </font> ~;
	}

  	&show_edit_number_menu unless ($number_of_messages <($no_displayed+1));

####################      show number menu

sub show_edit_number_menu
{
   print qq~
		<font face="Arial" size=-1>[
		~;


	# $number_of_messages = int($number_of_messages); # int here sorts out any funny decimals entered in the control panel
	$number_of_pages = ($number_of_messages / $no_displayed) ;
	$number_of_pages = int($number_of_pages); # no of full pages
	if ($number_of_messages > ($number_of_pages * $no_displayed))
	{
		$extra = "yes";
	}
	if ($extra eq "yes")
	{
		$number_of_pages = $number_of_pages +1;
	}
	($start_number = 0) if (!$start_number);
	for ($x = 1; $x < $number_of_pages+1 ; $x++ )
	{
		$sn = (($x*$no_displayed)- $no_displayed);
		$bottom = ($start_number - (11 * $no_displayed));
		$top = ($start_number + (11 * $no_displayed));
		if ((($sn > $bottom) && ($sn < $top)) || ($x == "1") || ($x == $number_of_pages))
		{
			if ($sn ne $start_number)
			{
				print qq~
					<font face= "Arial" size=-1 color=$link><a href="$ENV{'SCRIPT_NAME'}\?start_number=$sn&action=view_to_edit">$x</a></font>
					~;
			}
			else
			{
				print qq~
					<font face="Arial" size=-1 color=$link>$x</font>
					~;
			} # end else
		}
	} # end for
	print qq~
		] </font>
		~;

  } # end show menu
############
	unless ($new_start_number > ($number_of_messages -1 ))
	{
		print qq~ <font face= "Arial" size=-1> [<a href="$ENV{'SCRIPT_NAME'}\?start_number=$new_start_number&action=view_to_edit">Next</a>] </font><br> ~;
	}
	if (($new_start_number > ($number_of_messages -1 )) && ($number_of_messages >($no_displayed)))
	{
		print qq~ <br> ~;
	}
	print qq~ <font face= "Arial" size=-1> ~;
	if ($new_start_number < $number_of_messages)
	{
		print qq~ Messages $startplus to $new_start_number</font> ~;
	}
	else
	{
		if ($startplus == $number_of_messages)
		{
			print qq~ Message $startplus</font> ~;
		}
		else
		{
			print qq~ Messages $startplus to $number_of_messages</font> ~;
		}
	}
	foreach $row (@datalist)
	{
		@fields = split (/\|/, $row);
		$grouped++;
		if (($grouped > ($start_number)) && ($grouped < ($start_number + $no_displayed + 1)))
		{
  if ($fields[15] eq "waiting")
  {
			print qq~
				<table bgcolor=#ffffff border=0 width=$table_width cellspacing=0>
<tr valign=top><td colspan=2 bgcolor=#0000ff><font face="Arial" size=-1 color=#ffffff><B>THIS MESSAGE IS WAITING FOR APPROVAL</B></font></td></tr>
		
				~;

  }
  else
  {

		if ($count ==1)
		{
			print qq~
				<table bgcolor=#fffff0 border=0 width=$table_width cellspacing=0>
				~;
		}
		else
		{
			print qq~
				<table bgcolor=#ffffd0 border=0 width=$table_width cellspacing=0>
				~;
		}
  } # end else


		if ($fields[4])
		{
			print qq~
				<tr valign=top><td width=150><font face="Arial" size=-1><b>$TXT_your_name: </b></font></td><td width=445><font face="Arial" size=-1><a href="mailto:$fields[4]">$fields[1]</a></font></td></tr>
				~;
		}
		else
		{
			print qq~
				<tr valign=top><td width=150><font face="Arial" size=-1><b>$TXT_your_name: </b></font></td><td width=445><font face="Arial" size=-1>$fields[1]</font></td></tr>
				~;
		}
		if ($fields[11])
		{
			print qq~
				<tr valign=top><td width=150><font face="Arial" size=-1><b>$TXT_your_web_page_address: </b></font></td><td width=445><font face="Arial" size=-1>$fields[11]</font></td></tr>
				~;
		}
		print qq~
			<tr valign=top><td width=150><font face="Arial" size=-1><b>$TXT_your_message: </b></font></td><td width=445><font face="Arial" size=-1>$fields[2]</font></td></tr>
			<tr valign=top><td width=150><font face="Arial" size=-1><b>Date: </b></font></td><td width=445><font face="Arial" size=-1>$fields[3]</font></td></tr>
			~;
		if ($fields[5])
		{
			print qq~
				<tr valign=top><td width=150><font face="Arial" size=-1><b>$TXT_where_in_the_world: </b></font></td><td width=445><font face="Arial" size=-1>$fields[5]</font></td></tr>
				~;
		}
		if ($fields[6])
		{
			print qq~
				<tr valign=top><td width=150><font face="Arial" size=-1><b>$web_comment: </b></font></td><td width=445><font face="Arial" size=-1><i>$fields[6]</i></font></td></tr>
				~;
		}
		if ($fields[7])
		{
			print qq~
				<tr valign=top><td width=150><font face="Arial" size=-1><b>IP: </b></font></td><td width=445><font face="Arial" size=-1>$fields[7]</font></td></tr>
				~;
		}
		print qq~
			<tr valign=top><td colspan=2><font face="Arial" size=-1><b>[ <a href="$ENV{'SCRIPT_NAME'}?action=delete_item&ref=$fields[0]">Delete this message</a>]</b>
			~;
		unless ($fields[6])
		{
			print qq~
				<b>[ <a href="$ENV{'SCRIPT_NAME'}?action=add_response1&ref=$fields[0]&start_number=$start_number">Add a comment</a> ]</b>
				~;
		}

 		if ($fields[15] eq "waiting")
		{
			print qq~
				<b>[ <a href="$ENV{'SCRIPT_NAME'}?action=approve_message&ref=$fields[0]&start_number=$start_number">APPROVE THIS MESSAGE</a> ]</b>
				~;
		}

		print qq~
			<b>[ <a href="$ENV{'SCRIPT_NAME'}?action=change1&ref=$fields[0]&start_number=$start_number">Edit this message</a> ]</b></font></td></tr>
			~;
		print qq~
			</b></font></td></tr>
			~;
		print qq~
			</table>
			<hr width=$table_width size=1>
			~;
		$count++;
		if ($count >2)
		{
			$count = 1;
		}
	}
 }
} # end sub
sub delete_item
{
	&seek_cook;
	&get_file_lock("$location_of_lock_file");
	$ref = $FORM{'ref'};
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	open(USER_FILE,">$guestbook_data_name");
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if ($ref ne $fields[0])
		{
			print USER_FILE "$row";
		}
		else
		{
			print USER_FILE "$fields[0]|$fields[1]|$fields[2]|$fields[3]|$fields[4]|$fields[5]|$fields[6]|$fields[7]|$fields[8]|$fields[9]|del|$fields[11]|$now|$fields[13]|$fields[14]|$fields[15]|$fields[16]|$fields[17]|$fields[18]|$fields[19]|$fields[20]|$fields[21]|$fields[22]|$fields[23]|$fields[24]|$fields[25]|$fields[26]|$fields[27]|$fields[28]|$fields[29]|$fields[30]|\n";
		}
		### This adds "del" to field 9 and the date it is deleted to field 12.
	}
	close(USER_FILE);
	&release_file_lock("$location_of_lock_file");
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_to_edit"> ~;
	&main_headerb;
	print qq~
		<center><font face=Arial size=+1>
		<B>Active Guestbook Message Manager</B>
		<p></font>
		<font face=Arial size=-1>
		<a href="$ENV{'SCRIPT_NAME'}\?action=view_to_edit">
		<B>Message deleted</B></a><br>
		</body>
		</html>
		~;
} # end delete_item
############## add response
sub add_response1
{
	&seek_cook;
	$ref = $FORM{'ref'};
	$start_number = $FORM{'start_number'};
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if ($ref eq $fields[0])
		{
			&content;
			&plain_header;
			print qq~
				<font face=Arial size=+1>
				Active Guestbook Message Editor
				</font><br><font face=Arial size=-1>
				<a href="$ENV{'SCRIPT_NAME'}\?action=view_to_edit">Message Editor</a> | <a href="$ENV{'SCRIPT_NAME'}\?action=control_panel">Control Panel</a>
				<form action="$ENV{'SCRIPT_NAME'}" METHOD="POST" >
				<INPUT TYPE="hidden" NAME="ref" VALUE="$ref">
				<INPUT TYPE="hidden" NAME="start_number" VALUE="$start_number">
				<INPUT TYPE="hidden" NAME="action" VALUE="add_response2">
				~;
			print qq~
				<table border=1 width=600>
				~;
			if ($fields[4])
			{
				print qq~
					<tr valign=top><td><font face="Arial" size=-1><b>$TXT_your_name: </b></font></td><td><font face="Arial" size=-1><a href="mailto:$fields[4]">$fields[1]</a></font></td></tr>
					~;
			}
			else
			{
				print qq~
					<tr valign=top><td ><font face="Arial" size=-1><b>$TXT_your_name: </b></font></td><td ><font face="Arial" size=-1>$fields[1]</font></td></tr>
					~;
			}
			print qq~
				<tr valign=top><td><font face="Arial" size=-1><b>$TXT_your_message: </b></font></td><td ><font face="Arial" size=-1>$fields[2]</font></td></tr>
				<tr valign=top><td ><font face="Arial" size=-1><b>Date: </b></font></td><td><font face="Arial" size=-1>$fields[3]</font></td></tr>
				~;
			if ($fields[5])
			{
				print qq~
					<tr valign=top><td><font face="Arial" size=-1><b>$TXT_where_in_the_world: </b></font></td><td><font face="Arial" size=-1>$fields[5]</font></td></tr> ~;
			}
			$fields[6] =~ s/\<br\>/\n/g;
			print qq~
				<tr valign=top><td><font face="Arial" size=-1><b>$web_comment: </b></font></td><td ><font face="Arial" size=-1><TEXTAREA wrap=virtual NAME="comment" ROWS="3" COLS="40">$fields[6]</TEXTAREA></font></tr>
				<tr><td colspan=2><INPUT TYPE="submit" VALUE="Add your comment"></td></tr>
				~;
			print qq~
				</table>
				</form>
				<hr width=$table_width size=1>
				~;
		}
	}
} # end add response1
sub add_response2
{
	&seek_cook;
	$ref = $FORM{'ref'};
	$start_number = $FORM{'start_number'};
	$comment= $FORM{'comment'};
	$comment =~ s/\r//g;
	$comment =~ s/\n/<br>/g;
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	&get_file_lock("$location_of_lock_file");
	open(USER_FILE,">$guestbook_data_name");
	foreach $row (@data)
	{
		chop($row);
		@fields = split (/\|/, $row);
		if ($ref ne $fields[0])
		{
			print USER_FILE "$row\n";
		}
		else
		{
			print USER_FILE "$fields[0]|$fields[1]|$fields[2]|$fields[3]|$fields[4]|$fields[5]|$comment|$fields[7]|$fields[8]|$fields[9]|$fields[10]|$fields[11]|$fields[12]|$fields[13]|$fields[14]|$fields[15]|$fields[16]|$fields[17]|$fields[18]|$fields[19]|$fields[20]|$fields[21]|$fields[22]|$fields[23]|$fields[24]|$fields[25]|$fields[26]|$fields[27]|$fields[28]|$fields[29]|$fields[30]|\n";
		}
	}
	close(USER_FILE);
	&release_file_lock("$location_of_lock_file");
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_to_edit&start_number=$start_number"> ~;
	&main_headerb;
	print qq~
		<center>
		<font face="Arial" size=+1><B>Active Guestbook Message Editor</B> <p>
		</font><font face="Arial" size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_to_edit&start_number=$start_number"><B>Comment successfully added.</B></a>
		</font>
		~;
	&inter_footer;
} # end add response2
sub change1
{
	&seek_cook;
	$start_number = $FORM{'start_number'};
	$ref = $FORM{'ref'};
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if ($ref eq $fields[0])
		{
			$fields[2] =~ s/\<br\>/\n/g;
			&content;
			&plain_header;
			print qq~
				<font face=Arial size=+1>
				Active Guestbook Message Editor
				</font><br><font face=Arial size=-1>
				<a href="$ENV{'SCRIPT_NAME'}\?action=view_to_edit">Message Editor</a> | <a href="$ENV{'SCRIPT_NAME'}\?action=control_panel">Control Panel</a>
				<FORM ACTION="$ENV{'SCRIPT_NAME'}" METHOD="POST">
				<input type=hidden name=action value="change2">
				<input type=hidden name=ref value="$ref">
				<input type=hidden name=start_number value="$start_number">
				<center> <table border=0>
				<tr><td>
				<font face="Arial" size=-1><B>Name</B> </td>
				<td ><font face="Arial" size=-1><INPUT TYPE="text" maxlength = 60 NAME="requiredfull_name" SIZE="40" value="$fields[1]"></td></tr>
				<tr><td colspan=2><center><hr size=1></center></td></tr>
				<tr valign="top"><td><font face="Arial" size=-1>
				<B>Message:</B></td><td><font face="Arial" size=-1>
				<TEXTAREA wrap=virtual NAME="requiredmessage" ROWS="6" COLS="40">$fields[2]</TEXTAREA></td></tr>
				<tr><td colspan=2><center><hr size=1></center></td></tr>
				<tr valign="top"><td><font face="Arial" size=-1>
				<B>Email address:</B></td><td><font face="Arial" size=-1>
				<INPUT TYPE="text" maxlength = 60 NAME="guest_email" SIZE="40" value="$fields[4]"></td></tr>
				<tr valign="top"><td><font face="Arial" size=-1>
				<B>Web address:</B></td><td><font face="Arial" size=-1>
				<INPUT TYPE="text" maxlength = 60 NAME="url" SIZE="40" value="$fields[11]"></td></tr>
				<tr valign="top"><td><font face="Arial" size=-1>
				<B>Location:</B></td><td><font face="Arial" size=-1>
				<INPUT TYPE="text" maxlength = 60 NAME="location" SIZE="40" value="$fields[5]"></td></tr>
    <tr valign="top"><td><font face="Arial" size=-1>
				<B>Date:</B></td><td><font face="Arial" size=-1>
				<INPUT TYPE="text" maxlength = 60 NAME="edited_date" SIZE="40" value="$fields[3]"></td></tr>
				~;
			$fields[6] =~ s/\<br\>/\n/g;
			print qq~
				<tr valign=top><td ><font face="Arial" size=-1><B>$web_comment:</B></font></td><td><font face="Arial" size=-1><TEXTAREA wrap=virtual NAME="comment" ROWS="3" COLS="40">$fields[6]</TEXTAREA></font></tr>
				~;
			print qq~
				<tr><td colspan=2>
				<INPUT TYPE="submit" VALUE="Edit Message"></td></tr>
				<tr><td colspan=2><center><hr size=1></center></td></tr>
				</table>
				</form>
				~;
			print "\n\n</body>";
		}
	} # end if right one
} # end sub change1
sub change2
{
	&seek_cook;
	$ref = $FORM{'ref'};
	$start_number = $FORM{'start_number'};
	$edited_date = $FORM{'edited_date'};
	$comment= $FORM{'comment'};
	$full_name = $FORM{'requiredfull_name'};
	$message = $FORM{'requiredmessage'};
	$guest_email = $FORM{'guest_email'};
	$location = $FORM{'location'};
	$url = $FORM{'url'};
	$url =~ s/http\:\/\///i;
	$message =~ s/\r\n/<br>/g;
	$message =~ s/\r/ /g;
	$message =~ s/\n/<br>/g;
	$message =~ s/\<br\>\<br\>/<br>/g;
	$message =~ s/\s\s/ /g;
	$comment =~ s/\r//g;
	$comment =~ s/\n/<br>/g;
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	&get_file_lock("$location_of_lock_file");
	open(USER_FILE,">$guestbook_data_name");
	foreach $row (@data)
	{
		chop($row);
		@fields = split (/\|/, $row);
		if ($ref ne $fields[0])
		{
			print USER_FILE "$row\n";
		}
		else
		{
			print USER_FILE "$fields[0]|$full_name|$message|$edited_date|$guest_email|$location|$comment|$fields[7]|$fields[8]|$fields[9]|$fields[10]|$url|$fields[12]|$fields[13]|$fields[14]|$fields[15]|$fields[16]|$fields[17]|$fields[18]|$fields[19]|$fields[20]|$fields[21]|$fields[22]|$fields[23]|$fields[24]|$fields[25]|$fields[26]|$fields[27]|$fields[28]|$fields[29]|$fields[30]|\n";
		}
	}
	close(USER_FILE);
	&release_file_lock("$location_of_lock_file");
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_to_edit&start_number=$start_number"> ~;
	&main_headerb;
	print qq~
		<center>
		<font face="Arial" size=+1><B>Active Guestbook Message Editor</B> <p>
		</font><font face="Arial" size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_to_edit&start_number=$start_number"><B>Message successfully edited.</B></a>
		</font>
		~;
	&inter_footer;
} # end change2
###############
sub view_to_undo
{
	&seek_cook;
	@datalist = ();
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if ($fields[10] eq "del")
		{
			push (@datalist, $row);
		}
	}
	#############
	if (@datalist <1)
	{
		&content;
		&plain_header;
		print qq~
			<font face=Arial size=+1>
			Active Guestbook Trash Manager
			</font><br><font face=Arial size=-1><B>No deleted messages found.</B><br>
			<a href="$ENV{'SCRIPT_NAME'}\?action=control_panel">Control Panel</a>
			~;
		exit;
	}
	else
	{
		@sorteddata = sort(@datalist);
		@reversesorteddata = reverse(@sorteddata);
		&basic_header;
		print qq~
			<center><font face=Arial size=+1>
			Active Guestbook Trash Manager
			</font><br><font face=Arial size=-1>
			<a href="$ENV{'SCRIPT_NAME'}\?action=control_panel">Control Panel</a>
			~;
		$count = 1;
		foreach $row (@reversesorteddata)
		{
			@fields = split (/\|/, $row);
			##############
			if ($count ==1)
			{
				print qq~
					<table bgcolor=#ffffff border=1 width=$table_width cellspacing=0>
					~;
			}
			else
			{
				print qq~
					<table bgcolor=#ffffd0 border=1 width=$table_width cellspacing=0>
					~;
			}
			if ($fields[4])
			{
				print qq~
					<tr valign=top><td width=150><font face="Arial" size=-1><b>$TXT_your_name: </b></font></td><td width=445><font face="Arial" size=-1><a href="mailto:$fields[4]">$fields[1]</a></font></td></tr>
					~;
			}
			else
			{
				print qq~
					<tr valign=top><td width=150><font face="Arial" size=-1><b>$TXT_your_name: </b></font></td><td width=445><font face="Arial" size=-1>$fields[1]</font></td></tr>
					~;
			}
			print qq~
				<tr valign=top><td width=150><font face="Arial" size=-1><b>$TXT_your_message: </b></font></td><td width=445><font face="Arial" size=-1>$fields[2]</font></td></tr>
				<tr valign=top><td width=150><font face="Arial" size=-1><b>Date: </b></font></td><td width=445><font face="Arial" size=-1>$fields[3]</font></td></tr>
				~;
			if ($fields[5])
			{
				print qq~
					<tr valign=top><td width=150><font face="Arial" size=-1><b>$TXT_where_in_the_world: </b></font></td><td width=445><font face="Arial" size=-1>$fields[5]</font></td></tr>
					~;
			}
			if ($fields[6])
			{
				print qq~
					<tr valign=top><td width=150><font face="Arial" size=-1><b>$web_comment: </b></font></td><td width=445><font face="Arial" size=-1><i>$fields[6]</i></font></td></tr>
					~;
			}
			if ($fields[7])
			{
				print qq~
					<tr valign=top><td width=150><font face="Arial" size=-1><b>IP address: </b></font></td><td width=445><font face="Arial" size=-1>$fields[7]</font></td></tr>
					~;
			}
			print qq~
				<tr valign=top><td colspan=2><font face="Arial" size=-1><b>[ <a href="$ENV{'SCRIPT_NAME'}?action=undelete_item&ref=$fields[0]">Undelete this message</a> ] [ <a href="$ENV{'SCRIPT_NAME'}?action=trash_item&ref=$fields[0]">Permanently wipe this message</a> ]</b>
				~;
			print qq~
				</b></font></td></tr>
				~;
			print qq~
				</table>
				<hr width=$table_width size=1>
				~;
			$count++;
			if ($count >2)
			{
				$count = 1;
			}
		}
	} # end foreach undo
} # end sub
sub undelete_item
{
	&seek_cook;
	$ref = $FORM{'ref'};
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	&get_file_lock("$location_of_lock_file");
	open(USER_FILE,">$guestbook_data_name");
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if ($ref ne $fields[0])
		{
			print USER_FILE "$row";
		}
		else
		{
			print USER_FILE "$fields[0]|$fields[1]|$fields[2]|$fields[3]|$fields[4]|$fields[5]|$fields[6]|$fields[7]|$now|$fields[9]||$fields[11]||$fields[13]|$fields[14]|$fields[15]|$fields[16]|$fields[17]|$fields[18]|$fields[19]|$fields[20]|$fields[21]|$fields[22]|$fields[23]|$fields[24]|$fields[25]|$fields[26]|$fields[27]|$fields[28]|$fields[29]|$fields[30]|\n";
		}
	}
	close(USER_FILE);
	&release_file_lock("$location_of_lock_file");
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_to_undo"> ~;
	&main_headerb;
	print qq~
		<center>
		<font face="Arial" size=+1>Active Guestbook Trash Manager <p>
		</font><font face="Arial" size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_to_undo"><B>Message successfully undeleted.</B></a>
		</font>
		~;
	&inter_footer;
	exit;
}
sub trash_item
{
	&seek_cook;
	$ref = $FORM{'ref'};
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	&get_file_lock("$location_of_lock_file");
	open(USER_FILE,">$guestbook_data_name");
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if ($ref ne $fields[0])
		{
			print USER_FILE "$row";
		}
	}
	close(USER_FILE);
	&release_file_lock("$location_of_lock_file");
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_to_undo"> ~;
	&main_headerb;
	print qq~
		<center>
		<font face="Arial" size=+1>Active Guestbook Trash Manager <p>
		</font><font face="Arial" size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_to_undo"><B>Message permanently wiped.</B></a>
		</font>
		~;
	&inter_footer;
	exit;
} # end trash_item
sub amqdate
{
	$amqdate = $_[0];
	@bits = split (/\//, $amqdate);
	$amqyear = $bits[2];
	if ($amqyear > 1999)
	{
		$amqyear = ($amqyear - 2000);
	}
	if ($amqyear == 4 || $amqyear == 8 || $amqyear == 12 || $amqyear == 16 || $amqyear == 0 || $amqyear == 20 || $amqyear == 24)
	{$leap = "yes";}
		else
	{$leap = "no";}
		if ($amqyear == 1 || $amqyear == 5 || $amqyear == 9 || $amqyear == 13 || $amqyear == 17 || $amqyear == 21 || $amqyear == 25)
	{
		$extradays = ((($amqyear - 1)/4)+1);
	}
	$amqyeardays = (($amqyear * 365)+$extradays);
	$amqday = $bits[0];
	if ($bits[1] == 1)
	{$monthdays = 0;}
		if ($bits[1] == 2)
	{$monthdays = 31;}
		if ($bits[1] == 3)
	{$monthdays = 59;}
		if ($bits[1] == 4)
	{$monthdays = 90;}
		if ($bits[1] == 5)
	{$monthdays = 120;}
		if ($bits[1] == 6)
	{$monthdays = 151;}
		if ($bits[1] == 7)
	{$monthdays = 181;}
		if ($bits[1] == 8)
	{$monthdays = 212;}
		if ($bits[1] == 9)
	{$monthdays = 243;}
		if ($bits[1] == 10)
	{$monthdays = 273;}
		if ($bits[1] == 11)
	{$monthdays = 304;}
		if ($bits[1] == 12)
	{$monthdays = 334;}
		if ($leap eq "yes" && $bits[1] >2)
	{
		$monthdays = ($monthdays+1);
	}
	$amqtotal = ($amqday + $amqyeardays + $monthdays);
	return($amqtotal);
}
sub check_update
{
	unless (-e "$update_name")
	{
		umask 000;
	}
	open(NUMBER,"$update_name") || &oops('$update_name');
	$num = <NUMBER>;
	close(NUMBER);
	if ($num < $revdate) {
		&get_file_lock("$location_of_lock_file");
		open(NUMBER,">$update_name");
		print NUMBER "$revdate";
		close(NUMBER);
		&update_database;
		&release_file_lock("$location_of_lock_file");
	}
}
sub update_database
{
	############# run automatic delete or trash
	open(USER_FILE,"$guestbook_data_name");
	@data = <USER_FILE>;
	close(USER_FILE);
	open(USER_FILE,">$guestbook_data_name");
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if (($fields[10] eq "del") && ($fields[12]) && ($fields[12] < $now - $days_to_trash))
		{
		}
		elsif ((!$fields[12]) && ($fields[8] < ($now - $days_to_delete)))
		{
			print USER_FILE "$fields[0]|$fields[1]|$fields[2]|$fields[3]|$fields[4]|$fields[5]|$fields[6]|$fields[7]|$fields[8]|$fields[9]|del|$fields[11]|$now|$fields[13]|$fields[14]|$fields[15]|$fields[16]|$fields[17]|$fields[18]|$fields[19]|$fields[20]|$fields[21]|$fields[22]|$fields[23]|$fields[24]|$fields[25]|$fields[26]|$fields[27]|$fields[28]|$fields[29]|$fields[30]|\n";
		}
		else
		{
			print USER_FILE "$row";
		}
	} # end for each
	close(USER_FILE);
	########### automatic prune if non-deleted messages greater than max
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	@revdata = reverse(@data);
	@nondeldata = ();
	@deldata = ();
	@arraytodisplay = ();
	foreach $row (@revdata)
	{
		@fields = split (/\|/, $row);
		push (@nondeldata, $row) if $fields[10] ne "del"; # add non-deleted messages to new array #
		push (@deldata, $row) if $fields[10] eq "del"; # add deleted messages to new array #
	}
	if (@nondeldata >$max)
	{
		$counter = 0;
		foreach $row (@nondeldata)
		{
			@fields = split (/\|/, $row);
			if ($counter < $max)
			{
				push (@arraytodisplay, $row);
			}
			else
			{
				$delrow = "$fields[0]|$fields[1]|$fields[2]|$fields[3]|$fields[4]|$fields[5]|$fields[6]|$fields[7]|$fields[8]|$fields[9]|del|$fields[11]|$now|$fields[13]|$fields[14]|$fields[15]|$fields[16]|$fields[17]|$fields[18]|$fields[19]|$fields[20]|$fields[21]|$fields[22]|$fields[23]|$fields[24]|$fields[25]|$fields[26]|$fields[27]|$fields[28]|$fields[29]|$fields[30]|\n";
				push (@arraytodisplay, $delrow);
			}
			$counter++;
		}
		@alldata = (@arraytodisplay, @deldata);
		@sortedalldata = sort(@alldata);
		open(USER_FILE,">$guestbook_data_name") || &oops('$guestbook_data_name');
		foreach $row (@sortedalldata)
		{
			print USER_FILE "$row";
		}
		close(USER_FILE);
	}
	#########
	&delete_old_backups;
	&mail_backup if $mail_backup_to_admin eq "yes";
}
sub backup_to_dir
{
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@user_data = <USER_FILE>;
	close(USER_FILE);
	$location1 = "./$guestbook_backups_directory/guestbook_backup.$revdate";
	umask 000;
	open(BAK,">$location1");
	foreach $row (@user_data)
	{
		print BAK "$row";
	}
	close(BAK);
} # end backup to dir
######################
sub mail_backup
{
	open(NUMBER2,"$senddate_name") || &oops('$senddate_name');
	$senddate = <NUMBER2>;
	close(NUMBER2);
	if ((($mail_admin_backups_interval eq "monthly") && (($mail_admin_backups_month == $bakday) || (($now -$senddate) >27 ) ))
			|| (($mail_admin_backups_interval eq "weekly") && (($mail_admin_backups_day == $wday) || (($now -$senddate) >6 ) ) )
		|| ($mail_admin_backups_interval eq "daily"))
	{
		open (MAIL, "|$mail_path $admin_email") || &oops('the mail program. Please check the mail path in the Control Panel.');
		print MAIL "To: $admin_email\n";
		print MAIL "From: $admin_email\n";
		print MAIL "Subject: Database backup\n\n";
		print MAIL "Below is a backup data file from your Active Guestbook. For details of how to restore your data from this file, please visit www.active-scripts.net.\n\n";
		open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
		@user_data = <USER_FILE>;
		close(USER_FILE);
		foreach $row (@user_data)
		{
			print MAIL "$row\n";
		}
		close (MAIL);
		open(NUMBER1,"$senddate_name") || &oops('$senddate_name');
		open (NUMBER1,">$senddate_name");
		print NUMBER1 "$now";
		close(NUMBER1);
	}
}
#####################
sub delete_old_backups
{
	opendir (USERS, "./$guestbook_backups_directory") || &oops('the $guestbook_backups_directory directory');
	@files = grep(/^g/,readdir(USERS));
	closedir (USERS);
	foreach $file (@files)
	{
		if (-M "./$guestbook_backups_directory/$file" > $days_to_delete_backup_files)
		{
			unlink("./$guestbook_backups_directory/$file");
		}
	}
} # End of sub delete_old_bak
sub search
{
	&content;
	@hits = ();
	&main_header;
	&active_header if $active_header eq "on";
	&user_image if $user_image eq "yes";
	&title if $use_title eq "on";
	&user_html if $use_user_html eq "yes";
	print qq~ <font face="$textfontface" size="$textfontsize"><h3>$TXT_search_results</h3></font> ~;
	&menu;
	$search_words = $FORM{'search_words'};
	$search_fields = $FORM{'search_fields'};
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if ($fields[10] ne "del")
		{
			if (($search_fields eq "1" ) || ($search_fields eq "2" ))
			{
				$searchby = $fields[$search_fields];
			}
			else
			{
				$searchby = $row;
			}
			@word_list = split(/\s+/,$search_words);
			for ($x = @word_list; $x > 0; $x--)
			{
				$match_word = $word_list[$x - 1];
				if ($searchby =~ /\b$match_word\b/i)
				{
					splice(@word_list,$x - 1, 1);
				} # End of If
			} # End of For Loop
			if (@word_list < 1)
			{
				push (@hits, $row);
			}
		}
	} # end foreach $row (@data)
	close(USER_FILE);
	if (@hits <1)
	{
		print "<br><B><font face=\"$textfontface\" size=\"$textfontsize\">$TXT_no_match </font></B>";
	}
	else
	{
		&html_search_results;
	}

 	&user_html_footer if $use_user_html_footer eq "yes";
}
#########
sub html_search_results
{
	$count = 1;
	$number_of_messages = @hits;
	@hits = reverse(@hits);
	if ($search_flag ne "no")
	{
		if ($number_of_messages == 1)
		{
			print qq~ <br><font face= "$textfontface" size=$textfontsize><B>$TXT_one_match</B></font> ~;
		}
		else
		{
			print qq~ <br><font face= "$textfontface" size=$textfontsize><B>$TXT_more_matches_1 $number_of_messages $TXT_more_matches_2</B></font>~;
		}
	}
	foreach $row (@hits)
	{
		#########
		@fields = split (/\|/, $row);
		# $grouped++;
		# if (($grouped > ($start_number)) && ($grouped < ($start_number + $no_displayed + 1)))
		# {
		&main_table_results;
		# } # end if number is right
	} # end for each row
	#########
}
##############
sub preview
{
	&content;
	&main_header;
	&active_header if $active_header eq "on";

 print qq~ <table border=0 cellspacing=0 cellpadding=0><tr><td width=$table_width align=center> ~;

	&user_image if $user_image eq "yes";
	&title if $use_title eq "on";
	&user_html if $use_user_html eq "yes";
	&menu;
	$message =~ s/\"/'/g;
	$location =~ s/\"/'/g;
	$url =~ s/\"/'/g;
	$full_name =~ s/\"/'/g;
	print qq~
		<FORM ACTION="$ENV{'SCRIPT_NAME'}" METHOD="POST">
		<INPUT TYPE="hidden" NAME="action" VALUE="post_preview">
		<INPUT TYPE="hidden" NAME="requiredfull_name" VALUE="$full_name">
		<INPUT TYPE="hidden" NAME="requiredmessage" VALUE="$message">
		<INPUT TYPE="hidden" NAME="guest_email" VALUE="$guest_email">
		<INPUT TYPE="hidden" NAME="location" VALUE="$location">
		<INPUT TYPE="hidden" NAME="url" VALUE="$url">
		~;
	$url = "$TXT_none_given" if !$url;
	$location = "$TXT_none_given" if !$location;
	$guest_email = "$TXT_none_given" if !$guest_email;
	print qq~
		<font face="$textfontface" size=$textfontsize>
		<b>$TXT_these_are_the<br>$TXT_if_correct<br>$TXT_if_not<a href="javascript:history.go(-1)">$TXT_go_back</a>$TXT_and_edit</b></font>
		<table cellpadding=2 cellspacing=0  border=0>
		<tr><td>
		<table cellpadding=2 cellspacing=0  border=0>
		<tr><td colspan=2><hr width = $table_width size=1></td></tr>
		<tr valign=top><td width=200><font face="$textfontface" size=$textfontsize><B>$TXT_your_name</B></font></td><td width=400><font face="$textfontface" size=$textfontsize>$full_name</font></td><tr>
		<tr><td colspan=2><hr width = $table_width size=1></td></tr>
		<tr valign=top><td width=200><font face="$textfontface" size=$textfontsize><B>$TXT_your_message</B></font></td><td width=400><font face="$textfontface" size=$textfontsize>$message</font></td><tr>
		<tr><td colspan=2><hr width = $table_width size=1></td></tr>
		<tr valign=top><td width=200><font face="$textfontface" size=$textfontsize><B>$TXT_your_email_address</B></font></td><td width=400><font face="$textfontface" size=$textfontsize>$guest_email</font></td><tr>
		<tr><td colspan=2><hr width = $table_width size=1></td></tr>
		<tr valign=top><td width=200><font face="$textfontface" size=$textfontsize><B>$TXT_where_in_the_world</B></font></td><td width=400><font face="$textfontface" size=$textfontsize>$location</font></td><tr>
		<tr><td colspan=2><hr width = $table_width size=1></td></tr>
		<tr valign=top><td width=200><font face="$textfontface" size=$textfontsize><B>$TXT_your_web_page_address</B></font></td><td width=400><font face="$textfontface" size=$textfontsize>$url</font></td><tr>
		<tr><td colspan=2><hr width = $table_width size=1></td></tr>
		<tr valign=top><td colspan=2><font face="$textfontface" size=$textfontsize><INPUT TYPE="submit" VALUE="$TXT_continue"></td></tr>
		</table>
		</td></tr></table>
		</FORM>

  </td></tr></table>
		~;
  	&user_html_footer if $use_user_html_footer eq "yes";
	exit;
}
sub view_backups
{
	&seek_cook;
	open(RESTORE_BACKUP,"./$guestbook_backups_directory/undo_restore.bak");
	@restore_backup_data = <RESTORE_BACKUP>;
	close(RESTORE_BACKUP);
	opendir (USERS, "./$guestbook_backups_directory") || &oops('the backups directory');
	@files = grep(/^guest/,readdir(USERS));
	closedir (USERS);
	if (@files<1)
	{
		&content;
		print qq~
			<html><head><title>$title</title>
			<META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=control_panel">
			</head>
			<body bgcolor=#fffff0 link=#000000 vlink=#000000>
			<center>
			<font face=Arial size=+1>Active Guestbook Backup Manager
			</font><p>
			<font face=Arial size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=control_panel"><B>There are currently no backups to restore.</B></a>
			</font>
			</center>
			~;
	}
	else
	{
		&content;
		print qq~
			<center>
			<html><head><title>$title</title>
			</head>
			<body bgcolor=#ffffff link=#000000 vlink=#000000>
			<font face="Arial" size=+1><B>Active Guestbook Backup Manager</B><p>
			</font>
			<font face="Arial" size=-1>
			<a href="$ENV{'SCRIPT_NAME'}\?action=control_panel">Control Panel</a>
			~;
		if (@restore_backup_data >2)
		{
			print qq~
				| <a href="$ENV{'SCRIPT_NAME'}?action=undo_last_restore"><B>Undo last restore</B></a>
				~;
		}
		print qq~
			</font>
			<FORM ACTION="$ENV{'SCRIPT_NAME'}" METHOD="POST">
			<INPUT TYPE="hidden" NAME="action" VALUE="restore_backups">
			<center>
			<table bgcolor=#fffff0 cellpadding=0 cellspacing=0 border=0 width=350>
			<tr valign = top><td align=center colspan=2><font face="Arial" size=-1><B>Select backup to restore</B></td></tr>
			~;
		@sorted_files = sort(@files);
		foreach $file (@sorted_files)
		{
			$year = substr($file, -8,4);
			$month = substr($file, -4,2);
			$month = $month-1;
			$mon = $months[$month];
			$day = substr($file, -2,2);
			print qq~
				<tr valign = top><td align=left><font face="Arial" size=-1><INPUT TYPE="radio" NAME="file_to_restore" VALUE="$file"> $day - $mon - $year</td><td> - <a href="$ENV{'SCRIPT_NAME'}?action=view_single_backup&file_to_restore=$file"><font face="Arial" size=-1>View</a></td></tr>
				~;
		}
		print qq~
			<tr><td colspan = 2><INPUT TYPE="submit" VALUE="Restore selected file"></td></tr>
			</table>
			</center>
			</FORM>
			~;
	}
	&inter_footer;
}
sub undo_last_restore
{
	&seek_cook;
	open(RESTORE_BACKUP,"./$guestbook_backups_directory/undo_restore.bak");
	@restore_backup_data = <RESTORE_BACKUP>;
	close(RESTORE_BACKUP);
	if (@restore_backup_data <2)
	{
		&content;
		print qq~
			<html><head><title>$title</title>
			<META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=control_panel">
			</head>
			<body bgcolor=#ffffff link=#000000 vlink=#000000>
			<center>
			<font face=Arial size=+1>Active Guestbook Backup Manager
			</font><p>
			<font face=Arial size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=control_panel"><B>No undo available at the moment.</B></a>
			</font>
			</center>
			~;
	}
	open(MAIN_GUESTBOOK,">$guestbook_data_name") || &oops('$guestbook_data_name');
	foreach $row (@restore_backup_data)
	{
		print MAIN_GUESTBOOK "$row";
	}
	close(MAIN_GUESTBOOK);
	open(RESTORE_BACKUP,">./$guestbook_backups_directory/undo_restore.bak"); # wipe undo restore file
	close(RESTORE_BACKUP);
	&set_counter;
	&content;
	print qq~
		<html><head><title>$title</title>
		<META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_backups">
		</head>
		<body bgcolor=#fffff0 link=#000000 vlink=#000000>
		<center>
		<font face=Arial size=+1>Active Guestbook Backup Manager
		</font><p>
		<font face=Arial size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_backups"><B>Last restore undone.</B></a>
		</font>
		</center>
		~;
	exit;
}
sub restore_backups
{
	&seek_cook;
	$file_to_restore = $FORM{'file_to_restore'};
	if ($file_to_restore eq "")
	{
		{
			&basic_header;
			print qq~
				<center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1>
				<b> You didn't select a backup to restore. Please <a href="javascript:history.go(-1)">go back and select</a>. </b></font>
				~;
			exit;
		}
	}
	open(MAIN_GUESTBOOK,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@main_data = <MAIN_GUESTBOOK>;
	close(MAIN_GUESTBOOK);
	open(RESTORE_BACKUP,">./$guestbook_backups_directory/undo_restore.bak");
	foreach $row (@main_data)
	{
		print RESTORE_BACKUP "$row";
	}
	close(RESTORE_BACKUP);
	&get_file_lock("$location_of_lock_file");
	open(MAIN_GUESTBOOK,">$guestbook_data_name");
	open(RESTORE,"./$guestbook_backups_directory/$file_to_restore") || &oops('/$guestbook_backups_directory/$file_to_restore');
	@restore_data = <RESTORE>;
	foreach $line (@restore_data)
	{
		print MAIN_GUESTBOOK "$line";
	}
	close(RESTORE);
	close(MAIN_GUESTBOOK);
	&release_file_lock("$location_of_lock_file");
	&set_counter;
	&content;
	print qq~
		<html><head><title>$title</title>
		<META http-equiv="refresh" content="3; URL=$ENV{'SCRIPT_NAME'}?action=view_backups">
		</head><body bgcolor=#ffffff link=#000000 vlink=#000000>
		<center><font face=Arial size=+1>Active Guestbook Backup Manager</font><p><font face=Arial size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_backups"><B>Backup has been restored.</B></a><br>(You can undo this from the main Backup Manager page.)
		</font></center>
		~;
	exit;
}
sub view_single_backup
{
	&seek_cook;
	&basic_header;
	$file_to_restore = $FORM{'file_to_restore'};
	$year = substr($file_to_restore, -8,4);
	$month = substr($file_to_restore, -4,2);
	$month = $month-1;
	$mon = $months[$month];
	$day = substr($file_to_restore, -2,2);
	$datestamp = "$day"."-"."$mon"."-"."$year";
	print qq~
		<center>
		<font face=Arial><B>Backup date: $datestamp</B><br></font><font face=Arial size=-1>
		<a href="$ENV{'SCRIPT_NAME'}?action=restore_backups&file_to_restore=$file_to_restore">Restore this guestbook</a> | <a href="$ENV{'SCRIPT_NAME'}\?action=view_backups">Return to Backup Manager</a></font>
		~;
	open(RESTORE,"./$guestbook_backups_directory/$file_to_restore");
	@hits = <RESTORE>;
	close(RESTORE);
	$search_flag = "no";
	&html_search_results_plain;
}
sub active_header
{

 if ($demo eq "off")
 {

	print qq~
		<table BORDER="0" CELLSPACING="0" CELLPADDING="0">
		<tr valign=bottom><td bgcolor=#ffffff width=363><img src="http://active-scripts.net/active_guestbook/active_guestbook.jpg"></td>
		<td align=right bgcolor=#ffffff width=100%><img src="http://active-scripts.net/active_guestbook/from.gif"></td></tr>
		</table>
		<hr size=1 width=100%>
		~;
    }

    else
    {
  	print qq~
		<table BORDER="0" CELLSPACING="0" CELLPADDING="0">
		<tr valign=bottom><td bgcolor=#ffffff width=363><img src="http://active-scripts.net/demo_images/active_guestbook.jpg"></td>
		<td align=right bgcolor=#ffffff width=100%><img src="http://active-scripts.net/demo_images/from.gif"></td></tr>
		</table>
		<hr size=1 width=100%>
		~;
    }

}
sub title
{
	print qq~
		<center><font face="$textfontface"> <h1><b>$title</b></h1></font></center>
		~;
}
sub menu
{
	print qq~
		<font size=$textfontsize face= "$textfontface" color=$link>
		<b>
		[
		~;
	if ($ipoops ne "yes")
	{
		if ($action ne "add")
		{
			print qq~
				<a href="$ENV{'SCRIPT_NAME'}?action=add">$TXT_add_a_message</a> |
				~;
		}
	}
	unless ($show_home_page_link eq "no")
	{
		print qq~
			<a href="$home_page"
			~;
		if ($home_page_target)
		{
			print qq~ target = "$home_page_target" ~;
		}
		print qq~
			>$home_page_title</a> |
			~;
	}
	if ($action eq "add")
	{
		print qq~
			<a href="javascript:history.go(-1)">$TXT_back_to_guestbook</a> |
			~;
	}
	if ($action eq "search")
	{
		print qq~
			<a href="$ENV{'SCRIPT_NAME'}?action=reload">$TXT_back_search_again</a> ]</b></br>
			~;
	}
	else
	{
		print qq~
			<a href="$ENV{'SCRIPT_NAME'}#searchform">$TXT_search</a> ]</b><br>
			~;
	}
	print qq~
		</font>
		~;
}
sub no_of_messages_display
{
	print qq~
		<font size=$textfontsize face="$textfontface">
		~;
	if ($number_of_messages == 1)
	{
		print qq~
			$TXT_there_is_now$number_of_messages$TXT_message_in_our_guestbook <br>
			~;
	}
	else
	{
		print qq~
			$TXT_there_are_now$number_of_messages$TXT_messages_in_our_guestbook <br>
			~;
	}
	print qq~
		</font>
		~;
}
sub main_header
{
	print qq~
		<html><head><title>$title</title> ~;
	&required_script if $action eq "add";
	if ($style ne "off")
	{
		print qq~ $user_style ~;
	}
	print qq~
		</head>
		<BODY BGCOLOR="$backcolor"
		~;
	if ($action eq"" || $action eq"read" || $action eq"add" || $action eq"reload" || $action eq"preview" || $action eq"search")
	{
		if ($usebackgroundimage eq "yes")
		{
			print qq~
				background = "$backgroundimage"
				~;
		}
	}
	print qq~
		TEXT="$text" LINK="$link" VLINK="$vlink" ALINK="$alink" marginwidth="0" marginheight="0" LEFTMARGIN="0" TOPMARGIN="0" >

<div align=$alignment>    ~;

}
########################
sub main_headera
{
	print qq~
		<html><head><title>$title</title> ~;
	&required_script if $action eq "add";
}
sub main_headerc
{
	if ($style ne "off")
	{
		print qq~ $user_style ~;
	}
	print qq~
		</head>
		<BODY BGCOLOR="$backcolor"
		~;
	if ($action eq"" || $action eq"read" || $action eq"add" || $action eq"reload" || $action eq"preview" || $action eq"post_preview")
	{
		if ($usebackgroundimage eq "yes")
		{
			print qq~
				background = "$backgroundimage"
				~;
		}
	}
	print qq~
		TEXT="$text" LINK="$link" VLINK="$vlink" ALINK="$alink" marginwidth="0" marginheight="0" LEFTMARGIN="0" TOPMARGIN="0" >

<div align=$alignment> ~;

}

 sub main_headerb
{
	if ($style ne "off")
	{
		print qq~ $user_style ~;
	}
	print qq~
		</head>
		<BODY BGCOLOR="#ffffff"
		~;
	if ($action eq"" || $action eq"read" || $action eq"add" || $action eq"reload" || $action eq"preview" || $action eq"post_preview")
	{
		if ($usebackgroundimage eq "yes")
		{
			print qq~
				background = "$backgroundimage"
				~;
		}
	}
	print qq~
		TEXT="$text" LINK="$link" VLINK="$vlink" ALINK="$alink" marginwidth="0" marginheight="0" LEFTMARGIN="0" TOPMARGIN="0" >

<div align=$alignment> ~;

}
#############
sub content
{
	print "Content-type: text/html\n\n";
}
sub search_form
{


	print qq~
		<a name="searchform">

  <table width=$table_width cellspacing=0 cellpadding=0
 ~;
 unless ($trans_search eq "yes")
 {
  print qq~ bgcolor="$searchcolor"    ~;
 }


  print qq~
  ></a>
<tr><td width=$table_width align=center
 ~;




 print qq~
>
		<FORM ACTION="$ENV{'SCRIPT_NAME'}" METHOD="POST">
		<font face= "$textfontface" size=$textfontsize><INPUT TYPE="hidden" NAME="action" VALUE="search">
		$TXT_you_can_search_this_guestbook_by<br>$TXT_searchmessage<INPUT TYPE="radio" NAME="search_fields" VALUE="2" checked> - $TXT_searchname<INPUT TYPE="radio" NAME="search_fields" VALUE="1"> - $TXT_searchall<INPUT TYPE="radio" NAME="search_fields" VALUE="all"><br>
		<b>$TXT_searchtext</b><INPUT TYPE="text" NAME="search_words" SIZE="20" MAXLENGTH="40"><br>
		<INPUT TYPE="submit" VALUE="$TXT_searchsearch"></FORM>
		</td></tr></table>
		~;
}
sub show_number_menu
{
	print qq~
		<font face="$textfontface" size=$textfontsize>[
		~;
	$number_of_messages = int($number_of_messages); # int here sorts out any funny decimals entered in the control panel
	$number_of_pages = ($number_of_messages / $no_displayed) ;
	$number_of_pages = int($number_of_pages); # no of full pages
	if ($number_of_messages > ($number_of_pages * $no_displayed))
	{
		$extra = "yes";
	}
	if ($extra eq "yes")
	{
		$number_of_pages = $number_of_pages +1;
	}
	($start_number = 0) if (!$start_number);
	for ($x = 1; $x < $number_of_pages+1 ; $x++ )
	{
		$sn = (($x*$no_displayed)- $no_displayed);
		$bottom = ($start_number - (11 * $no_displayed));
		$top = ($start_number + (11 * $no_displayed));
		if ((($sn > $bottom) && ($sn < $top)) || ($x == "1") || ($x == $number_of_pages))
		{
			if ($sn ne $start_number)
			{
				print qq~
					<font face= "$textfontface" size=$textfontsize color=$link><a href="$ENV{'SCRIPT_NAME'}\?start_number=$sn">$x</a></font>
					~;
			}
			else
			{
				print qq~
					<font face="$textfontface" size=$textfontsize color=$link>$x</font>
					~;
			} # end else
		}
	} # end for
	print qq~
		] </font>
		~;
}
sub user_image
{
	if ($user_image_url)
	{
		print qq~
			<img src = "$user_image_url"><br>
			~;
	}
	else
	{
		print qq~
			<blink>You have not given an image file address in the Standard Preferences Manager.</blink><br>
			~;
	}
}
sub user_html
{
	print qq~ $user_html ~;
}
sub user_html_footer
{
	print qq~ $user_html_footer <br> ~;
}
sub view_change_password
{
	&seek_cook;
	&content;
	print qq~
		<HTML><head><title>$title</title>
		~;
	&required_script;
	print qq~
		</head>
		<body bgcolor=#fffff0 text="#000000" link="#000000" vlink="#000000" alink="#996600">
		~;
	print qq~
		<center><font face=Arial size=+1>
		<B>Password Manager</B></font>
		<br><font face=Arial size=-1>
		<a href="$ENV{'SCRIPT_NAME'}\?action=control_panel">Control Panel</a>
		<br>
		<B>Please enter your new password twice.</B><br>(please note that passwords are <i>case-sensitive</i>)</font>
		<FORM ACTION="$ENV{'SCRIPT_NAME'}" METHOD="POST" onSubmit="return checkrequired(this)">
		<INPUT TYPE="hidden" NAME="action" VALUE="change_password">
		<table border=0>
		<tr><td><font face=Arial size=-1>New password </td><td><font face=Arial size=-1><INPUT TYPE="text" NAME="requiredpass1" SIZE="10" MAXLENGTH="80"></td></tr>
		<tr><td><font face=Arial size=-1>New password again </td><td><font face=Arial size=-1><INPUT TYPE="text" NAME="requiredpasscheck" SIZE="10" MAXLENGTH="80"></td></tr>
		</table>
		<font face=Arial size=-1>
		<INPUT TYPE="submit" VALUE="Change password">
		</FORM>
		~;
	&inter_footer;
}
sub change_password
{
	&seek_cook;
	$pass1 = $FORM{'requiredpass1'};
	$passcheck = $FORM{'requiredpasscheck'};
	if ($pass1 eq $passcheck)
	{
		open(ACTIVE,">$active_name");
		$newpass = crypt($pass1, $salt);
		print ACTIVE "$newpass";
		close(ACTIVE);
		&SetCookies('activea',$newpass);
		&content;
		&main_headera;
		print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=control_panel"> ~;
		&main_headerb;
		print qq~
			<font face=Arial size=+1>
			<B>Change Active Guestbook Control Panel Password</B>
			<br><a href="$ENV{'SCRIPT_NAME'}?action=control_panel">Password has been changed.</a></font>
			~;
	}
	else
	{
		&content;
		&plain_header_stop;
		print qq~
			<font face=Arial size=+1>
			<B>Change Active Guestbook Control Panel Password</B> </font>
			<font face=Arial>
			<p><B>The password has NOT been changed.<br>The two passwords you typed were not the same. </B><br></font>
			<font face=Arial size=-1>
			<a href="$ENV{'SCRIPT_NAME'}?action=control_panel">Control Panel</a> | <a href="$ENV{'SCRIPT_NAME'}?action=view_change_password">Try again</a>
			</font>
			~;
	}
}
sub enter_password
{
	&content;
	print qq~
		<HTML><head><title>$title</title>
		</head>
		<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600" onLoad="document.forms[0].password.focus()">
		~;
	print qq~
		<center><font face=Arial>
		<B>Active Guestbook Control Panel</B></font><font face=Arial size=-1> <br>Please enter password.<br><I>You will need to have Cookies enabled for easy navigation<br>through the Control Panel features.
		</I>
		</font>
		<font face=Arial size=-1>
		<FORM ACTION="$ENV{'SCRIPT_NAME'}" METHOD="POST">
		<INPUT TYPE="hidden" NAME="action" VALUE="control_panel">
		Password <INPUT TYPE="text" NAME="password" SIZE="20" MAXLENGTH="80"><br>
		<INPUT TYPE="submit" VALUE="Enter Control Panel">
		</FORM>
		</font>
		~;
	&inter_footer;
}
sub cookie_vars
{
	$Cookie_Exp_Date = '';
	$Cookie_Path = '';
	$Cookie_Domain = '';
	$Secure_Cookie = '0';
	@Cookie_Encode_Chars = ('\%', '\+', '\;', '\,', '\=', '\&', '\:\:', '\s');
	%Cookie_Encode_Chars = ('\%', '%25',
			'\+', '%2B',
			'\;', '%3B',
			'\,', '%2C',
			'\=', '%3D',
			'\&', '%26',
			'\:\:', '%3A%3A',
		'\s', '+');
	@Cookie_Decode_Chars = ('\+', '\%3A\%3A', '\%26', '\%3D', '\%2C', '\%3B', '\%2B', '\%25');
	%Cookie_Decode_Chars = ('\+', ' ',
			'\%3A\%3A', '::',
			'\%26', '&',
			'\%3D', '=',
			'\%2C', ',',
			'\%3B', ';',
			'\%2B', '+',
		'\%25', '%');
}
sub GetCookies {
	local(@ReturnCookies) = @_;
	local($cookie_flag) = 0;
	local($cookie,$value);
	if ($ENV{'HTTP_COOKIE'}) {
			if ($ReturnCookies[0] ne '') {
				foreach (split(/; /,$ENV{'HTTP_COOKIE'})) {
				($cookie,$value) = split(/=/);
				foreach $char (@Cookie_Decode_Chars) {
					$cookie =~ s/$char/$Cookie_Decode_Chars{$char}/g;
					$value =~ s/$char/$Cookie_Decode_Chars{$char}/g;
				}
				foreach $ReturnCookie (@ReturnCookies) {
					if ($ReturnCookie eq $cookie) {
						$Cookies{$cookie} = $value;
						$cookie_flag = "1";
					}
				}
			}
		}
		else {
			foreach (split(/; /,$ENV{'HTTP_COOKIE'})) {
				($cookie,$value) = split(/=/);
				#
				foreach $char (@Cookie_Decode_Chars) {
					$cookie =~ s/$char/$Cookie_Decode_Chars{$char}/g;
					$value =~ s/$char/$Cookie_Decode_Chars{$char}/g;
				}
				$Cookies{$cookie} = $value;
			}
			$cookie_flag = 1;
		}
	}
	return $cookie_flag;
}
sub SetCookies {
	local(@cookies) = @_;
	local($cookie,$value,$char);
	while( ($cookie,$value) = @cookies ) {
		foreach $char (@Cookie_Encode_Chars) {
			$cookie =~ s/$char/$Cookie_Encode_Chars{$char}/g;
			$value =~ s/$char/$Cookie_Encode_Chars{$char}/g;
		}
		print 'Set-Cookie: ' . $cookie . '=' . $value . ';';
		if ($Cookie_Exp_Date) {
			print ' expires=' . $Cookie_Exp_Date . ';';
		}
		if ($Cookie_Path) {
			print ' path=' . $Cookie_Path . ';';
		}
		if ($Cookie_Domain) {
			print ' domain=' . $Cookie_Domain . ';';
		}
		if ($Secure_Cookie) {
			print ' secure';
		}
		print "\n";
		shift(@cookies); shift(@cookies);
	}
}
sub seek_cook
{
	if (&GetCookies('activea'))
	{
		$password = $Cookies{'activea'};
		$first_time = "no";
	}
	else
	{
		$xyz= $FORM{'password'};
		$password = crypt($xyz, $salt);
		$first_time = "yes";
	}
	if ($password eq $active_string)
	{
		if ($first_time eq "yes")
		{
			&SetCookies('activea',$password);
			&content;
			print qq~ <html><head><title>$title</title><META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=control_panel"> </head>
				<body bgcolor=#ffffff></body></html>
				~;
			exit;
		}
	}
	else
	{
		&enter_password;
		exit;
	}
}
sub oops
{
	&content;
	$message = $_[0];
	print "Can't open $message ";

	exit;
}
sub set_counter
{
	open(MAIN_GUESTBOOK,"$guestbook_data_name");
	@main_data = <MAIN_GUESTBOOK>;
	$max = 0;
	foreach $row (@main_data)
	{
		@fields = split (/\|/, $row);
		if ($fields[0] > $max)
		{
			$max = $fields[0];
		}
	} # end for each
	close(MAIN_GUESTBOOK);
	$max++;
	&get_file_lock("$location_of_lock_file");
	open (NUMBER,">$counter_name");
	print NUMBER "$max";
	close(NUMBER);
	&release_file_lock("$location_of_lock_file");
}
sub restore_defaults
{
	&seek_cook;
	open(DEFAULTS,"$prefs_backup_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$prefs_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_prefs"> ~;
	&main_headerb;
	print qq~
		<center>
		<font face="Arial" size=+1><B>Active Guestbook Standard Preferences Manager</B> <p>
		</font><font face="Arial" size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_prefs"><B>Factory default preferences restored.</B></a>
		</font>
		~;
	&inter_footer;
}
sub restore_language_defaults
{
	&seek_cook;
	open(DEFAULTS,"$langprefs_backup_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$langprefs_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	open(DEFAULTS,"$months_bak_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$months_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}\?action=view_langprefs"> ~;
	&main_headerb;
	print qq~
		<center>
		<font face="Arial" size=+1><B>Active Guestbook Language Preferences Manager</B> <p>
		</font><font face="Arial" size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_langprefs"><B>Factory default language preferences restored.</B></a>
		</font>
		~;
	&inter_footer;
}
sub check_new_files
{
	unless (-e "$counter_name")
	{
		&content;
		print "The file $counter_name does not exist" ;
		exit;
	}
	unless (-e "$guestbook_data_name")
	{
		&content;
		print "The file $guestbook_data_name does not exist" ;
		exit;
	}
	unless (-e "$prefs_name")
	{
		&content;
		print "The file $prefs_name does not exist" ;
		exit;
	}
	unless (-r "$counter_name")
	{
		&content;
		print "The file $counter_name does can not be read." ;
		exit;
	}
	unless (-r "$guestbook_data_name")
	{
		&content;
		print "The file guestbook_data can not be read." ;
		exit;
	}
	unless (-r "$prefs_name")
	{
		&content;
		print "The file $prefs_name can not be read." ;
		exit;
	}
	unless (-w "$counter_name")
	{
		&content;
		print "The file $counter_name can not be written to." ;
		exit;
	}
	unless (-w "$guestbook_data_name")
	{
		&content;
		print "The file $guestbook_data_name can not be written to." ;
		exit;
	}
	unless (-w "$prefs_name")
	{
		&content;
		print "The file $prefs_name can not be written to." ;
		exit;
	}
}
sub view_langprefs
{
	&seek_cook;
	&content;
 # upgrade 2.1
 ($TXT_has_been_added_moderated = "Thanks. Your message has been sent to our webmaster and will be added shortly.") if ($TXT_has_been_added_moderated eq "");
	print qq~
		<center>
		<html><head><title>Active Guestbook - Language Preferences Manager</title></head>
		<body bgcolor=#ffffff>
		<form action="$ENV{'SCRIPT_NAME'}" METHOD="POST" >
		<INPUT TYPE="hidden" NAME="action" VALUE="edit_langprefs">
		<font face=Arial size=+1><B>Active Guestbook - Language Preferences Manager</B></font><p>
		<font face=Arial size=-1>
		<a href="$ENV{'SCRIPT_NAME'}?action=reload">Return to Guestbook</a> | <a href="$ENV{'SCRIPT_NAME'}?action=control_panel">Return to Control Panel</a><br>
		<a href="$ENV{'SCRIPT_NAME'}?action=restore_language_defaults">Restore defaults</a>
		<p><b>Top of main guestbook page. </b>
		<table border=1 cellspacing=0>
		<tr><td width=600 bgcolor=#eeeeee align=center>
		<font size=-1 face= "Arial" color=#000000>
		[ <input type="text" name="TXT_add_a_message" size="20" value="$TXT_add_a_message"> |
		<u>Active Scripts</u> | <input type="text" name="TXT_search" size="20" value="$TXT_search"> ]<br>
		<input type="text" name="TXT_there_is_now" size="30" value="$TXT_there_is_now"> 1
		<input type="text" name="TXT_message_in_our_guestbook" size="30" value="$TXT_message_in_our_guestbook"><br>
		<input type="text" name="TXT_there_are_now" size="30" value="$TXT_there_are_now"> 45
		<input type="text" name="TXT_messages_in_our_guestbook" size="30" value="$TXT_messages_in_our_guestbook"><br></font>
		<font face= "Arial" size=-1> [<input type="text" name="TXT_previous" size="10" value="$TXT_previous">] </font>
		[<font face= "Arial" size=-1 color=#000000><u>1</u></font>
		<font face="Arial" size=-1 color=#000000>2</font>
		<font face= "Arial" size=-1 color=#000000><u>3</u> ]
		[<input type="text" name="TXT_next" size="10" value="$TXT_next">]<br>
		<input type="text" name="TXT_viewing_message" size="20" value="$TXT_viewing_message"> 1
		<input type="text" name="TXT_after_last_number1" size="20" value="$TXT_after_last_number1"><br>
		<input type="text" name="TXT_viewing_messages" size="20" value="$TXT_viewing_messages"> 1
		<input type="text" name="TXT_to" size="3" value="$TXT_to"> 10 <input type="text" name="TXT_after_last_number" size="20" value="$TXT_after_last_number"><br>
		</td></tr>
		</table>
		<p><b>Search section at bottom of main guestbook page. </b>
		<table border=1 cellspacing=0>
		<tr><td width=600 bgcolor=#eeeeee align=left>
		<font face= "Arial" size=-1>
		<input type="text" name="TXT_you_can_search_this_guestbook_by" size="20" value="$TXT_you_can_search_this_guestbook_by">
		<br>
		<input type="text" name="TXT_searchmessage" size="15" value="$TXT_searchmessage"><INPUT TYPE="radio" checked> -
		<input type="text" name="TXT_searchname" size="15" value="$TXT_searchname"><INPUT TYPE="radio"> -
		<input type="text" name="TXT_searchall" size="15" value="$TXT_searchall"><INPUT TYPE="radio" ><br>
		<b><input type="text" name="TXT_searchtext" size="20" value="$TXT_searchtext"></b>
		<br>
		<input type="text" name="TXT_searchsearch" size="20" value="$TXT_searchsearch"> <--the text you want to appear in the Search button
		</td></tr></table>
		<p><b>Add a message screen. </b>
		<table border=1 cellspacing=0>
		<tr><td width=600 bgcolor=#eeeeee align=left>
		<font face= "Arial" size=-1>
		<input type="text" name="TXT_back_to_guestbook" size="30" value="$TXT_back_to_guestbook">
		<br>
		<input type="text" name="TXT_your_name" size="30" value="$TXT_your_name"> <input type="text" name="TXT_required" size="20" value="$TXT_required">
		<br>
		<input type="text" name="TXT_your_message" size="30" value="$TXT_your_message">
		<br>
		<input type="text" name="TXT_where_in_the_world" size="30" value="$TXT_where_in_the_world">
		<br>
		<input type="text" name="TXT_your_email_address" size="30" value="$TXT_your_email_address">
		<br>
		<input type="text" name="TXT_your_web_page_address" size="30" value="$TXT_your_web_page_address"> <input type="text" name="TXT_if_you_have_one" size="20" value="$TXT_if_you_have_one">
		<br>
		<input type="text" name="TXT_continue" size="20" value="$TXT_continue"> <--the text you want to appear in the Continue button
		<hr size=1>
		<input type="text" name="TXT_please_fill_in" size="20" value="$TXT_please_fill_in"> <--the text you want to appear when "required" fields are not entered
		</td></tr></table>
		<p><b>Add a message preview screen. </b>
		<table border=1 cellspacing=0>
		<tr><td width=600 bgcolor=#eeeeee align=left>
		<font face= "Arial" size=-1>
		<input type="text" name="TXT_these_are_the" size="50" value="$TXT_these_are_the">
		<br>
		<input type="text" name="TXT_if_correct" size="50" value="$TXT_if_correct">
		<br>
		<input type="text" name="TXT_if_not" size="20" value="$TXT_if_not"> <input type="text" name="TXT_go_back" size="20" value="$TXT_go_back"> <input type="text" name="TXT_and_edit" size="20" value="$TXT_and_edit">
		<br>
		<input type="text" name="TXT_none_given" size="30" value="$TXT_none_given"> <--the text you want to appear when a field is left blank
		</td></tr></table>
		<p><b>Message confirmation screen. </b>
		<table border=1 cellspacing=0>
		<tr><td width=600 bgcolor=#eeeeee align=left>
		<font face= "Arial" size=-1>
		<input type="text" name="TXT_has_been_added" size="45" value="$TXT_has_been_added"> <-- Unmoderated setup message
		</td></tr>
  <tr><td width=600 bgcolor=#eeeeee align=left>
		<font face= "Arial" size=-1>
		<input type="text" name="TXT_has_been_added_moderated" size="45" value="$TXT_has_been_added_moderated"> <-- Moderated setup message
		</td></tr>

  </table>
		<p><b>Search results screen. </b>
		<table border=1 cellspacing=0>
		<tr><td width=600 bgcolor=#eeeeee align=left>
		<font face= "Arial" size=-1>
		<input type="text" name="TXT_search_results" size="30" value="$TXT_search_results"> <--Title
		<br>
		<input type="text" name="TXT_back_search_again" size="30" value="$TXT_back_search_again"> <--Link back to guestbook
		<br>
		<input type="text" name="TXT_no_match" size="40" value="$TXT_no_match"> <-- "No results" message
		<br>
		<input type="text" name="TXT_one_match" size="40" value="$TXT_one_match"> <-- "One result" message
		<br>
		<input type="text" name="TXT_more_matches_1" size="10" value="$TXT_more_matches_1"> 23 <input type="text" name="TXT_more_matches_2" size="30" value="$TXT_more_matches_2"><-- "Multiple results" message
		</td></tr></table>
		<p><b>Email address error messages. </b>
		<table border=1 cellspacing=0>
		<tr><td width=600 bgcolor=#eeeeee align=left>
		<font face= "Arial" size=-1>
		<input type="text" name="TXT_no_dot_at_start" size="70" value="$TXT_no_dot_at_start">
		<br>
		<input type="text" name="TXT_no_www_at_start" size="70" value="$TXT_no_www_at_start">
		<br>
		<input type="text" name="TXT_no_squiggles_in_domain" size="70" value="$TXT_no_squiggles_in_domain">
		<br>
		<input type="text" name="TXT_only_one_at" size="70" value="$TXT_only_one_at">
		<br>
		<input type="text" name="TXT_no_dots_next" size="70" value="$TXT_no_dots_next">
		<br>
		<input type="text" name="TXT_wrong_end" size="70" value="$TXT_wrong_end">
		<br>
		<input type="text" name="TXT_please_go_back_and_edit" size="70" value="$TXT_please_go_back_and_edit">
		<br>
		</td></tr></table>
		<p><b>Other messages. </b>
		<table border=1 cellspacing=0>
		<tr><td width=600 bgcolor=#eeeeee align=left>
		<font face= "Arial" size=-1>
		<input type="text" name="TXT_too_many_words" size="40" value="$TXT_too_many_words"><-- Too many words in message
		<br>
		<input type="text" name="TXT_disallowed_word" size="40" value="$TXT_disallowed_word"><-- Disallowed word
		<br>
		<input type="text" name="TXT_blocked_IP" size="40" value="$TXT_blocked_IP"><-- Blocked IP address
		<br>
		</td></tr></table>
		<p><b>Months. </b>
		<table border=1 cellspacing=0>
		<tr><td width=600 bgcolor=#eeeeee align=center>
		<font face= "Arial" size=-1>
		<textarea name="month_names" rows="12" cols="15">~;
	foreach $monthss (@monthlist)
	{
		if ($monthss =~ /[a-zA-Z0-9]/)
		{
			print "$monthss\n";
		}
	}
	print qq~</textarea>
		</td></tr></table> <input type="submit" value="Update Language Preferences">
		</form>
		~;
}
sub view_colprefs
{
	&seek_cook;
	$ignore = $FORM{'ignore'};
	unless ($ignore eq "yes") # only backup when you first enter view_colprefs
	{
		open(COLFILE,"$colprefs_name");
		@cols = <COLFILE>;
		close(COLFILE);
		open(TEMPCOLFILE,">$tempcolprefs_name");
		foreach $line (@cols)
		{
			print TEMPCOLFILE "$line";
		}
		close(TEMPCOLFILE);
	}
	&content;
	print qq~
		<center>
		<html><head><title>Active Guestbook - Color Preferences Manager</title></head>
		<body bgcolor=#ffffff>
		<form action="$ENV{'SCRIPT_NAME'}" METHOD="POST" >
		<INPUT TYPE="hidden" NAME="action" VALUE="edit_colprefs">
		<font face=Arial size=+1><B>Active Guestbook - Color Preferences Manager</B></font><p>
		<font face=Arial size=-1>
		<a href="$ENV{'SCRIPT_NAME'}?action=reload">Return to Guestbook</a> | <a href="$ENV{'SCRIPT_NAME'}?action=control_panel">Use these colors/Return to Control Panel</a><br>
		<a href="$ENV{'SCRIPT_NAME'}?action=restore_coldefaults">Restore FACTORY color defaults</a> | <a href="$ENV{'SCRIPT_NAME'}?action=restore_user_color_defaults">Restore USER color defaults</a><br>
		<a href="$ENV{'SCRIPT_NAME'}?action=cancel_color_change">Cancel all changes made during this visit</a>
		<br><a href="$ENV{'SCRIPT_NAME'}?action=save_user_color_defaults">Save these colors as USER color defaults</a>
		<br></font><font face=Arial size=-2>(If you have made any changes, you first need to click VIEW COLORS using the button at the bottom.) </font><font face=Arial size=-1>
		<table border=1 width=600 cellspacing=0>

  <tr><td colspan=5><center><font face=Arial size=-1>


    

   Transparent message box header: ~;



  	if ($trans_message_header eq "yes")
	{

		print qq~
			No: <INPUT TYPE="radio" NAME="trans_message_header" VALUE="no"> - Yes: <INPUT TYPE="radio" NAME="trans_message_header" VALUE="yes" checked>
			~;


	}
	else
	{
		print qq~
			No: <INPUT TYPE="radio" NAME="trans_message_header" VALUE="no" checked> - Yes: <INPUT TYPE="radio" NAME="trans_message_header" VALUE="yes">
			~;

	}
   print qq~
   <br>

 
   Transparent message box body: ~;



  	if ($trans_message_body eq "yes")
	{

		print qq~
			No: <INPUT TYPE="radio" NAME="trans_message_body" VALUE="no"> - Yes: <INPUT TYPE="radio" NAME="trans_message_body" VALUE="yes" checked>
			~;


	}
	else
	{
		print qq~
			No: <INPUT TYPE="radio" NAME="trans_message_body" VALUE="no" checked> - Yes: <INPUT TYPE="radio" NAME="trans_message_body" VALUE="yes">
			~;

	}
   print qq~
   <br>




   Transparent search box background: ~;



  	if ($trans_search eq "yes")
	{

		print qq~
			No: <INPUT TYPE="radio" NAME="trans_search" VALUE="no"> - Yes: <INPUT TYPE="radio" NAME="trans_search" VALUE="yes" checked>
			~;


	}
	else
	{
		print qq~
			No: <INPUT TYPE="radio" NAME="trans_search" VALUE="no" checked> - Yes: <INPUT TYPE="radio" NAME="trans_search" VALUE="yes">
			~;

	}




 print qq~    </font> <font face=Arial size=-2>
  <br>These settings override the colors selected below.</font></center></td></tr>

		<tr valign=top><td><font face=Arial size=-1> <B><DIV align="center">Item</DIV></B> </td>
		<td colspan=3><font face=Arial size=-1><DIV align="center"><B>Color</B></DIV></td>
		<td><font face=Arial size=-1><DIV align="center"><B>Samples</B></DIV></td></tr>


		<!-- row 1 start -->
		~;
	############################ START OF HEADER 1
	print qq~
		<tr valign=top><td><font face=Arial size=-1> Header 1 background</td>
		<td colspan=3><SELECT name="optiondata_color1" onChange="forms[0].data_color1.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="data_color1" VALUE="$data_color1" SIZE=7 MAXLENGTH=7> </td>
		<td rowspan=2 valign=middle bgcolor = $data_color1>
		<font color= $textdata_color1 face="Arial" size=-1><DIV align="center"><B>Header 1</B></DIV>
		</td>
		</tr>
		~;
	#####################################
	############################
	print qq~
		<tr valign=top><td><font face=Arial size=-1> Header 1 text</td>
		<td colspan=3><SELECT name="optiontextdata_color1" onChange="forms[0].textdata_color1.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="textdata_color1" VALUE="$textdata_color1" SIZE=7 MAXLENGTH=7> </td>
		</tr>
		~;
	##################################### END OF HEADER 1
	############################ START OF MESSAGE 1
	print qq~
		<tr valign=top><td><font face=Arial size=-1> Message 1 background</td>
		<td colspan=3><SELECT name="optiontable_color1" onChange="forms[0].table_color1.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="table_color1" VALUE="$table_color1" SIZE=7 MAXLENGTH=7> </td>
		<td rowspan=2 valign=middle bgcolor = $table_color1>
		<font color= $texttable_color1 face="Arial" size=-1><DIV align="center"><B>Message 1</B></DIV>
		</td>
		</tr>
		~;
	#####################################
	############################
	print qq~
		<tr valign=top><td><font face=Arial size=-1> Message 1 text</td>
		<td colspan=3><SELECT name="optiontexttable_color1" onChange="forms[0].texttable_color1.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="texttable_color1" VALUE="$texttable_color1" SIZE=7 MAXLENGTH=7> </td>
		</tr>
		~;
	##################################### END OF MESSAGE 1
	################# NEXT
	############################ START OF HEADER 2
	print qq~
		<tr valign=top><td><font face=Arial size=-1> Header 2 background</td>
		<td colspan=3><SELECT name="optiondata_color2" onChange="forms[0].data_color2.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="data_color2" VALUE="$data_color2" SIZE=7 MAXLENGTH=7> </td>
		<td rowspan=2 valign=middle bgcolor = $data_color2>
		<font color= $textdata_color2 face="Arial" size=-1><DIV align="center"><B>Header 2</B></DIV>
		</td>
		</tr>
		~;
	#####################################
	############################
	print qq~
		<tr valign=top><td><font face=Arial size=-1> Header 2 text</td>
		<td colspan=3><SELECT name="optiontextdata_color2" onChange="forms[0].textdata_color2.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="textdata_color2" VALUE="$textdata_color2" SIZE=7 MAXLENGTH=7> </td>
		</tr>
		~;
	##################################### END OF HEADER 2
	############################ START OF MESSAGE 2
	print qq~
		<tr valign=top><td><font face=Arial size=-1> Message 2 background</td>
		<td colspan=3><SELECT name="optiontable_color2" onChange="forms[0].table_color2.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="table_color2" VALUE="$table_color2" SIZE=7 MAXLENGTH=7> </td>
		<td rowspan=2 valign=middle bgcolor = $table_color2>
		<font color= $texttable_color2 face="Arial" size=-1><DIV align="center"><B>Message 2</B></DIV>
		</td>
		</tr>
		~;
	#####################################
	############################
	print qq~
		<tr valign=top><td><font face=Arial size=-1> Message 2 text</td>
		<td colspan=3><SELECT name="optiontexttable_color2" onChange="forms[0].texttable_color2.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="texttable_color2" VALUE="$texttable_color2" SIZE=7 MAXLENGTH=7> </td>
		</tr>
		~;
	##################################### END OF MESSAGE 2
	###############################
	############################ START OF MAIN BACKGROUND/TEXT
	print qq~
		<tr valign=top><td><font face=Arial size=-1> Main page background</td>
		<td colspan=3><SELECT name="optionbackcolor" onChange="forms[0].backcolor.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="backcolor" VALUE="$backcolor" SIZE=7 MAXLENGTH=7> </td>
		<td rowspan=2 valign=middle bgcolor = $backcolor>
		<font color= $text face="Arial" size=-1><DIV align="center"><B>Main text</B></DIV>
		</td>
		</tr>
		~;
	#####################################
	############################
	print qq~
		<tr valign=top><td><font face=Arial size=-1> Main text</td>
		<td colspan=3><SELECT name="optiontext" onChange="forms[0].text.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="text" VALUE="$text" SIZE=7 MAXLENGTH=7> </td>
		</tr>
		~;
	##################################### END OF MAIN BACKGROUND/TEXT
	#################### Start of comment text colors
	print qq~
		<tr valign=top><td><font face=Arial size=-1><font color=$commentcolor>Comment text color</font></td>
		<td colspan=3><SELECT name="optioncommentcolor" onChange="forms[0].commentcolor.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="commentcolor" VALUE="$commentcolor" SIZE=7 MAXLENGTH=7> </td>
		<td rowspan=5 valign=bottom align=center>
		&nbsp;
	</td>
		</tr>
		~;
	################## End of comment text colors
	print qq~
		<tr valign=top><td bgcolor=$searchcolor><font face=Arial size=-1><font color=$text>Search box background color</font></td>
		<td colspan=3><SELECT name="optionsearchcolor" onChange="forms[0].searchcolor.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="searchcolor" VALUE="$searchcolor" SIZE=7 MAXLENGTH=7> </td>
		</tr>
		~;
	print qq~
		<tr valign=top><td><font face=Arial size=-1><font color=$link>Link color</font></td>
		<td colspan=3><SELECT name="optionlink" onChange="forms[0].link.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="link" VALUE="$link" SIZE=7 MAXLENGTH=7> </td>
		</tr>
		~;
	print qq~
		<tr valign=top><td><font face=Arial size=-1><font color=$vlink>Visited link color</font></td>
		<td colspan=3><SELECT name="optionvlink" onChange="forms[0].vlink.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="vlink" VALUE="$vlink" SIZE=7 MAXLENGTH=7> </td>
		</tr>
		~;
	print qq~
		<tr valign=top><td><font face=Arial size=-1><font color=$alink>Active link color</font></td>
		<td colspan=3><SELECT name="optionalink" onChange="forms[0].alink.value=options[selectedIndex].value">
		<OPTION value="" selected> Select New Color?
		~;
	&newoptions;
	print qq~
		</SELECT> <INPUT TYPE="TEXT" NAME="alink" VALUE="$alink" SIZE=7 MAXLENGTH=7> </td>
		</tr>
		~;
	print qq~ </table><INPUT TYPE="submit" VALUE="Update preferences"></form> ~;
}
sub edit_colprefs
{
	&seek_cook;
	## TEMPCOLFILE now has the last saved preferences
	open(COLFILE,">$colprefs_name");
	print COLFILE "trans_search=$FORM{'trans_search'}=\n";
	print COLFILE "trans_message_header=$FORM{'trans_message_header'}=\n";
	print COLFILE "trans_message_body=$FORM{'trans_message_body'}=\n";
	print COLFILE "data_color1=$FORM{'data_color1'}=\n";
	print COLFILE "data_color2=$FORM{'data_color2'}=\n";
	print COLFILE "textdata_color1=$FORM{'textdata_color1'}=\n";
	print COLFILE "textdata_color2=$FORM{'textdata_color2'}=\n";
	print COLFILE "table_color1=$FORM{'table_color1'}=\n";
	print COLFILE "table_color2=$FORM{'table_color2'}=\n";
	print COLFILE "texttable_color1=$FORM{'texttable_color1'}=\n";
	print COLFILE "texttable_color2=$FORM{'texttable_color2'}=\n";
	print COLFILE "backcolor=$FORM{'backcolor'}=\n";
	print COLFILE "link=$FORM{'link'}=\n";
	print COLFILE "vlink=$FORM{'vlink'}=\n";
	print COLFILE "alink=$FORM{'alink'}=\n";
	print COLFILE "text=$FORM{'text'}=\n";
	print COLFILE "commentcolor=$FORM{'commentcolor'}=\n";
	print COLFILE "searchcolor=$FORM{'searchcolor'}=\n";
	close(COLFILE);
	&content;
	print qq~
		<HTML><head><title>$title</title></head>
		<META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_colprefs&ignore=yes">
		</head>
		<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
		<B><DIV align="center"><font face=Arial size=-1>Now loading new color preferences</font></DIV></B>
		~;
}
#################
sub edit_langprefs
{
	&seek_cook;
	open(PREFS,">$langprefs_name");
	print PREFS "TXT_add_a_message=$FORM{'TXT_add_a_message'}=\n";
	print PREFS "TXT_search=$FORM{'TXT_search'}=\n";
	print PREFS "TXT_previous=$FORM{'TXT_previous'}=\n";
	print PREFS "TXT_next=$FORM{'TXT_next'}=\n";
	print PREFS "TXT_there_is_now=$FORM{'TXT_there_is_now'}=\n";
	print PREFS "TXT_there_are_now=$FORM{'TXT_there_are_now'}=\n";
	print PREFS "TXT_messages_in_our_guestbook=$FORM{'TXT_messages_in_our_guestbook'}=\n";
	print PREFS "TXT_message_in_our_guestbook=$FORM{'TXT_message_in_our_guestbook'}=\n";
	print PREFS "TXT_viewing_message=$FORM{'TXT_viewing_message'}=\n";
	print PREFS "TXT_viewing_messages=$FORM{'TXT_viewing_messages'}=\n";
	print PREFS "TXT_to=$FORM{'TXT_to'}=\n";
	print PREFS "TXT_after_last_number=$FORM{'TXT_after_last_number'}=\n";
	print PREFS "TXT_after_last_number1=$FORM{'TXT_after_last_number1'}=\n";
	print PREFS "TXT_you_can_search_this_guestbook_by=$FORM{'TXT_you_can_search_this_guestbook_by'}=\n";
	print PREFS "TXT_searchmessage=$FORM{'TXT_searchmessage'}=\n";
	print PREFS "TXT_searchname=$FORM{'TXT_searchname'}=\n";
	print PREFS "TXT_searchall=$FORM{'TXT_searchall'}=\n";
	print PREFS "TXT_searchsearch=$FORM{'TXT_searchsearch'}=\n";
	print PREFS "TXT_searchtext=$FORM{'TXT_searchtext'}=\n";
	print PREFS "TXT_back_to_guestbook=$FORM{'TXT_back_to_guestbook'}=\n";
	print PREFS "TXT_your_name=$FORM{'TXT_your_name'}=\n";
	print PREFS "TXT_your_message=$FORM{'TXT_your_message'}=\n";
	print PREFS "TXT_required=$FORM{'TXT_required'}=\n";
	print PREFS "TXT_where_in_the_world=$FORM{'TXT_where_in_the_world'}=\n";
	print PREFS "TXT_your_email_address=$FORM{'TXT_your_email_address'}=\n";
	print PREFS "TXT_your_web_page_address=$FORM{'TXT_your_web_page_address'}=\n";
	print PREFS "TXT_if_you_have_one=$FORM{'TXT_if_you_have_one'}=\n";
	print PREFS "TXT_continue=$FORM{'TXT_continue'}=\n";
	print PREFS "TXT_these_are_the=$FORM{'TXT_these_are_the'}=\n";
	print PREFS "TXT_if_correct=$FORM{'TXT_if_correct'}=\n";
	print PREFS "TXT_if_not=$FORM{'TXT_if_not'}=\n";
	print PREFS "TXT_go_back=$FORM{'TXT_go_back'}=\n";
	print PREFS "TXT_and_edit=$FORM{'TXT_and_edit'}=\n";
	print PREFS "TXT_none_given=$FORM{'TXT_none_given'}=\n";
	print PREFS "TXT_has_been_added=$FORM{'TXT_has_been_added'}=\n";
	print PREFS "TXT_has_been_added_moderated=$FORM{'TXT_has_been_added_moderated'}=\n";
	print PREFS "TXT_search_results=$FORM{'TXT_search_results'}=\n";
	print PREFS "TXT_back_search_again=$FORM{'TXT_back_search_again'}=\n";
	print PREFS "TXT_one_match=$FORM{'TXT_one_match'}=\n";
	print PREFS "TXT_no_match=$FORM{'TXT_no_match'}=\n";
	print PREFS "TXT_more_matches_1=$FORM{'TXT_more_matches_1'}=\n";
	print PREFS "TXT_more_matches_2=$FORM{'TXT_more_matches_2'}=\n";
	print PREFS "TXT_please_fill_in=$FORM{'TXT_please_fill_in'}=\n";
	print PREFS "TXT_please_go_back_and_edit=$FORM{'TXT_please_go_back_and_edit'}=\n";
	print PREFS "TXT_no_dot_at_start=$FORM{'TXT_no_dot_at_start'}=\n";
	print PREFS "TXT_no_www_at_start=$FORM{'TXT_no_www_at_start'}=\n";
	print PREFS "TXT_no_squiggles_in_domain=$FORM{'TXT_no_squiggles_in_domain'}=\n";
	print PREFS "TXT_only_one_at=$FORM{'TXT_only_one_at'}=\n";
	print PREFS "TXT_no_dots_next=$FORM{'TXT_no_dots_next'}=\n";
	print PREFS "TXT_wrong_end=$FORM{'TXT_wrong_end'}=\n";
	print PREFS "TXT_too_many_words=$FORM{'TXT_too_many_words'}=\n";
	print PREFS "TXT_disallowed_word=$FORM{'TXT_disallowed_word'}=\n";
	print PREFS "TXT_blocked_IP=$FORM{'TXT_blocked_IP'}=\n";
	close(PREFS);
	open(USER_FILE,">$months_name");
	print USER_FILE "$FORM{'month_names'}\n";
	close(USER_FILE);
	&content;
	print qq~
		<HTML><head><title>$title</title></head>
		<META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_langprefs&ignore=yes">
		</head>
		<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
		<B><DIV align="center"><font face=Arial size=-1>Language preferences updated</font></DIV></B>
		~;
}
sub restore_coldefaults
{
	&seek_cook;
	open(DEFAULTS,"$colprefs_backup_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$colprefs_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	&content;
	print qq~
		<HTML><head><title>$title</title>
		<META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_colprefs">
		</head>
		<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
		~;
	print qq~
		<B><DIV align="center"><font face=Arial size=-1>Color defaults restored</font></DIV></B>
		~;
}
sub restore_user_defaults
{
	&seek_cook;
	open(DEFAULTS,"$userprefs_backup_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$prefs_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	open(DEFAULTS,"$user_default_html_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$user_html_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	open(DEFAULTS,"$user_default_html_footer_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$user_html_footer_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	open(DEFAULTS,"$thank_you_user_default_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$thank_you_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_prefs"> ~;
	&main_headerb;
	print qq~
		<center>
		<font face="Arial" size=+1><B>Active Guestbook Standard Preferences Manager</B> <p>
		</font><font face="Arial" size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_prefs"><B>User default preferences restored.</B></a>
		</font>
		~;
	&inter_footer;
}
sub save_user_defaults
{
	&seek_cook;
	open(DEFAULTS,"$prefs_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$userprefs_backup_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	open(DEFAULTS,"$user_html_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$user_default_html_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	open(DEFAULTS,"$user_html_footer_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$user_default_html_footer_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	open(DEFAULTS,"$thank_you_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$thank_you_user_default_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_prefs"> ~;
	&main_headerb;
	print qq~
		<center>
		<font face="Arial" size=+1><B>Active Guestbook Standard Preferences Manager</B> <p>
		</font><font face="Arial" size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=view_prefs"><B>Preferences saved as User Defaults</B></a>
		</font>
		~;
	&inter_footer;
}
sub restore_user_color_defaults
{
	&seek_cook;
	open(DEFAULTS,"$usercolprefs_backup_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$colprefs_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	&content;
	print qq~
		<HTML><head><title>$title</title>
		<META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_colprefs">
		</head>
		<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
		~;
	print qq~
		<B><DIV align="center"><font face=Arial size=-1>User color defaults restored</font></DIV></B>
		~;
}
sub save_user_color_defaults
{
	&seek_cook;
	open(DEFAULTS,"$colprefs_name");
	@default_data = <DEFAULTS>;
	close(DEFAULTS);
	open(PREFS,">$usercolprefs_backup_name");
	foreach $row (@default_data)
	{
		print PREFS "$row";
	}
	close(PREFS);
	$where=control_panel;
	&inter_header;
	print qq~
		<center><font face=Arial size=+1>Active Guestbook</a></font><br><font face=Arial size=-1><a href="$ENV{'SCRIPT_NAME'}\?action=control_panel">User defaults saved</a></font>
		~;
	&inter_footer;
}
sub link_colors
{
	@realcols = (Black, Maroon, Green, Olive, Navy, Purple, Teal, Gray, Silver, Red, Lime, Yellow, Blue, Fuchsia, Aqua, White);
	foreach $realcols(@realcols)
	{
		if ($matchcol eq $realcols)
		{
			print "<option selected>$realcols";
		}
		else
		{
			print "<option>$realcols";
		}
	}
}
sub cancel_color_change
{
	&seek_cook;
	open(COLFILE,"$tempcolprefs_name");
	@cols = <COLFILE>;
	close(COLFILE);
	open(TEMPCOLFILE,">$colprefs_name");
	foreach $line (@cols)
	{
		print TEMPCOLFILE "$line";
	}
	close(TEMPCOLFILE);
	&content;
	print qq~
		<HTML><head><title>$title</title>
		~;
	print qq~
		</head>
		<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
		<B><DIV align="center"><font face=Arial size=-1>Restoring last saved color preferences.</font></DIV></B>
		</body>
		</html>
		~;
}
sub actions
{
	if ($demo eq "off")
	{
		&link if ($action eq "lin");
		&finish_start if ($action eq "finish_start");
		&read if ($action eq "");
		&read if ($action eq "reload");
		&add if ($action eq "add");
		&write if ($action eq "write");
		&write if ($action eq "preview");
		&write if ($action eq "post_preview");
		&view_prefs if ($action eq "view_prefs");
		&change1 if ($action eq "change1");
		&change2 if ($action eq "change2");
		&view_to_edit if ($action eq "view_to_edit");
		&add_response1 if ($action eq "add_response1");
		&view_to_undo if ($action eq "view_to_undo");
		&search if ($action eq "search");
		&view_change_password if ($action eq "view_change_password");
		&view_backups if ($action eq "view_backups");
		&view_single_backup if ($action eq "view_single_backup");
		&view_colprefs if ($action eq "view_colprefs");
		&view_langprefs if ($action eq "view_langprefs");
		&cancel_color_change if ($action eq "cancel_color_change");
		&control_panel if ($action eq "control_panel");
		&bug if ($action eq "bug");
		&edit_prefs if ($action eq "edit_prefs");
		&restore_coldefaults if ($action eq "restore_coldefaults");
		&save_user_color_defaults if ($action eq "save_user_color_defaults");
		&save_user_defaults if ($action eq "save_user_defaults");
		&restore_user_color_defaults if ($action eq "restore_user_color_defaults");
		&restore_user_defaults if ($action eq "restore_user_defaults");
		&restore_backups if ($action eq "restore_backups");
		&restore_defaults if ($action eq "restore_defaults");
		&undo_last_restore if ($action eq "undo_last_restore");
		&change_password if ($action eq "change_password");
		&edit_colprefs if ($action eq "edit_colprefs");
		&edit_langprefs if ($action eq "edit_langprefs");
		&trash_item if ($action eq "trash_item");
		&undelete_item if ($action eq "undelete_item");
		&delete_item if ($action eq "delete_item");
		&add_response2 if ($action eq "add_response2");
		&restore_language_defaults if ($action eq "restore_language_defaults");
		&approve_message if ($action eq "approve_message");
	}
	else
	{
		&link if ($action eq "lin");
		&read if ($action eq "");
		&read if ($action eq "reload");
		&add if ($action eq "add");
		&write if ($action eq "write");
		&write if ($action eq "preview");
		&write if ($action eq "post_preview");
		&view_prefs if ($action eq "view_prefs");
		&change1 if ($action eq "change1");
		&view_to_edit if ($action eq "view_to_edit");
		&add_response1 if ($action eq "add_response1");
		&view_to_undo if ($action eq "view_to_undo");
		&search if ($action eq "search");
		&view_change_password if ($action eq "view_change_password");
		&view_backups if ($action eq "view_backups");
		&view_single_backup if ($action eq "view_single_backup");
		&view_colprefs if ($action eq "view_colprefs");
		&view_langprefs if ($action eq "view_langprefs");
		&cancel_color_change if ($action eq "cancel_color_change");
		&control_panel if ($action eq "control_panel");
		&demostuff if ($action eq "change2");
		&demostuff if ($action eq "bug");
		&demostuff if ($action eq "edit_prefs");
		&demostuff if ($action eq "edit_langprefs");
		&restore_coldefaults if ($action eq "restore_coldefaults");
		&save_user_color_defaults if ($action eq "save_user_color_defaults");
		&demostuff if ($action eq "save_user_defaults");
		&restore_user_color_defaults if ($action eq "restore_user_color_defaults");
		&demostuff if ($action eq "restore_user_defaults");
		&demostuff if ($action eq "restore_backups");
		&demostuff if ($action eq "restore_defaults");
		&demostuff if ($action eq "undo_last_restore");
		&demostuff if ($action eq "change_password");
		&demostuff if ($action eq "edit_colprefs");
		&demostuff if ($action eq "trash_item");
		&demostuff if ($action eq "undelete_item");
		&demostuff if ($action eq "delete_item");
		&add_response2 if ($action eq "add_response2");
		&restore_language_defaults if ($action eq "restore_language_defaults");
		&demostuff if ($action eq "approve_message");
	}
}
sub demostuff {
	&content;
	&main_header;
	&active_header;
	print qq~
		<center> <font face=Arial size=-1><b>Sorry. This is only a demo. That action is not enabled.<br><a href="javascript:history.go(-1)">Back</a><hr size=1 width=600></b>
		~;
	exit;
}
sub required_script
{
	print qq~
		<script>
		function checkrequired(which){
			var pass=true
			if (document.images){
				for (i=0;i<which.length;i++){
					var tempobj=which.elements[i]
					if (tempobj.name.substring(0,8)=="required"){
						if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
							pass=false
							break
					}
				}
			}
		}
		if (!pass){
			alert("$TXT_please_fill_in")
				return false
		}
		else
			return true
	}
	</script>
		~;
}
sub thanks
{
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="5; URL=$ENV{'SCRIPT_NAME'}?action=reload"> ~;
	&main_headerc;
	&active_header if $active_header eq "on";
  print qq~ <table border=0 cellspacing=0 cellpadding=0><tr><td width=$table_width align=center> ~;

	&user_image if $user_image eq "yes";
	&title if $use_title eq "on";
	&user_html if $use_user_html eq "yes";
	&menu;
	print qq~ <p>
		<font face="$textfontface" size=$textfontsize><b><a href="$ENV{'SCRIPT_NAME'}?action=reload"> ~;
  if ($moderated eq "yes")
  {
  print "$TXT_has_been_added_moderated";
  }
  else
  {
  print "$TXT_has_been_added";
  }
  print qq~ </a></b>
		<hr width =$table_width size = 1>  </td></tr></table> ~;

  	&user_html_footer if $use_user_html_footer eq "yes";
   print qq~
		</body>
		</html>
		~;




   if (($moderated eq "yes") && ($send_email_to_admin eq "off"))
  {
  		open (MAIL, "|$mail_path $admin_email");
		print MAIL "To: $admin_email\n";
		print MAIL "From: $admin_email\n";
		print MAIL "Subject: Guestbook message approval required\n\n";
		print MAIL "You have a new posting to your guestbook which requires your approval.  You can confirm the message via the Message Manager of the Active Guestbook Control Panel.\n\n";
		$converted_message = $message;
		$converted_message =~ s/<br>/\n/g;
		print MAIL "=========================\n";
		print MAIL "From: $full_name\n";
		if ($guest_email) {
			print MAIL "Email: $guest_email\n";
		}
		if ($location) {
			print MAIL "Location: $location\n";
		}
		if ($url) {
			print MAIL "URL: $url\n";
		}
		print MAIL "$converted_message\n\n";
		print MAIL "=========================\n";
		close(MAIL);

  }


}

sub control_panel
{
	&seek_cook;
 	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	$noss = 0;
	@data = <USER_FILE>;
	close(USER_FILE);
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if (($fields[15] eq "waiting") && ($fields[10] ne "del"))
		{
   $noss++;
		}
  }

	&content;
	print qq~
		<HTML><head><title>Active Guestbook Control Panel</title>
		</head>
		<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
		~;
	print qq~
		<center>
		<font face=Arial size=+1><B>Active Guestbook Control Panel</B></font><br>
		<font face=Arial size=-1>
  ~;
  if ($noss >1)
  {
  print qq~ <br>You have $noss messages awaiting approval in your message manager.<p> ~;
  }
  elsif ($noss == 1)
  {
  print qq~ <br>You have a message awaiting approval in your message manager.<p> ~;
  }


    print qq~
		<SCRIPT LANGUAGE="JavaScript">
		<!--
		var days=new Array(8);
	days[1] = "Sunday";
	days[2] = "Monday";
	days[3] = "Tuesday";
	days[4] = "Wednesday";
	days[5] = "Thursday";
	days[6] = "Friday";
	days[7] = "Saturday";
	var months=new Array(13);
	months[1] = "January";
	months[2] = "February";
	months[3] = "March";
	months[4] = "April";
	months[5] = "May";
	months[6] = "June";
	months[7] = "July";
	months[8] = "August";
	months[9] = "September";
	months[10] = "October";
	months[11] = "November";
	months[12] = "December";
	var dateObj=new Date()
		var wday=days[dateObj.getDay() + 1]
		var lmonth=months[dateObj.getMonth() + 1]
		var date=dateObj.getDate()
		document.write(wday + ", " + lmonth + " " + date + "&nbsp;")
		// -->
		</SCRIPT>
		<form method=post action=$ENV{'SCRIPT_NAME'}>
		<INPUT TYPE="hidden" NAME="action" VALUE="lin">
		<B>Choose from the list below</B><p>
		<SELECT name=link size=11>
		<OPTION selected VALUE="reload">$title
		<OPTION VALUE ="view_prefs">Standard Preferences Manager</OPTION>
		<OPTION VALUE ="view_colprefs">Color Preferences Manager</OPTION>
		<OPTION VALUE ="view_langprefs">Language Preferences Manager</OPTION>
		<OPTION VALUE ="view_to_edit">Message Manager</OPTION>
		<OPTION VALUE ="view_to_undo">Trash Manager</OPTION>
		<OPTION VALUE ="view_backups">Backup Manager</OPTION>
		<OPTION VALUE ="view_change_password">Password Manager</OPTION>
		<OPTION VALUE ="take_me_home">Home page
		<OPTION VALUE ="reload">============
		<OPTION VALUE ="bug">Comment/report a bug
		</SELECT>
		<p><INPUT TYPE="submit" VALUE="Go">
		</form>
		<b> [ <a href="http://www.active-scripts.net/help/guestbook-help.html">Active Guestbook Help</a> ]
		<hr size=1 width=250> </b>
		You are using Active Guestbook version $bversion.<br>Updates are regularly posted on the Active Scripts Website.<br>
		<a href="http://www.active-scripts.net/guestbook_download.html"><img src="http://www.active-scripts.net/img/$version.gif" border=0></a>
		~;
}
sub inter_footer
{
	print qq~
		</body>
		</html>
		~;
}
sub link
{
	$link = $FORM{'link'};
	&content;
	if ($link ne "take_me_home")
	{
		print qq~
			<head>
			<META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=$link"></head><body bgcolor=#ffffff></body></html>
			~;
	}
	else
	{
		print qq~
			<head>
			<META http-equiv="refresh" content="1; URL=$home_page"></head><body bgcolor=#ffffff></body></html>
			~;
	}
	exit;
}
sub main_table_results
{

 $header_trans1 = "";
 $body_trans1 = "";
 $header_trans2 = "";
 $body_trans2 = "";

  if ($trans_message_header ne "yes")
  {
 # $table_color1 and 2 are body colors
 # $data_color1 and 2 are header colors
 $header_trans1 = "bgcolor=$data_color1";
 $header_trans2 = "bgcolor=$data_color2";

  }

   if ($trans_message_body ne "yes")
  {
 # $table_color1 and 2 are body colors
 # $data_color1 and 2 are header colors

 $body_trans1 = "bgcolor=$table_color1";
 $body_trans2 = "bgcolor=$table_color2";

  }


	if ($border_size eq "")
	{
		$border_size = 1;
	}

		print qq~
			<table  border=$border_size cellpadding=5 cellspacing=0>    ~;


	print qq~
		<tr valign=top>
		~;
	if ($count ==1)
	{
		print qq~
			<td $header_trans1 width=$table_width>
			<font face="$textfontface" size=$textfontsize color = $textdata_color1><b>$fields[1]</b>
			~;
	}
	else
	{
		print qq~
			<td $header_trans2 width=$table_width>
			<font face="$textfontface" size=$textfontsize color = $textdata_color2><b>$fields[1]</b>
			~;
	}
	if ($count ==1)
	{
		if ($fields[4])
		{
			if( $use_mailto eq "yes")
			{
				print qq~
					| <a href="mailto:$fields[4]"><font color = $textdata_color1>@</font></a>
					~;
			}
			else
			{
				print qq~
					| <i> $fields[4]</i>
					~;
			}
		}
	}
	else
	{
		if ($fields[4])
		{
			if( $use_mailto eq "yes")
			{
				print qq~
					| <a href="mailto:$fields[4]"><font color = $textdata_color2>@</font></a>
					~;
			}
			else
			{
				print qq~
					| <i> $fields[4]</i>
					~;
			}
		}
	}
	if ($count ==1)
	{
		if (($fields[11]) && ($web_enabled eq "yes"))
		{
			print qq~
				| <a href="http://$fields[11]" target="new"><font color = $textdata_color1>url</font></a>
				~;
		}
	}
	else
	{
		if (($fields[11]) && ($web_enabled eq "yes"))
		{
			print qq~
				| <a href="http://$fields[11]" target="new"><font color = $textdata_color2>url</font></a>
				~;
		}
	}
	print qq~
		</font></td></tr>
		~;

	if ($count ==1)
	{
		print qq~
    <tr valign=top> <td $body_trans1  width=$table_width>
			<font face="$textfontface" size=$textfontsize color=$texttable_color1>
			~;
	}
	else
	{
		print qq~
   <tr valign=top> <td $body_trans2  width=$table_width>
			<font face="$textfontface" size=$textfontsize color=$texttable_color2>
			~;
	}
	print qq~
		$fields[2]
		<div align=right>
		<I>$fields[3]</i>
		~;
	if ($fields[5])
	{
		print qq~
			<i> - $fields[5]</i>
			~;
	}
	print qq~
		</div>
		~;
	if ($fields[6])
	{
  $table_width_comm = $table_width*0.8;
		print qq~
			<hr width=$table_width_comm size=1>
			<b><font face= "$textfontface" size= $textfontsize color=$commentcolor>$web_comment: -&nbsp;</font> </b><font face="$textfontface" size= $textfontsize color=$commentcolor>
			$fields[6]</font>
			~;
	}
	print qq~
		</font></td></tr>
		~;
	print qq~
		</table>
		~;
	if ($show_line eq "no")
	{
  	unless ($use_hr_image eq "yes")
   {
		print qq~
			<p>
			~;
    }
	}
	else
	{

		print qq~
			<hr width=$table_width size=1>
			~;

	}

 	unless ($use_hr_image ne "yes")
	{
   print qq~
     <img src="$hr_image">
   ~;
  }

	$count++;
	if ($count >2)
	{
		$count = 1;
	}
}
sub inter_header
{
	&content;
	print qq~
		<HTML><head><title>$title</title>
		<META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=$where">
		</head>
		<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
		~;
}
sub basic_header
{
	&content;
	print qq~
		<HTML><head><title>$title</title>
		</head>
		<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
		~;
}
sub check_address_for_mistakes
{
	if ($guest_email=~/^\.|^\@/)
	{
		&basic_header;
		print qq~
			<center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1>
			<b>$TXT_no_dot_at_start<br><a href="javascript:history.go(-1)">$TXT_please_go_back_and_edit</a> </b></font>
			~;
		exit;
	}
	if ($guest_email=~/^www\./)
	{
		&basic_header;
		print qq~
			<center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1>
			<b>$TXT_no_www_at_start<br><a href="javascript:history.go(-1)">$TXT_please_go_back_and_edit</a> </b></font>
			~;
		exit;
	}
	$domain=$guest_email;
	$domain=~s/^.*\@(.*)/$1/;
	if ($domain=~/_|~|#/)
		{
			&basic_header;
			print qq~
				<center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1>
				<b>$TXT_no_squiggles_in_domain<br><a href="javascript:history.go(-1)">$TXT_please_go_back_and_edit</a> </b></font> ~;
			exit;
		}
		if ($guest_email=~tr/@//!=1)
		{
			&basic_header;
			print qq~
				<center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1>
				<b>$TXT_only_one_at<br><a href="javascript:history.go(-1)">$TXT_please_go_back_and_edit</a> </b></font>
				~;
			exit;
		}
		if ($guest_email=~/\.\@|\@\.|\.\./)
		{
			&basic_header;
			print qq~
				<center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1>
				<b>$TXT_no_dots_next<br><a href="javascript:history.go(-1)">$TXT_please_go_back_and_edit</a> </b></font>
				~;
			exit;
		}
		if (!($guest_email=~/\.[a-z]{2,4}$/i))
		{
			&basic_header;
			print qq~
				<center><font face="Arial" size=+1>$title<p></font><font face="Arial" size=-1>
				<b>$TXT_wrong_end<br><a href="javascript:history.go(-1)">$TXT_please_go_back_and_edit</a> </b></font>
				~;
			exit;
		}
	} # end check mistakes
	sub plain_header
	{
		print qq~
			<html>
			<head>
			<title>$title</title>
			~;
		&required_script if $action eq "add";
		print qq~
			</head>
			<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
			<center>
			~;
	}
	sub plain_header_stop
	{
		print qq~
			<html>
			<head>
			<title>$title</title>
			~;
		&required_script if $action eq "add";
		print qq~
			</head>
			<body bgcolor=#ffffff text="#000000" link="#000000" vlink="#000000" alink="#996600">
			<center>
			~;
	}
	sub plain_table_results
	{
		if ($count ==1)
		{
			print qq~
				<table border=1 cellpadding=5 cellspacing=0>
				~;
		}
		else
		{
			print qq~
				<table border=1 cellpadding=5 cellspacing=0>
				~;
		}
		print qq~
			<tr valign=top>
			~;
		if ($count ==1)
		{
			print qq~
				<td width=$table_width>
				<font face="$textfontface" size=$textfontsize ><b>$fields[1]</b>
				~;
		}
		else
		{
			print qq~
				<td width=$table_width>
				<font face="$textfontface" size=$textfontsize ><b>$fields[1]</b>
				~;
		}
		if ($fields[4])
		{
			if( $use_mailto eq "yes")
			{
				print qq~
					- <i> <a href="mailto:$fields[4]">$fields[4]</a></i>
					~;
			}
			else
			{
				print qq~
					- <i> $fields[4]</i>
					~;
			}
		}
		if (($fields[11]) && ($web_enabled eq "yes"))
		{
			print qq~
				<i> - <a href="http://$fields[11]" target="new">web page</a></i>
				~;
		}
		print qq~
			</font></td></tr>
			~;
		print qq~
			<tr valign=top> <td width=$table_width>
			~;
		if ($count ==1)
		{
			print qq~
				<font face="Arial" size=-1 >
				~;
		}
		else
		{
			print qq~
				<font face="Arial" size=-1 >
				~;
		}
		print qq~
			$fields[2]
			<div align=right>
			<I>$fields[3]</i>
			~;
		if ($fields[5])
		{
			print qq~
				<i> - $fields[5]</i>
				~;
		}
		print qq~
			</div>
			~;
		if ($fields[6])
		{
			print qq~
				<hr width=$table_width size=1>
				<center><table>
				<tr valign=top><td width=175>
				<b><font face= "$textfontface" size= $textfontsize >$web_comment: -</font> </b></td>
				<td width=300><font face= "$textfontface" size= $textfontsize>
				$fields[6]</font></td></tr>
				</table>
				~;
		}
		print qq~
			</font></td></tr>
			~;
		print qq~
			</table><hr width=$table_width size=1>
			~;
		$count++;
		if ($count >2)
		{
			$count = 1;
		}
	}
	sub html_search_results_plain
	{
		$count = 1;
		$number_of_messages = @hits;
		@hits = reverse(@hits);
		if ($search_flag ne "no")
		{
			if ($number_of_messages == 1)
			{
				print qq~ <br><font face= "$textfontface" size=$textfontsize><B>One guestbook message matches your search criteria.</B></font> ~;
			}
			else
			{
				print qq~ <br><font face= "$textfontface" size=$textfontsize><B>$number_of_messages guestbook messages match your search criteria.</B></font>~;
			}
		}
		foreach $row (@hits)
		{
			#########
			@fields = split (/\|/, $row);
			# $grouped++;
			# if (($grouped > ($start_number)) && ($grouped < ($start_number + $no_displayed + 1)))
			# {
			&plain_table_results;
			# } # end if number is right
		} # end for each row
		#########
	}
	sub bug
	{
		&content;
		if (defined($ENV{'SERVER_NAME'})) {
				$domain = 'http://'.$ENV{'SERVER_NAME'};
		}
		else {
			$domain = 'http://www.myhost.com';
		}
		$ref = $domain.$ENV{'SCRIPT_NAME'};
		print qq~ <html><head><title>$title</title><META http-equiv="refresh" content="1; URL=http://www.active-scripts.net/cgi-bin/feedback_page.cgi?ref=$ref"> </head><body></body></html>
			~;
		exit;
	}
	sub newoptions
	{
		print qq~
			<OPTION value="#eeeeee" > Active Grey
			<OPTION value="#70db93" > Aquamarine
			<OPTION value="#000000" > Black
			<OPTION value="#0000ff" > Blue
			<OPTION value="#a62a2a" > Brown
			<OPTION value="#b87333" > Copper
			<OPTION value="#ff7f00" > Coral
			<OPTION value="#00ffff" > Cyan
			<OPTION value="#871f78" > Dark Purple
			<OPTION value="#97694f" > Dark Tan
			<OPTION value="#238e23" > Forest Green
			<OPTION value="#cd7f32" > Gold
			<OPTION value="#00ff00" > Green
			<OPTION value="#a8a8a8" > Grey
			<OPTION value="#9f9f5f" > Khaki
			<OPTION value="#c0d9d9" > Light Blue
			<OPTION value="#808000" > Light Copper
			<OPTION value="#cccccc" > Light Grey
			<OPTION value="#ffffcc" > Light Yellow
			<OPTION value="#32cd32" > Lime Green
			<OPTION value="#ff00ff" > Magenta
			<OPTION value="#8e236b" > Maroon
			<OPTION value="#2f2f4f" > Midnight Blue
			<OPTION value="#000080" > Navy Blue
			<OPTION value="#ff7f00" > Orange
			<OPTION value="#8fbc8f" > Pale Green
			<OPTION value="#bc8f8f" > Pink
			<OPTION value="#ff0000" > Red
			<OPTION value="#e6e8fa" > Silver
			<OPTION value="#3299cc" > Sky Blue
			<OPTION value="#cc3299" > Violet
			<OPTION value="#ffffff" > White
			<OPTION value="#ffff00" > Yellow
			<OPTION value="" > Other (type code)...
			~;
	}

  sub approve_message
{
	&seek_cook;
	&get_file_lock("$location_of_lock_file");
	$ref = $FORM{'ref'};
	$start_number = $FORM{'start_number'};
	open(USER_FILE,"$guestbook_data_name") || &oops('$guestbook_data_name');
	@data = <USER_FILE>;
	close(USER_FILE);
	open(USER_FILE,">$guestbook_data_name");
	foreach $row (@data)
	{
		@fields = split (/\|/, $row);
		if ($ref ne $fields[0])
		{
			print USER_FILE "$row";
		}
		else
		{
			print USER_FILE "$fields[0]|$fields[1]|$fields[2]|$fields[3]|$fields[4]|$fields[5]|$fields[6]|$fields[7]|$fields[8]|$fields[9]|$fields[10]|$fields[11]|$fields[12]|$fields[13]|$fields[14]||$fields[16]|$fields[17]|$fields[18]|$fields[19]|$fields[20]|$fields[21]|$fields[22]|$fields[23]|$fields[24]|$fields[25]|$fields[26]|$fields[27]|$fields[28]|$fields[29]|$fields[30]|\n";
		}
 # removes waiting from field 15
	}
	close(USER_FILE);
	&release_file_lock("$location_of_lock_file");
	&content;
	&main_headera;
	print qq~ <META http-equiv="refresh" content="1; URL=$ENV{'SCRIPT_NAME'}?action=view_to_edit&start_number=$start_number"> ~;
	&main_headerb;
	print qq~
		<font face=Arial size=+1>
		<B>Active Guestbook Message Manager</B>
		<p></font>
		<font face=Arial size=-1>
		<a href="$ENV{'SCRIPT_NAME'}\?action=view_to_edit&start_number=$start_number">
		<B>Message now approved</B></a><br>
		</body>
		</html>
		~;
} # end approve

sub subdirectory
{

$guestbook_files_directory = "active_guestbook_files";
$guestbook_backups_directory = "active_guestbook_backups";


$guestbook_data_name = "./$guestbook_files_directory/guestbook_data.txt";
$active_name = "./$guestbook_files_directory/active.txt";
$colprefs_name = "./$guestbook_files_directory/colprefs.txt";
$colprefs_backup_name= "./$guestbook_files_directory/colprefs_backup.txt";
$counter_name = "./$guestbook_files_directory/counter.txt";
$langprefs_name = "./$guestbook_files_directory/langprefs.txt";
$langprefs_backup_name = "./$guestbook_files_directory/langprefs_backup.txt";
$months_name = "./$guestbook_files_directory/months.txt";
$months_bak_name = "./$guestbook_files_directory/months_bak.txt";
$prefs_name = "./$guestbook_files_directory/prefs.txt";
$prefs_backup_name = "./$guestbook_files_directory/prefs_backup.txt";
$senddate_name = "./$guestbook_files_directory/senddate.txt";
$tempcolprefs_name = "./$guestbook_files_directory/tempcolprefs.txt";
$thank_you_name = "./$guestbook_files_directory/thank_you.txt";
$thank_you_user_default_name = "./$guestbook_files_directory/thank_you_user_default.txt";
$update_name = "./$guestbook_files_directory/update.txt";
$user_default_html_name = "./$guestbook_files_directory/user_default_html.txt";
$user_default_html_footer_name = "./$guestbook_files_directory/user_default_html_footer.txt";
$user_html_name = "./$guestbook_files_directory/user_html.txt";
$user_html_footer_name = "./$guestbook_files_directory/user_html_footer.txt";
$user_style_name = "./$guestbook_files_directory/user_style.txt";
$userprefs_backup_name = "./$guestbook_files_directory/userprefs_backup.txt";
$usercolprefs_backup_name = "./$guestbook_files_directory/usercolprefs_backup.txt";

}

sub ver204
{

 if (-e "guestbook_data.txt")
 {
   if (-e "backups")
   {
    rename(backups,$guestbook_backups_directory);
    }


	unless (-e "$guestbook_files_directory")
	{
		mkdir ($guestbook_files_directory, 0777);
		chmod(0777, "$guestbook_files_directory");

	}

 @files_to_copy = ("guestbook_data.txt","active.txt","colprefs.txt","colprefs_backup.txt","counter.txt","langprefs.txt",
                   "langprefs_backup.txt","months.txt","months_bak.txt","prefs.txt","prefs_backup.txt","senddate.txt",
                       "tempcolprefs.txt","thank_you.txt","thank_you_user_default.txt","update.txt","user_default_html.txt",
                       "user_default_html_footer.txt","user_html.txt","user_html_footer.txt","user_style.txt",
                       "userprefs_backup.txt","usercolprefs_backup.txt");
 $guestbook_files_directory = "active_guestbook_files";
  foreach $file (@files_to_copy)
{
 if (-e "$file")
 {
  open(IN,"$file");
  open(OUT,">./$guestbook_files_directory/$file");
		chmod(0777,"./$guestbook_files_directory/$file");
 while (<IN>)
 {
  print OUT "$_";
 }
  close(OUT);
  close(IN);
  unlink($file);
 }
 }
}
}
