#!/usr/bin/perl
# ----------------------------------------------------------------------------
#
#  (c) Copyright 2006 TradeExtender
# 
#  This software is proprietary to and embodies the confidential technology 
#  of TradeExtender. Possession, use, duplication or dissemination of the 
#  software and media is authorized only pursuant to a valid written license 
#  from TradeExtender.
#

use strict;
use lib "/var/www/vhosts/kantelpunten.com/httpdocs/pl/lib";
use lib "lib";
BEGIN {
    delete $INC{"Kantelpunten/Helper.pm"};
#    delete $INC{"Kantelpunten/MyRobots.pm"};
}
use Kantelpunten::Helper;
use Kantelpunten::MyRobots;
use CGI qw(:standard);
use POSIX qw(mktime strftime);
#use Data::Dumper;

local our $param  = undef;

show_main();
exit(0);

sub show_main()
{
	my $q = CGI->new;

	$param->{login}		= defined($q->param('login')) ? 1 : undef;
	$param->{start}		= defined($q->param('start')) ? 1 : undef;
	$param->{home}		= defined($q->param('home')) ? 1 : undef;
	$param->{prev}		= defined($q->param('prev')) ? 1 : undef;
	$param->{next}		= defined($q->param('next')) ? 1 : undef;
	$param->{refresh}	= defined($q->param('refresh')) ? 1 : undef;
	$param->{page} 		= $q->param('page');
	$param->{idx} 		= $q->param('idx');
	$param->{rb} 		= $q->param('rb');

	my $remote_ip = init_helper();
	$param->{rb} = get_robot() if (!defined($param->{rb}) || $param->{rb});
	set_robot($param->{rb});

	my $domain = get_domain();
	my $sesid = get_session_cookie();   # try to get the session cookie
	my $userid = get_userid_cookie();   # or the userid cookie
	my $dont_set_lastpage;

	my $spammer = stop_spammers($remote_ip, "test");
	if (defined($spammer))
	{
    	if ($spammer == 1)
    	{
        	print_redirect("/pl/AccessDenied.pl");
        	exit(0);
    	}
    	elsif ($spammer == 2)
    	{
        	print_error_doc ("Geachte gebruiker van kantelpunten.<br>Ik kan niet volgen wat u doet met onze site.<br>Volgens onze adminstratie voert u ongeveer 4 updates per minuut uit.<br>" .
            	             "Hoezeer wij ook gesteld zijn op onze gebruikers, kunnen we het niet toestaan dat een gebruiker alle capaciteit verbuikt.<br>".
                	         "Ik kan mij niet voorstellen dat iemand de hele dag zit de klikken, daarom verdenk ik u ervan dat u automatisch random update uitvoert<br>" . 
                    	     "Ik laat deze melding een kwartier staan, daarna zal ik deze weer verwijderen<br>Als echter blijkt dat u nog steeds heel veel views creert (250-500 x zoveel als anderen)<br>" .
                        	 "Dan ben ik genoodzaakt uw IP addres permanent te blokeren<br>Stuur eventueel een mail naar webmaster\@$domain<br>" .
	                         "<br>Ik heb u weer toegestaan en in 2 minuten tijd heeft u 15 updates gedaan.<br>Ik laat deze melding nu de hele dag staan<br>" .
    	                     "Pas vanavond haal ik hem weg. Voert u daarna nog steeds updates uit dan wordt uw IP addres permanent geblokeerd.", "Automatische updates ?");
        	write_access_data($remote_ip, 19999);
        	exit(0);
    	}
    	print_error_doc ("Geachte gebruiker van kantelpunten.<br>Volgens onze adminstratie voert u nodeloze updates uit<br>" .
        	             "Elke minuut update u de nieuwspagina.<br> Het kan zijn dat onze adminstratie verkeerd is<br>" .
            	         "Zo ja stuur een mail naar webmaster\@$domain<br>Als u morgen nog steeds nodeloze updates" .
                	     "uitvoerd van de nieuws berichten pagina dan zal uw IP addres permanent geblokeerd worden.");
    	write_access_data($remote_ip, 19999);
    	exit(0);
	}

	# Is this a start request? if so and cookies are not set then reload
	if (defined($param->{start}) && (!defined($sesid) || !defined($userid)))
	{
  		# wait and reload, cookies should be set by register
   		msleep(0.9);
   		print_redirect("ShowMain.pl");
   		exit(0);
	}
	if (defined($param->{login}))
	{
  		# wait and reload, cookies should be set by register
   		msleep(0.9);
   		print_redirect("ShowMain.pl?start=1");
   		exit(0);
	}
   
	my $pop_menu;
	my $top_menu;
	my $ref;
	my $bcolor = "white";
	my $top_unit;
	my $bot_unit = "&nbsp;";
	my $show_right;
	my $show_left;
	my $show_alert;
	get_user_rec();     # always try getting the user rec

	my $start_page = get_start_page_cookie();
	if (!defined($param->{page}) && defined($start_page) && ($start_page ne ""))
	{
    	add_start_page_cookie(0);
	    $param->{page} = $start_page;
    	$param->{page} = undef if ($param->{page} == 0);
	}
	
	# controleer of dit en eerste user visit is
	my $trialuntil = set_trialuntil();
	my $registered = set_registered();
	if (defined($trialuntil) && ($registered < 2))
	{
#		if (set_userid() == 3280)
#		{
#			set_trialuntil(3);
#			write_user_rec();
#		}
		my $cur_time = time();
		if (($trialuntil <= 100) || ($trialuntil == 0xffffffff))
		{
			# start een nieuwe trial periode ??
			if ($trialuntil == 0)
			{
				# dit is de eerste keer dus zet trialuntil en toon welkom, 14 dagen
#				set_trialuntil($cur_time + (14 * 24 * 3600));
				set_trialuntil($cur_time);
				write_user_rec();
#				$param->{page} = 10067;
				$param->{page} = 20032;
			} 
			elsif (0 && (($trialuntil == 1) || ($trialuntil == 0xffffffff)))
			{
				# deze heeft de grafieken nog niet gehad toon graph, 7 dagen
				# set_trialuntil($cur_time + (7 * 24 * 3600));
				# write_user_rec();
				# grafieken zijn nu altijd gratis dus toon de exit
				set_trialuntil($cur_time + (14 * 24 * 3600));
				write_user_rec();
				$param->{page} = 10077;
			}
			elsif (0 && ($trialuntil == 2))
			{
				# deze heeft de grafieken nog niet gehad toon exit strategie, 14 dagen
				set_trialuntil($cur_time + (14 * 24 * 3600));
				write_user_rec();
				$param->{page} = 10077;
			}
		}
		# tijdelijk geen uitschakeling meer
		elsif (0 && ($cur_time > $trialuntil))
		{
			if ($trialuntil < mktime(0, 0, 10, 7, 7-1, 107, 0, 0, -1))
			{
				# deze heeft de grafieken nog niet gehad toon exit strategie, 14 dagen
				set_trialuntil($cur_time + (14 * 24 * 3600));
				write_user_rec();
				$param->{page} = 10077;
			}
			else 
			{
				# blijkbaar de eerste keer na actunitl periode toon einde
				# !!! vergeet niet in navmarket de laatste trial aan te passen!!!
				set_trialuntil(3);	# de next trial zou 3 zijn !!
				write_user_rec();
				$param->{page} = 10068;
			}
		}
	}
	# controleer of dit het test account is
	if (!defined($param->{page}) && is_trial_user())
	{
		$param->{page} = 10069;
	}
		
	# controleer nieuwspagina of homepage
	if (!defined($param->{page}) && !defined($param->{prev}) && !defined($param->{next}))
	{
    	# eerst nieuwspagina ontroleer existance nieuwspagina
    	my $news = set_highpage();
    	if (defined($news))     # user exits ??
    	{
        	my ($dum1, $dum2, $lastnews) = get_ids();
        	if (!defined($param->{home}) && ($news != $lastnews))
        	{
	        	if (($news == 0) && ($registered == 0))
	        	{
		        	# realy first time shows winstpakkers
		        	$param->{page} = 9986;
	        	}
	        	elsif ($news == 0)
	        	{
#		        	# first time shows welkom page
#		        	$param->{page} = 20032;
#		        	set_highpage(32);
		        	$param->{page} = 9986;
	        	}
	        	else
	        	{
		        	$param->{page} = 20000 + $lastnews;
		        	set_highpage($lastnews);
	        	}
	    	    write_user_rec();
        	}
        	else
        	{   
            	$param->{page} = set_homepage();
            	# show statistics latest user if supper user and no homepage defined
            	if (($param->{page} == 0) && is_super_user())
            	{
                	print_redirect("https://www.kantelpunten.com/pl/ShowStats.pl?users=1");
                	exit(0);
            	}
            	# check if we should show the kantelpage 
            	my $bday  = set_lastbday();
            	my $lday  = calc_beursdag();
            	if ($bday != $lday)
            	{
                	$param->{page} = ($registered > 3) ? 9987 : 9983;        # adviezen of scanpunten
                	set_lastbday($lday);
                	write_user_rec();
            	}
            	$param->{page} = undef if ($param->{page} == 0);
        	}
    	}
	}
	$param->{page} = 10059 if (defined($param->{start}) && defined($registered) && ($registered eq '2')); # busy registering
	my $last_page = get_last_page_cookie();
	if (($last_page != 10027) && ($last_page != 10059) && ($last_page != 10067) && ($last_page != 10069))
	{
		$param->{page} = get_last_page_cookie() if (defined($param->{refresh}));
		$param->{page} = get_last_page_cookie() if (!defined($param->{page}) && !defined($param->{home}));
	}
#	$param->{page} = 10024 if (!defined($param->{page}) && !defined($sesid));     # no cookies then start with cookie page
#	$param->{page} = 10000 unless defined($param->{page});
	$param->{page} = 9986 unless defined($param->{page});

	if (!($param->{page} =~ /^-?[\d]+(\.\d*)?$/))
	{ 
    	print_error_doc ("Ongeldige formaat voor page=$param->{page}");
    	exit(0);
	}	

	my $no_stat;
	if (($param->{page} >= 20000) && ($param->{page} < 30000))
	{
		my $topic = $param->{page} - 20000;
		$ref = "http://forum.kantelpunten.com/viewtopic.php?t=$topic";
	    write_access_data($remote_ip, $param->{page});
       	print_redirect($ref);
       	exit(0);
	}
	elsif (($param->{page} >= 9940) && ($param->{page} <= 9999))
	{
	    $ref = "/pl/ShowOverview.pl?overview=eigen" if ($param->{page} == 9999);
    	$ref = "/pl/ShowOverview.pl?overview=aex" if ($param->{page} == 9998);
	    $ref = "/pl/ShowOverview.pl?overview=amx" if ($param->{page} == 9997);
    	$ref = "/pl/ShowOverview.pl?overview=overig" if ($param->{page} == 9996);
    	$ref = "/pl/ShowOverview.pl?overview=bel20" if ($param->{page} == 9995);
    	$ref = "/pl/ShowOverview.pl?overview=kantel" if ($param->{page} == 9994);
    	$ref = "/pl/ShowOverview.pl?overview=bel" if ($param->{page} == 9993);
	    $ref = "/pl/ShowScanOverview.pl?mine=1&recent=1" if ($param->{page} == 9990);
    	$ref = "/pl/ShowScanOverview.pl?all=1&recent=1" if ($param->{page} == 9989);
    	$ref = "/pl/ShowKantelOverview.pl?mine=1" if ($param->{page} == 9988);
    	$ref = "/pl/ShowKantelOverview.pl?all=1" if ($param->{page} == 9987);
    	$ref = "/pl/ShowKantelOverview.pl?type=success" if ($param->{page} == 9986);
    	$ref = "/pl/ShowKantelOverview.pl?type=correct" if ($param->{page} == 9985);
	    $ref = "/pl/ShowScanOverview.pl?mine=1&open=1" if ($param->{page} == 9984);
	    $ref = "/pl/ShowScanOverview.pl?all=1&open=1" if ($param->{page} == 9983);
	    $ref = "/pl/dagelijks-aandelen-advies.pl" if ($param->{page} == 9982);
	    $ref = "/pl/ShowNews.pl" if ($param->{page} == 9980);
	    $ref = "/pl/ShowNews.pl?mine=1" if ($param->{page} == 9979);
	    $ref = "/pl/gratis-beurssite-adverteren.pl" if ($param->{page} == 9970);
	    my $jaar = strftime("%Y", localtime(time()));
	    $ref = "/pl/toon-beleggen-resultaat.pl" if ($param->{page} == 9960);
	    $ref = "/pl/toon-beleggen-resultaat.pl?jaar=$jaar" if ($param->{page} == 9961);
	    $ref = "/pl/toon-beleggen-resultaat.pl?overzicht=maand&jaar=$jaar" if ($param->{page} == 9962);
	    $ref = "/pl/toon-beleggen-resultaat.pl?overzicht=week&jaar=$jaar" if ($param->{page} == 9963);
	    $ref = "/pl/aandeel-beleggen-portefeuille.pl?land=own&jaar=$jaar" if ($param->{page} == 9950);
	    $ref = "/pl/aandeel-beleggen-portefeuille.pl?land=own&jaar=$jaar&type=2&num_porto=1" if ($param->{page} == 9951);
	    $ref = "/pl/aandeel-beleggen-portefeuille.pl?land=own&jaar=$jaar&type=2&num_porto=2" if ($param->{page} == 9952);
	    $ref = "/pl/aandeel-beleggen-portefeuille.pl?land=own&jaar=$jaar&type=2&num_porto=3" if ($param->{page} == 9953);
	    $ref = "/pl/aandeel-beleggen-portefeuille.pl?land=own&jaar=$jaar&type=2&num_porto=4" if ($param->{page} == 9954);
	    $ref = "/pl/aandeel-beleggen-portefeuille.pl?land=own&jaar=$jaar&type=2&num_porto=5" if ($param->{page} == 9955);
	    $ref = "/pl/aandeel-beleggen-portefeuille.pl?land=own&jaar=$jaar&type=2&num_porto=6" if ($param->{page} == 9956);
	    $ref = "/pl/aandeel-beleggen-portefeuille.pl" if ($param->{page} == 9957);
	    $ref = "/pl/aandeel-beleggen-portefeuille.pl?eigen=1" if ($param->{page} == 9958);
	    $ref = "/pl/aandeel-beleggen-portefeuille.pl?eigen=1" if ($param->{page} == 9959);
	    # redirects from mail
	    $ref = "/pl/ShowScanOverview.pl?all=1&open=1&redirect=1" if ($param->{page} == 9940);
	    $ref = "/pl/ShowScanOverview.pl?mine=1&open=1&redirect=1" if ($param->{page} == 9941);
	    # don't write access date will be done by showoverview
    	if (!defined($ref))
	    {
    	    print_error_doc ("Ongeldige pagina ($param->{page}) opegevraagd");
        	exit(0);
	    }   
       	print_redirect($ref);
    	# no checkstat statistics as this is included by showstock
       	exit(0);
	}
	elsif (($param->{page} >= 30000) && ($param->{page} < 50000))
	{
    	# this is an linked page from a specific stock
	    my $stk_id = $param->{page} % 1000;
    	my $link  = int($param->{page} / 1000);
	    if ($stk_id == 0)
    	{
	        print_error_doc ("Ongeldige pagina ($param->{page}) opegevraagd");
    	    exit(0);
	    }    
    	my $stock = get_stock($stk_id, "old");
	    if (!defined($stock))
    	{
        	print_error_doc($stk_id . "<br>Dit aandeel wordt niet ondersteund");
	        exit(0);
    	}
        $pop_menu = make_pop_menu(1, $param->{page}, "link", $stock);
        $top_menu = make_top_menu(1, $param->{page}, "link", $stock);
	    if ($link == 30)
    	{
        	# het bedrijf
			if ($stock->{belegger} ne "")
			{
#	    	    $ref = "http://www.belegger.nl/koersen.php?page=binfo&naam=" . $stock->{belegger};
                $ref = "http://www.belegger.nl/aandeel-" . $stock->{belegger} . ".profiel";
			}
			elsif ($stock->{bduivel} ne "")
			{
	    	    $ref = "http://www.beursduivel.be/koersen.php?page=binfo&naam=" . $stock->{bduivel};
			}
			else
			{
		        # $ref = "http://www.dft.nl/servlet/companyProfile?ISIN=" . $stock->{dft_isin};
    		    $ref = "http://www.telegraaf.nl/dft/bedrijven/" . $stock->{dft_comp} . "/?tabid=bedrijven&tab=5";
			}
			$top_unit = "kader";
	    }
    	elsif ($link == 31)
	    {
    	    # netto winst
    	    if ($stock->{euronext_symb} ne "")
    	    {
	    	    my $land = substr($stock->{euronext_symb}, 0, 2);
	    	    my $mep = (($land eq "NL") || ($land eq "GB")) ? 2 : 3;
#	    	    $ref = "http://www.euronext.com/trader/companyprofile/companyprofile-4408-NL-" . $stock->{euronext_symb} . ".html?selectedMep=$mep";
	    	    $ref = "http://www.euronext.com/trader/companyprofile/companyprofilev2-18661-NL-" . $stock->{euronext_symb} . ".html?selectedMep=$mep";
    	    }
    	    elsif ($stock->{dft_comp} ne "")
    	    {
            	$ref = "http://www.telegraaf.nl/dft/bedrijven/" . $stock->{dft_comp} . "/?tabid=bedrijven&tab=4";
    	    }
			elsif ($stock->{belegger} ne "")
			{
	    	    $ref = "http://www.belegger.nl/koersen.php?page=bfundamental&naam=" . $stock->{belegger};
			}
			elsif ($stock->{bduivel} ne "")
			{
	    	    $ref = "http://www.beursduivel.be/koersen.php?page=bfundamental&naam=" . $stock->{bduivel};
			}
        	elsif ($stock->{eb_ic} ne "")
	        {
    	        $ref = "http://www.eurobench.com/koersen.asp?page=showcompanydetail&amp;ic=" . $stock->{eb_ic} . 
        	            "&amp;ctype=&amp;ci=&amp;oc=" . $stock->{eb_oc} . "&amp;bc=" . $stock->{eb_bc} . "&amp;innr=5";
	        }
    	    else
        	{
    	        print_error_doc ("Nettowinst wordt niet ondersteund voor dit aandeel ($stock->{stock})");
        	    exit(0);
	        }
			$top_unit = "kader";
    	}
	    elsif ($link == 32)
    	{
	    	$dont_set_lastpage = 1;
	        # website
    	    $ref = $stock->{website};
			$top_unit = "kader";
	    }
    	elsif ($link == 33)
	    {
    	    # Koers & daggrafiek
    	    if ($stock->{dft_comp} ne "")
    	    {
            	$ref = "http://www.telegraaf.nl/dft/bedrijven/" . $stock->{dft_comp} . "/?tabid=bedrijven&tab=7&streaming=true";
    	    }
			elsif ($stock->{belegger} ne "")
			{
	        	$ref = "http://www.belegger.nl/koersen.php?page=bkoersen&%20&naam=" . $stock->{belegger};
        	}
			elsif ($stock->{bduivel} ne "")
			{
	        	$ref = "http://www.beursduivel.be/koersen.php?page=bkoersen&%20&naam=" . $stock->{bduivel};
        	}
			$top_unit = "kader";
	    }
    	elsif ($link == 34)
	    {
    	    if (!is_admin_user())
        	{
	            # intrday Combine
    	        print_redirect("/pl/beleggen-daghandel.pl?aandeel=$stock->{stock}&combine=1", "301");
        	    exit(0);
	        }
    	    # daghandel
        	if ($stock->{tick_sym} eq "")
	        {
    	        print_error_doc ("Daghandel wordt niet ondersteund voor dit aandeel ($stock->{stock})");
        	    exit(0);
	        }
	        $ref = "http://217.11.198.41/html/detail/ticklist/main.html?sSym=" . $stock->{tick_sym};
    	}
	    elsif ($link == 35)
    	{
        	print_error_doc ("Koers RT wordt niet meer ondersteund.");
	        exit(0);
    	    # koers rt
        	if ($stock->{sns_fc} eq "")
	        {
    	        print_error_doc ("Koers RT wordt niet ondersteund voor dit aandeel ($stock->{stock})");
        	    exit(0);
	        }
    	    if (is_outside_stock_hours())
        	{
            	print_redirect("ShowMain.pl?page=10030");
	            exit(0);
    	    }
        	if (length($stock->{sns_fc}) > 3)
	        {
    	        $ref = $stock->{sns_fc};
        	}
	        else
    	    {
        	    $ref = "https://www.snssecurities.nl/scripts/company/index.aspx?section=Research&amp;fc=" . $stock->{sns_fc} .
            	        "&amp;alpha=" . $stock->{sns_alpha} . "&amp;display=publications&amp;IW=" . $stock->{sns_iw};
	        }
	        my $number = write_rt_data(1);
    	    if (($number >= 25) && ($number <= 26))
        	{
	            $show_alert = "U heeft reeds 25 x RT koersen opgevraagd.\\nHet updaten wordt beperkt tot maximaal 50 x per dag,\\nomdat anders onze site overbelast wordt.";
    	    }
        	if ($number >= 25)
	        {
    	        $show_left = "Klik <a href=\"$ref\" target=\"popup\">hier</a> om de koersen rechtstreeks aan te vragen. <a href=\"ShowMain.pl?page=10031\">disclaimer</a>";
        	    $show_right = "RT aanvragen toegestaan: " . (50 - $number);
	        }
    	    if ($number >= 50)
        	{
	            my @loc_time = localtime(time());
    	        my $refresh = set_refreshday();
        	    if (defined($refresh) && ($refresh != (@loc_time[7] + 1)))
            	{
	                set_refreshday(@loc_time[7] + 1);
    	            write_user_rec();
        	    }
          		print_redirect("/pl/ShowMain.pl?page=10031");
	            exit(0);
    	    }
	    }
    	elsif ($link == 36)
	    {
    	    # nieuws + fundamentele info
#        	$ref = "http://www.dft.nl/servlet/FindArticleServlet?nameToMatch=&amp;KEYWORDS=" . $stock->{news_keyw} .
#           	     "&amp;Submit3=Vind";
			if ($stock->{belegger} ne "")
			{
	    	    $ref = "http://www.belegger.nl/koersen.php?page=bnieuws&naam=" . $stock->{belegger};
			}
			elsif ($stock->{bduivel} ne "")
			{
	    	    $ref = "http://www.beursduivel.be/koersen.php?page=bnieuws&naam=" . $stock->{bduivel};
			}
			else
			{
        		$ref = "http://www.telegraaf.nl/dft/bedrijven/" . $stock->{dft_comp} . "/?tabid=bedrijven&tab=1";
	    	}
			$top_unit = "kader";
    	}
	    elsif ($link == 37)
    	{
        	# technisch
	        if ($stock->{bours_symb} ne "")
    	    {
        	    $ref = "http://www.boursorama.com/cours.phtml?symbole=" . $stock->{bours_symb} . "&amp;vue=sem";
	        }
    	    elsif ($stock->{iex_id})
        	{
	            $ref = "http://www.iex.nl/Stocks/chart.asp?iID=" . $stock->{iex_id};
    	    }
        	else
	        {
    	        print_error_doc ("Technisch wordt niet ondersteund voor dit aandeel ($stock->{stock})");
        	    exit(0);
	        }
			$top_unit = "kader";
    	}
	    elsif ($link == 38)
    	{
        	# sentiment
	        if ($stock->{dft_forum} eq "")
    	    {
        	    print_error_doc ("Sentiment wordt niet ondersteund voor dit aandeel ($stock)");
            	exit(0);
	        }
#   	     $ref = "http://www.dft.nl/servlet/Forum?id=Company&amp;count=25&amp;company=" . $stock->{dft_comp} . 
#       	         "&amp;ISIN=" . $stock->{dft_isin};
#        	$ref = "/info/probleem_dft.htm";
        	$ref = "http://forum.dft.nl/forums/show/" . $stock->{dft_forum} . ".page";
        	$top_unit = "kader";
    	}
    	elsif ($link == 39)
	    {
    	    # adviezen
    	    if ($stock->{analist} ne "")
    	    {
	    	    $ref = "http://www.analist.nl/index.php?page=aandeel&id=" . $stock->{analist};
    	    }
			elsif ($stock->{belegger} ne "")
			{
	    	    $ref = "http://www.belegger.nl/koersen.php?page=badviezen&naam=" . $stock->{belegger};
			}
			elsif ($stock->{bduivel} ne "")
			{
	    	    $ref = "http://www.beursduivel.be/koersen.php?page=badviezen&naam=" . $stock->{bduivel};
			}
        	elsif ($stock->{guru_id} ne "")
	        {
    	        $ref = "http://www.guruwatch.nl/fonds.asp?Id=" . $stock->{guru_id};
        	}
	        elsif ($stock->{mktadv_id} ne "")
    	    {
        	    $ref = "http://www.marketadvices.com/index.php?page=stock&id=" . $stock->{mktadv_id} . "&lan=NL";
	        }
    	    else
        	{
            	$ref = "http://iex.nl/Stocks/stocks_research.asp?ID=" .  $stock->{iex_id};
	        }
			$top_unit = "kader";
    	}
	    elsif ($link == 40)
    	{
	    	$dont_set_lastpage = 1;
	        # kalender
    	    if ($stock->{kalender} eq "")
        	{
            	print_error_doc ("Kalender wordt niet ondersteund voor dit aandeel ($stock->{stock})");
	            exit(0);
    	    }
        	$ref = $stock->{kalender};
			$top_unit = "kader";
	    }
    	elsif ($link == 43)
	    {
    	    # intraday combined All
        	print_redirect("/pl/ShowIntraQuotes.pl?stock=$stock->{stock}");
	        exit(0);
    	}
    	elsif ($link == 44)
	    {
    	    # news stock 
        	print_redirect("/pl/ShowNews.pl?stock=$stock->{stock}");
	        exit(0);
    	}
    	elsif ($link == 45)
	    {
    	    # intraday All
        	print_redirect("/pl/beleggen-daghandel.pl?aandeel=$stock->{stock}&all=1", "301");
	        exit(0);
    	}
	    elsif ($link == 46)
    	{
	        # intrday Combine
    	    print_redirect("/pl/beleggen-daghandel.pl?aandeel=$stock->{stock}&combine=1", "301");
        	exit(0);
	    }
    	elsif ($link == 47)
	    {
    	    # kantelpunten historie
        	print_redirect("/pl/ShowKantelpunten.pl?stock=$stock->{stock}&2year=1");
	        exit(0);
	    }
    	elsif ($link == 48)
	    {
    	    # kantelpunten
	        print_redirect("/pl/ShowKantelpunten.pl?stock=$stock->{stock}");
    	    exit(0);
	    }
    	elsif ($link == 49)
	    {
    	    # quotes
        	print_redirect("/pl/ShowQuotes.pl?stock=$stock->{stock}");
	        exit(0);
    	}
	    else
    	{
        	# oops bestaat niet
	        print_error_doc ("Ongeldige pagina ($param->{page}) opegevraagd");
    	    exit(0);
	    }
    	write_access_data($remote_ip, $param->{page});
	}
	elsif (($param->{page} >= 100000) && ($param->{page} < 200000))
	{
		my $item = sprintf("%05d", $param->{page} - 100000);
        print_redirect("/pl/ShowNews.pl?item=$item&sup=0");
        exit(0);
	}
	elsif (($param->{page} >= 200000) && ($param->{page} < 300000))
	{
		my $item = sprintf("%05d", $param->{page} - 200000);
        print_redirect("/pl/ShowNews.pl?samenvatting=1&item=$item&sup=0");
        exit(0);
	}
	elsif (($param->{page} >= 10000) && ($param->{page} < 20000))
	{
    	my $page = get_page($param->{page});
	    if (!defined($page))
    	{
	    	# we could try rereading the file once
	    	read_pages(undef, 'force');
	    	$page = get_page($param->{page});
		    if (!defined($page))
    		{
		        print_error_doc ("Ongeldige pagina ($param->{page}) opegevraagd");
    		    exit(0);
		    }
	    }
    	$ref = $page->{ref};
    	write_access_data($remote_ip, $param->{page});
	    if (($page->{target} eq "_blank") || ($page->{target} eq "_top") || ($page->{extra} == 1))
    	{
        	print_redirect($ref);
	        exit(0);
    	}
    	$no_stat = 1 if ($page->{nostat}); 
    	if ($page->{extra} == 2)
    	{
	    	$bcolor = "nav";
	    	$top_unit = "kader";
    	}
        $pop_menu = make_pop_menu(-1);
        $top_menu = make_top_menu(-1);
	}
	else
	{
    	# not a preferred page try to find if it is an stock id
	    my $stock = get_stock($param->{page}, "old");
    	if (!defined($stock))
	    {
    	    print_error_doc ("Ongeldige pagina ($param->{page}) opegevraagd");
        	exit(0);
    	}
    	$ref = "/pl/ShowStock.pl?stock=$param->{page}";
	    # don't write access date will be done by showstock
    	# no checkstat statistics as this is included by showstock
       	print_redirect($ref);
        exit(0);
	}

	add_last_page_cookie($param->{page}) if (!defined($dont_set_lastpage));

	my $script;
	if (defined($show_alert))
	{
    	$script =  "<SCRIPT TYPE=\"text/javascript\">\n" .
        	       "function showAlert()\n" .
            	   "{\n" .
	               "alert(\"$show_alert\")\n" .
    	           "}\n" .
        	       "//-->\n" .
            	   "</SCRIPT>\n";
	}
	else
	{
    	$script = make_home_script($param->{page});
	}

	my $desc = "Kantelpunten de beursscanner. Een beurssysteem, gebaseerd op de beroepshandel. Advies voor het zèlf beleggen in aandelen op de beurs. Ik moet deze week winst hebben. Niet volgende week. Duidelijke en eenvoudig te volgen adviezen.";
	print_header("+1s");
	print_pre_doc();
	print_head("Kantelpunten", "hoofd", undef, undef, $script, undef, undef, undef, $desc, undef, defined($top_menu) ? "top_script" : undef);
	print_body($bcolor, $show_alert, , undef, undef, undef, undef, undef, $top_unit, $bot_unit, $pop_menu, $top_menu);
	print "<iframe height=\"100%\" width=\"100%\" target=\"hoofd\" src=\"$ref\" scrolling=\"auto\" frameborder=\"0\" border=\"0\">\n";
	print "    Op deze pagina worden frames gebruikt, maar uw browser ondersteunt geen frames.\n";
	print "    </iframe>\n";
	print_checkstat() if (!defined($no_stat));
	print_body("end_kader");
	print_post_doc();
}

