#!/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/Process.pm"};
    delete $INC{"Kantelpunten/News.pm"};
    delete $INC{"Kantelpunten/MyRobots.pm"};
    delete $INC{"Kantelpunten/MyBudy.pm"};
    delete $INC{"Kantelpunten/MyAdds.pm"};
}
use Kantelpunten::Helper;
use Kantelpunten::News;
use Kantelpunten::Process;
use Kantelpunten::MyRobots;
use Kantelpunten::MyBudy;
use Kantelpunten::MyAdds;
use POSIX qw(strftime);
use Data::Dumper;

local our $param;
local our $page;

make_news_html();
exit(0);
    
sub make_news_html()
{
	my $q = CGI->new;

	$param->{mine}		= defined($q->param('mine')) ? 1 : undef;
	$param->{last}      = defined($q->param('last')) ? 1 : undef;
	$param->{desc}      = defined($q->param('samenvatting')) ? 1 : undef;
	$param->{sup}       = $q->param('sup');
	$param->{stock}     = $q->param('stock');
	$param->{records}   = $q->param('records');
	$param->{day}       = $q->param('day');
	$param->{item}		= $q->param('item');
	$param->{rb} 		= $q->param('rb');

	$param->{day} = abs($param->{day}) if (defined($param->{day}));

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

	init_process();
    init_news();
	get_user_rec();
	$param->{budy} = init_budy($q->param('uitleg'));
    my $news_item;
    
	$param->{records} = undef if (!is_admin_user());
	$param->{records} = 40 unless defined($param->{records});

    if (defined($param->{item}) && ($param->{item} =~ /^-?[\d]+(\.\d*)?$/) &&
    	($param->{item} < 200000) )
    {
	    $page = 100000 + ($param->{item} % 100000);   # wrap page, not item.
		if (!defined($param->{desc}))
		{
			my $news = get_news($param->{sup}, $param->{item});
		    if (defined($news))
		    {
				write_access_data($remote_ip, $page);
				show_ref($news->{title}, $news->{link});
				return;		    
			}
		    $news_item = "niet gevonden";
		}
		else
		{
			my $news = get_news($param->{sup}, $param->{item});
			if (defined($news))
			{
				$page += 100000;
				write_access_data($remote_ip, $page);
				show_news($news, $page);
				return;
			}
		    $news_item = "niet gevonden";
	    }
    }

	# shit news is disabled just show the default nieuws
	if (is_news_disabled())
	{
		print_redirect("/pl/ShowMain.pl?page=10070");
		exit(0);
	}
	
   	# if we come here we need to show some news see what we need to load
    my $news;
    my $stock;
   	if (defined($param->{stock}) && defined($stock = get_stock($param->{stock}, "old")))
   	{
	   	$param->{day} = undef;
		$page = sprintf("44%03d", $stock->{id});	
		$news = read_stock_news($news, $stock->{stock}, $param->{records});   	
		$param->{budy} = undef;
   	}
   	elsif (defined($param->{mine}))
   	{
	   	$param->{day} = undef;
	   	$page = 9979;
	   	my $stocks = get_stocks_mine();
	   	foreach my $i (keys %$stocks)
	   	{
		   	$news = read_stock_news($news, $stocks->{$i}->{stock}, $param->{records});
	   	}
   	}
   	else
   	{
    	$page = 9980;
    	$param->{day} = 0 unless defined($param->{day});
# alwaysshow latest headings
#     	$news = read_news(undef, undef, undef, make_day_offset($param->{day}));
     	if (!defined($news))
     	{
	     	# no news today, show last news
     		$news = read_news(undef, undef, $param->{records});
     		$param->{last} = 1;
		}
		else
		{
   			$param->{records} = 100;
		}
	}
    my $script = make_home_script($page);

    add_last_page_cookie($page);
	write_access_data($remote_ip, $page);

	my $title;
	my $desc;
	my $pop_menu;
	my $top_menu;
	if (defined($stock))
	{
    	$title = "Kantelpunten : Nieuws berichten van $stock->{index_name} - het laatste beleggingsnieuws";
    	$desc = "Het laatste nieuws van $stock->{index_name} overzichtelijk en onder hand bereik, " .
    		" Kijk of de stijging/daling ondersteund wordt door nieuwsfeiten." .
    		" Kantelpunten de beleggersite waar u alles onder handbereik heeft.";
        $pop_menu = make_pop_menu(1, $page, "news", $stock);
        $top_menu = make_top_menu(1, $page, "news", $stock);
	}
	else
	{
    	$title = "Kantelpunten : Nieuws berichten - het laatste beleggingsnieuws";
    	$desc = "Het laatste nieuws overzichtelijk en onder hand bereik, zodat men een eerste" .
    		" indruk heeft van het nieus van de afgelopen dag. Nieuws is onontbeerlijk voor de" .
    		" actieve belegger. Maak ook gebruik van andere nieuws bronnen om all het nieuws te achterhalen.";
        $pop_menu = make_pop_menu(defined($param->{mine}) ? 2 : 4, $page);
        $top_menu = make_top_menu(defined($param->{mine}) ? 2 : 4, $page);
	}

    print_header("+1m");
    print_pre_doc();
    print_head($title, undef, undef, undef, $script, "kantelpunt", defined($param->{mine}) ? "eigen" : undef, undef, $desc, undef, "top_script");
    print_body(defined($param->{mine}) ? "eigen" : "kantel", undef, undef, undef, undef, undef, undef, "kader", undef, $pop_menu, $top_menu);
    make_news($news, $stock);
    print_body("end_kader");
    print_post_doc();
}

sub show_ref(@)
{
    my ($title, $ref) = @_;
    
    my $pop_menu = make_pop_menu(-1);
    my $top_menu = make_top_menu(-1);
	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($title, undef, undef, undef, undef, undef, undef, undef, $desc, undef, "top_script");
	print_body("kantel", undef, undef, undef, undef, undef, undef, "kader", undef, $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_body("end_kader");
	print_post_doc();
}
    
sub make_news(@)
{
	my ($news, $stock) = @_;
    my $what = 0;
    my $sep_width = 5;
    my $adds;
    my $link;

    if ($page eq 9980 || $page eq 9979)
    { 
       	my $ref = "ShowNews.pl?uitleg=" . ($param->{budy} ? '0' : '1');
       	$ref .= "mine=1" if (defined($param->{mine}));
	    print_budy($param->{budy}, $page, $ref);
	}
  
    $adds = "adds" if (show_adds("nieuws_overal"));
    $link = print_link_unit("nieuws", "info_black", undef, undef, "get") if (show_adds("nieuws_link"));    
    print_div("center");
	print "<small><br><br><br></small>\n";
	
    my $id;
    my $data;    
    if (defined($stock))
    {   
	    $id = $stock->{id};
    	$data = get_quote_data($id);
    	my $img;
    	if (defined($data))
    	{
        	$img = make_kantel_img($id, undef, $data);
    	}   
    	my $heading = sprintf "%s ( %s )", $stock->{html_name}, uc $stock->{market};
    	print_heading($heading, "Laatste nieuws headlines.", $img);
		print "<br><br><span class=\"dred\">Dit aandeel is van de markt gehaald!</span>\n" if (is_old_stock($stock));
    	print_banner_ads("main_banner", defined($param->{mine}) ? "eigen" : "info", 2, 1) if (show_adds("hoofd"));
#    	print_banner_ads("main_banner", defined($param->{mine}) ? "eigen" : "info") if (show_adds("hoofd"));
	    print "<small><br><br></small>\n";
    	$what = 2;
    	$sep_width = 10;
	}
	elsif (defined($param->{mine}))
	{ 
    	print_h1("Nieuws over uw favorieten.");
    	print_banner_ads("main_banner", defined($param->{mine}) ? "eigen" : "info_nieuws2", undef, 1) if (show_adds("hoofd"));
#    	print_banner_ads("main_banner", defined($param->{mine}) ? "eigen" : "info_nieuws2", undef, 2) if (show_adds("hoofd"));
    	$what = 3;
	}
	elsif (defined($param->{last}))
	{
#    	print_h1("Laatste $param->{records} headlines.");
    	print_h1("Laatste nieuws.");
    	print_banner_ads("main_banner", defined($param->{mine}) ? "eigen" : "info_nieuws3", undef, 1) if (show_adds("hoofd"));
#    	print_banner_ads("main_banner", defined($param->{mine}) ? "eigen" : "info_nieuws3", undef, 2) if (show_adds("hoofd"));
	}
	else
	{ 
		if ($param->{added})
		{
    		print_h1(date_to_string(make_day_offset($param->{day}) . "+ vorig", "capital"));
		}
		else
		{
    		print_h1("Nieuws. " . date_to_string(make_day_offset($param->{day}), "capital"));
		}
    	print_banner_ads("main_banner", "info_nieuws3", undef, 1) if (show_adds("hoofd"));
#    	print_banner_ads("main_banner", "info_nieuws3", undef, 2) if (show_adds("hoofd"));
	}
	my $table_width = 100 - 2*$sep_width;
	
    if (!defined($news) && !defined($stock))
    {
		print_dual_heading("GEEN", "<small>Nieuwsberichten</small>");
        print "<small><br></small>\n";            
    }
    else
    {
		print_table(0, undef, 0, 0, 0, undef, "100%");
		             
	    print "<tr>\n";
	
	    # left buttons
	    print " <td width=\"$sep_width%\" valign=\"top\" align=\"center\">\n";
	    print_div("center");   
	    if (0 && defined($stock) && !is_old_stock($stock))
	    {
    		print_buttons(undef, $page, 'homepage');
    		print "<br>\n";
    		print_buttons($stock->{stock}, undef, 'fav_add');
		}
		else
		{
	    	print "&nbsp;\n";
    	}
	    print_div("end");
	    print " </td>\n";
			
	    # center nieuwsberichten
	    print " <td width=\"$table_width%\">\n";	
	    print_div("center");
	    if (defined($news))
	    {
   			print "<!-- google_ad_section_start -->\n";
			print get_news_table($news, $what, $param->{records}, undef, "kantel", $adds, $link);
		   	print "<!-- google_ad_section_end -->\n";
		}
		else
		{
			print_dual_heading("GEEN", "<small>Nieuwsberichten</small>");
	        print "<small><br></small>\n";            
	        if (!is_old_stock($stock))
	        {
	    		printf "<span><a href=\"ShowMain.pl?page=36%03d\" rel=\"nofollow\">Vind hier meer Nieuws</a></small>\n", $stock->{id}, get_cur_stock_idx();
    		}
		}
		print " </td>\n";  
	
	    # right buttons
	    print " <td width=\"$sep_width%\" valign=\"top\" align=\"center\">\n";
	    print_div("center");   
	    if (0 && defined($stock))
	    {
			my $ktitle = sprintf("%d juist van de %d adviezen.", $data->{num_ok}, $data->{num_ok}+$data->{num_nok});
    		print_pie_graph('small', $data->{num_ok}, $data->{num_nok}, $ktitle, $stock->{market}, 
    					"ShowKantelpunten.pl?stock=$stock->{stock}");
    		print "<br>\n";    
    		print_buttons($stock->{stock}, undef, 'aandeel', 'intraday', 'quotes', 'admin2');
		}
		else
		{
	    	print "&nbsp;\n";
    	}
	    print_div("end");
	    print " </td>\n";
	    print "</tr>\n";
	    print_table(0, "end");
    }

    if (defined($stock) && defined($news))
    {
        print "<small><br></small>\n";            
  		printf "<span><a href=\"ShowMain.pl?page=36%03d\" rel=\"nofollow\">Meer Nieuws</a></span>\n", $stock->{id}, get_cur_stock_idx();
        print "<small><br></small>\n";            
    }
    
   	print_banner_ads("nieuws_midden", defined($param->{mine}) ? "eigen" : "info_nieuws3", 1, 1) if (show_adds("nieuws_tabel"));
   	print_banner_ads("nieuws_midden", defined($param->{mine}) ? "eigen" : "info_nieuws3", undef, 1) if (show_adds("nieuws_tabel"));
   	print_search("news", "info_same", undef, undef);

    print_voet_start(defined($stock) ? undef : "yes");
    print_ads("belegger_klein");    
    print_empty_lines(1, 0);
    print_div("end");
}

sub print_heading(@)
{
    my ($heading, $comment, $img) = @_;
    
    printf "\n<!-- heading for %s -->\n", $heading;
    print  "<span style=\"color: rgb(0, 0, 153); font-family: verdana;\">\n";
    print  "$img" if (defined($img));
    printf " <small style=\"font-weight: bold;\"><big><big>%s<br></big></big>\n", $heading;
    print  " </small>\n";
    print  "</span>\n";
    print  "<span style=\"font-family: verdana;\" id=\"smallblue\">\n";
    printf " <small>%s</small>\n", $comment;
    print  "</span>\n";
}

sub show_news(@)
{
	my ($news, $page) = @_;
		
    my $script = make_home_script($page);
	my $stock;
	my $data;
    my $link;
    
    $link = print_link_unit("nieuws", "info_black", undef, undef, "get") if (show_adds("nieuws_link"));    
	
	if (defined($news->{stk1}) && ($news->{stk1} != 0))
	{
		$stock = get_stock($news->{stk1}, "old");
		if (defined($stock))
		{
	    	$data = get_quote_data($stock->{id});
		}
	}

	# Similar code is in News.pm This should be made a function
    my $descrip = $news->{description};
    # lets remove all <p> and </p>
    $descrip =~ s/<p>//g;
    $descrip =~ s/<\/p>//g;
    my $chop = index $descrip, "<";
  	if ($chop >= 0)
    {
	    $descrip = substr($descrip, 0, $chop);
	}

	my $desc = 	"Het laatste beursnieuws overzichtelijk bij je favoriete aandelen. ";
	$desc = "Het laatste beursnieuws van $stock->{index_name}: " if (defined($stock)); 
	$desc .= "$descrip Kantelpunten.nl alles onder handbereik voor de actieve belegger";
	
    my $pop_menu;
	my $top_menu;
    $pop_menu = make_pop_menu(1, $page, "news", $stock) if (defined($stock));
    $top_menu = make_top_menu(1, $page, "news", $stock) if (defined($stock));
	
   	print_header("+1d");
	print_pre_doc();
	print_head("Kantelpunten : Nieuws - $news->{title}", "hoofd", undef, undef, $script, "kantelpunt", undef, undef, $desc, "$news->{title} ", "top_script");
	print_body(defined($param->{mine}) ? "eigen" : "kantel", undef, undef, undef, undef, undef, undef, "kader", undef, $pop_menu, $top_menu);

	print_div("right");
	print "<span><small>" . strftime("%A %d %B %H:%M", localtime($news->{time})) . "</small></span>";
	print_div("end");
	print_div("center");
	print "<!-- google_ad_section_start -->\n";
	print_h2($news->{title});
   	print_banner_ads("main_banner", defined($param->{mine}) ? "eigen" : "info", undef, 1) if (show_adds("hoofd"));
   	print_banner_ads("main_banner", defined($param->{mine}) ? "eigen" : "info_nieuws3", undef, 2) if (show_adds("nieuws_tabel"));
	print_table(0, undef, 0, 0, 0, undef, "100%");
    print "<tr>\n";
	
    # left buttons
    print " <td width=\"25%\" valign=\"top\" align=\"center\">\n";
    print_div("center");   
    if (0 && defined($stock) && !is_old_stock($stock))
    {
#   		print_buttons(undef, $page, 'homepage');
#   		print "<br>\n";
   		print_buttons($stock->{stock}, undef, 'fav_add');
	}
	else
	{
    	print "&nbsp;\n";
   	}
    print_div("end");
    print " </td>\n";
    
    # center nieuws description
    print " <td width=\"50%\">\n";	
    print_div("center");
   	print "<span><small>$descrip...</small></span><br>\n"; 
	print_div("end");
   	print " </td>\n";

    # right buttons
    print " <td width=\"25%\" valign=\"top\" align=\"center\">\n";
    print_div("center");   
    if (0 && defined($stock))
    {
		my $ktitle = sprintf("%d juist van de %d adviezen.", $data->{num_ok}, $data->{num_ok}+$data->{num_nok});
   		print_pie_graph('small', $data->{num_ok}, $data->{num_nok}, $ktitle, $stock->{market}, 
   					"ShowKantelpunten.pl?stock=$stock->{stock}");
   		print "<br>\n";    
   		print_buttons($stock->{stock}, undef, 'aandeel', 'intraday', 'quotes', 'admin2');
	}
	else
	{
    	print "&nbsp;\n";
   	}
    print_div("end");
    print " </td>\n";
    print "</tr>\n";
    print_table(0, "end");

   	print "<!-- google_ad_section_end -->\n";

   	my $ref = "<a href=\"/pl/ShowNews.pl?item=$news->{id}&sup=$param->{sup}\" rel=\"nofollow\">";
    print "<br><span class=\"l_dgrey\"><small>${ref}<b>Lees het volledige bericht op belegger.nl</b></a></small></span>";
    print "<br><br>\n";
    if (defined($stock))
    {
	    print "<span class=\"bold\">Laatste headlines van $stock->{html_name}.</small></span><br><br>\n";
		$news = read_stock_news(undef, $stock->{stock}, $param->{records});
		print get_news_table($news, 1, $param->{records}, "90%", "kantel", undef, $link);
    }
    else
    {
	    print "<span class=\"bold\">Laatste $param->{records} headlines.</small></span><br><br>\n";
		$news = read_news(undef, undef, $param->{records});
		print get_news_table($news, 0, $param->{records}, "90%", "kantel", undef, $link);
    }
   	print_banner_ads("nieuws_midden", defined($param->{mine}) ? "eigen" : "info_nieuws3", 1, 2) if (show_adds("nieuws_tabel"));
	print_search("news", "info_same", undef, undef);
    print_voet_start(defined($stock) ? undef : "yes");
    print_ads("belegger_klein");    
    print "<br>\n";
	print_div("end");
    print_body("end_kader");
    print_post_doc();
}