#!/usr/bin/perl

use MBGD::WWW;
require "MBGD_Conf.pl";

#use UserInfo;
#require 'libMBGDUserInfo.pl';
#require 'libCGI.pl';

$DP = "$CMD_dp2";
$ENV{'PAMFILE'} = "$ENV{'MBGD_HOME'}/etc/allpamout.jtt";

($dbname) = ($ENV{'MYSQL_DB'} =~ /dbi:mysql:(.*)$/);

$| = 1;

#print "content-type: text/html; charset=us-ascii\n\n";
#print "<HTML><HEAD><TITLE>Alignment</TITLE></HEAD>\n";
#print "<BODY bgcolor=\"#e0f2e0\">\n";
#%Args = &CGI_GetArgs;

$WWW = MBGD::WWW->new(title=>"Sequence Alignment");
%Args = $WWW->cgiGetArgs;
$WWW->start_html;
$WWW->page_header(title=>"Alignment $Args{seq1} vs $Args{seq2}");

$Seq = &get_seq( $Args{'seq1'}, $Args{'seq2'} );


$AliOpt = "-l";

print "<PRE>\n";

open(DP, "$DP -P0 -G -d $AliOpt <<EOF
$Seq
EOF |") || die "Open error $DP";
while (<DP>) {
	if (/l=([0-9]+),m=([0-9]+)\(([0-9\.]+\%)\),s=([0-9]+),PAM=\(([0-9]+).*\),s0=([0-9]+)/) {
		printf "  %-13s: %5d\n", "Align Length", $1;
##		print "  Match       : $2\n";
		printf "  %-13s: %5.1f\n", "Identity", $3;
		printf "  %-13s: %5d\n", "PAM", $5;
		printf "  %-13s: %5d\n", "Score(PAM$5)", $4;
		printf "  %-13s: %5d\n", "Score(PAM250)", $6;
	} else {
		print;
	}
}
close(DP);
print "</PRE>\n";
print "</BODY></HTML>\n";

sub get_seq {
	local(@entnames) = @_;
	local($Seq);
	local($sp, $ent, $sqn, $en, $uid, @qseqn, @seqn);

	foreach $en (@entnames) {
		($sp, $ent) = split(/:/,$en);
		if ($sp eq 'qry') {
			push(@qseqn, $en)
		} else {
			push(@seqn, $en)
		}
	}
	if (@qseqn) {
##		%Cookies = &CGI_GetCookies();
##		$uid = $Cookies{'uid'};
##		my $uinfo = UserInfo->new($uid);
		my $uinfo = $WWW->uInfo;
		%QuerySeq = $uinfo->getQuerySequenceAsHash;
###		%QuerySeq = &getQuerySequences($uid);
		foreach $sqn (@qseqn) {
			$Seq .= $uinfo->getQuerySequence(\%QuerySeq, $sqn);
###			$Seq .= $QuerySeq{$sqn};
		}
	}
	if (@seqn) {
		local($entnames) = join(' ', @seqn);

		open(BGET,
#		  "$CMD_bget -p $FILE_dbtab $entnames |") || die "Error $CMD_bget";
		  "$CMD_mbget -dbname=$dbname -f $entnames |") || die "Error $CMD_bget";
		while (<BGET>) {
			$Seq .= $_;
		}
		close(BGET);
	}

	$Seq;
}
