/***********************************************************************
**                                                                    **
**  This Javascript module alters the search box to have a graphical  **
**  drop down akin to the Firefox drop down on server load            **
**                                                                    **
**    Global variables: ENSEMBL_SEARCH_BOX - Flag to make sure that   **
**                      we only populate the drop down box once!!     **
**                                                                    **
**    Public functions: remove_search_index(code);                    **
**                      add_search_index(code,label);                 **
**                                                                    **
***********************************************************************/

  var ENSEMBL_SEARCH_BOX = 0;



var site_action_lookup = new Hash();
  site_action_lookup.set('ensembl_all_search' ,'/search');
  //site_action_lookup.set('ensembl_genomes_search' ,'/search');
  site_action_lookup.set('ensembl_bacteria_search' ,'http://bacteria.ensembl.org/Escherichia_shigella/Escherichia_coli_K12/psychic?species=all');
  site_action_lookup.set('ensembl_protists_search','http://protists.ensembl.org/common/psychic');
  site_action_lookup.set('ensembl_fungi_search','http://fungi.ensembl.org/common/psychic');
  site_action_lookup.set('ensembl_plants_search','http://plants.ensembl.org/common/psychic');
  site_action_lookup.set('ensembl_metazoa_search'  ,'http://metazoa.ensembl.org/common/psychic');
  site_action_lookup.set('ensembl_vertibrates_search','http://www.ensembl.org/common/psychic');
  site_action_lookup.set('ebi','http://protists.ensembl.org/common/psychic?site=ebi');


  function remove_search_index(code) {
    /** Remove a search index entry from the drop down box (if it exists)

    PUBLIC - e.g. remove_search_index( 'ebi' );
     **/
    var n = $('se_'+code);
    if(n) n.parentNode.removeChild(n);
  }

function add_search_index(code,label) {
    /** Add a search index entry to the drop down box
     
     Public - e.g. add_search_index( 'vega', 'Vega search' );
     
     Notes:
     
     * The image "/i/search/{code}/.gif" should exist in the
     web-tree as a 16x16 gif
     **/
    
    if(!$('se_mn')) return;   // Sanity check can't add to what doesn't exist!
    if($('se_'+code)) return; // Don't open up another search box with this link!
    var n = Builder.node( 'dt', { id: 'se_'+code }, [
			      Builder.node( 'img', { src: '/static/images/search/'+code+'.gif', alt: '' } ),
			      label
			  ]);
    $('se_mn').appendChild( n );
    // Add an onclick event to the "fake" drop down box
    Event.observe(n, 'click', function(event) {
		      var el = Event.element(event);
		      if(el.tagName!='DT') el = el.up('DT');
		      var name = el.id.substr(3);                 // id is "se_{name}"
		      
		      $('se_im').src  = '/static/images/search/'+name+'.gif';
		      $('se_mn').hide();
		      $('se_si').value = 'ensembl';
		      //		    if (name.match(/ebi/)) { $('se_si').value = 'ebi'};
		      Cookie.set( 'ENSEMBL_SEARCH','ensembl' );
		      $('se_but').up('form').action = site_action_lookup.get(name);
		      var genomic_unit;
		      console.log(name);
		      if (genomic_unit = ( /_(\w+)_/.exec(name)[1])) {
			       $('search_target').value = genomic_unit;
		      }
		      //	console.log( $('se_but').up('form').action) ;
		      
		  });
}

function __init_ensembl_web_search() {
 	Cookie.unset( 'ENSEMBL_SEARCH');
      $('search_target').value = 'all';

      var form =   $('se_but').up('form');

//       Event.observe(form, 'submit', function(event){
// 		      if (!form.action.match(/\w+/)){
// 			alert( 'Please select a genomic unit to search' );
// 			var box  = $('se');
// 			var menu = $('se_mn');
// 			Position.clone(box,menu,{setWidth:false,offsetTop:box.getHeight()-4});
// 			menu.toggle();
// 			event.stop();
// 		      }

// 		    });



/** Initialize the search box... make it a "graphical" drop down and add
    entries for Ensembl, EBI and Sanger

    PRIVATE - should only be executed once on page load
**/

    if( ENSEMBL_SEARCH_BOX==1 ) return; // Only execute once
    ENSEMBL_SEARCH_BOX = 1;

    if($('se_but')){                    // Only if search box exists...
      $('se').parentNode.appendChild(
        Builder.node( 'dl', {id: 'se_mn', style: 'display:none' } )
      );
      Event.observe($('se_but'),'click',function(event){
        var box  = $('se');
        var menu = $('se_mn');
        Position.clone(box,menu,{setWidth:false,offsetTop:box.getHeight()-4});


        menu.toggle();
      });

      Event.observe($('se_b'),'click',function(event){
			var name =       $('se_si').value ;
			var genomic_unit = ( /_(\w+)_/.exec(name)[1]);
//			console.log(genomic_unit);

		    })

      // Create the search list!
      //add_search_index( 'ensembl_all_search', 'Ensembl search all species' );
      add_search_index( 'ensembl_all_search', 'Ensembl Genomes search' );
      add_search_index( 'ensembl_bacteria_search', 'Ensembl Bacteria search' );
      add_search_index( 'ensembl_protists_search', 'Ensembl Protists search' );
      add_search_index( 'ensembl_fungi_search', 'Ensembl Fungi search' );
      add_search_index( 'ensembl_plants_search', 'Ensembl Plants search' );
      add_search_index( 'ensembl_metazoa_search',  'Ensembl Metazoa searcg' );
      add_search_index( 'ensembl_vertebrates_search', 'Ensembl search (vertebrates)'     );
      add_search_index( 'ebi',     'EBI search'     );

    }



    //     var name = Cookie.get( 'ENSEMBL_SEARCH' );
    //     if( name ) {
    // //      $('se_im').src = '/i/search/'+name+'.gif';
    //       $('se_si').value = name;

    //     }else{

    //       if (location.href.toQueryParams([separator = ';']).species
    // 	  && location.href.toQueryParams([separator = ';']).species != 'all') {
    // 	alert('species search');
    // //	$('se_im').src = '/i/search/ensemblthis.gif';
    // 	$('se_si').value = 'ensemblgenomes_species';

    //       } else {
    // 	$('se_im').src = '/i/search/ensemblunit.gif';
    // 	$('se_si').value = 'ensemblunit';

    //       }
    //     }
    }


  addLoadEvent( __init_ensembl_web_search );


