#!/bin/perl -w

use strict;

use CGI;
use CGI qw(:standard *table *TR *th *td *ul *ol);
use Gramene::Page; 
use Gramene::Literature::RefCuration;



my $page_title = "Curation tool";
my $q = CGI->new();
print $q->header;
my $page = Gramene::Page->new(Apache->request);

my $doc_root=Apache->request->document_root;
print STDERR "\n\nadd_ref: $doc_root\n";
print $page->start_html( -title=>$page_title);
print $page->start_body();


########################


print <<SMALLBAR;
<table>
  <tr>
    <td>&nbsp;&nbsp;<img src="/images/icons/grain_icon.jpg" alt="grain_icon" height=16 width=16 align="top">
    </td>
    <td>
      &nbsp;<a href="/literature/" class="gopage"><b>Literature Home</b></a>&nbsp;
      |&nbsp;<a href="/newsletters/rice_genetics/" class="gopage"><b>Rice Genetics Newsletters</b></a>&nbsp;
      |&nbsp;<a href="/db/admin/literature/add_pubmed" class="gopage"><b>Tool for adding PubMed records</b></a>&nbsp;
      |&nbsp;<b>Tool for adding general references</b>&nbsp;
      |&nbsp;<a href="/db/admin/literature/edit_ref" class="gopage"><b>Tool for editing references</b></a>&nbsp;
    </td>
  </tr>
</table>
<p></p>
SMALLBAR

print $q->table( {-border=>'0',
		  -cellspacing=>'0',
		  -cellpadding=>'3',
		  -width=>'98%',
                  -align=>'CENTER'},
		 $q->start_form(-method=>'GET'),

                 $q->Tr( {-align=>'CENTER', -nowrap=>'nowrap'},
	                 $q->th( {-align=>'CENTER',
				  -colspan=>'2',
				  -class=>'searchtitle'},
			         "Please provide the following information" )
		
		       ),
		 $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},
			 $q->td( {-align=>'CENTER', -valign=>'CENTER', -colspan=>'2'},
				 "<b><em>Note: Fields with ",
			         "<span class='alert'>**</span>",
			         "are mandatory.</em></b>" )
			),
		
		 $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},
			 $q->td( {-align=>'RIGHT', -valign=>'CENTER'},
				 "<span class='alert'>Title:</span>",
			         "&nbsp;&nbsp;&nbsp;" ),
			 $q->td( {-align=>'LEFT', -valign=>'CENTER'},
				 $q->textfield( -name=>'title',
						-size=>60,
						-maxlength=>1000 ),
			         "<span class='alert'>**</span>" )
		
			),
		 $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},
			 $q->td( {-align=>'RIGHT', -valign=>'CENTER'},
				 "<span class='alert'>Journal/Book:</span>",
			         "&nbsp;&nbsp;&nbsp;" ),
			 $q->td( {-align=>'LEFT', -valign=>'CENTER'},
				 $q->textfield( -name=>'source',
						-size=>40,
						-maxlength=>100 ),
			         "<span class='alert'>**</span>" )
		
			),
		 $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},
			 $q->td( {-align=>'RIGHT', -valign=>'CENTER'},
				 "<span class='alert'>Year:</span>",
			         "&nbsp;&nbsp;&nbsp;" ),
			 $q->td( {-align=>'LEFT', -valign=>'CENTER'},
				 $q->textfield( -name=>'year',
						-size=>10,
						-maxlength=>100 ),
				 "<span class='alert'>**</span>",
				 "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
				 "<span class='alert'>Volume:</span>",
			         "&nbsp;&nbsp;&nbsp;",
				 $q->textfield( -name=>'volume',
						-size=>10,
						-maxlength=>100 ) )
                
		       ),
		 $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},
			 $q->td( {-align=>'RIGHT', -valign=>'CENTER'},
				 "<span class='alert'>Start Page:</span>",
			         "&nbsp;&nbsp;&nbsp;" ),
			 $q->td( {-align=>'LEFT', -valign=>'CENTER'},
				 $q->textfield( -name=>'start_page',
						-size=>10,
						-maxlength=>100 ),
				 "<span class='alert'>**</span>",
				 "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
				 "<span class='alert'>End Page:</span>",
			         "&nbsp;&nbsp;&nbsp;",
				 $q->textfield( -name=>'end_page',
						-size=>10,
						-maxlength=>100 ),
			         "<span class='alert'>**</span>" )
                
		       ),
		 
		 $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},
			 $q->td( {-align=>'RIGHT', -valign=>'CENTER'},
				 "<span class='alert'>Authors:</span>",
			         "&nbsp;&nbsp;&nbsp;" ),
			 $q->td( {-align=>'LEFT', -valign=>'CENTER'},
				 $q->textfield( -name=>'author',
						-size=>60,
						-maxlength=>1500 ),
			         "<span class='alert'>**</span>" )
		
			),
		 $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},
			 $q->td( "&nbsp;&nbsp;&nbsp;" ),
			 $q->td( {-align=>'LEFT', -valign=>'CENTER'},
				 "<p><em>Note: Author names must be in the format of LastName-FirstInitial. Multiple names should be separated by commas.</em><br><em>Example: <span class='alert'>Dickson-D, Cyranoski-D</span></em></p>" )
		
			),


		 $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},
			 $q->td( {-align=>'RIGHT', -valign=>'CENTER'},
				 "<span class='alert'>Reference url:</span>",
			         "&nbsp;&nbsp;&nbsp;" ),
			 $q->td( {-align=>'LEFT', -valign=>'CENTER'},
				 $q->textfield( -name=>'ref_url',
						-size=>60,
						-maxlength=>200 ))
                    ),

                $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},  
                            $q->td( "&nbsp;&nbsp;&nbsp;" ),    
                          $q->td( {-align=>'LEFT', -valign=>'CENTER'},
				 "<p><em>Note: Reference url must be the complete url starting with http:// or ftp://. Multiple urls should be separated by spaces.</em></p>" )

                        
		
			),



		 $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},
			 $q->td( {-align=>'RIGHT', -valign=>'CENTER'},
				 "<span class='alert'>Abstract:</span>",
			         "&nbsp;&nbsp;&nbsp;" ),
			 $q->td( {-align=>'LEFT', -valign=>'CENTER'},
				 $q->textarea( -name=>'abstract',
					       -rows=>20,
					       -columns=>60 ) )
		
			),
		 
		 $q->Tr( {-align=>'CENTER',
			  -valign=>'CENTER',
			  -nowrap=>'nowrap',
			  -class=>'searchbody'},
			 $q->td( {-align=>'CENTER',
                                  -colspan=>'2'},
				 $q->submit( -name=>'submit',
					     -value=>'Submit' ),
				 "&nbsp;&nbsp;&nbsp;",
			         $q->defaults(-name=>'Clear') )
			),   
	
		 $q->end_form() );   #change the reset button to defaults for resetting all fields to default value

#print $q->hr();

###########################

unless( $q->param() ) {

#print <<FRONTPAGE;
#<hr>
#<table border="0" cellspacing="0" cellpadding="0" width="98%" align="CENTER"><tr><td>
#<ul>
#  <li>Enter one or more search terms.</li>
#  <li>Enter author names as "smith je", "smith j", or "smith". Initials are optional.</li>
#  <li>Enter journal titles.</li>
#</ul>
#</td></tr></table>
#FRONTPAGE

}  




if( $q->param("submit") ) {

    my $title = $q->param("title");
    my $source = $q->param("source");
    my $year = $q->param("year");
    my $volume = $q->param("volume");
    my $start_page = $q->param("start_page");
    my $end_page = $q->param("end_page");
    my $author = $q->param("author");
    my $abstract = $q->param("abstract");
    my $ref_url = $q->param("ref_url");
     
  if($title && $source && $year && $start_page && $end_page && $author){

    #$abstract =~ s/\n//g;

    # Process the title
    my @tps = split( /\n/, $title );
    foreach my $tp ( @tps ) {
        $tp =~ s/^\s+//;
	$tp =~ s/\s+$//;
    }
    $title = join( " ", @tps );

    # Process the abstract
    my @aps = split( /\n/, $abstract );
    foreach my $ap ( @aps ) {
        $ap =~ s/^\s+//;
	$ap =~ s/\s+$//;
    }
    $abstract = join( " ", @aps );

    my $test_word = $title;
    $test_word  =~ tr/A-Z/a-z/;    #in lower case
    $test_word =~ tr/a-z//cd;     #delete non-letters

    if( $test_word ) {
       
	my $db = Gramene::Literature::RefCuration->whatever();
	$db->connect_to_ora( );

	my ( $id_ref, $title_ref ) = $db->get_candidates( $year, $start_page, $end_page, $author );
	my @possible_ids = @$id_ref;
	my @possible_titles = @$title_ref;

	if( @possible_ids ) {

	    print $q->table( {-border=>'0',
			  -cellpadding=>'4',
			  -width=>'98%',
			  -align=>'CENTER'},
			 $q->Tr( $q->th( {-class=>'resultstitle',
					  -align=>'CENTER'}, 
					 "It's very possible that we already have this reference in our database. Please check the following records before you have it loaded." ) ) );

	    print start_table( {-width=>'98%', -cellpadding=>'4', -border=>'0', -align=>'CENTER'} );
	    print $q->Tr( $q->td( {-class=>'resultstitle',
			       -align=>'CENTER'}, "&nbsp;" ),
		      $q->td( {-class=>'resultstitle',
			       -align=>'CENTER'}, "Reference id" ),
		      $q->td( {-class=>'resultstitle',
			       -align=>'CENTER'}, "Title" ) );

	    for( my $i=1; $i<=(scalar @possible_ids); $i++ ) {

	        print $q->Tr( {-valign=>'TOP'},
			  $q->td( {-class=>'resultsbody',
				   -align=>'CENTER'}, $i ),
			  $q->td( {-class=>'resultsbody',
				   -align=>'CENTER'},  $possible_ids[$i-1] ),
			  $q->td( {-class=>'resultsbody',
				   -align=>'CENTER'}, $q->a( {-href=>"/db/literature/pub_search?ref_id=$possible_ids[$i-1]"}, $possible_titles[$i-1] ) ) );
	    }

	    print end_table;
	} #End if

	print $q->start_form(-method=>'GET');

	print $q->hidden( -name=>'title', -value=>$title, -override=>'1' );
	print $q->hidden( -name=>'source', -value=>$source, -override=>'1' );
	print $q->hidden( -name=>'year', -value=>$year, -override=>'1' );
	print $q->hidden( -name=>'volume', -value=>$volume, -override=>'1' );
	print $q->hidden( -name=>'start_page', -value=>$start_page, -override=>'1' );
	print $q->hidden( -name=>'end_page', -value=>$end_page, -override=>'1' );
	print $q->hidden( -name=>'author', -value=>$author, -override=>'1' );
	print $q->hidden( -name=>'abstract', -value=>$abstract, -override=>'1' );
        print $q->hidden( -name=>'ref_url', -value=>$ref_url, -override=>'1');

	print $q->table( {-border=>'0',
			  -cellpadding=>'4',
			  -width=>'98%',
			  -align=>'CENTER'},
			  $q->Tr( $q->th( {-class=>'resultstitle',
					   -align=>'CENTER'}, 
					  "If you want to have the reference loaded, click the Load button. Otherwise, click the Cancel button." ) ),
		          $q->Tr( {-align=>'CENTER',
				      -valign=>'CENTER',
				      -nowrap=>'nowrap',
				      -class=>'resultsbody'},
				     $q->td( $q->submit( -name=>'load_it',
							 -value=>'Load' ),
			                     "&nbsp;&nbsp;&nbsp;&nbsp;",
					     $q->submit( -name=>'load_it',
							 -value=>'Cancel' ) ) )
		       );
	
	    
	print $q->end_form();



    }
  }
 }


#####################################################

if( $q->param("load_it") ) {

    if( $q->param("load_it") eq "Load" ) {

        my $title = $q->param("title");
	my $source = $q->param("source");
	my $year = $q->param("year");
	my $volume = $q->param("volume");
	my $start_page = $q->param("start_page");
	my $end_page = $q->param("end_page");
	my $author = $q->param("author");
	my $abstract = $q->param("abstract");
        my $ref_url = $q->param("ref_url");
  
	my $db = Gramene::Literature::RefCuration->whatever();
	$db->connect_to_ora( );

	$db->set_fields( $title, $source, $year, $volume, $start_page, $end_page, $author, $abstract,$ref_url );

	$db->load_references();
	$db->load_authors();
	
	$db->do_extra_work();

	my $ref_id = $db->get_new_load();

	if( $ref_id ) {

         
	    print $q->hr();
	    print $q->table( {-border=>'0',
			  -cellpadding=>'2',
			  -width=>'98%',
			  -align=>'CENTER'},
			 $q->Tr( $q->th( {-class=>'resultstitle',
					  -align=>'CENTER'}, 
					 "The reference has been loaded.",
                                         "The reference id is ",
					 $q->a( {-target=>'reference',-href=>"/db/literature/pub_search?ref_id=$ref_id"}, $ref_id ) ) ),

                 $q->Tr( $q->th( {-class=>'resultstitle',
					  -align=>'CENTER'}, 
					 "To continue adding reference, click",
                                        
					 $q->a( {-href=>"/db/literature/add_ref"}, "here" ) ) )
			 
		       );
	    
	}
    }
}


print $page->end_body;





