/***************************************************************************
 * Program: blast.js
 * Author: Joe Reynoldson
 * Date: 12/1/05
 * Description: This program contains the onload functionality of the blast.cgi
 * form which sets up the state and callbacks of the type ahead organism search
 * elements. It also provides functions for showing/hiding elements.
 * ************************************************************************/

var labels = new Array;
labels["toggleAdvancedParams"] = new Array;
labels["toggleAdvancedParams"]["block"] = "Hide Advanced Parameters";
labels["toggleAdvancedParams"]["none"]  = "Display Advanced Parameters";

// define a method which fires when the page is fully loaded
window.onload=function(){
	var clrBtn; // button object to clear type-ahead
	var toggleBtn; // button object toggle advanced options
	var targetDiv; // div containing advanced options
	var resultDiv; // div containing organisms which matched a query
	delAllRows('blast_db');

	if(document.getElementById){
		clrBtn = document.getElementById("clearBtn");
		toggleBtn = document.getElementById("toggleAdvancedParams");
		targetDiv = document.getElementById("toggleAdvancedParamsTarget");
		resultDiv = document.getElementById("result_list");
	}
	else if(document.all){
		clrBtn = document.all['clearBtn'];
		toggleBtn = document.all['toggleAdvancedParams'];
		advancedDiv = document.all['AdvancedParameters'];
		resultDiv = document.all['result_list'];
	}

	// assign clear button callback
	clrBtn.onclick = clearSearch;

	// assign toggle button callback and initialize
	if (toggleBtn != null) {
		toggleBtn.onclick = toggleObj;
		toggleBtn.innerHTML = labels["toggleAdvancedParams"]["none"];
		targetDiv.style.display = "none";
	}

	// initialize advanced parameters as none
	resultDiv.style.display = "none";

	addSpeciesRow();
}

// toggleDisplay will toggle the display of an object
function toggleDisplay(tObj){
	var display = "none";
	if (tObj.style.display == "none"){ display = "block"; }
	tObj.style.display = display;
	return display;
}

/* toggleObj is a button callback which toggles the display of an object
 * associated with a button, and toggles the content of the button based on
 * the target object's display */
function toggleObj(){
	var btnId = this.id;
	var targetObj;
	var toggleBtn;

	if(document.getElementById){
		toggleBtn = document.getElementById(btnId);
		targetObj = document.getElementById(toggleBtn.id + "Target");
	}
	else if(document.all){
		toggleBtn = document.all[btnId];
		targetObj = document.all[toggleBtn.value];
	}
	var displayState = toggleDisplay(targetObj);
	toggleBtn.innerHTML = labels[btnId][displayState];

	return false;
}

function IDhelp()
{
  var generator=window.open('','name','height=300,width=600');

  generator.document.write('<html><head><title>Sequence IDs as BLAST inputs</title>');
  generator.document.write('</head><body>');
  generator.document.write('<div align=justify><p>For sequence IDs, you can use gi# (e.g., 63082055), or acc# (e.g., DN949669) or contig ID (e.g., ZmGSStuc04-27-04.0.1).</p><p>For multiple IDs, each ID should in one line as shown in the example below: <p><b>63082055<br>DN949669<br>ZmGSStuc04-27-04.0.1</b><br></pre>');
  generator.document.write('<p><center><a href=\"javascript:self.close()\">Close this window</a></center></p>');
  generator.document.write('</body></html>');
  generator.document.close();
}

