/**
 * Suggest AJAX develop
 */
/**
 * GLOBAL VARIABLES
 */
/* id of selected value in suggest box */
var selItemId = 'ajSelItem';
var xmlhttp = false;	//handler
var sugBoxId = 'find_suggest';
var sugInputId = 'find';

/**
 * hide suggest box
 */
function hideSuggest(sugId) {
	if (document.getElementById(sugId)){
		document.getElementById(sugId).style.visibility = 'hidden';
	}
}

function AJ_Complete() {

	if (xmlhttp.readyState==4) {
		var content =  xmlhttp.responseText;
		//show
		if (content.length > 0){
			document.getElementById(sugBoxId).innerHTML = xmlhttp.responseText;
			document.getElementById(sugBoxId).style.visibility = 'visible';
		}
		else{
			hideSuggest(sugBoxId);
		}
	}
}

function AJ_SendRequest(method, url, async) {

	xmlhttp.open(method, url, async);
	xmlhttp.onreadystatechange=AJ_Complete;
	xmlhttp.send(null);
}

/**
 * ini global handler for XMLHttpRequest
 * - status in xmlhttp
 */
function AJ_IniHttpRequest() {

	if (!xmlhttp && typeof XMLHttpRequest!= 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	if (!xmlhttp && window.createRequest) {
		try {
			xmlhttp = window.createRequest();
		} catch (ex) {
			xmlhttp=false;
		}
	}
}

/**
 * Navigation & filling joined element
 *
 * - hook up input onkey action
 * 
 * @param element	this input box
 * @param event
 * @param urlAction
 */
function AJ_AutoComplet(element, event, urlAction) {

	//test navi keys
	var e = event, code, sugObj = document.getElementById(sugBoxId), selItem  = document.getElementById(selItemId), nextItem, typedText = element.value;
	if (!e) {e = window.event; }
	if (e.keyCode) {code = e.keyCode; }
	else if (e.which) {code = e.which; }

	if (code== 40){
		//DOWN ARROW
		if(!selItem){
				selItem = sugObj.firstChild;
				//select first anchor
				if(selItem.tagName!= "A"){
					while (selItem && selItem.tagName!= "a" && selItem.tagName!= "A"){
						selItem=selItem.nextSibling;
					}
				}
			}
			else{
				//no roll-up, stay at end
				if(selItem.nextSibling){
				   //test if next is a
				   nextItem=selItem.nextSibling;
				   while (nextItem && nextItem.tagName!= "a" && nextItem.tagName!= "A"){
						nextItem=nextItem.nextSibling;
				   }
				   if (nextItem){
					   //a finded
					   selItem.removeAttribute("id");
					   selItem = nextItem;
				   }
				}
			}
			selItem.setAttribute("id","ajSelItem");
			return false;
		}
		else if (code == 38) {
			//UP ARROW
			if(!selItem){
				//select last in list
				selItem = sugObj.lastChild;
				//select first anchor
				if(selItem.tagName!= "A"){
					 while (selItem && selItem.tagName!= "a" && selItem.tagName!= "A"){
						selItem=selItem.previousSibling;
					}
				}
			}
			else{
				if(selItem.previousSibling){
					//test if next is a
					nextItem = selItem.previousSibling;
					while (nextItem && nextItem.tagName!= "a" && nextItem.tagName!= "A"){
						nextItem=nextItem.previousSibling;
				   }
				   if (nextItem){
					   //a finded
					   selItem.removeAttribute("id");
					   selItem = nextItem;
				   }
				}
			}
			selItem.setAttribute("id","ajSelItem");
			return false;
		}
		else if (code == 27) {
			//ESC key
			//unselected
			if(selItem){
				selItem.removeAttribute("id");
				//todo hideSuggest
				hideSuggest(sugObj.id);
			}
			return false;
		}
		//end of spec keys
		if (typedText.length>3){
			AJ_IniHttpRequest();
			//send query & last add element value
			AJ_SendRequest('GET', urlAction + encodeURI(element.value), true);
		}
		else{
			//hide
			hideSuggest(sugBoxId);
		}
	return false;
}

/**
 * onclick Suggest action
 * - this fn can be modify by case
 * 
 * @param selItem
 * @param suggPref  name of suggest prefix
 * @param formName  name of suggest form
 */
function clickOnSuggest(selItem, suggPref, formName) {

	if(selItem){
	  //fill search input with clicked values
	  //document.getElementById(suggPref).value = selItem.innerHTML;
	  //set flag for log & href
	  document.getElementById(suggPref+'_flag').value = selItem.getAttribute('cool');
	  //set flag for log & href
	  document.getElementById('ltype').value = selItem.getAttribute('ltype');
	  //action
	  document.forms[formName].action = '/suggest_link.php';
	  //action - submit forms
	  document.forms[formName].submit();
	}
	//always false no href action
	return false;
}
/**
 * sumbit suggest bind form
 * - call clickOnSuggest action 
 * 
 * @param formName
 * @param suggPref
 */
function sugFormSubmit(formName, suggPref) {

	var selItem  = document.getElementById(selItemId);
	if(selItem){
		clickOnSuggest(selItem, suggPref, formName);
		return false;
	}
	return true;
}
