#!/usr/bin/perl
####################################################
# Horoskop
# Autor : Romano Roemer
####################################################

$basedir = $ENV{DOCUMENT_ROOT} . '/horoskop';
#$basedir = 'c:\inetpub\wwwroot\europe-online\horoskop';

$liebefile  = $basedir . '/liebe.txt';
$gesundfile = $basedir . '/gesund.txt';
$geldfile   = $basedir . '/geld.txt';

$imgdir = "/horoskop/grafik";
#$imgdir = "/europe-online/horoskop/grafik";

####################################################

$param[0]='wassermann';
$param[1]='fisch';
$param[2]='widder';
$param[3]='stier';
$param[4]='zwilling';
$param[5]='krebs';
$param[6]='loewe';
$param[7]='jungfrau';
$param[8]='waage';
$param[9]='skorpion';
$param[10]='schuetze';
$param[11]='steinbock';

use CGI::Carp qw(fatalsToBrowser);

# Aktuelle Zeit ermitteln
$Jetztzeit = localtime( time() );
&Monate;
@Zeit = split(/ +/,$Jetztzeit);
if ($Zeit[1] < 10) { $Zeit[1] = "0" . $Zeit[1]; }   # Tag und Monat zweistellig
if ($Zeit[2] < 10) { $Zeit[2] = "0" . $Zeit[2]; }

# Tierkreiszeichen von Kommandozeile lesen
&parse_form;
$tkzeichen = $FORM{'tkzeichen'};

if ($tkzeichen eq "") {
	&error("Falscher Aufruf: Parameter fehlt!");
} else {
	$found = 0;
	foreach $p (@param) {
		if ( $tkzeichen eq $p ) {
			$found = 1;
		}
	}
	if ( $found == 0 ) {
		&error("Falscher Aufruf: Parameter ung&uuml;ltig!");
	}
}

# Test, ob Texte für dieses Tierkreiszeichen
# für heute schon vorhanden

if( open(TKFILE,"$basedir/$tkzeichen.txt")) {

	close(TKFILE);
	&Text_einlesen;

	unless ($datumgl eq "$Zeit[2].$Zeit[1].$Zeit[4]") {  # vorhandener Text nicht von heute
		&Text_erzeugen;
		&Text_einlesen;
	}
}
else  # noch nicht vorhanden
{
	&Text_erzeugen;
	&Text_einlesen;
}


# HTML-Ausgabe
print "Content-type: text/html\n\n";
print <<EOM;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">

</HEAD>

<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#1D43A6" VLINK="#777777" ALINK="#1D43A6">
<!-- This settings code must be implemented directly after the <body> tag once per page. -->
<script type="text/javascript">
  var adlSite = 'horoskop-online.com';
  var adlZone = 'rotation_misc';
  var mfNWID = new Array(247, 0);
  var adlPro = window.location.protocol == 'https:' ? 'https:' : 'http:';
  document.write('<scr'+'ipt type="text/javascr'+'ipt" src="' + adlPro + '//js.adlink.net/js?lang=de&amp;s='+escape(adlSite)+'&amp;z='+escape(adlZone)+'&amp;d='+new Date().getTime()+'"></scr'+'ipt>');
</script>


<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="1">
      <TR>
        <TD><CENTER>

<script type="text/javascript"><!--
google_ad_client = "pub-0582108325750343";
/* 728x90, Erstellt 24.01.11 */
google_ad_slot = "4391744127";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

          <P>

<FONT SIZE="5" COLOR="#1542A3" FACE="Helvetica, Arial"><B>Das Tageshoroskop f&uuml;r
EOM

&druck_tkzeichen;
print $d_tkzeichen;
print "<BR></B></FONT><FONT SIZE=4 COLOR=#000000 FACE=\"Helvetica, Arial\"><BR>";
print "($d_bereich)";

print <<EOM;
</FONT><FONT SIZE="5" COLOR="#1542A3" FACE="Helvetica, Arial"><B><BR>
<BR>
</B></FONT>
<TABLE BORDER="0" CELLPADDING="2" CELLSPACING="8" WIDTH="100%">
	<TR>
		<TD WIDTH="24%">
EOM

print "<IMG SRC=\"$imgdir/$tkzeichen.gif\" WIDTH=112 HEIGHT=110 ALIGN=BOTTOM BORDER=0></TD>";

print <<EOM;
		<TD WIDTH="76%"><FONT COLOR="#1D43A6" FACE="Arial, Helvetica, sans serif"><B>Liebe<BR>
			</B></FONT>
			<TABLE BORDER="0" CELLPADDING="4" CELLSPACING="0" WIDTH="100%" BGCOLOR="#FFFFCC">
				<TR>
					<TD WIDTH="100%"><FONT FACE="Arial, Helvetica, sans serif">
EOM

print $liebegl;

print <<EOM;
					</FONT></TD>
				</TR>
			</TABLE>
<FONT COLOR="#1D43A6" FACE="Arial, Helvetica, sans serif"><B><BR>
			<BR>
			Gesundheit / Befinden<BR>
			</B></FONT>
			<TABLE BORDER="0" CELLPADDING="4" CELLSPACING="0" WIDTH="100%" BGCOLOR="#FFFFCC">
				<TR>
					<TD WIDTH="100%"><FONT FACE="Arial, Helvetica, sans serif">
EOM

print $gesundgl;

print <<EOM;
					</FONT></TD>
				</TR>
			</TABLE>
<FONT COLOR="#1D43A6" FACE="Arial, Helvetica, sans serif"><B><BR>
			<BR>
			Geld / Karriere<BR>
			</B></FONT>
			<TABLE BORDER="0" CELLPADDING="4" CELLSPACING="0" WIDTH="100%" BGCOLOR="#FFFFCC">
				<TR>
					<TD WIDTH="100%"><FONT FACE="Arial, Helvetica, sans serif">
EOM

print $geldgl;

print <<EOM;
					</FONT></TD>
				</TR>
			</TABLE>
		</TD>
	</TR>
</TABLE>

<FONT SIZE="2" COLOR="#000000" FACE="Helvetica, Arial">Ihr Tageshoroskop wurde erstellt von<B> Madame Aleksandra.</B></FONT>
<BR><BR>

<IFRAME SRC="http://www.horoskop-online.com/horoskop/tages-horoskop-kostenlos.htm" width="730" height="100" align="top" scrolling="no" framespacing="0" frameborder="0"></IFRAME>

<br>
<FONT SIZE="2" COLOR="#000000" FACE="Helvetica, Arial"><a href="http://www.horoskop-online.com" target="_blank">Ein Service von Horoskop-Online.com</a></FONT>
</center>

</TD>
        <TD WIDTH="150" ALIGN="LEFT" VALIGN="TOP">
		<!-- This code must be implemented to the adposition. -->
<!-- Placement: rotation_misc_160x600 (1133081) -->
<div id="mf1133081" class="mfc154">
	<script type="text/javascript">if (typeof getHeliosTag =='function') getHeliosTag(1133081, 154);</script>
</div>



	  </TR>
  </TABLE>


</BODY>

</HTML>
EOM

exit;


#######################
# Text_einlesen
# liest Text-Datei mit
# dem Horoskop für heute
#######################

sub Text_einlesen
{
	open (TKFILE,"$basedir/$tkzeichen.txt") || &error("$tkzeichen.txt: ".$!);
	@lines = <TKFILE>;
	close(TKFILE);
	foreach $line (@lines){
		($name, $value) = split(/=/, $line);
		$value =~ s/\n//;
		if( $name eq 'Datum' )	  { $datumgl  = $value; }
		if( $name eq 'Liebe' )    { $liebegl  = $value; }
		if( $name eq 'Gesund' )   { $gesundgl = $value; }
		if( $name eq 'Geld' )     { $geldgl   = $value; }
	}
}


#######################
# Text_erzeugen
# erzeugt Text-Datei mit
# dem Horoskop für heute
#######################

sub Text_erzeugen
{
	# liebefile einlesen in Array @liebe
	$num = 0;
	open ( FILE1 ,$liebefile ) || &error($liebefile.": ".$!);
	@lines = <FILE1>;
	close(FILE1);
	foreach $line (@lines){
	  $stlen = length($line);
	  if ($stlen > 5) {			# Leerzeilen ausblenden
	       $liebe[$num] = $line;
	       $num++;
	  }
	}
	# gesundfile einlesen in Array @gesund
	$num = 0;
	open ( FILE1 ,$gesundfile ) || &error($gesundfile.": ".$!);
	@lines = <FILE1>;
	close(FILE1);
	foreach $line (@lines){
	  $stlen = length($line);
	  if ($stlen > 5) {			# Leerzeilen ausblenden
	       $gesund[$num] = $line;
	       $num++;
	  }
	}
	# geldfile einlesen in Array @geld
	$num = 0;
	open ( FILE1 ,$geldfile ) || &error($geldfile.": ".$!);
	@lines = <FILE1>;
	close(FILE1);
	foreach $line (@lines){
	  $stlen = length($line);
	  if ($stlen > 5) {			# Leerzeilen ausblenden
	       $geld[$num] = $line;
	       $num++;
	  }
	}

	# Datei erzeugen
	open (TKFILE,">$basedir/$tkzeichen.txt") || &error("$tkzeichen.txt: ".$!);
	print TKFILE "Datum=$Zeit[2].$Zeit[1].$Zeit[4]\n";
	srand();
	$rnum = int(rand(@liebe));
	$eintrag=$liebe[$rnum];
	chomp($eintrag);
	print TKFILE "Liebe=$eintrag\n";
	$rnum = int(rand(@gesund));
	$eintrag=$gesund[$rnum];
	chomp($eintrag);
	print TKFILE "Gesund=$eintrag\n";
	$rnum = int(rand(@geld));
	$eintrag=$geld[$rnum];
	chomp($eintrag);
	print TKFILE "Geld=$eintrag\n";
	close(TKFILE);
}

#######################
# druck_tkzeichen
# ersetzt "stier" durch "den Stier", usw.
#######################

sub druck_tkzeichen
{
   if ($tkzeichen eq "wassermann") { $d_tkzeichen = "den Wassermann";    $d_bereich = "21.01. - 20.02."; }
   if ($tkzeichen eq "fisch")      { $d_tkzeichen = "den Fisch";         $d_bereich = "21.02. - 20.03."; }
   if ($tkzeichen eq "widder")     { $d_tkzeichen = "den Widder";        $d_bereich = "21.03. - 20.04."; }
   if ($tkzeichen eq "stier")      { $d_tkzeichen = "den Stier";         $d_bereich = "21.04. - 20.05."; }
   if ($tkzeichen eq "zwilling")   { $d_tkzeichen = "den Zwilling";      $d_bereich = "21.05. - 21.06."; }
   if ($tkzeichen eq "krebs")      { $d_tkzeichen = "den Krebs";         $d_bereich = "22.06. - 22.07."; }
   if ($tkzeichen eq "loewe")      { $d_tkzeichen = "den L&ouml;wen";    $d_bereich = "23.07. - 23.08."; }
   if ($tkzeichen eq "jungfrau")   { $d_tkzeichen = "die Jungfrau";      $d_bereich = "24.08. - 23.09."; }
   if ($tkzeichen eq "waage")      { $d_tkzeichen = "die Waage";         $d_bereich = "24.09. - 23.10."; }
   if ($tkzeichen eq "skorpion")   { $d_tkzeichen = "den Skorpion";      $d_bereich = "24.10. - 22.11."; }
   if ($tkzeichen eq "schuetze")   { $d_tkzeichen = "den Sch&uuml;tzen"; $d_bereich = "23.11. - 21.12."; }
   if ($tkzeichen eq "steinbock")  { $d_tkzeichen = "den Steinbock";     $d_bereich = "22.12. - 20.01."; }
}

#######################
# Monate
# ersetzt "Jan" durch "1", usw.
#######################

sub Monate
{
   $Jetztzeit =~ s/Jan/1/;
   $Jetztzeit =~ s/Feb/2/;
   $Jetztzeit =~ s/Mar/3/;
   $Jetztzeit =~ s/Apr/4/;
   $Jetztzeit =~ s/May/5/;
   $Jetztzeit =~ s/Jun/6/;
   $Jetztzeit =~ s/Jul/7/;
   $Jetztzeit =~ s/Aug/8/;
   $Jetztzeit =~ s/Sep/9/;
   $Jetztzeit =~ s/Oct/10/;
   $Jetztzeit =~ s/Nov/11/;
   $Jetztzeit =~ s/Dec/12/;
}

#######################
# Parse Form
#######################

sub parse_form {

	read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

	# Split the name-value pairs
	@pairs = split(/&/, $buffer);

	if( $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;
	      $value =~ s/<!--(.|\n)*-->//g;
	      $FORM{$name} = $value;
	   }
	}
	else
	{
	   $buffer = $ENV{'QUERY_STRING'};
	   @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;
	      $value =~ s/<!--(.|\n)*-->//g;
	      $FORM{$name} = $value;
	   }
	}

}

#######################
# Error
#######################

sub error {

  print "Content-type: text/html\n\n";
  print "<html><head><title>FEHLER</title></head>\n";
  print "<body bgcolor=\"#ffffff\">FEHLER:<br>$_[0]\n";    # $_[0] = übergebener Parameter
  print "</body></html>\n";
  exit;
}

################################################################
# datediff
# vergleicht zwei Datumsangaben, z.B. "01.01.1970", "02.05.1967"
# Liegt das erste Datum vor dem zweiten, wird 1 zurückgegeben,
# bei Gleichheit 0, bei Fehler 3, sonst 2
################################################################

sub datediff {

  my $day1  = substr( $_[0], 0, 2 );       # $_[0] = 1. übergebener Parameter
  my $mon1  = substr( $_[0], 3, 2 );
  my $year1 = substr( $_[0], 6, 4 );
  my $day2  = substr( $_[1], 0, 2 );       # $_[1] = 2. übergebener Parameter
  my $mon2  = substr( $_[1], 3, 2 );
  my $year2 = substr( $_[1], 6, 4 );

  if ( $_[0] eq $_[1] ) { return 0; }

  if ( $year2 > $year1 ) { return 1; }
  if ( $year2 < $year1 ) { return 2; }

  # Jahre gleich
  if ( $mon2 > $mon1 ) { return 1; }
  if ( $mon2 < $mon1 ) { return 2; }

  # Jahre und Monate gleich
  if ( $day2 > $day1 ) { return 1; }
  if ( $day2 < $day1 ) { return 2; }

  # ???
  return 3;
}
