
var arrList=new Array();
var tempDate;
var tempName;
var arrCityList=new  Array();;
var arr_From = new  Array();
var arr_To = new  Array();
var arr_FormerContlName = new Array();
var onWorkNumber = 3; 

function InitCityAndAirport(strCity,strAirport)
{
    
    arrList = strAirport.split('||');
    arrCityList = strCity.split('||');
}

function strTrim(str)
{
        return str.replace(/\s/g,"");   
}


function MatchStr(value,str)
{
    str = strTrim(str)
   
    var len = str.length;
    //alert(str);
    
    var index = 0;
    var start =-1;
    var startAndEndArr =new Array();
    
    for (i = 0; i < value.length; i++) 
    { 
            if(value.charAt(i).toUpperCase()==str.charAt(index).toUpperCase() || value.charAt(i)==" ")
            {
                
                if(start==-1 && value.charAt(i)!=" ")
                    start =i;
                
                if(index == len-1)
                {
                    
                    //find a match string
                   if(value.charAt(i)==" ")
                   {
                  
                    }
                    else
                    {
                        startAndEndArr.push(start+"|"+i)
                  
                        start = -1;
                        index = 0
                    }
                }
                else if(index<len)
                {
                   // alert(i+"|"+index)
                    if(value.charAt(i)==" ")
                    {
                    //alert(i+"|");
                    }
                    else
                    {
                        index++;
                        
                    }
                }
                else
                {
                    // find another one
                    index = 0;
                }
                //alert(i +"|"+value.charAt(i))
            }
            else
            {
              // alert("here|" + i+"|"+value.charAt(i))
                index = 0;
                start = -1;
                continue;
            
            } 
    }
    
   //alert(startAndEndArr.length)
   return startAndEndArr;
    
}




function check(value,str)
{
    
    var same = new Array();
    var temp = new Array();
   
    var allvalue = value.split(" ");
    for (intTmp = 0; intTmp < allvalue.length; intTmp++) 
    {
        
        if (str.toUpperCase() == allvalue[intTmp].toUpperCase())
        {
             
            same.push(intTmp); 
           
            
        }
        else if (str.toUpperCase().indexOf(allvalue[intTmp].toUpperCase()) >= 0)
        {
           
            temp.push(allvalue[intTmp]);
           
        }
         
    }
      
    var tempValue ="";
    var trueValue ="";
    var display = new Array();
    

    for (intTmp = 1; intTmp < temp.length; intTmp ++) 
    {
       
        if(tempValue =="")
        {
            tempValue += temp[intTmp-1] + temp[intTmp];
            trueValue +=temp[intTmp-1] +" " + temp[intTmp];
        }
        else
        {
            tempValue += temp[intTmp];
            trueValue +=" " + temp[intTmp];
        }
       
        
        if(tempValue.toUpperCase()==str.toUpperCase())
        {
           
            display.push(trueValue);
            tempValue ="";
            trueValue ="";
            
        }
        else if(str.toUpperCase().indexOf(tempValue.toUpperCase()) >= 0  )
        {

        }
        else
        {
            tempValue = temp[intTmp];
            trueValue = temp[intTmp];
        }
    }
    
    
    return display;
    
   
}

//check("Shanghai is Chinese shanghai sha nghai Shang Hai","shanghai");

function GetCitysList(code)
{
    var productType='cityandairport';
            if(arr_FormerContlName.length>0)
                productType = arr_FormerContlName.join('_')+'_'+ productType;
    var flag = document.getElementById(productType);
    var temp = new Array();
    
    if (flag.value != "H")
    {
        for (intTmp = 0; intTmp < arrList.length; intTmp ++) 
        {
            var data = arrList[intTmp].split(',');
            var temp4 = data[0] +","+ data[1];
            if (temp4.toUpperCase().indexOf(code.trim().toUpperCase()) >= 0  || strTrim(temp4.toUpperCase()).indexOf(code.trim().toUpperCase()) >= 0 || strTrim(temp4.toUpperCase()).indexOf(strTrim(code).toUpperCase()) >= 0 )
            {
                temp.push(arrList[intTmp]);
               
            }
            
             if (temp.length == 20)
            {
                return temp;
            }
        }
    }
    else
    {
            for (intTmp = 0; intTmp < arrCityList.length; intTmp ++) 
        {
            
            var index = arrCityList[intTmp].indexOf(",");
            var temp1 = arrCityList[intTmp].substring(0, index + 1);
            var temp2 = arrCityList[intTmp].substring(index + 1);
            index = temp2.indexOf(",");
            var temp3 = temp2.substring(0, index + 1);
            var temp4 = temp1 + temp3;
            
            if (temp4.toUpperCase().indexOf(code.toUpperCase()) >= 0)
                temp.push(arrCityList[intTmp]);
            if (temp.length == 20)
            {
                return temp;
            }
        }
    }
    return temp;
}

document.write("<div id='__smanDisp' style='position:absolute;display:none; z-index:1;background:#fff; font-family:Verdana; border: 1px solid #CCCCCC;font-size:10px;cursor: default;text-align:left;' onbulr></div>");
document.write("<style>.sman_selectedStyle{background-Color:#b2ccfa;color:#000;}</style>");

function smanPromptList(arrList, objInputId)
{
    if (arrList.constructor != Array)
    {
        alert('smanPromptList');
        return;
    }
    var Mindex ='mouseindex';
    if(arr_FormerContlName.length>0)
        Mindex = arr_FormerContlName.join('_')+'_'+ Mindex;
    var objouter = document.getElementById("__smanDisp") 
    var objInput = document.getElementById(objInputId); 
    var selectedIndex = -1;
    var intTmp; 
    if (objInput == null)
    {
        
        alert('smanPromptList is not find "' + objInputId + '"textbox');
        return;
    }
    objInput.onblur = function()
    {
        upper(this)
        
        if (txtDepCity = document.forms[0].elements[arr_From[0]] != null && document.forms[0].elements[arr_To[0]] != null)
        {
           
            var ft='FlightType';
            if(arr_FormerContlName.length>0)
                ft = arr_FormerContlName.join('_')+'_'+ ft;
            var flightType = document.forms[0].elements[ft];
            var txtDepCity = document.forms[0].elements[arr_From[0]];
            var txtDesCity = document.forms[0].elements[arr_To[0]];
            if (flightType != null)
            {
                if (flightType.value != "openjaw")
                {
                
                    var txtRtnFrom = document.forms[0].elements[arr_From[1]];
                    var txtRtnTo = document.forms[0].elements[arr_To[1]];
                    txtRtnFrom.value = txtDesCity.value;
                    txtRtnTo.value = txtDepCity.value;
                }
            }
        }
        
        objouter.style.display = 'none';
    }
    objInput.onkeydown = checkKeyCode;
    
    function checkKeyCode(e)
    {
        tempName = this.id;
        var ev = e || window.event;
        var value = this.value;
        var ie = !!document.all;
        var keyCode = ev.keyCode;
        if (keyCode == 40 || keyCode == 38) 
        { 
            chageSelection(keyCode == 40)
        } 
        else if (keyCode == 13)
        { 
            outSelection(selectedIndex);
            return false;
        }
        
        if(keyCode == 8){
          tempDate = setTimeout(function(){if(value.length == document.forms[0].elements[tempName].value.length + 1){runlist(value);}},200);
        }else{

        tempDate = setTimeout(function(){if(value.length == document.forms[0].elements[tempName].value.length - 1){runlist(value);}},200);
        }
    }
    function chageSelection(isUp)
    {
        if (objouter.style.display == 'none')
        {
            objouter.style.display = '';
        }
        else
        {
            if (isUp){
                selectedIndex++;
                document.getElementById(Mindex).value = selectedIndex;}
            else{
                selectedIndex--;
                document.getElementById(Mindex).value = selectedIndex;}
        }
        var maxIndex;        
        if (navigator.appName == "Netscape")
        {maxIndex = objouter.childNodes.length - 1;}
        else
        {maxIndex = objouter.children.length - 1;}
        if (selectedIndex < 0){
            selectedIndex = 0;document.getElementById(Mindex).value = selectedIndex;}
        if (selectedIndex > maxIndex){
            selectedIndex = maxIndex;document.getElementById(Mindex).value = selectedIndex;}
        for (intTmp = 0; intTmp <= maxIndex; intTmp++)
        {
        if (navigator.appName == "Netscape")
        {
            if (intTmp == selectedIndex)
                objouter.childNodes[intTmp].className = "sman_selectedStyle";
            else
                objouter.childNodes[intTmp].className = "";
        }
        else
        {
            if (intTmp == selectedIndex)
                objouter.children[intTmp].className = "sman_selectedStyle";
            else
                objouter.children[intTmp].className = "";
                }
        }
    }
    function outSelection(Index)
    {
            Index = Number(document.getElementById(Mindex).value);
            
            if (navigator.appName == "Netscape")
        {
            objInput.value = objouter.childNodes[Index].textContent;
            objouter.style.display = 'none';
            }
            else
            {
                objInput.value = objouter.children[Index].innerText;
            objouter.style.display = 'none';
            }
    }
    
    function divPosition()
    {
        if (navigator.appName == "Netscape")
        {
            objouter.style.top = getAbsoluteHeight(objInput) + getAbsoluteTop(objInput) + "px";
            objouter.style.left = getAbsoluteLeft(objInput) + "px";
            objouter.style.width = getAbsoluteWidth(objInput) + "px";
        }
        else
        {
            objouter.style.top = getAbsoluteHeight(objInput) + getAbsoluteTop(objInput) + "px";
            objouter.style.left = getAbsoluteLeft(objInput) + "px";
            objouter.style.width = getAbsoluteWidth(objInput) + "px";
        }
    }
    function runlist(value)
    {
        checkAndShow();
        divPosition();
        var clientHeight = objouter.clientHeight;
        if (clientHeight != 0){ 
            objouter.innerHTML += "<iframe style='position:absolute;top:0px;left:0px; z-index:-1; width:"+ objouter.style.width + "px; height:"+ objouter.clientHeight +  "px;' frameborder='0' scrolling='no'></iframe>";
        }
        
    }

    function checkAndShow()
    {
        var strInput = objInput.value;
        if (strInput != ""&& strInput.length >= onWorkNumber)
        {
            divPosition();
            var arrList = GetCitysList(strInput);
            selectedIndex = -1;
            objouter.innerHTML = "";
            if  (arrList.length > 0)
            {
            for (intTmp = 0; intTmp < arrList.length; intTmp ++)
            {
                if (intTmp <= 20)
                    addOption(arrList[intTmp], strInput, intTmp);
            }
            objouter.style.display = '';
            }
            else
            {
                objouter.style.display = 'none';
            }
        }
        else
            objouter.style.display = 'none';
        
        function addOption(value, keyw, intTmp)
        {   
            var v = value.replace("'", "");
            value = value.replace("'", "");
            var startStr = v.toUpperCase().indexOf(keyw.trim().toUpperCase());
       
            var endStr = startStr + keyw.trim().length;
            var changeStr = v.substring(startStr,endStr);
//            v = v.substring(0, startStr)  +  "<span style='color:#ff6600; font-size:11px; font-weight:bold;'>"+ changeStr + "</span>"+ v.substring(endStr);
            
            if(value.toUpperCase().indexOf(keyw.toUpperCase()) >= 0)
            {
                var strChange = "<span style='color:#ff6600; font-size:11px; font-weight:bold;'>"+ changeStr + "</span>"
                reg = new RegExp(changeStr,"g"); 
                v = v.replace(reg,strChange);
            }
            else
            {
               
               var display =  MatchStr(value,keyw);
             
               for (i = 0; i < display.length; i ++)
               {
                
                    var start_end = display[i].split('|');
                    changeStr = value.substr(start_end[0],start_end[1] - start_end[0] +1);
                    var strChange = "<span style='color:#ff6600; font-size:11px; font-weight:bold;'>"+ changeStr + "</span>" 
                    reg = new RegExp(changeStr,"g");
                    v = v.replace(reg,strChange);
                    break;
               }
               
            }
            
            
            
            
            
            var newDiv = "<div style=\"padding:5px;cursor:pointer; text-decoration:underline;\" onmouseover=\"document.getElementById('" + Mindex + "').value=" + intTmp + ";var maxIndex;if(navigator.appName=='Netscape'){maxIndex = this.parentNode.childNodes.length - 1;}else{maxIndex = this.parentElement.childNodes.length - 1;}for(intTmp = 0;intTmp<=maxIndex;intTmp++){if(navigator.appName=='Netscape'){if(intTmp==" + intTmp + "){this.parentNode.childNodes[intTmp].className='sman_selectedStyle';}else{this.parentNode.childNodes[intTmp].className='';}}else{if(intTmp==" + intTmp + "){this.parentElement.children[intTmp].className='sman_selectedStyle';}else{this.parentElement.children[intTmp].className='';}}}\" onmouseout=\"this.className=''\"onmousedown=\"document.getElementById('"+ objInputId + "').value='"+ value.trim() + "'\">"+ v.trim() + "</div>";
            objouter.innerHTML += newDiv;
        }
    }
}
function getAbsoluteHeight(ob){
        return ob.offsetHeight;
}

function getAbsoluteWidth(ob){
    return ob.clientWidth + 300
}

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; 
}


  function upper(obj){
      if(obj.value.length == 3 && obj.value != ""){
        obj.value = obj.value.toUpperCase();
      }
  }
  
