// JavaScript Document// JavaScript Document
function trim(str)
{
        if(!str)
            return "";
    	var i = 0;
        while ((i < str.length)&&((str.charAt(i) == " ")||(str.charAt(i) == "　")))
		{
			i++;
		}
    	var j = str.length-1;
    	while ((j >= 0)&&((str.charAt(j) == " ")||(str.charAt(j) == "　")))
		{
			j--;
		}
    	if( i > j ) 
    		return "";
    	else
    		return str.substring(i,j+1);
}
//去掉所有的html标记
function RemoveHtml(str)
{
    return str.replace(/<.+?>/g,"");
} 
window.xmlHttp=function()
{
	var url='';
	var xmlHttp;
	var DataType="Text";//返回类型
	var Text="";
	var BackFun=null;	//回调函数
	var Process=null;
	var HeaderType='Content-type';
	var HeaderFormat='application/x-www-form-urlencoded';
	var sendData=null;		//表单数据
	var BackObj=null;
	this.createXMLHttpRequest = function()//创建对象
	{
	    /*
	    if (window.ActiveXObject)
	    {
	    this.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	    } 
	    else if (window.XMLHttpRequest) 
	    {
	    this.xmlHttp = new XMLHttpRequest();
	    }
	    */
	    this.xmlHttp = null;
	    if (window.XMLHttpRequest)
	        try {
	        this.xmlHttp = new XMLHttpRequest
	    }
	    catch (e) {
	    }
	    else if (window.ActiveXObject)
	        for (var b = 0, c; c = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"][b++]; )
	        try {
	        this.xmlHttp = new ActiveXObject(c);
	        break;
	    }
	    catch (e) {
	    }
	    if (this.xmlHttp == null)
	        alert('你的浏览器版本太低，无法使用某些功能！');
	}
	
	this.GO=function()
	{
		if(trim(this.url)=='')
		   return;

        if(this.url.indexOf("?")==-1)
            this.url+="?rnd="+Math.random();
        else
            this.url+="&rnd="+Math.random();
		
		this.LoadData(this.url,this.Id);
	}
	
	this.LoadData=function(url,obj)
	{
		var parent=this;	
		this.createXMLHttpRequest();
		this.xmlHttp.onreadystatechange = handleStateChange;
		this.xmlHttp.open("post", url, true);//GET
		if(this.HeaderType !=null &&this.HeaderFormat!=null)
			this.xmlHttp.setRequestHeader(this.HeaderType,this.HeaderFormat);
		this.xmlHttp.send(this.sendData);
		function handleStateChange()
		{
		/*readyState 属性表示Ajax请求的当前状态。它的值用数字代表。
0 代表未初始化。 还没有调用 open 方法
1 代表正在加载。 open 方法已被调用，但 send 方法还没有被调用
2 代表已加载完毕。send 已被调用。请求已经开始
3 代表交互中。服务器正在发送响应
4 代表完成。响应发送完毕*/
			if(parent.xmlHttp.readyState<4)
			{
			    if(this.Process!=null)
			        this.Process();
			}
			else if(parent.xmlHttp.readyState==4)
			{
				if(parent.xmlHttp.status==200)
				{
					parent.GetHtml();//parent.xmlHttp
				}
			}
		}		
	}

	this.GetHtml=function()//
	{
		if(this.BackFun==null&&this.BackObj==null)
			return;

		switch(this.DataType)
		{
		    case "Xml":
		        if(this.BackFun!=null)
		            this.BackFun(this.xmlHttp.responseXML);
				 if(this.BackObj!=null)
				    BackObj.innerHTML=this.xmlHttp.responseXML;	
				 break;
		    case "Text":
				 if(this.BackFun!=null)
		            this.BackFun(this.xmlHttp.responseText);

				 if(this.BackObj!=null)
				    this.BackObj.innerHTML=this.xmlHttp.responseText;				
				 break;			     
			default:
				this.BackFun();
		}
	}
}
var parentbject;
window.zhaobus_suggest = function()
{
    this.Remoreurl = ''; // 远程URL地址
    this.object = '';
    this.taskid = 0;
    this.delaySec = 10; // 默认延迟多少毫秒出现提示框
    this.lastkeys_val = -1;
    this.lastinputstr = '';
    /**
    * 初始化类库
    */
    this.init_zhaobussuggest = function()
    {
        var objBody = document.body;//document.getElementsByTagName("body").item(0);
        var objplatform = document.getElementById("getplatform");
        if(objplatform)
            objBody.removeChild(objplatform);
            
        objplatform=document.createElement("div");
        objplatform.setAttribute('id', 'getplatform');
        objplatform.className='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 obj=document.getElementById("getplatform");
        if(!obj)
            return;
        var msgplat = '';
        if (allplat.length < 1 || !allplat[0])
        {
            this.hidden_suggest();
        }
        for (i = 0; i < allplat.length; i++)
        {
            msgplat += '<ul class=cul onclick=parentbject.add_input_text("' + RemoveHtml(allplat[i]) + '")>' + allplat[i] + '</ul>';
            //obj.appendChild(ul);
        }
        //alert(msgplat);
        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 = "cul";

            }
        }
    }

    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(RemoveHtml(document.getElementById("getplatform").childNodes[i].innerHTML));
            }
            else {
                document.getElementById("getplatform").childNodes[i].className = "cul";
            }
            b++;
        }
    }

    this.keys_handledown = function()
    {
        if(this.lastkeys_val==NaN)
            this.lastkeys_val=-1;
        if(this.lastkeys_val==NaN)
            this.lastkeys_val=-1;
        this.lastkeys_val++;
        var nodes = document.getElementById("getplatform").childNodes;
        if (this.lastkeys_val >= nodes.length)
        {
            this.lastkeys_val--;
            return;
        }
        //alert(this.lastkeys_val);
        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(RemoveHtml(document.getElementById("getplatform").childNodes[i].innerHTML));
            }
            else {
                document.getElementById("getplatform").childNodes[i].className = "cul";
            }
            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;
        }
        //alert(inputkeys);
        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 = RemoveHtml(object.value);
        if (object.value.lenth <= 3)
            return;
        if (window.opera)
            this.sleep(500);
        parentbject = this;
        if (this.taskid)
            window.clearTimeout(this.taskid);
        setTimeout("parentbject.remoreurltext();", this.delaySec);
        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 = null;
        if (window.XMLHttpRequest)
            try {
            req = new XMLHttpRequest
        }
        catch (e) {
        }
        else if (window.ActiveXObject)
            for (var b = 0, c; c = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"][b++]; )
            try {
                req = new ActiveXObject(c);
            break;
        }
        catch (e) {
        }
        if (req == null)
            alert('你的浏览器版本太低，无法使用某些功能！');
        if (req) {
            req.onreadystatechange = function() {
                if (req.readyState == 4 && (req.status == 200 || req.status == 304))
                {
                    //alert(req.responseText);
                    parentbject.show_suggest(); 	//显示Div层
                    //alert(req.responseText);
                    //alert(req.responseText.split(','));
                    parentbject.fill_div(req.responseText.split(',')); //填充数据
                    parentbject.fix_div_coordinate(); //调整位置
                }
            }
            platkeys = escape(platkeys); //encodeURI(platkeys);
            //alert(platkeys);
            req.open('post', this.Remoreurl + '?KeyWord=' + platkeys + '&rnd=' + Math.random()); //发送参数
            req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
            req.send(null);
        }
    }
}
//JS参数构造
var QueryStringArguments = "";
var Arg = {
    Add : function(name,value){
        if(QueryStringArguments == "")
        {
            QueryStringArguments += (name + "=" + value); 
        }
        else
        {
            QueryStringArguments += ("&" + name + "=" + value); 
        }
    },
    RemoveAll : function()
    {
        QueryStringArguments = "";
    },
    Join : function(){
        return QueryStringArguments;
    }
};