var curkey=-1;
var currentkeys=new Array();
var rapidval="";
var prevval="";
var lastpress=-1;

function scrollres(n){
	selectres(curkey+n);
}
function canselect(){
	//return (document.rapido_form.search.createTextRange || document.rapido_form.search.setSelectionRange?1:0);
	return (document.getElementById("rapido_form").search.createTextRange || document.getElementById("rapido_form").search.setSelectionRange?1:0);
}
function selectres(n){
	if(n>=0 && n<currentkeys.length){
		if(curkey>=0){
			document.getElementById("suggest"+curkey).style.background="#ffffff";
			document.getElementById("suggest"+curkey).style.color="#000000";
		}
		curkey=n;
		document.getElementById("suggest"+curkey).style.background="#3333ff";
		document.getElementById("suggest"+curkey).style.color="#ffffff";
		//document.rapido_form.search.value=rapidkeys[currentkeys[curkey]];
		document.getElementById("rapido_form").search.value=rapidkeys[currentkeys[curkey]];
	}
}
function gopress(event){
	lastpress=event.keyCode;
}
function gorap(event){
	var k;
	if (!event) var event = window.event;
	if (event.keyCode) k = event.keyCode;
	else if (event.which) k = event.which;
	if(k==38)scrollres(-1);
	else if(k==40)scrollres(1);
	else if(lastpress==k && rapidval!=document.getElementById("rapido_form").search.value){
		var notselect=(document.getElementById("rapido_form").search.value.length<prevval.length && prevval.substring(0,document.getElementById("rapido_form").search.value.length)==document.getElementById("rapido_form").search.value);
		rapidval=document.getElementById("rapido_form").search.value.toLowerCase();
		curkey=-1;
		if(rapidval.length>0)
			findkeys();
		else
			currentkeys=new Array();
		if(currentkeys.length>0){
			var nd=document.getElementById("rapidsuggest");
			var n=false;
			if(nd==null){
				n=true;
				nd=document.createElement("div");
			}
			var divstyle="padding:2px;border:1px solid black;position:absolute;top:0px;left:0px;background:#ffffff;width:140px; ";
			//nd.setAttribute("style",divstyle);
			nd.id="rapidsuggest";
			nd.style.padding="2px";
			nd.style.position="absolute";
			nd.style.border="1px solid black";
			nd.style.pixelTop="0px";
			nd.style.pixelLeft="0px";
			nd.style.background="#ffffff";
			nd.style.width="140px";
			nd.style.zIndex="1000";
			var rd=document.getElementById("rapidinput");
			var rl=document.getElementById("rapidlink");
			var txt="";
			for(var i=0;i<currentkeys.length;i++){
				txt=txt+"<div onmousedown='selectres("+i+")' id='suggest"+i+"'>"+rapidkeys[currentkeys[i]]+"</div>";
			}
			nd.innerHTML=txt;
			if(n){
				rd.insertBefore(nd,rl);
			}
			var oldlen=rapidval.length;

			prevval=document.getElementById("rapido_form").search.value;
			if(!notselect && canselect()){
				scrollres(1);
				fieldselect(document.getElementById("rapido_form").search,oldlen,rapidkeys[currentkeys[0]].length);
			}
		}else{
			hidesuggest();
		}
	}
}
function fieldselect(field,from,to){
	if(field.createTextRange){
		var u=field.createTextRange();
		u.moveStart("character",from);
		u.select();
	}else if(field.setSelectionRange){
		field.setSelectionRange(from,to);
	}
}

function hidesuggest(){
	var nd=document.getElementById("rapidsuggest");
	if(nd!=null){
		if(!canselect())
			selectres(0);
		document.getElementById("rapidinput").removeChild(nd);
	}
//	currentkeys=new Array();
}

function findkeys(){
	var l=rapidval.length;
	currentkeys=new Array();
	for(var i=0;i<rapidkeys.length;i++){
		if(rapidkeys[i].substring(0,l)==rapidval){
			currentkeys[currentkeys.length]=i;
		}
	}
}
