asrch = function (objc, callback) {
	var evt, rescont, curr;
	var stext = objc.value; //catching search text
	var sURL = '/xml-proxy/1.2/city/?search=';
	var asCatch = new Array();

	objc.onfocus = function () {
		if (this.value == stext) {
			this.value = '';
			toggleClass(this, 'inac', 'dell');
		}
		if (this.value != '') {
			if (rescont) rescont.style.display = 'block';
		}
	}

	objc.onblur = function () {
		if (this.value == '') {
			this.value = stext;
			toggleClass(this, 'inac', 'add');
		}
		if (rescont) rescont.style.display = 'none';
	}

	objc.onkeydown = function() {
		charCodeset(evt);
		if (charCode == 40) {
			var ind = asCatch[$('#asearch').value].findIndex(curr);
			if (curr && hasClass(curr, 'hvr') && asCatch[$('#asearch').value].inArray(curr)) {
				toggleClass(curr, 'hvr', 'dell');
				curr = ind + 1 != asCatch[$('#asearch').value].length ? asCatch[$('#asearch').value][ind + 1] : asCatch[$('#asearch').value][0];
			}
			else {
				curr = asCatch[$('#asearch').value][0];
			}
			toggleClass(curr, 'hvr', 'add');
		}
		if (charCode == 38) {
			var ind = asCatch[$('#asearch').value].findIndex(curr);
			if (curr && hasClass(curr, 'hvr') && asCatch[$('#asearch').value].inArray(curr)) {
				toggleClass(curr, 'hvr', 'dell');
				curr = ind - 1 != -1 ? asCatch[$('#asearch').value][ind - 1] : asCatch[$('#asearch').value][asCatch[$('#asearch').value].length - 1];
			}
			else {
				curr = asCatch[$('#asearch').value][asCatch[$('#asearch').value].length - 1];
			}
			toggleClass(curr, 'hvr', 'add');
		}
		if (charCode == 13 && asCatch[objc.value].length > 0) {
			callback(curr ? curr.oid : asCatch[objc.value][0].oid);
		}
	}

	objc.onkeyup = function() { 
			if (!rescont) {
			rescont = document.createElement('div');
			rescont.className = 'sresult stM';
			rescont.style.display = 'none';
			rescont.innerHTML = '<ul class="conWrp"></ul><span class="shadowCont"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></span>';
			rescont.style.top = '100px';
			rescont.style.left = '100px';
			$('body').appendChild(rescont);
		}

		if (objc.value.length >= 2) {
			var pos = getAbsolutePos($('#asearch'));
			if ($ifBrowser('IE') && window.location.href.split('/').length > 4) {
				rescont.style.top = pos[0] + $('#asearch').offsetHeight + ($ifBrowser('IE 6') ? (-1) : 17) + 'px';
				rescont.style.left = pos[1] + ($ifBrowser('IE 7') ? (15) : $ifBrowser('IE 6') ? (2) : 13) + 'px';
			} 
			else {
				rescont.style.top = pos[0] + $('#asearch').offsetHeight + ($ifBrowser('IE 6') ? (-1) : 17) + 'px';
				rescont.style.left = pos[1] + ($ifBrowser('IE 7') ? (-25) : $ifBrowser('IE 6') ? (-38) : 13) + 'px';
			}
			if (asCatch[objc.value]) {
				rmChildren($('ul', rescont));
				for (var r = 0; r < asCatch[objc.value].length; r++) {
					$('ul', rescont).appendChild(asCatch[objc.value][r]);
				}
				rescont.style.display = 'block';

			} 
			else {
				var language = $('body').getAttribute('lang')
				var lang = '';
				var reg = new RegExp("^[a-zA-Z, ]+$", "g");
				if (reg.test(objc.value)) {
					lang = 'en';
				} else {
					reg = new RegExp("^[а-щь-яА-ЩЬ-Я ]+$", "g");
					if (reg.test(objc.value) && ((language == 'ru') || (language == 'uk') || (language == 'be'))) {
						lang = language;
					} else {
						reg = new RegExp("^[а-яА-Я,ёЁ ]+$", "g");
						if (reg.test(objc.value)) {
							lang = 'ru';
						} else {
							reg = new RegExp("^[а-щь-яА-ЩЬ-Я,ї'і ]+$", "g");
							if (reg.test(objc.value)) {
								lang = 'uk';
							} else {
								reg = new RegExp("^[а-щь-яА-ЩЬ-Я,ў'і ]+$", "g");
								if (reg.test(objc.value)) lang = 'be';
							}
						}
					}
				}

				var xURL = sURL + encodeURIComponent(objc.value) + '&lang=' + lang + '&limit=6';
				jx.bind({
					"url": xURL,
					"onSuccess": function (data) {
						asCatch[objc.value] = new Array();
						var r = $$('nc', '>*', data)[0];
						rmChildren($('ul', rescont));
						rescont.style.display = 'block';
						var c = $$('>*', r).length >= 6 ? 6 : $$('>*', r).length;
						if ($ifBrowser('IE') ? ($$('nc', '>*', r)[0].childNodes.length == 0) : ($$('nc', '>*', r)[0].childNodes.length == 1)) {
							var er = document.createElement('b');
							er.innerHTML = t_nomach;
							$('ul', rescont).appendChild(er);
							asCatch[objc.value][0] = er;
						}
						else {
							for (var i = 0; i < c; i++) {
								var root = $$('nc', '>*', r)[i];
								var city = document.createTextNode($$('nc', '>*', root)[0].childNodes[0].nodeValue + ', ');
								var country = $$('nc', '>*', root)[3].childNodes.length != 0 ? document.createTextNode($$('nc', '>*', root)[3].childNodes[0].nodeValue) : ' ';
								var cid = root.getAttributeNode('id');
								var li = document.createElement('li');
								li.oid = cid.nodeValue;
								var em = document.createElement('em');
								li.appendChild(city);
								em.appendChild(country);
								li.appendChild(em);
								li.onmousedown = function() { callback(this.oid); };
								li.onmouseover = function() {
									if (curr) {
										toggleClass(curr, 'hvr', 'dell');
									}
									toggleClass(this, 'hvr', 'add');
									curr = this;
								};
								li.onmouseout = function () {
									toggleClass(this, 'hvr', 'dell');
								};
								$('ul', rescont).appendChild(li);
								asCatch[objc.value][i] = li;
								//if (i == 0 && enter) {
								//	callback(cid.nodeValue);
								//	return false;
								//}
							}
						}
					},
					"onError": function (status) {
						alert('An error occurred: ' + status);
					},
					"format": 'xml',
					"method": 'GET',
					"loading": "loads"
				});
			}
		}
		else {
			if (rescont) rescont.style.display = 'none';
		}
	}
}
