
var __AutoComplete = new Array();
var __eventObjKey=null;
var __isSetValue=true;
var _left=0;
var _top=0;
//初始化
function initAutoComplete(ids,_l,_t){
 for(i=0;i<ids.length;i++){
 	 __AutoComplete[ids[i]] = {'data':null,
                              'isVisible':false,
                              'element':document.getElementById(ids[i]),
                              'dropdown':null,
                              'highlighted':null,
                              'dataId':null,
                              'strLength':2,
                              'oldStr':null,
                              'width':null,
                              'height':null,
                              'sub':null,
                              'iframe':null};
   if(_l)_left=_l;
   if(_t)_top=_t;
   __AutoComplete[ids[i]]['element'].onkeydown  = function() {return AutoComplete_KeyDown(this.getAttribute('id'));}
  
   //__AutoComplete[ids[i]]["element"].onKeyUp=function(e) {return AutoComplete_KeyUp(this.getAttribute('id'), e);}
   //__AutoComplete[ids[i]]['element'].onkeypress = function(e) {if (event.keyCode == 13) return false;}

   AutoComplete_CreateDropdown(ids[i]);
   
 }	
}

function createAutoComplete(id,data,strLength,sub,w,h){
  // if(event){
  // if(event.keyCode!=0){
  // __eventObjKey=event.keyCode;
   //}
  // }

   if(strLength!=null)__AutoComplete[id]["strLength"]=strLength;

   if(__AutoComplete[id]['element'].value.length<__AutoComplete[id]["strLength"]){
  	  __hideLater(id);
	  return;
  }
   if(isSetKey(id)){

   __AutoComplete[id]["data"]=data[0];
   __AutoComplete[id]["dataId"]=data[1];
   __AutoComplete[id]["oldStr"]=__AutoComplete[id]['element'].value;
   if(__AutoComplete[id]['element'].value==data[0])return;
   if(w!=null)__AutoComplete[id]["width"]=w;
   if(h!=null)__AutoComplete[id]["height"]=h;
   __AutoComplete[id]["sub"]=sub;
   if(w!=null)__AutoComplete[id]['dropdown'].style.width =w+"px";
   if(h!=null)__AutoComplete[id]['dropdown'].style.height =h+"px";
   if(w!=null)__AutoComplete[id]['iframe'].style.width =w+"px";
   if(h!=null)__AutoComplete[id]['iframe'].style.height =h+"px";
 __AutoComplete[id]['element'].setAttribute('autocomplete', 'off'); 
if(data[0].length==0){

__hideLater(id);

}else{

 __AutoComplete[id]['dropdown'].style.left=AutoComplete_GetLeft(__AutoComplete[id]['element'])+"px";
__AutoComplete[id]['dropdown'].style.top=AutoComplete_GetTop(__AutoComplete[id]['element'])+"px";
__AutoComplete[id]['dropdown'].style.width=(__AutoComplete[id]['width']==null?document.getElementById(id).offsetWidth:__AutoComplete[id]['width'])+"px";
__AutoComplete[id]['iframe'].style.left=AutoComplete_GetLeft(__AutoComplete[id]['element'])+"px";
__AutoComplete[id]['iframe'].style.top=AutoComplete_GetTop(__AutoComplete[id]['element'])+"px";
__AutoComplete[id]['dropdown'].style.width=(__AutoComplete[id]['width']==null?document.getElementById(id).offsetWidth:__AutoComplete[id]['width'])+"px";
AutoComplete_ShowDropdown(id);

}
   }
}

function isSetKey(id){
  var keyCodes=",13,27,38,9,40,";

  if(keyCodes.indexOf(","+__eventObjKey+",")>=0||__AutoComplete[id]['element'].value==__AutoComplete[id]['oldStr']||__AutoComplete[id]['element'].value.length<__AutoComplete[id]["strLength"]){

  if(__eventObjKey==27||__eventObjKey==13||__AutoComplete[id]['element'].value.length<__AutoComplete[id]["strLength"]){
  	  __hideLater(id);
  }

 return false;
  }else{

  return true;	  
  }
}

function AutoComplete_CreateDropdown(id)
    {
       
        var left  = AutoComplete_GetLeft(__AutoComplete[id]['element']);
        var top   = AutoComplete_GetTop(__AutoComplete[id]['element']);
        var width = __AutoComplete[id]['width']==null?__AutoComplete[id]['element'].offsetWidth:__AutoComplete[id]['width'];
        var height=__AutoComplete[id]['height']==null?200:__AutoComplete[id]['height'];
        
        __AutoComplete[id]['height']=height;
        __AutoComplete[id]['dropdown'] = document.createElement('div');
        __AutoComplete[id]['dropdown'].className = 'autocomplete'; // Don't use setAttribute()
        __AutoComplete[id]['dropdown'].style.backgroundColor="#ffffff";
        __AutoComplete[id]['dropdown'].style.borderColor="#A4ABC9";
        __AutoComplete[id]['dropdown'].style.borderStyle="solid";
        __AutoComplete[id]['dropdown'].style.borderWidth="2px;";
        __AutoComplete[id]['dropdown'].style.position="absolute";
        __AutoComplete[id]['dropdown'].style.cursor="pointer";
        __AutoComplete[id]['element'].parentNode.insertBefore(__AutoComplete[id]['dropdown'], __AutoComplete[id]['element']);
        __AutoComplete[id]['dropdown'].style.maxHeight     = height + 'px';
        __AutoComplete[id]['dropdown'].style.left       = left + 'px';
        __AutoComplete[id]['dropdown'].style.top        = top + 'px';
        __AutoComplete[id]['dropdown'].style.width      = width + 'px';
        __AutoComplete[id]['dropdown'].style.overflow="auto";
        __AutoComplete[id]['dropdown'].style.overflowX="hidden";
        __AutoComplete[id]['dropdown'].style.zIndex     = '99';
        //__AutoComplete[id]['dropdown'].style.filter="progid:DXImageTransform.Microsoft.DropShadow(color=#FF404040,offX=3,offY=3,positives=true)"
        __AutoComplete[id]['dropdown'].style.display = 'none';
        ///解决ie6 select 摭罩
        __AutoComplete[id]['iframe']=document.createElement('iframe');
        __AutoComplete[id]['iframe'].src="about:blank"
        __AutoComplete[id]['iframe'].style.width=(width+5) + 'px';
        __AutoComplete[id]['iframe'].style.frameBorder="0";
        __AutoComplete[id]['iframe'].style.position="absolute";
        __AutoComplete[id]['iframe'].style.left=left + 'px';
        __AutoComplete[id]['iframe'].style.top=top + 'px';
        __AutoComplete[id]['iframe'].style.zIndex="98";
        __AutoComplete[id]['iframe'].style.display="none";
        __AutoComplete[id]['iframe'].style.background="#000";
        __AutoComplete[id]['iframe'].style.filter="progid:DXImageTransform.Microsoft.DropShadow(color=#333333,offX=2,offY=2,positives=true)";
        __AutoComplete[id]['element'].parentNode.insertBefore(__AutoComplete[id]['iframe'], __AutoComplete[id]['element']);
       
    }
    
function AutoComplete_ShowDropdown(id){
 	    __showLater(id);
        var value = __AutoComplete[id]['element'].value;
        var toDisplay = new Array();
        var text=null;
        var newDiv    = null;
        var numItems  = __AutoComplete[id]['dropdown'].childNodes.length;
        var __data=__AutoComplete[id]["data"];
        while (__AutoComplete[id]['dropdown'].childNodes.length > 0) {
            __AutoComplete[id]['dropdown'].removeChild(__AutoComplete[id]['dropdown'].childNodes[0]);
        }
        __AutoComplete[id]['dropdown'].innerHTML="";
        
        var _hh=0;
        for(i=0;i<__data.length;i++){
        newDiv=document.createElement("div");
        newDiv.style.paddingLeft="5px";
        newDiv.style.color="#000";
        newDiv.style.padding="2px";
        newDiv.style.width="100%";
        if(i%2==0){
        newDiv.style.background="#ffffff";
        newDiv.setAttribute('bg', "#ffffff");
        }else{
        newDiv.style.background="#DDE5F1";
        newDiv.setAttribute('bg', "#DDE5F1");
        }
        newDiv.setAttribute('id', 'autocomplete_item_' + i);
        newDiv.setAttribute('index', i);
        newDiv.style.zIndex = '99';
         newDiv.onmouseover=function(){
       	__HighlightItem(__AutoComplete[id]['element'].getAttribute('id'), this.getAttribute('index'));
            };
        newDiv.onmouseout=function(){
        	__shadowItem(__AutoComplete[id]['element'].getAttribute('id'), this.getAttribute('index'));
        };
        newDiv.onclick=function(){
        	__setValue(__AutoComplete[id]['element'].getAttribute('id'));
        	__hideLater(__AutoComplete[id]['element'].getAttribute('id'));
        };
        //text   = document.createTextNode(__data[i]);
        newDiv.setAttribute('title', __data[i]);
        newDiv.innerHTML=__data[i].replace(eval("/"+__AutoComplete[id]['element'].value+"/g"),"<font color=red>"+__AutoComplete[id]['element'].value+"</font>");
        __AutoComplete[id]['dropdown'].appendChild(newDiv);
        _hh+=newDiv.offsetHeight;
        
        
        }
        if(!checkBrowser2().ie7){

           if(new Number(_hh)>new Number(__AutoComplete[id]['height'])){
           __AutoComplete[id]['dropdown'].style.height=__AutoComplete[id]['height']+"px";
           }else{
           __AutoComplete[id]['dropdown'].style.height=_hh+"px"
           }
           
         }
        
      __AutoComplete[id]['iframe'].style.height=__AutoComplete[id]['dropdown'].offsetHeight+"px";

 }
 
function __shadowItem(id,index){
            var __bg=__AutoComplete[id]['dropdown'].childNodes[index].getAttribute("bg");
        	__AutoComplete[id]['dropdown'].childNodes[index].style.backgroundColor=__bg;
            __AutoComplete[id]['dropdown'].childNodes[index].style.color="#000";
            __AutoComplete[id]['highlighted'] = null;
        }
        
function __HighlightItem(id,index){
            __AutoComplete[id]['dropdown'].childNodes[index].style.backgroundColor="#0A246A";
            __AutoComplete[id]['dropdown'].childNodes[index].style.color="#fff";
            __AutoComplete[id]['highlighted'] = index;
        }
        
function __setValue(id){
        
        if(__isSetValue){__AutoComplete[id]['element'].value = __AutoComplete[id]['dropdown'].childNodes[__AutoComplete[id]['highlighted']].getAttribute("title");}
          if(__AutoComplete[id]["sub"]!=null){
          　var __subfunction=__AutoComplete[id]["sub"];
          　
           　　 __subfunction=__subfunction.replace("$value$",__AutoComplete[id]["dataId"][__AutoComplete[id]['highlighted']]);
           
           　　 __subfunction=__subfunction.replace("$text$",__AutoComplete[id]['dropdown'].childNodes[__AutoComplete[id]['highlighted']].getAttribute("title"));
          
           eval(__subfunction);
          }
          __AutoComplete[id]['element'].focus();
		 
        }
        
function __hideLater(id){
        if (__AutoComplete[id]['iframe']) {
            __AutoComplete[id]['iframe'].style.display = 'none';
        }
        __AutoComplete[id]['iframe'].style.display = 'none';
        __AutoComplete[id]['dropdown'].style.display = 'none';
        __AutoComplete[id]['highlighted'] = null;
        __AutoComplete[id]['isVisible']   = false;
        __AutoComplete[id]['oldStr']=null;
        }
        
function __showLater(id){
        if (__AutoComplete[id]['iframe']) {
            __AutoComplete[id]['iframe'].style.display = '';
        }
        __AutoComplete[id]['dropdown'].style.display = '';
        __AutoComplete[id]['isVisible']   = true;	
        }
  
  
  
  
  //设置高亮
function AutoComplete_Highlight(id, index)
    {
        
        if (index == 1 && __AutoComplete[id]['highlighted'] == __AutoComplete[id]['dropdown'].childNodes.length - 1) {
            __AutoComplete[id]['dropdown'].childNodes[__AutoComplete[id]['highlighted']].style.backgroundColor="";
            __AutoComplete[id]['dropdown'].childNodes[__AutoComplete[id]['highlighted']].style.color="#000";
            __AutoComplete[id]['highlighted'] = null;
        
        } else if (index == -1 && __AutoComplete[id]['highlighted'] == 0) {
            __AutoComplete[id]['dropdown'].childNodes[0].style.backgroundColor="";
            __AutoComplete[id]['dropdown'].childNodes[0].style.color="#000";
            __AutoComplete[id]['highlighted'] = __AutoComplete[id]['dropdown'].childNodes.length;
        }

        if (__AutoComplete[id]['highlighted'] == null) {
            __AutoComplete[id]['dropdown'].childNodes[0].style.backgroundColor="#0A246A";
            __AutoComplete[id]['dropdown'].childNodes[0].style.color="#fff";
            __AutoComplete[id]['highlighted'] = 0;
            AutoComplete_ScrollCheck(__AutoComplete[id]['dropdown'].childNodes[0],id,0);

        } else {
            if (__AutoComplete[id]['dropdown'].childNodes[__AutoComplete[id]['highlighted']]) {
                __AutoComplete[id]['dropdown'].childNodes[__AutoComplete[id]['highlighted']].style.backgroundColor="";
                __AutoComplete[id]['dropdown'].childNodes[__AutoComplete[id]['highlighted']].style.color="#000";
            }

            var newIndex = __AutoComplete[id]['highlighted'] + index;

            if (__AutoComplete[id]['dropdown'].childNodes[newIndex]) {
                __AutoComplete[id]['dropdown'].childNodes[newIndex].style.backgroundColor="#0A246A";
                __AutoComplete[id]['dropdown'].childNodes[newIndex].style.color="#fff";
                __AutoComplete[id]['highlighted'] = newIndex;
                AutoComplete_ScrollCheck(__AutoComplete[id]['dropdown'].childNodes[newIndex],id,newIndex);
            }
        }
        
 
        
    }

function AutoComplete_ScrollCheck(obj,id,index)
    {
         var __h=new Number(__AutoComplete[id]['dropdown'].offsetHeight-2);
         if(index==0)__AutoComplete[id]['dropdown'].scrollTop=0;
        
         if(obj.offsetTop+obj.offsetHeight>__h){
         
           __AutoComplete[id]['dropdown'].scrollTop=obj.offsetTop+obj.offsetHeight-__h;
        
           
         }
        
    }
    
    
    
//得到左边距
function AutoComplete_GetLeft(element)
    {
        var curNode = element;
        var tleft = element.offsetLeft;    //TT控件的定位点宽
        while (element = element.offsetParent){tleft+=element.offsetLeft;}
        return tleft+_left;
     
    }
    
    
    
    //得到上边距
function AutoComplete_GetTop(element)
    {
        var ttop  = element.offsetTop;     //TT控件的定位点高
        var thei  = element.clientHeight;  //TT控件本身的高
        while (element = element.offsetParent){ttop+=element.offsetTop;}
        return ttop+thei+6+_top;
    }
    
function AutoComplete_KeyDown(id)
    {
		
	if(__AutoComplete[id]['element'].value.length<__AutoComplete[id]["strLength"]){
	 return true;
	}
        // Mozilla
        if (arguments[1] != null) {
            event = arguments[1];
        }

        var keyCode = event.keyCode;
         
        switch (keyCode) {

            // Return/Enter
            case 13:
         
                if (__AutoComplete[id]['highlighted'] != null) {
            
                    __setValue(id);
                    __hideLater(id);
                   
                }
                return false;
   
                break;

            // Escape
            case 27:
            
                __hideLater(id);
         
              //  return;
            
            // Up arrow
            case 38:
                if (!__AutoComplete[id]['isVisible']) {
                    AutoComplete_ShowDropdown(id);
                }
                
                AutoComplete_Highlight(id, -1);
                //AutoComplete_ScrollCheck(id, -1);
                return false;
                break;
            
            // Tab
            case 9:
                if (__AutoComplete[id]['isVisible']) {
                    __hideLater(id);
                }
                return;
            
            // Down arrow
            case 40:

                if (!__AutoComplete[id]['isVisible']) {
                    AutoComplete_ShowDropdown(id);
                }
                
                AutoComplete_Highlight(id, 1);
               // AutoComplete_ScrollCheck(id, 1);
                return false;
                break;
        }
    }
    
    function checkBrowser2() 
{  
   this.ver=navigator.appVersion  
   this.dom=document.getElementById?1:0
   this.ie7=(this.ver.indexOf("MSIE 7")>-1 && this.dom)?true:false; 
   this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?true:false;  
   this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?true:false;  
   this.ie4=(document.all && !this.dom)?true:false;  
   return this; 
} 
