#!/usr/local/bin/perl

use lib '/usr/local/gramene/lib/perl';

use Basset::Object;
use JIM::CGI;
use Gramene::Config;
use CGI qw(param);

my $config = Gramene::Config->new();

my $faq_config = $config->get('faq');

Basset::Object->conf->{'Basset::DB'}->{'-dsn'} = $faq_config->{'db_dsn'};
Basset::Object->conf->{'Basset::DB'}->{'-user'} = $faq_config->{'db_user'};
Basset::Object->conf->{'Basset::DB'}->{'-pass'} = $faq_config->{'db_pass'};
Basset::Object->conf->{'Basset::Template'}->{'-document_root'} =
$faq_config->{'template_dir'};
Basset::Object->conf->{'Basset::Template'}->{'-caching'} = 0;
Basset::Object->conf->{'Basset::Template'}->{'-cache_dir'} = '/tmp/cache';
Basset::Object->types->{'user'} = 'JIM::User';
Basset::Object->types->{'session'} = 'JIM::Session';
Basset::Object->types->{'template'} = 'Gramene::Template';
Basset::Object->types->{'extractor'} = 'JIM::CGI';

Basset::Object->pkg_for_type('persistentobject')->driver(undef);
Basset::Object->pkg_for_type('template')->default_bg_color('white');
#Basset::Object->pkg_for_type('template')->alternate_bg_color('#DDDDDD');
Basset::Object->pkg_for_type('template')->alternate_bg_color('#AACE6D');
#Basset::Object->pkg_for_type('template')->default_sub_bg_color('#EEEEEE');
##Basset::Object->pkg_for_type('template')->default_sub_bg_color('#ffffcc');
#Basset::Object->pkg_for_type('template')->alternate_sub_bg_color('#BBBBBB');
#Basset::Object->pkg_for_type('template')->alternate_sub_bg_color('#cae8a0');
##Basset::Object->pkg_for_type('template')->alternate_sub_bg_color('#eef9de');

Basset::Object->pkg_for_type('session')->cookiename('gramenebassetcookie');
Basset::Object->conf->{'JIM::Session'}->{'-hours'} = 8;

my $Extractor = 'JIM::CGI';#Basset::Object->pkg_for_type('extractor');
$Extractor->extractor_stack({});
my $Machine = Basset::Object->pkg_for_type('machine');
my $Template = Basset::Object->pkg_for_type('template');

my $mchn = $ENV{"PATH_INFO"} || $Extractor->extract('m') || 'FAQ.mchn';

$mchn =~ s/\.mchn$//;
$mchn =~ s!^/!!g;
$mchn =~ s/_/::/g;
$mchn =~ s!/!::!g;
$mchn = "Gramene::$mchn";

eval "use $mchn";

if ($@) {
	$Extractor->redirect('/');
}
else {
eval ;
	my $state = $Extractor->extract('state') || 'start';
	my $m = $mchn->new('state' => $state) or die $mchn->errstring;
	$m->$state() or do {
		print STDERR $mchn->errstring, "\n";
		print "Content-type:text/html; charset=iso-8859-1\n\n";
		print <<"		eHTML";
			<html>
				<head><title>Error</title></head>
				<body>
					An error occurred! It was @{[ $m->errstring ]}!<br>
					<a href = "/">Home</a>
				</body>
			</html>

		eHTML
	}
};

