//<![CDATA[
var REQ;
var curTag = -1;
var Interval = new Array();
var NS = (navigator.appName == 'Netscape') ? 1 : 0;

var idTagAutoCompleteHead = document.getElementById('TagAutoCompleteHead');
var search = document.getElementsByName('stx');
for(var i = 0; i < search.length; i++) {
	if(search[i].tagName.match(/^INPUT$/i)) {
		var TagSearchHead = search[i];
		break;
	}
}

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 TagAutoCompleteHead() {
	var tag = TagSearchHead.value;
	if(tag == TagSearchHead.ovalue) {
		return false;
	}

	TagSearchHead.ovalue = tag;

	if(tag.trim() == "") {
		hideTagAutoCompleteHead();
		return false;
	}

	REQ = null;
	REQ = newXMLHttpRequest();

	REQ.onreadystatechange = processGetTagAutoCompleteHead;

	REQ.open("POST", g4_path+"/info/TreeinfoAutoComplete.php", true);
	REQ.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	REQ.send("tag=" + tag);
}

function processGetTagAutoCompleteHead() {
	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;text-align:left;color:'+tagColor+';font:'+tagFont+';background-color:'+bgColor+'" onclick="TagSearchHeadHeadSubmit(this.innerHTML);return false;" onmouseover="curTag='+i+';selectTagHead();">' + tag + '</div>';
					} catch(e) { continue; }
				}

				setTagAutoCompletePosHead(true);

				idTagAutoCompleteHead.innerHTML = Tags;

			} else {
				hideTagAutoCompleteHead();
			}
		} else {
			hideTagAutoCompleteHead();
		}
	}
}

function setTagAutoCompletePosHead(block) {
	var _left = findPositionHead(TagSearchHead, 1);
	var _top = findPositionHead(TagSearchHead, 0);

	with(idTagAutoCompleteHead.style) {
		opacity = bgOpacity / 100;
		filter = "alpha(opacity="+bgOpacity+")";
		backgroundColor = bgColor;

		top = _top + TagSearchHead.offsetHeight + 'px';
		left = _left + 'px';
		width = TagSearchHead.offsetWidth - 6 + 'px';
		if(block == true) display = 'block';
	}
}

function findPositionHead(obj, type) {
	var cur = type ? obj.offsetLeft : obj.offsetTop;
	obj = obj.offsetParent;

	while(obj) {
		cur += type ? obj.offsetLeft : obj.offsetTop;
		if(!NS) { cur += type ? obj.clientLeft : obj.clientTop;}
		obj = obj.offsetParent;
	}

	return cur;
}

function selectTagHead() {
	if(idTagAutoCompleteHead.style.display == 'none') {
		return false;
	}

	var el = idTagAutoCompleteHead.getElementsByTagName('div');

	for(var i = 0; i < el.length; i++) {
		el[i].style.backgroundColor = (curTag == i) ? bgOverColor : bgColor;
	}

	allClearIntervalHead();
	TagSearchHead.value = el[curTag].innerHTML;
}

function hideTagAutoCompleteHead() {
	idTagAutoCompleteHead.style.display = 'none';
}

function showTagAutoCompleteHead() {
	if(idTagAutoCompleteHead.innerHTML.trim() != "")
		idTagAutoCompleteHead.style.display = 'block';
}

function TagSearchHeadHeadSubmit(t) {
	window.location.href = g4_path + '/search/index.php?target=total&stx=' + encodeURIComponent(t.replace('%', '%25'));
	return false;
}

function allClearIntervalHead() {
	while(pop = Interval.pop()) {
		clearInterval(pop);
	}
}

String.prototype.trim = function () {
	return this.replace(/^\s*/g, "").replace(/\s*$/g, "");
}


function addEventHead(obj, event, listener) {
	try	{
		obj.addEventHeadListener(event, listener, false);
	} catch(e) {
		try {
			obj.attachEvent("on"+event, listener);
		} catch(e) { }
	}
}

addEventHead(TagSearchHead, 'focus', showTagAutoCompleteHead);
addEventHead(window, 'resize', setTagAutoCompletePosHead);
addEventHead(document, 'mousedown', function(e) {
	var evt = NS ? e : event;
	var target = NS ? evt.target : evt.srcElement;

	if(evt.button == 0 || evt.button == 1) {
		if(target != TagSearchHead) {
			var el = idTagAutoCompleteHead.getElementsByTagName('div');

			for(var i = 0; i < el.length; i++) {
				if(target == el[i]) return false;
			}

			hideTagAutoCompleteHead();
		}
	}
});
addEventHead(TagSearchHead, 'keypress', function(e) {
	var evt = NS ? e : event;

	if(evt.keyCode == 13) {
		if(curTag == -1) return true;

		TagSearchHeadHeadSubmit(TagSearchHead.value);
		return false;
	}
});
addEventHead(TagSearchHead, 'keydown', function(e) {
	var el = idTagAutoCompleteHead.getElementsByTagName('div');
	var evt = NS ? e : event;

	allClearIntervalHead();

	switch(evt.keyCode) {
		case 9 :
			hideTagAutoCompleteHead();
			return true;
		case 40 :
			curTag = ++curTag % el.length;
			selectTagHead();
			evt.returnValue = false;
			return false;
		case 38 :
			curTag = (--curTag < 0 ) ? el.length-1 : curTag % el.length;
			selectTagHead();
			evt.returnValue = false;
			return false;
		default :
			Interval[Interval.length] = setInterval("TagAutoCompleteHead()", 10);
			return true;
	}
});

TagSearchHead.focus();
//]]>
