/*
	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("Browser error");
	}
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest(searchString) {

	if ((searchString.length < 4) || (searchString == "close")) {
		var ss = document.getElementById('search_suggest')
		ss.innerHTML = '';
	}

	var inSS = searchString.slice(0, 2);
	var type = "text";
	var startChar = 3;
	
	// If searchString is prefixed with AZ then make it a code search
	if ((inSS == "AZ") || (inSS == "Az") || (inSS == "az")) {
		type = "code";
		startChar = 4;
	}
	
	if (searchString.length > startChar) { // If greater than 4 characters perform search
	
		if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		
			var str = escape(document.getElementById('searchText').value);
			searchReq.open("GET", 'php/searchSuggest.php?type=' + type + '&search=' + str, true);
			searchReq.onreadystatechange = handleSearchSuggest; 
			searchReq.send(null);
		}		
	}
}

//Called when the AJAX response is returned.
function handleSearchSuggest() {
	if (searchReq.readyState == 4) {

		// Assign the div to variable ss
		var ss = document.getElementById('search_suggest')
		ss.innerHTML = '';		

		// Loop through each returned result
		var result = searchReq.responseText.split("\n");
		for(i=0; i < result.length - 3; i++) {
		
			// Locate position of ~ character
			var pos = result[i].indexOf("~");
			
			// Create code/desc variables according to pos value
			if (pos > 0) {
				var code = result[i].slice(0, pos);					
				var desc = result[i].slice(pos+1);
			} else {
				var code = result[i];
			}		
		
			
			// Declare variable to send to ss.innerHTML
			var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			
			if (pos > 0) {
				suggest += 'onclick="javascript:setSearch(this.innerHTML.slice(0, ' + code.length + '), \'code\');" ';
				suggest += 'class="suggest_link">' + code + ' <span class="suggest_info">' + desc + '</span></div>';
			} else {
				suggest += 'onclick="javascript:setSearch(this.innerHTML, \'text\');" ';
				suggest += 'class="suggest_link">' + code + '</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 setSearch(value, type) {
	document.getElementById('searchText').value = value;
	document.getElementById('search_suggest').innerHTML = '';
	
	// submit only if code selected
	if (type == "code") {
		document.mainSearchForm.submit();
	}
}

