﻿function smanPromptList(arrList,objInputIdA,objInputIdB,objInputIdC)
{
   
    this.style = "background:#FFFFFF;border: 1px solid #CCCCCC;font-size:12px;cursor: default;overflow:hidden;"
    if (arrList.constructor!=Array){return ;}
    windowonload =function()
 　 {
           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;
            })
    var objouterA=document.getElementById("__smanDispA") //显示的DIV对象
    var objouterB=document.getElementById("__smanDispB") //显示的DIV对象
    var objouterC=document.getElementById("__smanDispC") //显示的DIV对象
    var objInputA = document.getElementById(objInputIdA); //文本框对象    var objInputB = document.getElementById(objInputIdB); //文本框对象        var objInputC = document.getElementById(objInputIdC); //文本框对象 
    var selectedIndex=-1;
    var intTmp; //循环用的:)
    if (objouterA==null) {return ;}
    if (objouterB==null) {return ;}
    if (objouterC==null) {return ;}
    //文本框失去焦点
    objInputA.onblur=function()
    {
        objouterA.style.display='none';        
    }
    window.onfocus=function()
    {
        objouterA.style.display='none';        
    }
    
    objInputB.onblur=function()
    {
        objouterB.style.display='none';        
    }
    window.onfocus=function()
    {
        objouterB.style.display='none';        
    }    
    
    objInputC.onblur=function()
    {
        objouterC.style.display='none';        
    }
    window.onfocus=function()
    {
        objouterC.style.display='none';        
    }    
    
//文本框按键抬起
objInputA.onkeyup=function (){checkKeyCode("A");};
objInputB.onkeyup=function (){checkKeyCode("B");};
objInputC.onkeyup=function (){checkKeyCode("C");};
//文本框得到焦点
objInputA.onfocus=function (){checkAndShow("A");};
objInputB.onfocus=function (){checkAndShow("B");};
objInputC.onfocus=function (){checkAndShow("C");};


function checkKeyCode(str)
{
    var ie = (document.all)? true:false
    if (ie)
    {
    var keyCode=event.keyCode
    if (keyCode==40||keyCode==38)
        { //下上
          var isUp=false
          if(keyCode==40) isUp=true ;
          chageSelection(isUp,str)
        }
    else if (keyCode==13)
        {//回车
          outSelection(selectedIndex,str);
        }
        else if(keyCode==13)
        {
            window.document.all.Button1.click(); 
        }
    else
        {
          checkAndShow(str)
        }
  }
    else
    {
        checkAndShow(str)
    }
        divPosition(str)
}

 function checkAndShow(str)
{
   var strInput = "";
    switch(str)
    {
        case "A":
            strInput=objInputA.value;
        break;
        case "B":
            strInput=objInputB.value;
        break;
        case "C":
            strInput=objInputC.value;
        break;
    }
  if (strInput!="")
  　{
          divPosition(str);
          selectedIndex=-1;         
          
        switch(str)
        {
            case "A":
                objouterA.innerHTML ="";
            break;
            case "B":
                objouterB.innerHTML ="";
            break;
            case "C":
                objouterC.innerHTML ="";
            break;
        }          
          
      for (intTmp=0;intTmp<arrList.length;intTmp++)
      {
//          for(i=0;i<arrList[intTmp].length;i++)
//          { 
            if (arrList[intTmp].substr(0, strInput.length).toUpperCase()==strInput.toUpperCase())
            {
                addOption(arrList[intTmp],strInput,str);
            }
//   　     }
 　　 }
    switch(str)
    {
        case "A":
            objouterA.style.display='';
        break;
        case "B":
            objouterB.style.display='';
        break;
        case "C":
            objouterC.style.display='';
        break;
    }      
      
      
  　}
    else
    {
        switch(str)
        {
            case "A":
                objouterA.style.display='none';
            break;
            case "B":
                objouterB.style.display='none';
            break;
            case "C":
                objouterC.style.display='none';
            break;
        }   
      
　　}
    function addOption(value,keyw,str)
    {
        var v=value.replace(keyw,"<b><font color=red>"+keyw+"</font></b>");
        switch(str)
        {
            case "A":
            objouterA.innerHTML +="<div onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('"+objInputIdA+"').value='" + value + "';window.focus();\">" + v + "</div>"; 
            break;
            case "B":
            objouterB.innerHTML +="<div onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('"+objInputIdB+"').value='" + value + "';window.focus();\">" + v + "</div>";
            break;
            case "C":
            objouterC.innerHTML +="<div onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('"+objInputIdC+"').value='" + value + "';window.focus();\">" + v + "</div>";
            break;
        }      
    
    }
}

function chageSelection(isUp,str)
{
    var objouter=null;
    switch(str)
    {
        case "A":
            objouter=document.getElementById("__smanDispA");
        break;
        case "B":
            objouter=document.getElementById("__smanDispB");
        break;
        case "C":
            objouter=document.getElementById("__smanDispC");
        break;
    }   
    
    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,str)
   {
        var objouter=null;
        switch(str)
        {
            case "A":
                objouter=document.getElementById("__smanDispA");
            break;
            case "B":
                objouter=document.getElementById("__smanDispB");
            break;
            case "C":
                objouter=document.getElementById("__smanDispC");
            break;
        }    
   
        if(!objouter.children[Index])return;
        
        switch(str)
        {
            case "A":
                objInputA.value = objouter.children[Index].innerText;
            break;
            case "B":
                objInputB.value = objouter.children[Index].innerText;
            break;
            case "C":
                objInputC.value = objouter.children[Index].innerText;
            break;
        }        
        
        objouter.style.display='none';
    }
    function divPosition(str)
    {
        var objouter=null;
        var objInput=null;
        switch(str)
        {
            case "A":
                objouter=document.getElementById("__smanDispA");
                objInput=document.getElementById(objInputIdA);
            break;
            case "B":
                objouter=document.getElementById("__smanDispB");
                objInput=document.getElementById(objInputIdB);
            break;
            case "C":
                objouter=document.getElementById("__smanDispC");
                objInput=document.getElementById(objInputIdC);
            break;
        }
        objouter.style.top =getAbsoluteHeight(objInput)+getAbsoluteTop(objInput);
        objouter.style.left =getAbsoluteLeft(objInput); 
        objouter.style.width=getAbsoluteWidth(objInput)
    }
}
    document.write("<div id='__smanDispA'class='site_list' style='text-align:left;position:absolute;display:none;" + this.style + "' onbulr> </div>");
    document.write("<div id='__smanDispB'class='site_list' style='text-align:left;position:absolute;display:none;" + this.style + "' onbulr> </div>");
    document.write("<div id='__smanDispC'class='site_list' style='text-align:left;position:absolute;display:none;" + this.style + "' 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 s_el=0;el=ob;while(el){s_el=s_el+el.offsetLeft;el=el.offsetParent;}; return s_el
    }
    function getAbsoluteTop(ob)
    {
        var s_el=0;el=ob;while(el){s_el=s_el+el.offsetTop ;el=el.offsetParent;}; return s_el
    }
}
var windowonload=null;
var ArrSiteList=BAPublicSite_Default.GetBusSiteNamebyTextHtml("").value.split("|");
var arrList=new Array();
for(var i=0;i<ArrSiteList.length;i++)
{
    var str=ArrSiteList[i].split(",");
    arrList.push(str[0]);
}
smanPromptList(arrList,"txtStart","txtEnd","txtStation");
windowonload();