/* --------------------------------------------------------
	Initialization
-------------------------------------------------------- */

//window.onload = function () {
function Check(obj,link) {
	var form = document.forms.count;
	var el = getE(obj);
	el.onkeyup = function () {
		if (!this._value) this._value = "";

		if (this._value != this.value) {
			if (this._timer)
				window.clearTimeout(this._timer);	

			var el = this;
			this._timer = window.setTimeout(function () {
				processKeys(el,obj,link)}, 500);
		}
		this._value = this.value;
	}

//	var modes = form.elements["mode"];
//	for (var i=0; i < modes.length; i++)
//		modes[i].onclick = setMode;
}

function processKeys(el,nid,link) {
	el._loading = true;
//	el.style.background = "#fff url(loading.gif) no-repeat 98% 50%;";
//	XmlHttp.get(autoComplete, el.form.action + "?output=xml&words=^" + 
	XmlHttp.get(suggest, "/searchxml.php?output=xml&words=^" +
		getE(nid).value, el);

}

function setMode(e) {
	if (!e) e = window.event;
	var el = e.srcElement ? e.srcElement : e.target;
	el.onkeydown = function () {};

	var list = document.getElementById("suggest-list");
	var span = document.getElementById("counter");

	if (list)
		list.parentNode.removeChild(list);

	if (span)
		span.parentNode.removeChild(span);
}

/* --------------------------------------------------------
	Callbacks
-------------------------------------------------------- */

function count(res, el) {
	el.style.background = "";
	el._loading = false;

	if (res.status == 200) {
		var span = document.getElementById("counter");
		if (!span) {
			span = el.parentNode.appendChild(document.createElement("span"));
			span.id = "counter"
		}

		var count = parseInt(res.responseText);
		span.innerHTML = "(" + count + ")";
		
//		if (count == 0)
//			el.style.background = "pink";
	}
	else {
		return;
	}
}


function autoComplete(res, el) {
	el.style.background = "#FFD9A1";
	el._loading = false;
	if (res.status == 200) {
		var names = res.responseXML.getElementsByTagName("n");

  	var len = el.value.length;
		if (names.length > 0) {
			el.value = names[0].firstChild.nodeValue;
			selectText(el, len, el.value.length);
			
			if (names.length > 1) {
				var span = document.getElementById("counter");
				if (!span) {
					span = document.createElement("span");
					span.id = "counter";
					el.parentNode.appendChild(span);
				}
//				span.innerHTML = "1/" + names.length + " users.";
	
				el.onkeydown = function (e) {
					if (!this._current) this._current = 0; 
					if (!e) e = window.event;
					if (e.keyCode == 38 || e.keyCode == 40) {
						if (e.keyCode == 38 && this._current > 0)
							this._current--;
						else if (e.keyCode == 40 && this._current+1 < names.length)
							this._current++;
						this._value = names[this._current].firstChild.nodeValue;
						this.value = this._value;

						//span.innerHTML = (this._current+1) + "/" + names.length + " users.";
						selectText(this, len, this.value.length);
					}
				}
			}
		}
//		else {
//			el.style.background = "pink";
//		}
	}
	else {
		return;
	}
}

function suggest(res, el) {
//	el.style.background = "";
	el._loading = false;
	if (res.status == 200) {
  	var names = res.responseXML.getElementsByTagName("n");
//  	if (names.length > 0) {
//  		for (var i=(names.length-1); i>=0; i--)
//  			names[i].parentNode.removeChild(names[i])
//  	}
		var list = document.getElementById("suggest-list");
		if (!list) {
			list = el.parentNode.appendChild(document.createElement("ul"));
			list.id = "suggest-list";
		}
		var response = res.responseText;
		//eval(response);
		if (names.length > 0) {
  		getE('suggest-list').style.visibility = "visible";
      getE('suggest-list').innerHTML = "";
			var name = null;
//    	if (names.length > 0) {
//    		for (var i=(names.length-1); i>=0; i--)
//    			names[i].parentNode.removeChild(names[i])
//    	}
			for (var i=0; i < names.length; i++) {
				name = list.appendChild(document.createElement("li"));
				name.innerHTML = "<span onClick=\"Javascript:SetValue('" + names[i].firstChild.nodeValue + "')\";>" + names[i].firstChild.nodeValue + "</span>";
//					names[i].replace(el.value, "<em>" + el.value + "</em>")
			}
		}
//		else {
//		  alert('nic');
//			el.style.background = "pink";
//		}
	}
	else {
		return;
	}
}


function SetValue(sText){
  getE('words').value = sText ;
  getE('suggest-list').style.visibility = "hidden" ;
}
/* --------------------------------------------------------
	Santa's little helpers
-------------------------------------------------------- */

function selectText(el, start, end) {
	if (document.all) {
		var rng = el.createTextRange();
		rng.moveStart("character", start);
		rng.moveEnd("character", end);
		rng.select();
	}
	else {
		el.setSelectionRange(start, end);
	}
	el.focus();
}

function getCheckedElement(elements) {
	for (var i=0; i < elements.length ; i++) {
		if (elements[i].checked)
			return elements[i];
	}
}

function getFormElements(form) {
	var elements = form.elements;

	var arr = new Array();
	for (var i=0; i < elements.length; i++) {
		if (elements[i].name)
			arr.push(elements[i].name + "=" + elements[i].value);
	}

	return arr;
}
