//<![CDATA[
var REQ;
var curTag = -1;
var Interval = new Array();
var idTagAutoComplete = document.getElementById('TagAutoComplete');
var TagSearch = document.getElementsByName('search')[0];

function newXMLHttpRequest() {
	var xmlReq = false;

	if(window.XMLHttpRequest) {
		xmlReq = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		try {
			xmlReq = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e1) {
			try {
				xmlReq = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e2) {
			}
		}
	}

	return xmlReq;
}

function TagAutoComplete() {
	var tag = TagSearch.value;
	if(tag == TagSearch.ovalue) {
		return false;
	}

	TagSearch.ovalue = tag;

	if(tag.trim() == "") {
		hideTagAutoComplete();
		return false;
	}

	REQ = null;
	REQ = newXMLHttpRequest();

	REQ.onreadystatechange = processGetTagAutoComplete;

	REQ.open("POST", TagAutoCompleteURL + "/TagAutoComplete.php", true);
	REQ.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	REQ.send("tag=" + tag + "&owner=" + owner);
}

function processGetTagAutoComplete() {
	if(REQ.readyState == 4) {
		if(REQ.status == 200) {
			var item = REQ.responseXML.getElementsByTagName("item");
			var Tags = '';
			curTag = -1;

			if(item.length != 0) {
				for(var i = 0; i < item.length; i++) {
					try {
						var tag = item[i].firstChild.nodeValue;
						if(tag.trim() == "") tag = item[i].textContent;
						tag = tag.trim().replace(/"/, '&quot;').replace(/<.*>/g, '');

						Tags += '<div style="width:100%;overflow:hidden;cursor:pointer;color:'+tagColor+';font:'+tagFont+';background-color:'+bgColor+'" onclick="TagSearchSubmit(this);return false;" onmouseover="curTag='+i+';selectTag();">' + tag + '</div>';
					} catch(e) { continue; }
				}

				setTagAutoCompletePos(1);

				idTagAutoComplete.innerHTML = Tags;
			} else {
				hideTagAutoComplete();
			}
		} else {
			hideTagAutoComplete();
		}
	}
}

function setTagAutoCompletePos(block) {
	var _left = findPosition(TagSearch, 1);
	var _top = findPosition(TagSearch, 0);

	with(idTagAutoComplete.style) {
		opacity = bgOpacity / 100;
		filter = "alpha(opacity="+bgOpacity+")";
		backgroundColor = bgColor;

		top = _top + TagSearch.offsetHeight + 'px';
		left = _left + 'px';
		width = TagSearch.offsetWidth - 6 + 'px';
		if(block) display = 'block';
	}
}

function findPosition(obj, type) {
	var cur = 0;
	while(obj.offsetParent) {
		cur += type ? obj.offsetLeft : obj.offsetTop;
		obj = obj.offsetParent;
	}

	return cur;
}

function selectTag() {
	var el = idTagAutoComplete.getElementsByTagName('div');

	for(var i = 0; i < el.length; i++) {
		el[i].style.backgroundColor = (curTag == i) ? bgOverColor : bgColor;
	}

	allClearInterval();
	TagSearch.value = el[curTag].innerHTML;
}

function hideTagAutoComplete() {
	idTagAutoComplete.style.display = 'none';
}

function TagSearchSubmit(t) {
	window.location.href = '/tt/search/' + t.innerHTML.replace('%', '%25');
}

function allClearInterval() {
	while(pop = Interval.pop()) {
		clearInterval(pop);
	}
}

String.prototype.trim = function () {
	return this.replace(/^\s*/g, "").replace(/\s*$/g, "");
}


var NS = (navigator.appName == 'Netscape') ? 1 : 0;

if(NS) document.captureEvents(Event.KEYDOWN);
TagSearch.onkeydown = function(e) {
	var el = idTagAutoComplete.getElementsByTagName('div');
	var evt = NS ? e : event;

	allClearInterval();

	switch(evt.keyCode) {
		case 40 :
			curTag = ++curTag % el.length;
			selectTag();
			evt.returnValue = false;
			return false;
		case 38 :
			curTag = (--curTag < 0 ) ? el.length-1 : curTag % el.length;
			selectTag();
			evt.returnValue = false;
			return false;
		default :
			Interval[Interval.length] = setInterval("TagAutoComplete()", 10);
			break;
	}
}

if(NS) document.captureEvents(Event.RESIZE);
window.onresize = function() {
	setTagAutoCompletePos();
}

TagSearch.focus();
//]]>