	String.prototype.startsWith = function(str) {
		return (this.match("^"+str)==str);
	}

	var currentSuggestBox;
	var lastKeyword = "";
	var categoryMain;
	var searchKeyword;
	var suggestPath = '/sc-o/suggest/';
	var ajaxFlag = true;
	var suggestLock = false;
	var keyMoveLock = true;
	$(window).keydown(function(event){
		var evt = event || window.event || null;
		if(evt == null){
			return true;
		}

		var obj = $(event.target);

		if(obj == null){
			return true;
		}
		if(obj.attr("id").startsWith("suggestbox") && evt.keyCode == 13){
			return false;
		}

		return true;
	});
	function showSuggest(element,html){
		if(html.replace(/(^\s*)|(\s*$)/g, "") == "empty"){
			clearSuggest();
			return
		}

		var pos = $(element).offset();
		var list = $("#suggestlist");
		if(list != null){
			list.html(html);
			var leftSet = pos.left + "px";
			var topSet = pos.top + $(element).height() + "px";
			var widthSet = $(element).width() - 2 + "px";
			list.css({left: leftSet, top: topSet, width: widthSet, display: "block", position: "absolute"});
		}
		keyMoveLock = false;
	}

	function clearSuggest(){
		keyMoveLock = true;
		setTimeout(function(){
			var list = document.getElementById("suggestlist");
			if(list != null){
				list.style.display = "none";
			lastKeyword = "";
			}
		},200);
	}
	function  ajaxKeyDown(element,event, paramPage){

		currentSuggestBox = element;
		if(event.keyCode =='13'){
			var txt = document.getElementById(currentSuggestBox.id);
			var categoryId = ($('#preCategory') == null || $('#preCategory').value == "" ) ? 1 : $('#preCategory').value;
			var info = {keyword:txt.value,category:categoryId};
			var searchBoxId = element.id.substr(10);
			doSearch(info, paramPage);
			return;
		}else if(event.keyCode =='38'){
			if(keyMoveLock){
				return;
			}
			suggestLock == true;
			getCurrentTdUp();
		}else if(event.keyCode =='40'){
			if(keyMoveLock){
				return;
			}
			suggestLock == true;
			getCurrentTdDown();
		}
	}

	function ajaxKeyUp(element,event){
		currentSuggestBox = element;
		if(element.value.replace(/(^\s*)|(\s*$)/g, "") == "" || event.keyCode =='27'){
			clearSuggest();
			return;
		}
		if(event.keyCode =='38'){

		}else if(event.keyCode =='40'){

		}else if(event.keyCode =='13'){
			if(!window.event){
				if(element.value != lastKeyword){
					doSuggest(element);
					lastKeyword = element.value;
				}
			}
			return;
		}
		else{
			if(element.value == lastKeyword){
				lastKeyword = element.value;
				return;
			}else{
				doSuggest(element);
				return;
			}
		}

	}

	function doSuggest(element){
		if($.browser.mozilla || $.browser.msie || $.browser.opera || $.browser.safari || $.browser.IE){
			currentSuggestBox = element;
			var keyword = element.value;
			if(keyword.length > 200){
				keyword = keyword.substr(0,200);
			}
			var parms = "keyword=" + encodeURIComponent(keyword);
			$.ajax({
				type: "GET",
				url: suggestPath,
				data:parms,
				dataType: 'html',
				success: function(html){
					showSuggest(element,html);
				}
			});
		}
	}

	function mover(liItem)
	{
		var list = document.getElementById("suggestlist");
		if(list != null){
			var li = list.getElementsByTagName("li");
			for(var i = 0;i < li.length;i++){
				if(li[i].style.color == "white")
				{
					li[i].style.color = "black";
					li[i].style.backgroundColor = "white";
				}
			}
			liItem.style.cursor="default";
			liItem.style.backgroundColor="blue";
			liItem.style.color="white";
		}
	}

	function mout(li)
	{
		li.style.backgroundColor="white";
		li.style.color="black"
	}

	function choose(li,idx)
	{
		var txt = $("#" + currentSuggestBox.id);
		var orgCharset=document.charset;
		document.charset='UTF-8';
		txt.val($("#suggestKeyword" + idx).text());
		document.charset=orgCharset;

		var categoryId = ($('#preCategory') == null || $('#preCategory').val() == "" ) ? 1 : $('#preCategory').val();
		var info = {keyword:txt.val(), category:categoryId};
		var paramPage = $("#paramPage").val();
		doSearch(info, paramPage);
	}
	function setCursorPosition(oInput,oStart,oEnd)
	{
	    if(oInput.setSelectionRange) {
	        oInput.setSelectionRange(3,3);
	        oInput.focus();
	    }
	}
	function getCurrentTdDown()
	{

		var list = document.getElementById("suggestlist");
		if(list != null){
			var li = list.getElementsByTagName("li");
			var txt = document.getElementById(currentSuggestBox.id);
			var flag = 0;
			for(var i = 0;i < li.length;i++)
			{
				if(li[i].style.color == "white")
				{
					if(i == li.length - 1)
					{
						mover(li[i]);
						$("#" + currentSuggestBox.id).val($("#suggestKeyword" + (i + 1)).textContent);
						lastKeyword = $("#" + currentSuggestBox.id).val();
					}
					else
					{
						mover(li[i+1]);
						$("#" + currentSuggestBox.id).val($("#suggestKeyword" + (i + 1)).text());
						lastKeyword = $("#" + currentSuggestBox.id).val();
					}

					flag = 1;
					break;
				}
			}
			if(flag == 0)
			{
				mover(li[0]);
				$("#" + currentSuggestBox.id).val($("#suggestKeyword0").text());
				lastKeyword = $("#" + currentSuggestBox.id).val();
			}
		}

	}

	function getCurrentTdUp()
	{
		var list = document.getElementById("suggestlist");
		if(list != null){
			var li = list.getElementsByTagName("li");
			var txt = document.getElementById(currentSuggestBox.id);


			for(var i = 0;i < li.length;i++)
			{
				var keyword = $("#suggestKeyword" + (i - 1));

				if(li[i].style.color == "white")
				{
					if(i != 0)
					{
						mover(li[i-1]);
						$("#" + currentSuggestBox.id).val(keyword.text());
						var leng = txt.value.length;
						setTimeout(function(){setCursorPosition(txt,leng,leng);},0.5);
						lastKeyword = $("#" + currentSuggestBox.id).val();

					}
					else
					{
						mout(li[0]);
						txt.focus();
					}
					break;
				}
			}
		}
	}


