//document.write("<script language=javascript src='CommJs/jquery-1.4.2.js'></script>");

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();
    var tempname = new Array();
    
    if (flag.value != "H")
    {
        arrList = ResultStr.split('~');
        var _number = arrList.length;
        var reg=new RegExp("[\ ]"+code+"[\s\S]*","i");

        for (intTmp = 0; intTmp < _number; intTmp ++) 
        {
            var data = arrList[intTmp].split("|)|");
            var aircode = data[0]
            var partstr = data[1];
            if (aircode.toUpperCase().indexOf(strTrim(code).toUpperCase()) >= 0)
            {
                temp.push(arrList[intTmp].replace("|)|",")"));
            }
            else
            {
                if (reg.test(partstr))
                {
                    tempname.push(arrList[intTmp].replace("|)|",")"));
                }
            }
            
        }
        
        for(var t=0;t<tempname.length;t++){
            temp.push(tempname[t]);
            if (temp.length == 20)
            {
                return temp;
            }
        }

    }
    else
    {
        arrCityList = HotelResultStr.split('||');
        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>");
var path="";
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 productType='cityandairport';
            if(arr_FormerContlName.length>0)
                productType = arr_FormerContlName.join('_')+'_'+ productType;
            var flag = document.getElementById(productType);
            var type = flag.value != "H"?'a':'h';
            var canfly = objInput.className.indexOf('allcanfly')>-1? 'true':'false';
            var url = 'http://50.18.50.76:800/AirportOrCityList.aspx?where='+strInput+'&t='+type+'&canfly=' + canfly;
            if ($.browser.msie && parseInt($.browser.version, 10) >= 8 && window.XDomainRequest) {
                 // Use Microsoft XDR
                 
                 var xdr = new XDomainRequest();
                                         
                 xdr.onload = function()  { 
                    var obj = $.parseJSON(xdr.responseText);
                    if(obj.item.length>0){ 
                        CreateDisplay(obj,flag.value);;
                    }
                    else{
                        objouter.style.display = 'none';
                    }
                 }
                 xdr.open("GET", url);
                 xdr.send();
            } 
            else {
                  var xmlHttp;
                    if(window.ActiveXObject)
                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                    else if(window.XMLHttpRequest)
                        xmlHttp = new XMLHttpRequest();
                    xmlHttp.open("POST", url, false);
                    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                    xmlHttp.send("");
                    var arrList ;
                    
                    if(xmlHttp.responseText.length>0){
                        arrList = xmlHttp.responseText;
                        jsonData = eval("("+arrList+")");
                        if(jsonData.item.length>0){ 
                            CreateDisplay(jsonData,flag.value);
                        }
                    }
                    else
                        objouter.style.display = 'none'; 
            } 
    }
    else
        objouter.style.display = 'none';
    
    function CreateDisplay(arrList,flag)
    {
        selectedIndex = -1;
        objouter.innerHTML = "";
        if  (arrList.item.length > 0)
        {
            for (intTmp = 0; intTmp < arrList.item.length; intTmp ++)
            { 
                if (intTmp <= 20)
                    addOption(arrList.item[intTmp], strTrim(strInput), intTmp, flag);
            }
            objouter.style.display = '';
        }
        else
        {
            objouter.style.display = 'none';
        }
    }
    
    function addOption(value, keyw, intTmp, flag)
    {   
        var v = value;
        value = value.replace(/'/g, "\\'");
        var startStr = v.toUpperCase().indexOf(keyw.toUpperCase());
   
        var endStr = startStr + keyw.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(v.indexOf('*')!=0 && flag=="H")
        {
            v=v.replace("(","<font class=\"HideText\" style=\"display:none;\">(");
            v=v.replace(")",")</font>");
        }
        else if(v.indexOf('*')==0 && flag=="H")
        {
            v=v.substring(1);
        }
        
        if(value.toUpperCase().indexOf(keyw.toUpperCase()) >= 0)
        {
            var strChangeUP = "<span style='color:#ff6600; font-size:11px; font-weight:bold;'>"+ changeStr.toUpperCase() + "</span>"
            var strChange = "<span style='color:#ff6600; font-size:11px; font-weight:bold;'>"+ changeStr + "</span>"
            reg = new RegExp(changeStr,"g"); 
            v = v.replace(reg,strChange);
            v = v.replace(changeStr.toUpperCase(),strChangeUP);
        }
        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 + "'\">"+ v + "</div>";
        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=\"SelectOne('"+ objInputId + "','"+ value+"','"+flag+"')\">"+ v + "</div>";
        objouter.innerHTML += newDiv;
    }
}

}


function SelectOne(id,value,flag)
{
var citycodeid='citycode';
    if(arr_FormerContlName.length>0)
        citycodeid = arr_FormerContlName.join('_')+'_'+ citycodeid;
var result="";
var arr=value.split(")");
if(flag=="H")
{
    if(document.getElementById("EsSearchH1_citycode")!=null)
        document.getElementById("EsSearchH1_citycode").value = arr[0].replace("*","").replace("(","");
    else
        document.getElementById(citycodeid).value = arr[0].replace("*","").replace("(","");
}
var display="";
if(value.indexOf('*') != 0 && flag=="H")
{
    if(arr.length>2){
        for(var j=1;j<arr.length;j++){
            if(arr[j].indexOf('(')>-1)
                result += arr[j]+")";
            else
                result += arr[j];
        }     
    }
    else{
        result = arr[1];
    }
}
else if(value.indexOf('*') == 0 && flag=="H")
{
    result = value.substring(1);
}
else
{
    result = value;
}

document.getElementById(id).value=result;
document.getElementById("__smanDisp").style.display = 'none' ;
}
 
 
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();
      }
  }
  

