
	var currentfocus = null;
	var as = new Array();
	var bs = new Array();
	var as2 = new Array();
	var bs2 = new Array();
	var selIndex = -1;
	var mover = false;
	var borg = null;
	var aorg = null;
	function sfocus(s) {
		currentfocus = s;
		if (currentfocus == 'a')
			searchA($('a').get('value'));
		if (currentfocus == 'b')
			searchB($('q').get('value'));
	}
	function ufocus() {
		if (!mover) {
			if (currentfocus != null) {
				try {
				$(currentfocus+'Result').style.display='none';
				} catch(x) {}
			}
			currentfocus = null;
		}
	}
	function searchB(s) {
		new Request({method: 'post', url: '/quicksearch.php?a=b', data: 'data='+s, onComplete: function(response) {vi('b', response)}}).send();
	}
	function searchA(s) {
		new Request({method: 'post', url: '/quicksearch.php?a=a', data: 'data='+s, onComplete: function(response) {vi('a', response)}}).send();
	}
	function overtoggle(t, b) {
		mover = b;
	}
	function vi(t, str) {
		selIndex = -1;
		if (t == 'b') {
			borg = $('q').get('value');
			bs = new Array();
			bs2 = new Array();
			results = str.split("::");
			for (var i = 0; i < results.length; i++) {
				if (results[i] != '') {
					inf = results[i].split("@");
					bs.push(inf[0]);
					bs2.push(inf[1]);
				}
			}
		}
		if (t == 'a') {
			aorg = $('a').get('value');
			as = new Array();
			as2 = new Array();
			results = str.split("::");
			for (var i = 0; i < results.length; i++) {
				if (results[i] != '') {
					inf = results[i].split("@");
					as.push(inf[0]);
					as2.push(inf[1]);
				}
			}
		}

		if (currentfocus == t)
			buildvi(t);
	}
	function qsel(p, abs) {
		if (currentfocus == 'a') {
			if (p > (as.length-1))
				p = -1;
			else if (p < -1)
				p = as.length-1;
		}
		if (currentfocus == 'b') {
			if (p > (bs.length-1))
				p = -1;
			else if (p < -1)
				p = bs.length-1;
		}
		selIndex = p;
		if (currentfocus == 'a') {
			if (selIndex == -1)
				$('a').set('value', aorg);
			else
				$('a').set('value', as2[selIndex]);
		}
		else if (currentfocus == 'b') {
			if (selIndex == -1)
				$('q').set('value', borg);
			else
				$('q').set('value', bs2[selIndex]);
		}

		if (abs) {
			mover=false;
			ufocus();
		}
		buildvi(currentfocus);
	}
	function osel(p) {
		selIndex = p;
		buildvi(currentfocus);
	}
	function buildvi(t) {
		out = '';
		if (t == 'a') {
			for (var i = 0; i < as.length; i++) {
				if (selIndex == i) {
					out += '<div class="quicksearchsel" onclick="qsel('+i+', true);">'+as[i]+'</div>';
				}
				else {
					out += '<div class="quicksearch" onmouseover="osel('+i+');" onclick="qsel('+i+', true);">'+as[i]+'</div>';
				}
			}
		}
		else if (t == 'b') {
			for (var i = 0; i < bs.length; i++) {
				if (selIndex == i) {
					out += '<div class="quicksearchsel" onclick="qsel('+i+', true);">'+bs[i]+'</div>';
				}
				else {
					out += '<div class="quicksearch" onmouseover="osel('+i+');" onclick="qsel('+i+', true);">'+bs[i]+'</div>';
				}
			}
		}
		try{
		if (out != '')
			$(t+'Result').style.display='';
		else
			$(t+'Result').style.display='none';
		
		$(t+'Result').innerHTML = out;
		} catch(x) {}
	}

	document.addEvent('keydown', function(event){
		if (((event.code == 38) || (event.code == 40)) && (currentfocus != null)) {

			if (event.code == 38) {
				qsel(selIndex-1, false);
			}
			if (event.code == 40) {
				qsel(selIndex+1, false);
			}

			return false;
		}
		if ((event.code == 9) || (event.code == 13)) {
			mover=false;
		}
	});
	document.addEvent('keyup', function(event){
		if ((currentfocus != null) && ((event.code != 9) && (event.code != 13)) && (event.code != 38) && (event.code != 40)) {
			if (currentfocus == 'a')
				searchA($('a').get('value'));
			if (currentfocus == 'b')
				searchB($('q').get('value'));
		}
	});