var FAjax;
var FGlossarySearchTimer;

// Function that adds the Ajax layer:
function JsFnAjaxOnLoad() 
{
	FAjax = getXMLHttpRequestObject();
	
	if (FAjax) 
	{  
		// Guest search
		if (document.getElementById('glossarysearchform')) 
		{
			document.getElementById('glossarysearch').onkeydown = JsFnAjaxGlossarySearchDelay;
			document.getElementById('glossarybutton').style.display = 'none';
			var aResults = document.getElementById('glossaryresults');
			if(!aResults.hasChildNodes()) aResults.style.display='none';
		}
	}
}

function JsFnAjaxGlossarySearchDelay()
{
	FGlossarySearchTimer = setTimeout("JsFnAjaxGlossarySearch()",100);
}

function JsFnAjaxGlossarySearch()
{
	clearTimeout(FGlossarySearchTimer);
	
	var aSearchString = document.getElementById('glossarysearch').value;
	
	if (aSearchString.length > 0)
	{	
		FAjax.abort();
				
		// Open the connection:
		FAjax.open('get', 'tools/ajax_functions.php?call=GlossarySearch&glossarysearch=' + encodeURIComponent(aSearchString));
		
		// Function that handles the response:
		FAjax.onreadystatechange = JsFnAjaxGlossarySearchHandleResponse; 
		
		// Send the request:
		FAjax.send(null);
	}
	else
	{
		var aResults = document.getElementById('glossaryresults');
		while(aResults.hasChildNodes()) aResults.removeChild(aResults.lastChild);
		aResults.style.display = 'none';
	}
}

function JsFnAjaxGlossarySearchHandleResponse() 
{
	if (FAjax.readyState == 4) 
	{
		if ((FAjax.status == 200) || (FAjax.status == 304)) 
		{
			var aResults = document.getElementById('glossaryresults');
			while(aResults.hasChildNodes()) aResults.removeChild(aResults.lastChild);
			
			var aXMLData = FAjax.responseXML;
			var aItems = aXMLData.getElementsByTagName('item');
			var aErrors = aXMLData.getElementsByTagName('error');					

			if (aItems.length > 0)
			{				
				var aNewList = document.createElement('ul');
				aNewList.id = 'glossarylist';
				for (var aIndex = 0; aIndex < aItems.length; aIndex++)
				{
					var aNewListItem = document.createElement('li');
					aLink = document.createElement('a');
					aText = document.createTextNode('» ' + aItems[aIndex].childNodes[1].firstChild.nodeValue);
					aLink.href = aItems[aIndex].firstChild.firstChild.nodeValue;
					aLink.appendChild(aText);
					aNewListItem.appendChild(aLink);
					aNewList.appendChild(aNewListItem);
				}
				aResults.style.display = 'block';
				aResults.appendChild(aNewList);			
			}		      
			else if (aErrors.length > 0)
			{
				var aNewPara = document.createElement('p');
				for (var aIndex = 0; aIndex < aErrors.length; aIndex++)
				{
					var aText = document.createTextNode(aErrors[aIndex].firstChild.nodeValue);
					aNewPara.appendChild(aText);
				}	
				aResults.style.display = 'block';
				aResults.appendChild(aNewPara);
			}
			else aResults.style.display = 'none';
		} 
		else
		{
			// Bad status code, submit the form.
			document.getElementById('glossarysearchform').submit();
		}
	}
}
