#!/usr/bin/perl
#############################################################################
# Guest Book 98.1.0 Personal Version - Guestbook Viewer
#
# [Eng/Unix/Perl5]
#
# Written by Ray Chan, 1998/07/12
#
# Copyright 1997,1998 All Right Reserved.
#############################################################################
#
# Perl Reunion 98
# http://www.ray.org.hk/perl/
# perl@ray.org.hk
#
#############################################################################
#
# Dieses Script ist frei für die persönliche Benutzung
# Das Script kann unter www.ray.org.hk/perl kostenlos regisitriert werden.
#
#############################################################################
#
# Hinweis:
#
# Bei der Benutzung des Scripts übernimmt der Author keine Haftung,
# für evtl. Fehler, bzw. Datenverlustet die durch die Benutzung des
# Scriptes hervorgeruffen werden. Die Verwendung erfolgt auf eigene Gefahr!
#
#############################################################################
#
# guestbook.pl  - Gästebuch Anzeigeprogramm
#
#       Dieses Script gibt die Gästebucheinträge aus.
#
#############################################################################
#
# Einstellungen
#
#############################################################################
#                                                                            
# $cfgpath                                                                   
#       Voller Unix-Pfad zur Konfigurationsdatei (gbkcfg.txt)
                                                                             
$cfgpath='gbkcfg.txt';
                                                                             
#############################################################################
# Einstellungs Ende
#############################################################################

require 5;
require $cfgpath;

# Einlesen der Gästebuchdaten
open (GBK, $guestsrc);
@GBKDATA=<GBK>;
close (GBK);

# Zählen der gesammten Seiten
$count=0;

foreach $rec (@GBKDATA){
	if ($rec =~ /<NEWBIE>/){
		$count++;
	}
}

$maxpage=int($count/$entryno);

if ($count/$entryno != int($count/$entryno)){
	$maxpage++;
}

if ($maxpage < 1){
	$maxpage=1;
}

# Ausgabe HEADER-Datei
print "Content-type: text/html\n\n";

# Einlesen der Template-Datei
open (HEAD, $headersrc);
@DATA1=<HEAD>;
close (HEAD);

# Ausgabe der Template-Datei
foreach $item (@DATA1){
	print "$item\n";
}


$temp=0;
$stop=0;
$more=0;
$flag=0;
$con=0;

# Modus erkennung
if ($ARGV[0] eq ""){	# Ausgabe der ersten Seite, Voreingestellter Modus
	$min=0;
	$max=$entryno;
}

if ($ARGV[0] ne ""){	# Ausgabe spezifizierte Seite
	$min=(($ARGV[0]-1)*$entryno)+1;
	$max=$ARGV[0]*$entryno;
}

# Ausgabe der Gästebuchdaten
foreach $item (@GBKDATA){
	chomp($item);
	if ($stop == 1){
		$more=1;
		break;
	}
	if ($temp >=$min -1 && $temp <=$max -1){
		print $item;
		$flag=1;
	}
 	if ($item eq "<NEWBIE>"){
		if ($temp>=$min -1 && $temp <=$max-1){
			print "<HR>";
		}
		$temp++;
		if ($temp >= $max){	
			$stop=1;
		}
	}
}

# Ausgabe Seitenende
if ($flag == 0){
	print "<B>Keine Einträge derzeit.</B><HR>";
        if ($ontop1==0){
                print "Zurück zur <A HREF=\"$backurl\">Homepage</A><P>";
        }
        if ($ontop1==1){
                print "Zurück zur <A HREF=\"$backurl\" TARGET=\"_top\">Homepage</A><P>";
        }
        print "<CENTER>[Letzte | Seite 0 von 0 | nächste]</CENTER>";
	print "</BODY></HTML>";
	$con=1;
}

if ($con==0){
	if ($ontop1==0){
		print "Zurück zur <A HREF=\"$backurl\">Homepage</A><P>";
	}
	if ($ontop1==1){
		print "Zurück zur <A HREF=\"$backurl\" TARGET=\"_top\">Homepage</A><P>";
	}

		if ($ARGV[0] eq ""){
			&bar(1,$maxpage);
		}else{
			&bar($ARGV[0],$maxpage);
		}
}

print "</CENTER></BODY></HTML>";


sub bar{
	local ($i)=0;
	$curr_page=$_[0];
	$max_page=$_[1];
	$first=int($curr_page/10)*10+1;
	$last=$first+9;
	if ($curr_page < $first){
		$first=$first-10;
		$last=$last-10;
	}
	if ($last > $max_page){
		$last=$max_page;
	}
	print "<P><CENTER>[";

	if ($first > 1){
		$prev_page=$first-1;
		$pi=$prev_page-9;
		print <<EOF;
		<A HREF="$booksrc?$prev_page" onmouseover="window.status='Zurück zur letzten Seite $prev_page';return true">$pi - $prev_page</A> |
EOF
	}
	for($i=$first;$i<=$last;$i++){
		if ($i != $curr_page){
		print<<EOF;
		<A HREF="$booksrc?$i" onmouseover="window.status='Zurück zur Gästebuchseite $i';return true">$i</A>
EOF
		}else{
			print "&nbsp;$i&nbsp;";
		}
		if ($i<$last){
			print "|";
		}
	}

	if ($last < $max_page){
		$next_page=$last+1;
		$pi = $next_page+9;
		print <<EOF;
		|
		<A HREF="$booksrc?$next_page" onmouseover="window.status='Vorwärts zur nächsten Seite $next_page';return true">$next_page - $pi</A>
EOF
	}
	print "]</CENTER>";
}

