
function kw_compl_hide ()
{
	$('f_keys_autocompl').style.display = 'none';
}

var kw_compl_good = new Array ();
var kw_compl_sel = -1;

function kw_autocompl_h (e)
{
	var keynum;
	if(window.event) { // IE
		keynum = e.keyCode
	} else if(e.which) { // Netscape/Firefox/Opera
		keynum = e.which
	}
	
	if ($('f_keys_autocompl').style.display=='none')
	{
		if (keynum == 13) sel_search();
		return;
	}
	
	if (keynum == 13 && kw_compl_sel!=-1)
	{
		// Enter!
		$('f_keys_autocompl').style.display = 'none';
		
		var str = $('f_keys').value.toLowerCase();
		
		if (str.indexOf(",")==-1)
		{
			str = '';
		} else {
			str = str.replace (/,[^,]*$/g,', ');
		}
		
		str += kw_compl_good[kw_compl_sel][0] + ', ';
		$('f_keys').value = str;
		return;
	}

	if (keynum!=38&&keynum!=40) return;

	// Up - 38
	// Down - 40
	
	if (kw_compl_good.length == 0) return;
	var kw_list_len = kw_compl_good.length;
	if (kw_list_len>12) kw_list_len = 12;
	
	if (keynum==38) // Going UP
	{
		if (kw_compl_sel == 0||kw_compl_sel == -1) // up
			kw_compl_sel = kw_list_len-1;
		else
			kw_compl_sel--;
	} else { // Going down
		if (kw_compl_sel == kw_list_len-1)
			kw_compl_sel = 0;
		else
			kw_compl_sel++;
	}
	
	// Hightlight current
	for (var r=0; r<kw_list_len; r++)
	{
		if (!$('kw_compl_tr_'+r)) continue;
		if (r == kw_compl_sel)
			$('kw_compl_tr_'+r).style.backgroundColor='#AAA';
		else
			$('kw_compl_tr_'+r).style.backgroundColor='#FFF';		
	}
}

function kw_autocompl (e)
{
	var keynum;
	if(window.event) { // IE
		keynum = e.keyCode
	} else if(e.which) { // Netscape/Firefox/Opera
		keynum = e.which
	}
	// Up/down keys are not evented here
	if (keynum==38||keynum==40||keynum==13) return;

	kw_compl_sel = -1;
	
	// Lets start
	var out = '';
	// Last key?
	if (!$('f_keys').value)
	{
		$('f_keys_autocompl').style.display = 'none';
		return;
	}
	
	var str = $('f_keys').value.toLowerCase();
	
	str = str.replace (/\s?,\s?/g,',');
	str = str.replace (/,+/g,',');

	var i_s = /,/;
	var i_k = str.split(i_s);
	
	if (i_k.length==0)
	{
		$('f_keys_autocompl').style.display = 'none';
		return;
	}
	
	// Get last word
	var kw = i_k[i_k.length-1];
	kw = kw.replace (/^\s+/g,'');
	kw = kw.replace (/\s+$/g,'');

	if (!kw) 
	{
		$('f_keys_autocompl').style.display = 'none';
		return;
	}
	
	var kkw = new Array ();
	for (var s=0; s<(i_k.length-1); s++)
	{
		kkw[s] = i_k[s];
	}
	if (kkw.length) kkw = kkw.join(', ')+', '; else kkw = '';
	
	var rg = new RegExp(kw,"i");
	var sc = 0;
	var kw_title = '';
	
	// var kw_compl_good = new Array ();
	var fnd_0 = false;
	
	kw_compl_good = new Array ();
	
	for (var n=0; n<threads_keys.length; n++)
	{
		// if (rg.test(threads_keys[n][0]))
		var ps = threads_keys[n][0].indexOf(kw);
		if (ps != -1)
		{
			if (ps == 0) fnd_0 = true;
			kw_compl_good[sc] = threads_keys[n];
			kw_compl_good[sc][3] = ps;
			sc++;
		}
		// if (sc>10) break;
	}
	
	// Sort this
	var fnd = true;
	var f_tmp = new Array ();
	while (fnd)
	{
		fnd = false;
		for (var n=1; n<kw_compl_good.length; n++)
		{
			if (kw_compl_good[n-1][3] == kw_compl_good[n][3])
			{
				if (kw_compl_good[n-1][1] < kw_compl_good[n][1])
				{
					fnd = true;
					tmp = kw_compl_good[n-1];
					kw_compl_good[n-1] = kw_compl_good[n];
					kw_compl_good[n] = tmp;
				}
			} else if (kw_compl_good[n-1][3] > kw_compl_good[n][3])
			{
				fnd = true;
				tmp = kw_compl_good[n-1];
				kw_compl_good[n-1] = kw_compl_good[n];
				kw_compl_good[n] = tmp;
			}
		}
	}
	
	for (var n=0; n<kw_compl_good.length; n++)
	{
		//alert (kw_compl_good[n] + ' : ' + n);
		if (kw_compl_good[n][3]>0 && fnd_0)
		{
			fnd_0 = false;
			out += '<tr><td colspan="2"><hr/></td></tr>';
		}
		kw_title = kw_compl_good[n][0].replace (rg,'<b>'+kw+'</b>');
		out += '<tr id="kw_compl_tr_'+n+'" onclick="$(\'f_keys\').value=\''+kkw+kw_compl_good[n][0]+', \';$(\'f_keys_autocompl\').style.display=\'none\';$(\'f_keys\').focus();" onmouseover="this.style.backgroundColor=\'#CCC\';" onmouseout="this.style.backgroundColor=\'#FFF\';" style="color:#333;cursor:pointer;"><td>'+kw_title+'</td><td align="right"><b>'+kw_compl_good[n][1]+'</b> threads</td></tr>';
		
		if (n>10) break;
	}
	// alert(kw_compl_good.length);
	// kw_compl_good.length = n;
	
	if (sc==0)
	{
		$('f_keys_autocompl').style.display = 'none';
		return;
	}
	
	out = '<table cellpadding="5" cellpadding="0" border="0" width="100%">' + out + '</table>';
	
	$('f_keys_autocompl').innerHTML = out;
	$('f_keys_autocompl').style.display = 'block';
}

