var menuItemArray = new Array();
var menuItemselectIndex = -1;
var isMenuShow = false;
var m_pageSize = 10;
var m_page = 1;
var sg_cache = new Object();
var isSuggested	= false;
var searchInputObj;
var	ctrlStr = null;
var ctrlMenuID = null;
function SB_ShowMenu(ctrlID, show){
	var menu = document.getElementById(ctrlID + "_Menu");
	var menuback = document.getElementById(ctrlID + "_Frame");
	
	if(show==true){
		var btn = searchInputObj;
		if(btn){
			menu.style.left = 0;
			menu.style.top = 23;
		}
		menu.style.width=parseInt(btn.offsetWidth)+ "px";
		menu.style.display = "block";
		menuback.style.width = menu.offsetWidth;
		menuback.style.height = menu.offsetHeight;
		menuback.style.top = menu.style.top;
		menuback.style.left = menu.style.left;
		menuback.style.zIndex = menu.style.zIndex - 1;
		menu.style.display = "block";
		menuback.style.display = "block";
    	isMenuShow = true;
	}
	else{
		menu.style.display = "none";
		menuback.style.display = "none";
		isMenuShow = false;
	}
}

function SB_OnBlur(ctrlID, event){
	if (!isSuggested) return;
	SB_ShowMenu(ctrlID, false);
}

function SB_OnKeyDown(ctrlID, event){
	// 13: ENTER
	if (!isSuggested) return;
	if((!isMenuShow || menuItemselectIndex == -1) && event.keyCode == 13){
			return true;
	}
	if(event.keyCode == 13 || event.keyCode == 24) return false;
	else return true;
}

function SB_OnKeyUp(ctrlID, event){
	if (!isSuggested) return;
	var returnvalue = false;
	switch(event.keyCode){
		case 38: // UP
			SB_SetMenuItemselectIndex("OFFSET", -1);
			SB_RebuildMenuselection(ctrlID);
			break;
			
		case 40: // DOWN
			SB_SetMenuItemselectIndex("OFFSET", 1);
			SB_RebuildMenuselection(ctrlID);
			break;
			
		case 13: // ENTER
			SB_selectMenuItem(ctrlID);
            if(!isMenuShow || menuItemselectIndex == -1){
				returnvalue = true;
			}
			break;
			
		case 24: // ESC
			SB_ShowMenu(ctrlID, false);
			break;
		case 27: // ESC
			SB_ShowMenu(ctrlID, false);
			break;		
		default:
			SB_LoadMenuItemArray(ctrlID);
			returnvalue = true;
			break;
	}
	return returnvalue;
}

function SB_selectMenuItem(ctrlID){
	var text = "";
	var menu = document.getElementById(ctrlID + "_Menu");
	var menuItemList = menu.childNodes;
	for(var i=0; i< menuItemList.length; i++){
		if(i == menuItemselectIndex){
			text = menuItemList[i].innerHTML;
			break;
		}
	}
	if(text != "") searchInputObj.value = text;
	SB_ShowMenu(ctrlID, false);
	return false;
}

function SB_SetMenuItemselectIndex(action, index){
	if(action == "SET")
		menuItemselectIndex = index;
	if(action == "OFFSET") 
		menuItemselectIndex += index;
	if(menuItemArray && menuItemselectIndex < 0) menuItemselectIndex = menuItemArray.length -1;
	if(menuItemArray && menuItemselectIndex >= menuItemArray.length) menuItemselectIndex = 0;
}

function SB_RebuildMenu(ctrlID){
	var html = "";
	var start = 0;
	if(m_page <= 0) m_page = 1;
	var maxPage = parseInt((menuItemArray.length + m_pageSize - 1)/m_pageSize);
	if(m_page > maxPage) m_page = maxPage;
	start = (m_page - 1)* m_pageSize;
	for(var i= start; i<menuItemArray.length && i < start + m_pageSize; i++){
		html += "<div";
		html += " onmousedown=\"SB_selectMenuItem('" + ctrlID + "');\"";
		html += " onmouseover=\"SB_SetMenuItemselectIndex('SET', " + i + "); SB_RebuildMenuselection('" + ctrlID + "');\"";
		html += " onBlur=\"return SB_ShowMenu('" + ctrlID + "', true);\"";
		html += ">";
		html += menuItemArray[i];
		html += "<\/div>";
	}
	html += "<div align=\"center\" style=\"text-align:center; background:#FFE3E2; color:#000000; margin-top:0px; line-height:20px\">建议搜索：帮您选择更精准的关键词<\/div>";
	document.getElementById(ctrlID + "_Menu").innerHTML = html;
	menuItemselectIndex = -1;
}

function SB_RebuildMenuselection(ctrlID){
	var menu = document.getElementById(ctrlID + "_Menu");
	var menuItemList = menu.childNodes;
	for(var i=0; i< menuItemList.length; i++){
		if(i == menuItemselectIndex) menuItemList[i].className = "MB_MenuSelectedItem";
		else menuItemList[i].className = "";
	}
}

function SB_LoadMenuItemArray(ctrlID){
	var v=searchInputObj.value;
    if(v ==""){
        SB_ShowMenu(ctrlID, false);
        return;
    }
	if( v.length < 1 || v.length >20){
		SB_ShowMenu(ctrlID, false);
		return;
	}
	menuItemArray = sg_cache[v];
	if(typeof menuItemArray =='undefined'){
		menuItemArray = null;
		SB_LoadIt(ctrlID,v);
	}else{
		if(menuItemArray && menuItemArray.length > 0){
			showMenuNeeded = true;
			SB_RebuildMenu(ctrlID);
			SB_ShowMenu(ctrlID, true);
		}else{
    		SB_ShowMenu(ctrlID, false);
		}
	}
}

function SB_LoadIt(ctrlID,v){
	var url='http://www.search.hc360.com/cgi-bin/checkword?w=' + trim(v) + '&type=1&subtype=1';
	ctrlMenuID = ctrlID;
	ctrlStr = v;
    sg_cache[v] = null;
	if(!document.getElementById("tscript")){
		var scriptObj = document.createElement("SCRIPT");
		scriptObj.setAttribute("id", "tscript");
		scriptObj.src = url;
		document.body.appendChild(scriptObj);
	}else{
		document.getElementById("tscript").src = url;
	}
}

function retry(){
	if (ctrlMenuID == null) {
		return;
	}
	re_onLoadCompleted();
}
function re_onLoadCompleted(){
	var showMenuNeeded = false;
	var tnt;
	if(conResult.words && conResult.words.length >0){
		tnt = unescape(decodeURI(conResult.words)).split(",");
		for(var i=0;i<tnt.length;i++){
			tnt[i] = tnt[i].substring(1,tnt[i].length-1);
		}
		if(tnt && tnt.length > 0){
			menuItemArray = tnt;
			showMenuNeeded = true;
			sg_cache[ctrlStr] = menuItemArray;
			tnt = null;
		}
	}
	if(showMenuNeeded){
		SB_RebuildMenu(ctrlMenuID);
		SB_ShowMenu(ctrlMenuID, true);
	}else{
		SB_ShowMenu(ctrlMenuID, false);
	}
}

function isWhitespace(charToCheck) {	
	var whitespaceChars = " \t\n\r\f";	
	return (whitespaceChars.indexOf(charToCheck) != -1);
}

function ltrim(str) { 	
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);	
		return str.substring(k, str.length);
}

function rtrim(str) {	
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;	
		return str.substring(0,j+1);
}

function trim(str) {	
	return ltrim(rtrim(str));
}

