/**
 * GLS.JS
 * v10.07
 */

var gls_prev_keywords = "", gls_timer = null, gls_offset = -1, gls_num_items = 0, gls_items = null;

function gls_init()
{
	gls_prev_keywords = "";
	gls_suggest();
}

function gls_click_out(e)
{
	if (gls_items && gls_num_items >= 0)
	{
		if (!e) e = window.event;
		var tg = (window.event ? e.srcElement : e.target);

		while (tg.nodeName != 'HTML')
		{
			if (tg == document.top_search) return;
			tg = tg.parentNode;
		}
		gls_stop();
		gls_hide();
	}
	return;
}

function gls_stop()
{
	clearTimeout(gls_timer);
}

function gls_hide()
{
	document.getElementById("gls_box").style.display = "none";
}

function gls_submit()
{
	gls_stop();
	gls_hide();
	document.top_search.submit();
}

function gls_highlight(offset)
{
	gls_offset = offset;

	if (gls_items && gls_num_items >= 0 && offset > -1)
	{
		for (var i=0;i<=gls_num_items;i++)
		{
			gls_items[i].className = (i == offset ? "selected" : "");
		}
	}
}

function gls_select(offset)
{
	if (gls_items && gls_num_items >= 0 && offset > -1)
	{
		document.top_search.gls_value.value = document.top_search.elements['gls_items_' + offset].value.replace("&amp;", "&");
		document.top_search.gls_value.focus();
	}
}

function gls_suggest()
{
	if (gls_target_id > 0) return;

	var gls_box = document.getElementById("gls_box");
	var keywords = document.top_search.gls_value.value;

	if (keywords.length > 0)
	{
		if (keywords != gls_prev_keywords && gls_offset == -1)
		{
			if (xhr && xhr.readyState !== 0)
			{
				return;
			}
			xhr = getXhr();

			if (xhr)
			{
				xhr.onreadystatechange = function () {
					if (xhr.readyState == 4 && xhr.status == 200)
					{
						if (xhr.responseText !== "")
						{
							gls_box.style.display = "block";
							gls_box.innerHTML = xhr.responseText;
							gls_items = gls_box.getElementsByTagName("li");
							gls_num_items = gls_items.length - 1;
						}
						else
						{
							gls_hide();
							gls_offset = -1;
						}
						xhr = null;
					}
				};
			}

			xhr.open("POST", jroot + "/ajax.php", true);
			xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xhr.send("commit=gls&keywords=" + encodeURIComponent(keywords));
		}
	}
	else
	{
		gls_hide();
	}

	gls_prev_keywords = keywords;
	gls_timer = setTimeout("gls_suggest()", 1000);

	return true;
}

function gls_key(e)
{
	var key = (window.event ? window.event.keyCode : e.which);

	switch (key)
	{
		//Up
		case 38:
			gls_offset --;
			if (gls_offset < 0) gls_offset = gls_num_items;
			gls_highlight(gls_offset);
			gls_select(gls_offset);
		break;

		//Down
		case 40:
			gls_offset ++;
			if (gls_offset > gls_num_items) gls_offset = 0;
			gls_highlight(gls_offset);
			gls_select(gls_offset);
		break;

		//Enter
		case 13:
			gls_submit();
		break;

		case 27:
			gls_stop();
			gls_hide();
		break;

		default:
			gls_offset = -1;
		break;
	}

	return false;
}


var gls_target_id = 0;

function gls_switch_target()
{
	var targets = document.getElementById("gls_target_switcher").getElementsByTagName("span");
	var num_targets = targets.length;
	gls_target_id ++;
	if (gls_target_id >= num_targets) gls_target_id = 0;

	for (var i = 0; i < num_targets; i ++)
	{
		document.getElementById("gls_target_" + i).style.display = (i == gls_target_id ? "block" : "none");
	}

	document.top_search.gls_target.value = gls_target_id;

	document.top_search.gls_value.focus();
}
