Seadream Yachtclub

"It is yachting - not cruising!" - das beschreibt die zwei Yachten des Seadream Yachtclub, die SeaDream I und SeaDream II, wohl am besten. Exklusiver Service, bei dem bereits alles im Preis enthalten ist, Häfen, die die grossen Schiffe nicht anlaufen und das alles in lockerer Atmosphäre ohne Frack und Schlips.

seadream PooldeckSie fühlen sich wie auf einer privaten Yacht. Genießen unübertroffenen Service. Fahren dorthin, wo die großen Schiffe nicht sind. Entspannen an Deck, wählen unter den vielen Sportmöglichkeiten oder springen von der Marina ins Wasser. Wissen nicht, ob Sie vom Sternenhimmel oder vom 5-Sterne Menü schwärmen sollen.

Unsere Tipps zum Nachlesen:
Eberts Bordbuch: Der Smoking bleibt daheim; H.-D. Ebert überkommt auf SeaDream das Yachtfieber. Entnommen aus: Der Feinschmecker
Uwe Bahn: LUXUS - LOCKER UND LEGER; Eine Reise auf der SeaDream II
Entnommen dem Reise - Lifestyle Magazin Feel Good

Egal ob als Charter, Incentive, unvergesslicher Ort einer Veranstaltung oder einfach als Urlaub - diese Reise wird Ihre Erwartungen übertreffen!

Beide Yachten bieten für jeweils maximal 110 Gäste, die von 95 Besatzungsmitgliedern umsorgt werden, ein traumhaftes „all-inclusive-Paket". Ein Konzept, das neben dem ungewöhnlich persönlichen Service sämtliche Gourmet-Mahlzeiten an Bord, alle Getränke, Trinkgelder, sowie die zahlreichen Sportmöglichkeiten (Jet-Ski, Kajaks, Banana-Boat, Wasserski, Segeljollen, Mountainbikes, Golfsimulator und Fitness-Center) sowie Trinkgelder umfasst. Sie müssen sich um wirklich nichts mehr kümmern...

Weitere Informationen finden Sie auch unter https://seadream-yachten.de

 


Alle Reisen mit den Seadream Yachten

Mittelmeer im Sommer und Karibik im Winter. Dazwischen interessante Routen. Das sind die bevorzugten Reviere der beiden Yachten.
 
Alle Informationen zu den Zwillingsschiffen SeaDeram I & II. Sie finden hier alle technischen Daten, Deckpläne und wissenswerte Fakten über die Flotte von SeaDream
 

Mehr Information über SeadreamInformationen und Filme

Informieren Sie sich bereits zu Hause über "Ihr" Schiff oder Ihre nächste Reise. Multimediale Informationen über die SeaDream haben wir hier für Sie zusammengestellt.
 
Angebote und Schnäppchen Seadream Angebote & Tipps
Die interessantesten Routen, spannensten Reisen und preislich attraktivsten Kreuzfahrten der SeaDream Yachten stellen wir hier für Sie stets aktuell zur Verfügung.

 

logo seadream

 

It´s yachting - not cruising

Weitere Informationen finden Sie auch unter https://seadream-yachten.de

 

Eine Reise auf einer dieser beiden Yachten läßt sich schwer mit anderen Kreuzfahrten vergleichen. Die Gäste pflegen eine "Yachting Attitude" und trotzdem fehlt es an nichts.
Der Bartender kennt nicht nur Ihren Namen, sondern auch Ihr liebstes Getränk. Ein aufmerksamer, gleichwohl unauffälliger Service macht dabei die Wahl zwischen süßem Nichtstun und den vielen Möglichkeiten individueller Freizeitgestaltung schwer. Denn natürlich ist das Angebot auch hier vielfältig. An Bord finden Sie ein Spa mit Fitness-Center, ein Golf-Simulator darf, genauso wie ein Casino, nicht fehlen, Flat-screen TV in Ihrer Kabine mit CDs und DVDs zum Ausleihen sowie Laptops mit Internetzugang. Nicht nur von der Badeplattform aus bestehen vielfältige Sportmöglichkeiten, Sie können Ihr Zielgebiet auch auf Fahrrädern erkunden. Das schönste aber sind die Balinesischen Betten auf Deck. Hier können Sie sogar eine Nacht unter freiem Himmel verbringen ...

SeaDream I & SeaDream II
- technische Daten -
Bruttoreg.: 4.300 t Länge: 104,85m Breite: 14,32m
Kabinen: 55 Passagiere: 110 Besatzung: 95
Decks: 6 (davon 5 f. Passagiere) Baujahr: 1984/85

Sea Dream I und SeaDream II - die beiden Mega-Yachten

Die SeaDream I & SeaDream II wurden als Luxusyachten entworfen und in Finnland auf der Warsila Werf gebaut. Sie liefen im April 1984 bzw. Mai 1985 als Sea Goddess I und Sea Goddess II vom Stapel. Nach mehreren Eigentümerwechsel, bei denen die beiden Yachten für die Seabourn Cruise Line zum Einsatz kamen, erwarb im Sommer 2001 der Sea Dream Yacht Club die beiden Schiffe. Sie wurden komplett renoviert und nahmen 2002 unter dem Namen SeaDream I und SeaDream II den Dienst auf. 2006 bzw. 2007 wurden sie nochmals renoviert.
Entstanden sind dabei zwei moderne, äußerst ansprechende Schiffe im Stil von privaten Luxusyachten. Treffpunkt ist nun die ganz in warmen Holztönen gehaltene Bar "Top of the Yacht", wo man auch leger im Freien speisen kann. Achtern befinden sich acht Doppelbetten mit dicken Auflagen, die auch zum Übernachten unter offenen Himmel einladen. Auf Bedarf erhalten Sie natürlich dafür Schlafanzüge. Im vorderen Bereich finden Sie mehr Liegen, Hängematten und einen Golf-Simulator.
Innen ist die Yacht elegant und chic eingerichtet. Die Lounge ist im Stil eines großzügigen Wohnzimmers gehalten, die Piano Bar ist gemütlich, das Casino darf nicht fehlen und in der Bücherei stehen 1.200 Bände zur Verfügung. Das Spa beinhaltet ein kleines Fitness Center, drei Massageräume, eine Sauna und ein türkisches Dampfbad.

Technisch sind beide Yachten natürlich auf dem modernstem Stand, besitzen Stabilisatoren und entsprechen dem SOLAS 2005 First Safety Standards.

 

logo seadreamSeadream I  & Seadream II

Deckplan

seadream querschnitt

 

 

deck-6

16. Balinesische Betten    17. Top Of The Yacht Bar     18. Golf Simulator     19. Sonnendeck
 
 

img-deck-5

13. Topside Restaurant    14. Hospital     15. Offene Promenade
 
 

img-deck-4

7. Lounging Deck 8. Bücherei 9. Piano Bar 10. Casino 11. Admiral Suite
12. SeaDream Spa – Fitness Center – Beauty Salon

 

img-deck-3

3. Pool Bar  4. Card Room  5. Main Salon / Main Salon Bar   6. Concierge / SeaDream Boutique

 

img-deck-2

1. ausfahrbare Plattform für Wassersport & Marina     2. Restaurant / Konferenzraum

 

 

Weitere Informationen finden Sie auch unter https://seadream-yachten.de


logo seadream

 

Kabinen & Layout 

 

Die Kabinen sind großzügig. Gefallen hat uns, dass die Betten im hinteren Bereich am Fenster stehen und vom vorderen Bereich der Kabine mit einem Vorhang abgetrennt werden können.
Wer gerne mehr Platz zur Verfügung hat belegt eine Commodore Suite, bei der zwei Kabinen nach Ihren Wünschen zusammen gelegt werden.
Exklusivität ist in der Owner-Suite gewährleistet. Die gibt es auf jeder Yacht nur einmal.

Innerhalb der Kategorien sind die Kabinen sind auf allen Decks gleich. Lediglich die Fenster unterscheiden sich. Während auf Deck 2 Bullaugen zu finden sind haben die Kabinen auf den höheren Decks große Fenster.

Kabinen & Layouts:

 

  • 1a owners Suite
  • 1b owner suite layout
  • 2a commodore suite
  • 2b commodore suite layout
  • 3a kabine deck3 und 4
  • 3b kabine deck2
  • 3c kabine layout

Alle 54 Kabinen an Bord haben Fenster oder Bullauge und messen ca. 18m².

16 dieser Kabinen können zu einer Commodore Suite kombiniert werden (Deck 3 - 304/306; 320/322; 303/305; 317/319; Deck 2 - 204/206; 208/210; 203/205; 207/209).
Die Commodore Suiten haben entweder zwei separate, voll ausgestattete Räume oder einen Schlaf- und einen Wohnraum.

Die Owner´s Suite besteht aus Wohn- und Schlafraum, Bad und Gästetoilette. Sie misst insgesamt 42m².

In allen Kategorien finden Sie :

      • Ein Entertainment Center mit Flachbildschirm, TV, DVD und CD Player
      • Zugang zum Internet. Laptops können auf Anfrage gestellt werden
      • Badezimmer aus Marmor mit "multi-jet-Massage" Dusche und Accessoires von Bvlgari®
      • Feinste Bettwäsche aus Daunen mit verschiedenen Kopfkissen, Decken oder Federbetten
      • SeaDream's Bademäntel und Slipper aus 100% Baumwolle
      • Minibar mit Getränken Ihrer Wahl
      • Persönliches Briefpapier, Telefon, Safe, Klimaanlage und Fön
      • Einen Zimmerservice, der Sie rund um die Uhr verwöhnt

 

Weitere Informationen finden Sie auch unter https://seadream-yachten.de

Dialysekreuzfahrten ASTOR

astor-bremerhavenDie ASTOR steht für klassische Kreuzfahrttradition, nicht nur weil das Schiff ganz in weiß sehr elegant aussieht. Mit maximal 578 Passagieren gehört die ASTOR zu den eher kleinen Schiffen.

Das verspricht interessante Routen und eine persönliche Atmosphäre an Bord, zumal die Bordsprache Deutsch ist.

Dialysekreuzfahrten  ASTOR:

#!/usr/bin/perl
print "Content-type: text/html"."\n\n";


#################################################
#                                    		#
# readCSVPlus v3.0                   		#
# Copyright 2001 by Dominik Strnad   		#
# litinoveweedle@cmail.cz            		#
# http://web.redbox.cz/litinoveweedle@cmail.cz 	#
#                                    		#
# Last modified on Feb. 6, 2001      		#
#                                    		#
#################################################
#
# Copyright Notice:
# Copyright 2001 Dominik Strnad.  All Rights Reserved.
#
# This code may be used and modified by anyone so long as this header and
# copyright information remains intact.  By using this code you agree to 
# indemnify Dominik Strnad from any liability that might arise from its 
# use.  You must obtain written consent before selling or redistributing 
# this code.
#
# part of this code is used from original CSV scrits from http://ezscripting.com
# provided by Mutasem Abudahab. THX to him. LiTin'Ove Weedle 2001
#
# tested on Win9X, Sambar web server, Activestate Perl 5.6.0 build620 by LiTinOveWeedle
# tested on Linux RedHat, Apache, Perl by David Lingerak THX
#
# -------------------------------------------------------------------------
# main program body - no changes needed under this line

use CGI qw(:standard);
use locale;

$config = param('config');
if ( $config =~ /^([.\w]+)$/ ) {
    $config = $1;
    require "$config";
    &logging("config file read");
}
else { die; }

    &logging("#script readcsvplus started");
&check_cgi;
    &logging("cgi values security check");
&read_file;
    &logging("database file read");
&read_cgi;
    &logging("cgi values read, sorting and querying done");
if ( $first_rec > @file or @file == 0 ) {
    &no_record; 
    &logging("html 'no record page' was printed");
}
else {
    &print_template;
    &logging("html 'read template page' was printed");
}
 

# -------------------------------------------------------------------------
# security check data from cgi form
sub check_cgi {
    my ( $value, $name, $field );
    foreach $name ( param() ) {
	$value = param($name);
	if ( $value =~ /^([$security\w<>=]*)$/ ) {
	    $value = $1;
	    $value =~ s/$delimiter/$notdelimiter/g;
	    param($name,$value);
	}
	else { 
	    &produce_error( 4, $security ); 
	    &logging("entered bad string - possible security violation");
	    die;
        }
    }

    while ( $i < @referer ) {
	$test = $referer[$i] . url(-relative=>1);
	if ( $test eq url() ) { last; }
 	elsif ( $i + 1 >= @referer ) {
	    &produce_error( 8, url() ); 
	    &logging("URL refferer does not contain any of enabled domains");
	    die;
	}
 	else { $i++; } 
    }
}


# -------------------------------------------------------------------------
# read data from file to array
sub read_file {
    my ( $line );
    if ( not open(FILE, $csv_file_path) ) {
	&logging( "Can't open CSV database file. Please check that you have provided the correct path to your CSV database file in config file." ); 
        &produce_error( 5 ); 
	die;
    }
    if ( $file_lock ) { flock(FILE, 1); }
    @file = ();
    while ( $line =  ) {
	chomp($line);
	push(@file, $line);
    }
    close(FILE);
    @fields = split( /$delimiter/, $file[0] );
    shift( @file );
    $total = @file;
}


# -------------------------------------------------------------------------
# read data from cgi form to array
sub read_cgi {
    my ( $i, $field, $name, $sortby, $check );

# querying admin password
    if ( param('admin') eq $admin_pass ) { $admin = 1; }
    elsif ( param('admin') ne "" ) {
   	&produce_error( 11, param('admin') ); 
	&logging("!!!Bad administrator logging - possible brute force attack!!!");
	die;
    }

# querying value in all fields - wild card search
    if ( param('search') ne "" ) { &find_data2( param('search') ); }
    
# querying value in specific field
    foreach $field ( @fields ) {
	if ( param($field) ne "" or param($field) != 0 ) {
	    foreach $name ( @private ) {
		if ( $field eq $name and $admin != 1 ) {
		    &produce_error( 9, param($field) ); 
		    &logging("script was called by private field - possible security violation");
		    die;
		}
	    }
	    $check = param($field);
	    if ( $check =~ /^>{1}\d+$/ ) { $check =  substr($check, 1); &find_data1( $field, $check, 1 ); }
	    elsif ( $check =~ /^<{1}\d+$/ ) { $check = substr($check, 1); &find_data1( $field ,$check, 2 ); }
	    elsif ( $check =~ /^(=>){1}\d+$/ ) { $check = substr($check, 2); &find_data1( $field, $check, 3 ); }
	    elsif ( $check =~ /^(=<){1}\d+$/ ) { $check = substr($check, 2); &find_data1( $field, $check, 4 ); }
	    elsif ( $check =~ /^!{2}\d+$/ ) { $check = substr($check, 2); &find_data1( $field, $check, 5 ); }
	    elsif ( $check =~ /^(!'){1}\S+'{1}$/ ) { $check =  substr($check, 2, -1); &find_data1( $field, $check, 6 ); } 
	    elsif ( $check =~ /^!{1}\S+$/ ) { $check =  substr($check, 1); &find_data1( $field, $check, 7 ); }
	    elsif ( $check =~ /^'{1}\S+'{1}$/ ) { $check = substr($check, 1, -1); &find_data1( $field, $check, 8 ); }
	    else { &find_data1( $field, $check, 9 ); }
	}
    } 

# checking value of "new" parameter
    if ( param('new') =~ /^[on]{1}$/i ) { &newold_data( param('new') ); }
    elsif ( param('new') != 0 ) {
    	&produce_error( 9, param('new') ); 
	&logging("script was called with bad new /old operator - possible security violation");
	die;
    }

# sorting by field
    if ( param('sort_a') and param('sort_d') ) {
    	&produce_error( 9, "both sort operator used" ); 
	&logging("script was called with bad sorting operator - possible security violation");
	die;
    }
    elsif ( not( param('sort_a') ) and param('sort_d') ) {
	$sortby = param('sort_d');
	$i = 0;
	foreach $field ( @fields ) {
	    if ( $sortby eq $field ) { $i = 1; }
	}
        foreach $name ( @private ) {
	    if ( $sortby eq $name and $admin != 1 ) { $i = 0; }
        }
        if ( $i == 0 ) {
	    &produce_error( 9, param('sort_d') ); 
	    &logging("script was called with bad sorting operator - possible security violation");
	    die;
	}
	&sort_data( $sortby, 0 );
    }
    elsif ( param('sort_a') and not( param('sort_d') ) ) {
	$sortby = param('sort_a');
	$i = 0;
	foreach $field ( @fields ) {
	    if ( $sortby eq $field ) { $i = 1; }
	}
        foreach $name ( @private ) {
	    if ( $sortby eq $name and $admin != 1 ) { $i = 0; }
        }
        if ( $i == 0 ) {
	    &produce_error( 9, param('sort_d') ); 
	    &logging("script was called with bad sorting operator - possible security violation");
	    die;
	}
	&sort_data( $sortby, 1 );
    }
    
# randomizing record in array
    if ( param('random') == 1 ) { &randomsort_data; }
    elsif ( param('random') != 0 ) {
	&produce_error( 9, param('random') ); 
	&logging("script was called with bad randomize operator - possible security violation");
	die;
    }

# customizing number of matches
    if ( $max_matches == 0 or $max_matches > @file ) { $max_matches = @file; }
    if ( param('matches') =~ /^\d+$/ or param('matches') eq "" ) {
	if ( param('matches') > $max_matches ) { $matches = $max_matches; }
	else { $matches = param('matches'); }
    }
    elsif ( param('matches') eq "random" ) { 
	srand;
	$matches = int(rand($max_matches));
    }
    else {
	&produce_error( 9, param('matches') ); 
	&logging("script was called with bad matches operator - possible security violation");
	die;
    }

# show next page of results
    unless ( param('page') =~ /^\d+$/ or param('page') eq "" ) { 
	&produce_error( 9, param('page') ); 
	&logging("script was called with bad page operator - possible security violation");
	die;
    }

#counting first and last record which will been dispalyied
    $first_rec = $matches * param('page');
    $last_rec = $matches * param('page') - 1 + $matches;
    if ( $last_rec >= @file or $last_rec < 0 ) { $last_rec = @file - 1; }
}


# -------------------------------------------------------------------------
# sorting data in array
sub sort_data {
    my ( $i, $sortby, $order, $name, $line, @temp  );
    $sortby = @_[0];
    $order = @_[1];
    @temp = ();
    @temp = @file;
    @file = ();

    foreach $name ( @numeric ) {
	if ( $name eq $sortby ) {
	    for ( $sortindex=0; $sortindex<@fields; $sortindex++ ) {
		if ( $fields[$sortindex] eq $sortby ) {
		    foreach $line ( sort sorting_numeric @temp ) {
			push ( @file, $line );
		    }
		}
	    }
	if ( $order == 1 ) { @file = reverse ( @file ); }
	return;
	}
    }
    for ( $sortindex=0; $sortindex<@fields; $sortindex++ ) {
	if ( $fields[$sortindex] eq $sortby ) {
	    foreach $line ( sort sorting_chars @temp ) {
		push ( @file, $line );
	    }
	}
    }
    if ( $order == 1 ) { @file = reverse ( @file ); }
}


# -------------------------------------------------------------------------
# sorting procedure - numeric
sub sorting_numeric {
    my ( @temp1, @temp2 );
    @temp1 = split( /$delimiter/, $a );
    @temp2 = split( /$delimiter/, $b );
    if ( $numeric_format == 1 ) {
	$temp1[$sortindex] =~ s/.//isg;
	$temp2[$sortindex] =~ s/.//isg;
	$temp1[$sortindex] =~ s/,/./;
	$temp2[$sortindex] =~ s/,/./;
    }
    elsif ( $numeric_format == 2 ) {
    	$temp1[$sortindex] =~ s/,//isg;
	$temp2[$sortindex] =~ s/,//isg;
    }
    else {
	&produce_error( 5 ); 
	&logging("numeric_format value in config file is out of range");
	die;
    }
    return ( $temp2[$sortindex] <=> $temp1[$sortindex] );
}


# -------------------------------------------------------------------------
# sorting procedure - chars
sub sorting_chars {
    my ( @temp1, @temp2 );
    @temp1 = split( /$delimiter/, $a );
    @temp2 = split( /$delimiter/, $b );
    if ( $temp1[$sortindex] lt $temp2[$sortindex] ) { return 1; }
    elsif ( $temp1[$sortindex] gt $temp2[$sortindex] ) { return -1; }
    else { return 0; }
}


# -------------------------------------------------------------------------
# random sort data in array
sub randomsort_data {
    my ( $i, $temp, @temp );
    @temp = ();
    @temp = @file;
    @file = ();

    srand;
    while ( @temp > 0 ) {
	$i = int( rand(@temp) );
	$temp = splice( @temp, $i, 1 );
	push( @file, $temp );
    }
}


# -------------------------------------------------------------------------
# search in array for asked data in defined fiels and delete useless record
sub find_data1 {
    my ( $i, $field, $find, $line, $name, @fields1, @temp );
    $field = @_[0];
    $find = @_[1];
    $how = @_[2];
    @temp = ();
    @temp = @file;
    @file = ();

    for ( $i=0; $i<@fields; $i++ ) {
	if ( $fields[$i] eq $field ) {
	    foreach $line ( @temp ) {
		@fields1 = split( /$delimiter/, $line );
		if ( $how == 1 and ( $fields1[$i] > $find ) ) { push( @file, $line ); }
		elsif ( $how == 2 and ( $fields1[$i] < $find ) ) { push( @file, $line ); }
		elsif ( $how == 3 and ( $fields1[$i] >= $find ) ) { push( @file, $line ); }
		elsif ( $how == 4 and ( $fields1[$i] <= $find ) ) { push( @file, $line ); }
		elsif ( $how == 5 and ( $fields1[$i] != $find ) ) { push( @file, $line ); }
		elsif ( $how == 6 and ( $fields1[$i] !~ /^($find){1}$/i ) ) { push( @file, $line ); }
  		elsif ( $how == 7 and ( $fields1[$i] !~ /$find/i ) ) { push( @file, $line ); }
		elsif ( $how == 8 and ( $fields1[$i] =~ /^($find){1}$/i ) ) { push( @file, $line ); }
		elsif ( $how == 9 and ( $fields1[$i] =~ /$find/i ) ) { push( @file, $line ); }
	    }
	}
    }
}


# -------------------------------------------------------------------------
# search whole array for asked data and delete useless record
sub find_data2 {
    my ( $i, $j, $find, $name, $line, @temp, @fields1 );
    $find = @_[0];
    @temp = ();
    @temp = @file;
    @file = ();
    foreach $line ( @temp ) {
	@fields1 = split( /$delimiter/, $line ); 
	for ( $i=0; $i<@fields; $i++ ) {
	    $j = 0;
     	    if ( $admin != 1 ) {
		foreach $name ( @private ) {
		    if ( $fields[$i] eq $name ) { $j = 1; }
		}
            }
	    if ( $j == 0 and $fields1[$i] =~ /$find/i ) { 
		push( @file, $line );
		$i = @fields;
	    }
        }
    }    
}

# -------------------------------------------------------------------------
# search for asked "new" or "old" records and delete useless ones
sub newold_data {
    my ( $i, $how, $line, @fields1, @temp );
    $how = lc(@_[0]);
    @temp = ();
    @temp = @file;
    @file = ();

    for ( $i=0; $i<@fields; $i++ ) {
	if ( $fields[$i] eq "_index" ) {
	    foreach $line ( @temp ) {
		@fields1 = split( /$delimiter/, $line );
  		if ( ($new_compare_dat * 86400 + $fields1[$i]) > time and $how eq "n" ) { push( @file, $line ); } 
		elsif ( ($new_compare_dat * 86400 + $fields1[$i]) < time and $how eq "o" ) { push( @file, $line ); }
	    }
	}
    }
} 


# -------------------------------------------------------------------------
# logging
sub logging {
    my ( @time, $i );
    if ( $log ne "" ) {
        if ( not open(LOG, ">>".$log_file_path) ) {
            &produce_error( 7 ); 
            die;
            }
        @time = localtime(time);
        $time[4] = $time[4] + 1;
        $time[5] = $time[5] + 1900;
	for ( $i=0; $i<@time; $i++ ) {
	    if ( $time[$i] < 10 ) { $time[$i] = "0" . $time[$i]; }
	}
        if ( $file_lock ) { flock(LOG, 2); }
        print LOG "$time[3]. $time[4]. $time[2]:$time[1]:$time[0]  \t @_ \r\n";
        close(LOG);
    }
}


# -------------------------------------------------------------------------
# generate html page
sub print_template {
    my ( $i, $j, $k, $html, $field, $upper, $template, $html_template_path, $footer, $temp, $temp1, $temp2, $backup, $time, $rec, $name, @html, @fields1, @time );
    if ( param('template') =~ /^\d+$/ and $html_template_path[param('template')] ne "" ) { $html_template_path = $html_template_path[param('template')]; }
    else { $html_template_path = $html_template_path[0]; }
              
    if ( open(HTML,$html_template_path) ){
	if ( $file_lock ) { flock(HTML, 1); }
	@html=;
	close(HTML);
	}
    else {
	&logging( "Can't open html read template file. Please check that you have provided the correct path to your your html ok_page file in config file." ); 
	&produce_error( 5 );
	die;
    }

    $html = join( "", @html );
    unless ( $html =~ /(.*)