var dlength=0;
var dcount=0;
var count40=0;
var URL="";
var chk_pre_key=0;

//Added by Declan to take out all the hard coding and to faciliate site specific searches
//Also refactored to allow multiple suggestion boxes on one page 
var maxResults=0;
var gsaCollection="";

function mc(event)
{
	var ie_var="srcElement";
	var moz_var="target";
	var j;
	var prop_var ="mydata";
	event[moz_var]?j=event[moz_var][prop_var]:j=event[ie_var][prop_var];
	document.getElementById("q").value="";
	document.getElementById("q").value=document.getElementById("sugg"+j).innerHTML;
	hidediv();	
	}
	/*
	function mc_b(event)
	{
		var ie_var="srcElement";
		var moz_var="target";
		var j;
		var prop_var ="mydata";
		event[moz_var]?j=event[moz_var][prop_var]:j=event[ie_var][prop_var];
		document.getElementById("qb").value="";
		document.getElementById("qb").value=document.getElementById("sugg"+j).innerHTML;
		hidediv();	
		}
	function mc_f(event)
	{
		var ie_var="srcElement";
		var moz_var="target";
		var j;
		var prop_var ="mydata";
		event[moz_var]?j=event[moz_var][prop_var]:j=event[ie_var][prop_var];
		document.getElementById("qf").value="";
		document.getElementById("qf").value=document.getElementById("sugg"+j).innerHTML;
		hidediv();	
		}
	  */	
function m_over(event)
{
	var ie_var="srcElement";
	var moz_var="target";
	var j;
	var prop_var ="mydata";
	event[moz_var]?j=event[moz_var][prop_var]:j=event[ie_var][prop_var];
	document.getElementById("sugg"+j).style.background="#45444A";
	
}
function m_out(event)
{	
	var ie_var="srcElement";
	var moz_var="target";
	var j;
	var prop_var ="mydata";
	event[moz_var]?j=event[moz_var][prop_var]:j=event[ie_var][prop_var];
	document.getElementById("sugg"+j).style.background="#C8C8C8";	
}


function addToContainer(data,i,suggestDiv) {
	
	if(data.trim() != "[]") {
	// Get the parent node  
	var c = document.getElementById(suggestDiv);
	//c.style.maxWidth=dlength*10+"%";
	 if(!c ) return;  
	 	
	 	var t = document.createElement('div');
	 	t.style.visibility="visible";
	 	t.innerHTML=data;
	 	t.setAttribute('id',"sugg"+i);	
	 	t.style.borderBottom="1px solid #ffffff";
	 	t.style.background="#C8C8C8";
	 	t.style.color="#ffffff";
	 	//t.style.width=dlength*5+"%";
	 	t.style.width=dlength="100%";
	 	t.style.textTransform = "lowercase";
	 	t.style.zIndex="10";
	 	
	 	 if(window.addEventListener){
	 		if (suggestDiv = 'suggest')  
	 			t.addEventListener('click', mc, false);
	 		/*
	 		if (suggestDiv = 'suggestb')  
	 			t.addEventListener('click', mc_b, false);
	 		if (suggestDiv = 'suggestf')  
	 			t.addEventListener('click', mc_f, false);
	 		*/
		 	t.addEventListener('mouseover', m_over, false);
		 	t.addEventListener('mouseout', m_out, false);
		 	t.mydata=i;
		}else{
			if (suggestDiv = 'suggest')  
				t.attachEvent("onclick",mc);
			/*
			if (suggestDiv = 'suggestb')  
				t.attachEvent('onclick', mc_b);
			if (suggestDiv = 'suggestf')  
				t.attachEvent('onclick', mc_f);
			*/
     	 	t.attachEvent("onmouseover",m_over);
     	 	t.attachEvent("onmouseout",m_out);
     	 	t.mydata=i;
	  	}
	    c.appendChild(t);
	}   
} 
function hidediv() { 
	count40 =0;	
	if (document.getElementById) { // DOM3 = IE5, NS6 
		if (document.getElementById('suggest')!=null) {
			document.getElementById('suggest').style.visibility = 'hidden';
		}	
		/*
		if (document.getElementById('suggestb')!=null) { 
			document.getElementById('suggestb').style.visibility = 'hidden';
		}
		if (document.getElementById('suggestf')!=null) { 
			document.getElementById('suggestf').style.visibility = 'hidden';
		}
		*/

		for(var i=0;document.getElementById('sugg'+i)!=null;i++) {
			document.getElementById('sugg'+i).style.visibility = 'hidden'; 	
		}
		/*
		if (document.getElementById('hidable') !=null) {
			document.getElementById('hidable').style.visibility = 'visible';
		}
		*/
	} 
	else { 
			if (document.layers) { // Netscape 4 
				document.suggest.visibility = 'hidden'; 
				//document.suggestb.visibility = 'hidden';
				//document.suggestf.visibility = 'hidden';
			} 
			else { // IE 4 
				document.all.suggest.style.visibility = 'hidden'; 
				//document.all.suggestb.style.visibility = 'hidden';
				//document.all.suggestf.style.visibility = 'hidden';
			} 
	} 
	$("#q").unbind("keydown");
}

function showdiv(suggestDiv, formField) {
	
	count40=0;
	if (document.getElementById) { // DOM3 = IE5, NS6 
		document.getElementById(suggestDiv).style.visibility = 'hidden'; 
	} else { 
		if (document.layers) { // Netscape 4 
			document.suggest.visibility = 'visible'; 
		} 
		else { // IE 4 
			document.all.suggest.style.visibility = 'visible';
		} 
	} 
	
	//document.getElementById('q').setfocus="true";

	var formF = '#' + formField;
	$(formF).focus();
	
	/*select autosuggested items with up and down-keys */
	var currIndex = -1;
	$("#q").bind("keydown", function(event){
		if((event.keyCode===40)||(event.keyCode===38)){
			$("#suggest > div").css('background-color', '#C8C8C8');
			currIndex = event.keyCode===40 ? ++currIndex:--currIndex;
			currIndex = currIndex===-1 ? 0:currIndex;
			currIndex = currIndex>=$("#suggest > div").length ? $("#suggest > div").length-1:currIndex;
			$("#suggest > div:eq("+currIndex+")").css('background-color', '#45444A');
			$("#q").attr("value", $("#suggest > div:eq("+currIndex+")").text());
			return false;
		}
	  });
	
} 

function setURL(url){
	URL = url;
}

//Sets max results to return
function setMaxResults(results){
	maxResults = results;
}
//Sets site specific GSA collection
function setGSACollection(collection){
	gsaCollection = collection;
}

function msg(field, suggestDiv, formField, evt){
	var keyCode = 
	    document.layers ? evt.which :
	    document.all ? event.keyCode :
	    document.getElementById ? evt.keyCode : 0;
    if ((keyCode != 40)&&(keyCode != 38)&&(keyCode != 13)) {
	var http=null;
	try
	{
		http=new XMLHttpRequest();
	}
	catch(B)
	{
		try
		{
			http=new ActiveXObject("Msxml2.XMLHTTP");
		}catch(B)
		{
			http=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	// don't call suggestion if no value is typed
	if (document.getElementById(formField).value.length > 0) {
		var params = "token="+document.getElementById(formField).value +"&max_matches=" + maxResults +  "&site_collection=" + gsaCollection + "&use_similar=false&format=legacy";
		
		
		http.open("GET", URL+"?"+params, true);
		http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		http.setRequestHeader("Content-length", params.length);
		http.setRequestHeader("Connection", "close");
		
		http.onreadystatechange = function() {//Call a function when the state changes.
			if(http.readyState == 4 && http.status == 200) {
				hidediv();
				dlength=0;
				document.getElementById(suggestDiv).innerHTML = "";
				var output= new Array();
				output=(http.responseText).split("||");
				//alert (http.responseText);			
				for(var i in output) {
					if (output[i].length > dlength)
					{
						dlength=output[i].length;
					}					
				}				
				if(output.length > 0) {
					for(var i in output) {
						if (i > 3) {
							//document.getElementById('hidable').style.visibility = 'hidden';
						}
						var sugg = output[i];
						
						sugg = decodeURIComponent( sugg );						
						addToContainer(sugg,i,suggestDiv);
						if (sugg == ''){
							hidediv();
						}
					}
					dcount=output.length;
					showdiv(suggestDiv, formField);
					
					//kd(event);
					if (document.getElementById(formField).value == "") {
						hidediv();
						//document.getElementById('hidable').style.visibility = 'visible';
					}				
				}			
			}		
		}		
		http.send(null);
	    }		
    }  
}

function submitSearchForm(formID) {
	var searchForm = document.getElementById(formID);
	searchForm.submit();
} 
function getRes(){
}
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}

document.onclick=hidediv;


