#!/usr/local/bin/perl 

use strict;
use EnsWeb;
use SiteDefs;
use ExtURL;

use CGI qw(:standard :html3);
use Bio::EnsEMBL::ExternalData::Family::FamilyAdaptor;

my $q = new CGI;
print $q->header();
print EnsWeb::make_cgi_header(('initfocus'=>1));

my $family = $q->param('family');

print EnsWeb::print_form($family, "family");

if (defined($family)) { 
    process_Family($family);
}

print EnsWeb::make_cgi_footer();

############################################################################
sub process_Family {

    my ($family_id) = @_;
    my $family;
    my $db;
    my $ensdb;
	eval {
    	my $locator = &EnsWeb::get_locator();
    	$ensdb =  Bio::EnsEMBL::DBLoader->new($locator);

    	my $temp_db = Bio::EnsEMBL::DBSQL::DBAdaptor->new(
							-dbname=>$ENSEMBL_FAMILY,
							-host=>$ENSEMBL_HOST,
							-port=>$ENSEMBL_HOST_PORT,
							-user=>$ENSEMBL_DBUSER,
							-pass=>$ENSEMBL_DBPASS
						    	);
    	$db = Bio::EnsEMBL::ExternalData::Family::FamilyAdaptor->new($temp_db);  
	};
    if ($@){
	print &ensembl_exception("Family database is unavailable",$@);
	&EnsWeb::ensembl_exit();
    }

    eval {
	$family = $db->get_Family_by_id($family_id); 
    };
    
    if ($@){
	print &ensembl_exception("The database contains no families with id $family_id",$@);
	&EnsWeb::ensembl_exit();
    }
    
    my @genes = $family->each_ens_gene_member;

    my @swissprot = $family->each_member_of_db('SPTR');

    my $urls = ExtURL->new; 
    
    ################
    # print heading
    ################
    print qq(<H3>Ensembl Protein Family $family_id members</H3>\n);
    print "<b>Consensus Annotation: ".$family->description."</b>\n";
    print "<p>The annotation confidence score of this family is ".$family->annotation_confidence_score."</p>\n";
    print "<P><small>Families generated by TRIBE: Enright A.J, Van Dongen S., Ouzounis C.A., [paper in preparation (2000)]</small><br><br></P>\n";
    print("<center>\n");

    if (scalar(@genes)){
	############################ 
        # print ensembl genes table
        ############################    
        print <<EOH;
        <table align="center" width="60%" border="0" cellspacing="0" cellpadding="0">
        <tr> 
    	<td colspan="4" class="black"><img src="/gfx/blank.gif" width="1" height="1"></td> 
        </tr>
        <tr valign="middle" class="yellow2">
          <th><img src="/gfx/blank.gif" width="15" height="22"></th>
          <th align="center" class="arial">Ensembl Gene</th>
          <th align="center" class="arial">Description</th>
          <th><img src="/gfx/blank.gif" width="15" height="22"></th>
        </tr>
        <tr> 
    	<td colspan="4" class="black"><img src="/gfx/blank.gif" width="1" height="1"></td>
        </tr>
    
EOH
        foreach my $gene (@genes) {

	my $id = $gene->primary_id;
	my $g=$ensdb->gene_Obj->get($id); 
	my $desc = $g->description;

	print <<EOS;
    	<TR class="yellow1">
    	    <td><img src="/gfx/blank.gif" width="15" height="22"></td>
    	    <TD align="center"><a href="/perl/geneview?gene=$id">$id</a></TD>
    	    <TD align="center">$desc</TD>
    	    <td><img src="/gfx/blank.gif" width="15" height="22"></td>
    	</TR>
EOS
        }
  	print<<EOS;
    	<tr>
    	    <td colspan="4" class="grey1"><img src="/gfx/blank.gif" width="1" height="1"></td>
    	</tr>
        </table><br><br>
EOS
    }

    if (scalar(@swissprot)){
	######################## 
        # print swissprot table
        ########################    
        print <<EOH;
        <table align="center" width="60%" border="0" cellspacing="0" cellpadding="0">
        <tr> 
    	<td colspan="3" class="black"><img src="/gfx/blank.gif" width="1" height="1"></td> 
        </tr>
        <tr valign="middle" class="yellow2">
          <th><img src="/gfx/blank.gif" width="15" height="22"></th>
          <th align="center" class="arial">SWISSPROT & SPTREMBL</th>
          <th><img src="/gfx/blank.gif" width="15" height="22"></th>
        </tr>
        <tr> 
    	<td colspan="3" class="black"><img src="/gfx/blank.gif" width="1" height="1"></td>
        </tr>
    
EOH
        foreach my $gene (@swissprot) {
    	
	my $id = $gene->primary_id;
	my $url = $urls->get_url("SWISSPROT",$id);
	print <<EOS;
    	<TR class="yellow1">
    	    <td><img src="/gfx/blank.gif" width="15" height="22"></td>
    	    <TD align="center"><a href="$url">$id</a></TD>
    	    <td><img src="/gfx/blank.gif" width="15" height="22"></td>
    	</TR>
EOS
        }
  	print<<EOS;
    	<tr>
    	    <td colspan="3" class="grey1"><img src="/gfx/blank.gif" width="1" height="1"></td>
    	</tr>
        </table><br><br>

EOS
    }
    
    
    
}
    
