/*
	This is the JavaScript file for the AJAX Suggest Tutorial

	You may use this code in your own projects as long as this 
	copyright is left	in place.  All code is provided AS-IS.
	This code is distributed in the hope that it will be useful,
 	but WITHOUT ANY WARRANTY; without even the implied warranty of
 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
	
	For the rest of the code visit http://www.DynamicAJAX.com
	
	Copyright 2006 Ryan Smith / 345 Technical / 345 Group.	

*/
//----------------------------------------------------------------------------
// Gets the browser specific XmlHttpRequest Object
//----------------------------------------------------------------------------
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("unsupported browser.");
	}
}
//----------------------------------------------------------------------------
// Our XmlHttpRequest object to get the auto suggest
//----------------------------------------------------------------------------
var searchReq = getXmlHttpRequestObject();

//----------------------------------------------------------------------------
// Called from keyup on the search textbox.
// Starts the AJAX request.
// src : calling prgrm. ('cgi' or none)
//----------------------------------------------------------------------------
function searchGeneSuggest(frm) {
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById('geneSearch').value);
		if(frm == 'cgi'){
			searchReq.open("GET", '../PrefixMatchGeneNames?GNAME=' + str, true);
			searchReq.onreadystatechange = handleSearchGeneSuggest; 
			searchReq.send(null);
		} else {
			searchReq.open("GET", 'PrefixMatchGeneNames?GNAME=' + str, true);
			searchReq.onreadystatechange = handleSearchGeneSuggest; 
			searchReq.send(null);
		}
	}		
}
function searchBacSuggest(frm) {
	var bacNameStr = document.getElementById('bacSearch').value;
	if(bacNameStr.length == 1
			&& (bacNameStr.charAt(0) == 'M' || bacNameStr.charAt(0) == 'm') ){
		document.getElementById('bacSearch').value = "MSMg01-";
	}
	
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById('bacSearch').value);
		//var str = escape(bacNameStr);
		if(frm == 'cgi'){
			searchReq.open("GET", '../PrefixMatchBacNames?BNAME=' + str, true);
			searchReq.onreadystatechange = handleSearchBacSuggest; 
			searchReq.send(null);
		} else {
			searchReq.open("GET", 'PrefixMatchBacNames?BNAME=' + str, true);
			searchReq.onreadystatechange = handleSearchBacSuggest; 
			searchReq.send(null);
		}
	}		
}

//Add 090618
function searchBacGeneSuggest(frm) {
	var bacNameStr = document.getElementById('bacGeneSearch').value;
	
	if(bacNameStr.length == 1
			&& (bacNameStr.charAt(0) == 'M' || bacNameStr.charAt(0) == 'm') ){
		//document.getElementById('bacGeneSearch').value = "";
	}
		
	
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById('bacGeneSearch').value);
		//var str = escape(bacNameStr);
		if(frm == 'cgi'){
			searchReq.open("GET", '../PrefixMatchBacGeneNames?BNAME=' + str, true);
			searchReq.onreadystatechange = handleSearchBacGeneSuggest; 
			searchReq.send(null);
			
		} else {
			searchReq.open("GET", 'PrefixMatchBacGeneNames?BNAME=' + str, true);
			searchReq.onreadystatechange = handleSearchBacGeneSuggest; 
			searchReq.send(null);
		}
	}		
}

//----------------------------------------------------------------------------
// Called when the AJAX response is returned.
//----------------------------------------------------------------------------
function handleSearchGeneSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_gene_suggest')
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++) {
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			var suggest = '';
			if(str[i] == "..."){
				suggest += '<div class="suggest_link">' + str[i] + '</div>';
			}
			else{
				suggest += '<div onmouseover="javascript:suggestOver(this);" ';
				suggest += 'onmouseout="javascript:suggestOut(this);" ';
				suggest += 'onclick="javascript:setGeneSearch(this.innerHTML);" ';
				suggest += ' class="suggest_link">' + str[i] + '</div>';
			}
			ss.innerHTML += suggest;
		}
	}
}
function handleSearchBacSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_bac_suggest')
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++) {
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			var suggest = '';
			if(str[i] == "..."){
				suggest = '<div class="suggest_link">' + str[i] + '</div>';
			}
			else{
				suggest = '<div onmouseover="javascript:suggestOver(this);" ';
				suggest += 'onmouseout="javascript:suggestOut(this);" ';
				suggest += 'onclick="javascript:setBacSearch(this.innerHTML);" ';
				suggest += ' class="suggest_link">' + str[i] + '</div>';
			}
			ss.innerHTML += suggest;
		}
	}
}
//Add 090618
function handleSearchBacGeneSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_bac_gene_suggest')
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++) {
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			var suggest = '';
			if(str[i] == "..."){
				suggest = '<div class="suggest_link">' + str[i] + '</div>';
			}
			else{
				suggest = '<div onmouseover="javascript:suggestOver(this);" ';
				suggest += 'onmouseout="javascript:suggestOut(this);" ';
				suggest += 'onclick="javascript:setBacGeneSearch(this.innerHTML);" ';
				suggest += ' class="suggest_link">' + str[i] + '</div>';
			}
			ss.innerHTML += suggest;
		}
	}
}
//----------------------------------------------------------------------------
// Mouse over function
//----------------------------------------------------------------------------
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
//----------------------------------------------------------------------------
// Mouse out function
//----------------------------------------------------------------------------
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}
//----------------------------------------------------------------------------
// Click function
//----------------------------------------------------------------------------
function setGeneSearch(value) {
	document.getElementById('geneSearch').value = value;
	document.getElementById('search_gene_suggest').innerHTML = '';
	//document.hsrch.submit();
	document.forms[0].submit();
}
function setBacSearch(value) {
	document.getElementById('bacSearch').value = value;
	document.getElementById('search_bac_suggest').innerHTML = '';
	document.forms[0].submit();
}
//Add 090618
function setBacGeneSearch(value) {
	document.getElementById('bacGeneSearch').value = value;
	document.getElementById('search_bac_gene_suggest').innerHTML = '';
	document.forms[0].submit();
}