﻿// JScript 文件

var arrList = new Array();


function test() {
init();
smanPromptList(arrList,"TextBox_Road")

}
function init() {
if (arrList.constructor!=Array){alert('smanPromptList初始化失败:第一个参数非数组!');return ;}
arrList.sort( function(a, b) {
if(a.length>b.length)return 1;
else if(a.length==b.length)return a.localeCompare(b);
else return -1;
}
);
}


function smanPromptList(arrList,objInputId){
         var objouter=document.getElementById("__smanDisp") //显示的DIV对象
         var objInput = document.getElementById(objInputId); //文本框对象
         var selectedIndex=-1;
         var intTmp; //循环用的:)

         if (objInput==null) {alert('smanPromptList初始化失败:没有找到"'+objInputId+'"文本框');return ;}
             //文本框失去焦点
             objInput.onblur=function(){
                 objouter.style.display='none';
                  if($("#TextBox_Road").val()=="")
            $("#TextBox_Road").val("Please input address key words");
             }
             //文本框按键抬起
             objInput.onkeyup=checkKeyCode;
             //文本框得到焦点
             objInput.onfocus=checkAndShow;
             function checkKeyCode(evt){
        evt = evt || window.event;
                 var ie = (document.all)? true:false
                 if (ie){
                     var keyCode=evt.keyCode
                     if (keyCode==40||keyCode==38){ //下上
                         var isUp=false
                         if(keyCode==40) isUp=true ;
                         chageSelection(isUp)
                     }else if (keyCode==13){//回车
                         outSelection(selectedIndex);
                     }else{
                         checkAndShow(evt)
                     }
                 }else{
                     checkAndShow(evt)
                 }
                 divPosition(evt)
             }

/*一般显示
             function checkAndShow(evt){
                         var strInput = objInput.value
                         if (strInput!=""){
                             divPosition(evt);
                             selectedIndex=-1;
                             objouter.innerHTML ="";
                             for (intTmp=0;intTmp<arrList.length;intTmp++){
                                 if (arrList[intTmp].substr(0, strInput.length)==strInput){
                                     addOption(arrList[intTmp]);
                                 }
                             }
                             objouter.style.display='';
                         }else{
                             objouter.style.display='none';
                     }
                     function addOption(value){
                         objouter.innerHTML +="<div onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('"+objInputId+"').value='" + value + "'\">" + value + "</div>"    
                     }
             }
*/

//高亮显示
function checkAndShow(){
   var strInput = objInput.value
   if(strInput=="Please input address key words")
        $("#TextBox_Road").val("");
   if (strInput!=""){

   divPosition();
   selectedIndex=-1;
   objouter.innerHTML ="";
   var sta = "";
   for (intTmp=0;intTmp<arrList.length;intTmp++){
 
   for(i=0;i<arrList[intTmp].length;i++){
if (arrList[intTmp].substr(i, strInput.length).toUpperCase()==strInput.toUpperCase()){
         if( arrList[intTmp] !=sta)
         {
           
            sta = arrList[intTmp];
            addOption(arrList[intTmp].split("|")[0],strInput,arrList[intTmp].split("||")[0].split("|")[1],arrList[intTmp].split("||")[1]);
         }   
   }
}
   }
   objouter.style.display='';
   }else{
   objouter.style.display='none';
}
function addOption(value,keyw,CountItems,RoadID){
var v=value.replace(keyw,"<b><font color=#999999>"+keyw+"</font></b>");
   objouter.innerHTML +="<div><div  style=\"float:left;width:220px;\" onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('"+objInputId+"').value='" + value + "';document.getElementById('RoadID_').value=document.getElementById('RoadID"+RoadID+"').innerHTML;SectionsName();\">" + v + "</div><div style=\"float:left;text-align:right;\"><font color=#999999>"+CountItems+"</font> Items</div><div id=\"RoadID"+RoadID+"\" style=\"clear:left;display:none;\">"+RoadID+"</div></div>"
}
}
//
             function chageSelection(isUp){
                 if (objouter.style.display=='none'){
                     objouter.style.display='';
                 }else{
                     if (isUp)
                         selectedIndex++
                     else
                         selectedIndex--
                 }
                 var maxIndex = objouter.children.length-1;
                 if (selectedIndex<0){selectedIndex=0}
                 if (selectedIndex>maxIndex) {selectedIndex=maxIndex}
                 for (intTmp=0;intTmp<=maxIndex;intTmp++){

                     if (intTmp==selectedIndex){
                         objouter.children[intTmp].className="sman_selectedStyle";
                     }else{
                         objouter.children[intTmp].className="";
                     }
                 }
             }
             function outSelection(Index){
                 objInput.value = objouter.children[Index].innerText;
                 objouter.style.display='none';
             }
             function divPosition(evt){
                 var left = 0;
              var top   = 0;    
     var e = objInput;
              while (e.offsetParent){
               left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
              top   += e.offsetTop   + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
             e      = e.offsetParent;
             }

            left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
            top   += e.offsetTop   + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);

                 objouter.style.top     = (top   + objInput.clientHeight) + 'px' ;
                 objouter.style.left     = left + 'px' ;
                 objouter.style.width= objInput.clientWidth;
             }
     }
     document.write("<div id='__smanDisp' style='position:absolute;display:none;background:#E8F7EB;border: 1px solid #CCCCCC;font-size:14px;cursor: default;color:Green;' onbulr> </div>");
     document.write("<style>.sman_selectedStyle{background-Color:#102681;color:#FFFFFF}</style>");
     function getAbsoluteHeight(ob){
         return ob.offsetHeight
     }
     function getAbsoluteWidth(ob){
         return ob.offsetWidth
     }
     function getAbsoluteLeft(ob){
         var mendingLeft = ob .offsetLeft;
         while( ob != null && ob.offsetParent != null && ob.offsetParent.tagName != "BODY" ){
             mendingLeft += ob .offsetParent.offsetLeft;
             mendingOb = ob.offsetParent;
         }
         return mendingLeft ;
     }
     function getAbsoluteTop(ob){
         var mendingTop = ob.offsetTop;
         while( ob != null && ob.offsetParent != null && ob.offsetParent.tagName != "BODY" ){
             mendingTop += ob .offsetParent.offsetTop;
             ob = ob .offsetParent;
         }
         return mendingTop ;
     }
Number.prototype.NaN0 = function()
{
     return isNaN(this)?0:this;
}

