#!/usr/bin/perl -w

use strict;

use CGI;
#use CGI::Carp qw(fatalsToBrowser);
use Template;

my $q = CGI->new();
my $t = Template->new({
	INCLUDE_PATH => "templates",
	POST_CHOMP => 1,
	PRE_CHOMP => 1
});

my $pages = {
	__default__ => "page_index.tmpl",
	code        => "page_code.tmpl",
	software    => "page_software.tmpl",
	misc        => "page_misc.tmpl",
	faq         => "page_faq.tmpl",
	cedict      => "page_cedict.tmpl",
	cedict1     => "page_cedict1.tmpl",
};

main();

sub main
{
	my $output = '';
	if (defined $q->param('page')) {
		$output = handle_page();
	} elsif (defined $q->param('misc')) {
		$output = handle_misc();
	} else {
		$output = handle_page();
	}
	print $q->header(-charset => 'utf-8');
	print $output;
}

sub handle_page
{
	my $p = $q->param('page');
	$p = '__default__' unless defined $p && length $p && exists $pages->{$p};
	return output($pages->{$p});
}
sub handle_misc
{
	my $m = $q->param('misc');
	return handle_page() unless defined $m;
	return handle_page() unless $m =~ /^[a-zA-Z0-9_-]+$/;
	$m = "misc_" . $m . ".tmpl";
	$m = $pages->{misc} unless -e "templates/$m";
	return output($m);
}

sub output
{
	my $file = shift;
	my $rv = '';
	$t->process($file, {}, \$rv) or die $t->error();
	return $rv;
}

