// search prompt
var pormptresult={};
function prompt(textbox,contextpath){
	if(textbox.value.length>0){
		if(!pormptresult[textbox.value]){
			ajaxpost(contextpath+"/prompt.js",function(xmlHttp){
				if(xmlHttp.readyState==4){
					if(xmlHttp.status==200){
						eval(xmlHttp.responseText);
						showprompt(textbox);
					}
				}
			},"search="+textbox.value.encode());
		}
		else{
			showprompt(textbox);
		}
	}
	else{
		removeprompt(textbox);
	}
}

function box(e){
	var rect={left:0,top:0,width:e.offsetWidth,height:e.offsetHeight};
	while(e){
		rect.left+=e.offsetLeft;
		rect.top+=e.offsetTop;
		e=e.offsetParent;
	}
	return rect;
}

function removeprompt(textbox){
	var table=document.getElementById(textbox.id+"prompt");
	if(table){
		table.style.display="none";
		table.setAttribute("prompt",null);
		var trs=table.firstChild.childNodes;
		for(var i=0;i<10;i++) trs.item(i).bgColor="#FFFFFF";
	}
}

function showprompt(textbox){
	if(pormptresult[textbox.value]){
		var prompts=pormptresult[textbox.value];
		if(prompts.length){
			var table=document.getElementById(textbox.id+"prompt");
			if(!table){
				var rect=box(textbox);
				table=document.createElement("table");
				table.id=textbox.id+"prompt";
				table.width=rect.width;
				table.border=0;
				table.cellPadding=2;
				table.cellSpacing=0;
				table.style.border="solid #000000 1px";
				table.style.backgroundColor="#FFFFFF";
				table.style.zIndex="2147483647";
				table.style.position="absolute";
				table.style.cursor="default";
				table.style.left=rect.left+"px";
				table.style.top=(rect.top+rect.height)+"px";
				table.style.fontSize="12px";
				document.body.appendChild(table);
				
				var tbody=document.createElement("tbody");
				table.appendChild(tbody);
				for(var i=0;i<10;i++){
					var tr=document.createElement("tr");
					tr.id=textbox.id+"prompt_"+i;
					tr.onmouseover=function(event){
						event=event?event:window.event;
						var src=event.srcElement?event.srcElement:event.target;
						var current=parseInt(table.getAttribute("prompt"));
						if(!isNaN(current)){
							document.getElementById(textbox.id+"prompt_"+current).bgColor="#FFFFFF";
						}
						src=src.tagName=="TD"?src.parentNode:src;
						src.bgColor="#00CCCC";
						table.setAttribute("prompt",parseInt(src.id.substr((textbox.id+"prompt_").length)));
					};
					tr.onmouseout=function(event){
						event=event?event:window.event;
						var src=event.srcElement?event.srcElement:event.target;
						src=src.tagName=="TD"?src.parentNode:src;
						src.bgColor="#FFFFFF";
					};
					tr.onclick=function(event){
						event=event?event:window.event;
						var src=event.srcElement?event.srcElement:event.target;
						src=src.tagName=="TD"?src.parentNode:src;
						src=src.firstChild;
						textbox.value=src.firstChild.nodeValue;
						removeprompt(textbox);
						textbox.form.submit();
					};
					var td1=document.createElement("td");	
					td1.width=rect.width*.9;
					var td2=document.createElement("td");
					td2.width=rect.width*.1;
					td2.align="right";
					tr.appendChild(td1);
					tr.appendChild(td2);
					tbody.appendChild(tr);
				}
			}
			table.style.display="block";
			window.documentclick=document.onclick;
			document.onclick=function(event){
				event=event?event:window.event;
				var src=event.srcElement?event.srcElement:event.target;
				var closeable=true;
				while(src){
					if(src.id==textbox.id||src.id==textbox.id+"prompt"){
						closeable=false;
						break;
					}
					src=src.parentNode;
				}
				if(closeable)removeprompt(textbox);
				if(window.documentclick)document.onclick=window.documentclick;
			};
			var trs=table.firstChild.childNodes;
			for(var i=0;i<prompts.length;i++){
				var t1=trs.item(i).firstChild;
				var t2=t1.nextSibling;
				var prompt=document.createTextNode(prompts[i][0]);
				var count=document.createTextNode(prompts[i][1]);
				if(t1.firstChild)t1.replaceChild(prompt,t1.firstChild);else t1.appendChild(prompt);
				if(t2.firstChild)t2.replaceChild(count,t2.firstChild);else t2.appendChild(count);
			}
			for(;i<10;i++){
				var t1=trs.item(i).firstChild;
				var t2=t1.nextSibling;
				if(t1.firstChild)t1.removeChild(t1.firstChild);
				if(t2.firstChild)t2.removeChild(t2.firstChild);
			}
		}
		else{
			removeprompt(textbox);
		}
	}
}

function nextprompt(event,contextpath){
	event=event?event:window.event;
	var textbox=event.srcElement?event.srcElement:event.target;
	var table=document.getElementById(textbox.id+"prompt");
	if(!table){
		prompt(textbox,contextpath);
	}
	else{
		switch(event.keyCode){
		case 40:
			if(table.style.display=="none")table.style.display="block";
			var current=table.getAttribute("prompt");
			current=parseInt(current);
			if(!isNaN(current)){
				document.getElementById(textbox.id+"prompt_"+current).bgColor="#FFFFFF";
				var next=document.getElementById(textbox.id+"prompt_"+(current+1));
				if(next){
					if(next.firstChild.firstChild){
						document.getElementById(textbox.id+"prompt_"+(current+1)).bgColor="#00CCCC";
						table.setAttribute("prompt",current+1);
						break;
					}
				}
			}
			document.getElementById(textbox.id+"prompt_"+0).bgColor="#00CCCC";
			table.setAttribute("prompt",0);
			break;
		case 38:
			if(table.style.display=="none")table.style.display="block";
			var current=table.getAttribute("prompt");
			current=parseInt(current);
			if(!isNaN(current)){
				document.getElementById(textbox.id+"prompt_"+current).bgColor="#FFFFFF";
				var next=document.getElementById(textbox.id+"prompt_"+(current-1));
				if(next){
					if(next.firstChild.firstChild){
						document.getElementById(textbox.id+"prompt_"+(current-1)).bgColor="#00CCCC";
						table.setAttribute("prompt",current-1);
						break;
					}
				}
			}
			var last=9;
			for(;last>=0;last--){
				if(document.getElementById(textbox.id+"prompt_"+last).firstChild.firstChild)break;
			}
			document.getElementById(textbox.id+"prompt_"+last).bgColor="#00CCCC";
			table.setAttribute("prompt",last);
			break;
		case 13:
			var current=table.getAttribute("prompt");
			if(current!=null){
				textbox.value=document.getElementById(textbox.id+"prompt_"+current).firstChild.firstChild.nodeValue;
				removeprompt(textbox);
			}
			break;
		}
	}
}