var parentbject;
window.zhaobus_suggest = function(){
	this.Remoreurl = ''; // 远程URL地址
	this.object = '';
	this.taskid = 0;
	this.delaySec = 500; // 默认延迟多少毫秒出现提示框
	this.lastkeys_val = -1;
	this.lastinputstr = '';
	/**
	* 初始化类库
	*/
	this.init_zhaobussuggest=  function(){
		var objBody = document.getElementsByTagName("body").item(0);
		var objplatform = document.createElement("div");
		objplatform.setAttribute('id','getplatform');
		objplatform.setAttribute('align','left');
		objBody.appendChild(objplatform);
		if(!document.all) {
			window.document.addEventListener("click",this.hidden_suggest,false);
		}else{
			window.document.attachEvent("onclick",this.hidden_suggest);
		}
	}

	this.fill_div = function(allplat){
		var msgplat = '';
		if(allplat.length < 1 || !allplat[0]){
			this.hidden_suggest();
		}
		for(i=0;i<allplat.length;i++){
			msgplat += '<ul onclick="parentbject.add_input_text(\'' + allplat[i] + '\');">'+allplat[i]+'</ul>';
		}

		document.getElementById("getplatform").innerHTML =  msgplat;

		var nodes = document.getElementById("getplatform").childNodes;

		for(var i=0;i<nodes.length;i++){
			nodes[i].onmouseover = function(){
				this.className = "mover";
			}
		
			nodes[i].onmouseout = function(){
			this.className = "";
			}
		}
	}

	this.fix_div_coordinate = function(){
		var leftpos=0;
		var toppos=0;
		aTag = this.object;
		do {
			aTag = aTag.offsetParent;
			leftpos	+= aTag.offsetLeft;
			toppos += aTag.offsetTop;
		}while(aTag.tagName!="BODY");
		document.getElementById("getplatform").style.width = this.object.offsetWidth + 'px';
		if(document.layers){
			document.getElementById("getplatform").style.left = this.object.offsetLeft	+ leftpos + "px";
			document.getElementById("getplatform").style.top = this.object.offsetTop +	toppos + this.object.offsetHeight + 2 + "px";
		}else{
			document.getElementById("getplatform").style.left =this.object.offsetLeft	+ leftpos  +"px";
			document.getElementById("getplatform").style.top = this.object.offsetTop +	toppos + this.object.offsetHeight + 'px';
		}
	}

	this.hidden_suggest = function (){
		this.lastkeys_val = -1;
		document.getElementById("getplatform").style.visibility = "hidden";
	}

	this.show_suggest = function (){
		document.getElementById("getplatform").style.visibility = "visible";
	}

	this.is_showsuggest= function (){
		if(document.getElementById("getplatform").style.visibility == "visible") return true;else return false;
	}
	
	this.sleep = function(n){
		var start=new Date().getTime(); //for opera only
		while(true) if(new Date().getTime()-start>n) break;
	}

	this.ltrim = function (strtext){
		return strtext.replace(/[\$&\|\^*%#@! ]+/, '');
	}

	this.add_input_text = function (keys){
		this.object.value = keys;
	}

	this.keys_handleup = function (){
		if(this.lastkeys_val > 0) this.lastkeys_val--;
		var nodes = document.getElementById("getplatform").childNodes;
		if(this.lastkeys_val < 0) this.lastkeys_val = nodes.length-1;
		var b = 0;
		for(var i=0;i<nodes.length;i++){
			if(b == this.lastkeys_val){
				document.getElementById("getplatform").childNodes[i].className = "mover";
				this.add_input_text(document.getElementById("getplatform").childNodes[i].innerHTML);
			}else{
				document.getElementById("getplatform").childNodes[i].className = "";
			}
			b++;
		}
	}

	this.keys_handledown = function (){
		this.lastkeys_val++;
		var nodes = document.getElementById("getplatform").childNodes;
		if(this.lastkeys_val >= nodes.length) {
			this.lastkeys_val--;
			return;
		}
		var b = 0;
		for(var i=0;i<nodes.length;i++){
			if(b == this.lastkeys_val){
				document.getElementById("getplatform").childNodes[i].className = "mover";
				this.add_input_text(document.getElementById("getplatform").childNodes[i].innerHTML);
			}else{
				document.getElementById("getplatform").childNodes[i].className = "";
			}
			b++;
		}
	}

	this.ajaxac_getkeycode = function (e)
	{
		var code;
		if (!e) var e = window.event;
		if (e.keyCode) code = e.keyCode;
		else if (e.which) code = e.which;
		return code;
	}

	this.display = function (object,e){
		if(!document.getElementById("getplatform")) this.init_zhaobussuggest();
		if (!e) e = window.event;
		e.stopPropagation;
		e.cancelBubble = true;
		if (e.target) targ = e.target;  else if (e.srcElement) targ = e.srcElement;
		if (targ.nodeType == 3)  targ = targ.parentNode;

		var inputkeys = this.ajaxac_getkeycode(e);
		if(!object.value) {
			this.hidden_suggest();
			return;
		}

		switch(inputkeys){
			case 38: 
				this.keys_handleup(object.id);
			    return;break;
			case 40:
				if(this.is_showsuggest()) this.keys_handledown(object.id); else this.show_suggest();
			    return;break; 
			case 39:
				return;break;
			case 37:
				return;break;
			case 18: 
				this.hidden_suggest();
			    return;break;
			case 27: 
				this.hidden_suggest();
			    return;break;
		}

		//object.value = this.ltrim(object.value);
		this.object = object;
		if(object.value == this.lastinputstr) return;else this.lastinputstr = object.value;
		if(window.opera) this.sleep(500);
		parentbject = this;
		if(this.taskid) window.clearTimeout(this.taskid);
		this.taskid = setTimeout("parentbject.remoreurltext();" , this.delaySec);
	}

	this.remoreurltext = function(){
		platkeys = this.object.value;
		ll=new Array("[","]","(",")","<",">","?","*","~","!","@","#","$","%","^","&");
		for(i=0;i<ll.length;i++)
           {
		platkeys=platkeys.replace(ll[i],"");
           }
		if(!platkeys) return;
		var req = new XMLHttpRequest();
		if (req) {
			req.onreadystatechange = function() {
				if (req.readyState == 4 && (req.status == 200 || req.status == 304)) {
					parentbject.show_suggest();
					parentbject.fill_div(req.responseText.split(','));
					parentbject.fix_div_coordinate();
				}
			}
			platkeys = encodeURI(platkeys);
			req.open('GET', this.Remoreurl + '?cityid='+document.form1.cid.value+'&keys='+platkeys);
			req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
			req.send(null);
		}
	}
}
