var inputObj=null;
var divObj=null;
var gInputTip = null;
var gSugItemPreId="_sug_item_";

var keywordResponseDatas = new Object();

var destUrl;
function closeSugDiv() {
	divObj.style.display="none";
}


function getCookieVal(offset) {
	var endstr = document.cookie.indexOf (";", offset);
	if(endstr == -1) {
		endstr = document.cookie.length;
	}
	return unescape(document.cookie.substring(offset, endstr));
}
function getCookie(name) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	var j = 0;
	while(i < clen) {
		j = i + alen;
		if(document.cookie.substring(i, j) == arg)
			return getCookieVal(j);
		i = document.cookie.indexOf(" ", i) + 1;
		if(i == 0)
			break;
	}
	return null;
}


window.onload = function() {
	var autoTip = true;
	destUrl = getCookie('ajaxkeyword');
	if (destUrl== null || destUrl == '') {
		alert('配置、使用 Cookie，可以获得自动提示功能。');
		autoTip=false;
	}
	divObj = document.getElementById("sug_div_");
	inputObj = document.getElementById("q1");

	gInputTip="请输入要查询的商品或服务名称...";
	var q = inputObj;
	q.value=gInputTip;
	q.focus();
	q.select();
	if (autoTip)
	q.onkeyup=function(evt){
			evt = window.event || evt;
			//alert(e.keyCode);
			//return InputKeyDown(e);
			var bCtrlDown=0;
			if(!evt && window.event){
				evt=window.event;
			}
			if(window.event){
				bCtrlDown=evt.ctrlKey;
			}else{
				bCtrlDown=(evt.modifiers & Event.CONTROL_MASK) > 0;
			}
			if(bCtrlDown){
				//return true;
			}
			var kc=evt.keyCode;
			if(kc==16 || kc==17 || kc == 18){
				return true;
			}
			
			if(kc==40 || kc==38 || kc == 33 || kc== 34){//down,up,pageup,pagedown,enter{
				if(divObj.style.display=="none"){
					return true;
				}
				if(kc==38){// up
					HighlightSuggestion(1, 0);
				}else if(kc==40){//down
					HighlightSuggestion(1, 1);
				}else if(kc==33){//pageup
					HighlightSuggestion(0, 0);
				}else if(kc==34){//pagedown
					HighlightSuggestion(0, -1);
				}
				return false;
			}else if(kc==13){//enter
				if(divObj.style.display=="none"){
					return true;
				}
				SelectCurrSugItem();
				return false;
			}else if(kc==27){//esc
				divObj.style.display="none";
				return true;
			}
			gSugInputBegin=true;
			ShowSuggestion();

			if (inputObj.value == gInputTip ){
				inputObj.style.color='gray';
			} else {
				inputObj.style.color='black';
			}
			return true;
		}
	q.onfocus=function(){
		gSugFocus=true;
		gSugInputBegin=false;
		q.select();
	}
	q.onclick=function(){
		if(q.value==gInputTip){
			q.value="";
		}
	}
	q.onblur=function(){
		if(q.value==""){
			q.value=gInputTip;
		}
		gSugFocus=false;
		divObj.style.display="none";
	}
	
	document.onclick=function(){
		if(divObj){
			divObj.style.display="none";
		}
	}
	if (inputObj.value == gInputTip ){
		inputObj.style.color='gray';
	} else {
		inputObj.style.color='black';
	}
}

function getDocOffsetTop(s) {
	var t = 0;
	while(s) {
		t += s.offsetTop;
		s = s.offsetParent;
	}
	return t;
}
function getDocOffsetLeft(s) {
	var l = 0;
	while(s) {
		l += s.offsetLeft;
		s = s.offsetParent;
	}
	return l;
}

function HighlightSuggestion(type, pos){
	if(type == 0){//绝对定位
		if(pos==-1){
			pos=gSugMaxItem-1;
		}
	}else{//相对定位
		if(pos==0){//up
			pos=gSugLastItem-1;
			if(pos<0){
				pos=-1;
			}
		}else if(pos==1){//down
			pos=gSugLastItem+1;
			if(pos>=gSugMaxItem){
				pos=gSugMaxItem-1;
			}
		}
	}
	var pitem=document.getElementById(gSugItemPreId+gSugLastItem);
	var citem=document.getElementById(gSugItemPreId+pos);
	if(pitem){pitem.style.background='#FFFFFF';}
	if(citem){citem.style.background='#B9C2DF';}
	gSugLastItem=pos;
	SelectCurrSugItem();
}

function SelectCurrSugItem(){
	var item=document.getElementById(gSugItemPreId+"i_"+gSugLastItem);
	if(item){
		SelectKeyword(item.innerHTML);
	}else{
		SelectKeyword(gSugAttrs.inputObj.value);
	}
}
function SelectKeyword(str){
	inputObj.value=str;
	//gSugAttrs.formObj.onsubmit();
	//gSugAttrs.formObj.submit();
}







function showKeywordDiv(keyword,keyword_similars) {
	//if (inputObj.value!=keyword) {
	//	alert(inputObj.value);
	//	return;
	//}
	var similarArrays;
	if(keyword_similars==null || keyword_similars=='') {
		divObj.style.display="none";
		return ;
	} else {

		similarArrays = keyword_similars.split('/$');
	 }
	var oneSimilar ;
	var resultHtml;
	resultHtml = '<table border=0 cellspacing=1 cellpadding=0 width='+inputObj.offsetWidth+' bgcolor=#FFFFFF style="border:1px solid #B9C2DF"><tr><td><table border=0 cellspacing=0 cellpadding=0 width=100%>'
	for (var i=0; i<similarArrays.length; i++ ) {
		oneSimilar = similarArrays[i].split('^*');
		resultHtml += '<tr id="'+gSugItemPreId+i+'" style="width=100%;cursor:default" onmouseover="HighlightSuggestion(0,'+i+')" onmousedown="SelectKeyword(\''+oneSimilar[0] +'\');">';
		
		resultHtml += '<td align=left id="'+gSugItemPreId+"i_"+i+'">'+oneSimilar[0] +'</td>'
		
		for ( var j= 1;j<oneSimilar.length;j++ ) {
			resultHtml += '<td align=left style="color:#4A5989">' + oneSimilar[j]  + '</td>'
		}		
			
		resultHtml += '</tr>';
	}
	resultHtml += '</table></td></tr></table>';	
	divObj.innerHTML=resultHtml;
	divObj.style.top=getDocOffsetTop(inputObj)+inputObj.offsetHeight+"px";
	divObj.style.left=getDocOffsetLeft(inputObj)+"px";
	divObj.style.display="";
	gSugMaxItem=similarArrays.length;
	gSugLastItem=-1;
}

function ShowSuggestion(){
	if (inputObj.value=='') {
		divObj.style.display="none";
		return;
	}

	if (keywordResponseDatas[inputObj.value]!=null) {
		showKeywordDiv(inputObj.value,keywordResponseDatas[inputObj.value]);
		return ;
	}

	makeRequest(destUrl + '?keyword='+encodeURI(inputObj.value));
}



function makeRequest(queryurl) {
	var http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	http_request.onreadystatechange = function() { requestResponse(http_request); };
	http_request.open('get', queryurl, false);
	http_request.send(null);
}

function requestResponse(http_request) {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			//查询的词!#(相关的词^*描述)/$
			var dataArray = http_request.responseText.split('!#');
			keywordResponseDatas[dataArray[0]] = dataArray[1];
			showKeywordDiv(dataArray[0],dataArray[1]);
		} else {
			alert('获取数据失败,请重试。');
		}
	}
}