// Global variable
loc = 0; // Stores the location of the SELECTED item in the list
boolTop = 0;
boolBottom = 0;
prevKey = 0;
origValue = "";

function GetXmlHttpObject()
{
    if (window.XMLHttpRequest)
    {
        // code for IE7+, FireFox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    if (window.ActiveXObject)
    {
        // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}

function GetCities(str, obj, obj2, event)
{
    if (document.getElementById("div" + obj2).style.visibility = "visible")
    {
        document.getElementById("div" + obj2).style.visibility = "hidden";
    }
    xmlhttp = GetXmlHttpObject();
    if (xmlhttp == null)
    {
        alert("Your browser does not support XMLHTTP!");
        return;
    }
    if (str.length > 2)
    {
        if (window.event)
        { 
            key = window.event.keyCode; 
        } 
        // FireFox
        else if (event.which) 
        { 
            key = event.which; 
        }
        if (key == 40)
        {
            document.getElementById("div" + obj).onkeydown(event);
        }
        else if (key == 38)
        {
            document.getElementById("div" + obj).onkeydown(event);
        }
        else // If not key down/up fetch more results
        {
            origValue = str;
            document.getElementById("div" + obj).innerHTML = "";
            var url = "/airportlookup.asp?";
            url = url + "f=city";
            url = url + "&q=" + str;
            url = url + "&o=" + obj;
            url = url + "&o2=" + obj2;
            url = url + "&sid=" + Math.random();
    
            xmlhttp.onreadystatechange = stateChangedCities;
            xmlhttp.open("GET", url, true);
            xmlhttp.send(null);
        }
    }
    else if (str.length < 3)
    {
        document.getElementById(obj2).value = "";
        document.getElementById("div" + obj).style.visibility = "hidden";
        loc = 0;
        boolTop = 0;
        boolBottom = 0;
        prevKey = 0;
    }
}

function GetCodes(str, obj, obj2, event)
{
    if (document.getElementById("div" + obj2).style.visibility = "visible")
    {
        document.getElementById("div" + obj2).style.visibility = "hidden";
    }
    xmlhttp = GetXmlHttpObject();
    if(xmlhttp == null)
    {
        alert("Your browser does not support XMLHTTP!");
        return;
    }
    if (str.length > 0)
    {
        if (window.event)
        { 
            key = window.event.keyCode; 
        } 
        // FireFox
        else if (event.which) 
        { 
            key = event.which; 
        }
        if (key == 40)
        {
            document.getElementById("div" + obj).onkeydown(event);
        }
        else if (key == 38)
        {
            document.getElementById("div" + obj).onkeydown(event);
        }
        else // If not key down/up fetch more results
        {
            origValue = str;
            document.getElementById("div" + obj).innerHTML = "";
            var url = "/airportlookup.asp?";
            url = url + "f=code";
            url = url + "&q=" + str;
            url = url + "&o=" + obj;
            url = url + "&o2=" + obj2;
            url = url + "&sid=" + Math.random();

            xmlhttp.onreadystatechange = stateChangedCodes;
            xmlhttp.open("GET", url, true);
            xmlhttp.send(null);
        }
    }
    else if (str.length == 0)
    {
        document.getElementById(obj2).value = "";
        document.getElementById("div" + obj).style.visibility = "hidden";
        loc = 0;
        boolTop = 0;
        boolBottom = 0;
        prevKey = 0;        
    }
}

function stateChangedCities()
{
    if(xmlhttp.readyState == 4)
    {
        text = xmlhttp.responseText;
        if (window.DOMParser)
        {
            parser=new DOMParser();
            xmlDoc=parser.parseFromString(text,"text/xml");
        }
        else // Internet Explorer
        {
            xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async="false";
            xmlDoc.loadXML(text); 
        }
        j = 0;
        obj = xmlDoc.getElementsByTagName("obj")[0].childNodes[0].nodeValue;
        obj2 = xmlDoc.getElementsByTagName("obj2")[0].childNodes[0].nodeValue;
        document.getElementById("div" + obj).style.visibility = "visible";
        setWidthCities(obj);
        
        if (xmlDoc.getElementsByTagName("city").length == 0)
        {
            document.getElementById("div" + obj).style.visibility = "hidden";
            loc = 0;
            boolTop = 0;
            boolBottom = 0;
            prevKey = 0;
        }
        else
        {   
            for (i = 0; i < xmlDoc.getElementsByTagName("city").length; i++)
            {
                str = xmlDoc.getElementsByTagName("city")[i].childNodes[0].nodeValue;
                str = str.replace("'", "#!@");
                str = "valueSelected('" + str + "', '" + obj + "', '" + xmlDoc.getElementsByTagName("code")[i].childNodes[0].nodeValue + "', '" + obj2 + "');";
                document.getElementById("div" + obj).innerHTML += "<div onclick=\"" + str + "\" onmouseout=\"onMouseOut(this, event);\" onmouseover=\"onMouseOver(this, event);\" style=\"padding-left:2px;height:18pxpx;font-size:12px;line-height:18px;\"><a tabindex=\"-1\" style=\"cursor:pointer;font-family: Arial, Helvetica, Sans-Serif; color: #333333;text-decoration:none;font-style:normal;font-weight:normal;\" name=\"" + xmlDoc.getElementsByTagName("code")[i].childNodes[0].nodeValue + "\" >" + xmlDoc.getElementsByTagName("city")[i].childNodes[0].nodeValue + " (" + xmlDoc.getElementsByTagName("code")[i].childNodes[0].nodeValue + ")</a></div>";
                j++
            }
            if (navigator.userAgent.indexOf("MSIE") >= 0 && navigator.appVersion.indexOf("MSIE 6.0") >= 0)
            {
                if (j < 5)
                    document.getElementById("div" + obj).style.height = j * 18;
                else
                    document.getElementById("div" + obj).style.height = "90px";
            }
            loc = 0;
            boolTop = 0;
            boolBottom = 0;
            prevKey = 0;           
        }
        
    }
}

function stateChangedCodes()
{
    if(xmlhttp.readyState == 4)
    {
        text = xmlhttp.responseText;
        if (window.DOMParser)
        {
            parser=new DOMParser();
            xmlDoc=parser.parseFromString(text,"text/xml");
        }
        else // Internet Explorer
        {
            xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async="false";
            xmlDoc.loadXML(text); 
        }
        j = 0;
        obj = xmlDoc.getElementsByTagName("obj")[0].childNodes[0].nodeValue;
        obj2 = xmlDoc.getElementsByTagName("obj2")[0].childNodes[0].nodeValue;
        document.getElementById("div" + obj).style.visibility = "visible";
        setWidthCodes(obj);
        
        if (xmlDoc.getElementsByTagName("code").length == 0)
        {
            document.getElementById("div" + obj).style.visibility = "hidden";
            loc = 0;
            boolTop = 0;
            boolBottom = 0;
            prevKey = 0;
            
        }
        else
        {
           
            for (i = 0; i < xmlDoc.getElementsByTagName("code").length; i++)
            { 
                str = xmlDoc.getElementsByTagName("city")[i].childNodes[0].nodeValue;
                str = str.replace("'", "#!@");
                str = "valueSelected('" + xmlDoc.getElementsByTagName("code")[i].childNodes[0].nodeValue + "', '" + obj + "', '" + str + "', '" + obj2 + "');";
                document.getElementById("div" + obj).innerHTML += "<div onclick=\"" + str + "\" onmouseout=\"onMouseOut(this, event);\" onmouseover=\"onMouseOver(this, event);\" style=\"padding-left:2px;height:18px;font-size:12px;line-height:18px;\"><a tabindex=\"-1\" style=\"cursor:pointer;font-family: Arial, Helvetica, Sans-Serif; color: #333333;text-decoration:none;font-style:normal;font-weight:normal;\" name=\"" + xmlDoc.getElementsByTagName("city")[i].childNodes[0].nodeValue + "\" >" + xmlDoc.getElementsByTagName("code")[i].childNodes[0].nodeValue + "</a></div>";
                j++;
            }
            if (navigator.userAgent.indexOf("MSIE") >= 0 && navigator.appVersion.indexOf("MSIE 6.0") >= 0)
            {
                if (j < 5)
                    document.getElementById("div" + obj).style.height = j * 18;
                else
                    document.getElementById("div" + obj).style.height = "90px";
            }
            loc = 0;
            boolTop = 0;
            boolBottom = 0;
            prevKey = 0;      
        }
                
    }
}

function valueSelected(str, obj, str2, obj2)
{
    str = str.replace("#!@", "'");
    str2 = str2.replace("#!@", "'");
    document.getElementById(obj).value = str;
    document.getElementById(obj2).value = str2;
    document.getElementById("div" + obj).style.visibility = "hidden";
    loc = 0;
    boolTop = 0;
    boolBottom = 0;
    prevKey = 0;
}

function onMouseOut(obj, event)
{
    obj.className = '';
}

function onMouseOver(obj, event)
{
    p = obj.parentNode;
    for (i = 0; i < p.childNodes.length; i++)
        p.childNodes[i].className = '';
    obj.className = 'MattActive';
    // set loc 
}

function onMouseDown(obj, event)
{
    this.div = document.getElementById("div" + obj);
    this.list = this.div.getElementsByTagName('div');

    this.list[loc].className = '';
    loc = 0;
    boolTop = 0;
    boolBottom = 0;
    prevKey = 0;
}

function onKeyDown(obj, obj2, event)
{
    this.div = document.getElementById("div" + obj);
    this.list = this.div.getElementsByTagName('div');

    if (window.event)
    {
        key = window.event.keyCode;
    }
    else if (event.which) // Firefox
    {
        key = event.which;
    }
    if (key == 38 && loc == 0)
    {
        document.getElementById(obj).value = origValue;
        this.list[loc].className = '';
        document.getElementById(obj2).value = "";
        loc = 0;
        boolTop = 0;
        boolBottom = 0;
        prevKey = 0;
        document.getElementById(obj).focus();
    }
    if (key == 40)
    {
        if (loc == 0 && boolTop == 0 && prevKey != 38)
        {
            this.list[loc].className = 'MattActive';
            str = this.list[loc].getElementsByTagName('a')[0].innerHTML;
            document.getElementById(obj2).value = this.list[loc].getElementsByTagName('a')[0].name;
            if (str.indexOf("(", 0) >= 0)
            {
                index = str.indexOf("(", 0);
                str = str.substring(0, index - 1);
            }
            document.getElementById(obj).value = str;
            this.div.scrollTop = 0;
            boolTop = 1;
        }
        else if (boolBottom == 0 && this.list.length != 1)
        {
            this.list[loc].className = '';
            loc++;
            this.list[loc].className = 'MattActive';
            str = this.list[loc].getElementsByTagName('a')[0].innerHTML;
            if (str.indexOf("(", 0) >= 0)
            {
                index = str.indexOf("(", 0);
                str = str.substring(0, index - 1);
            }
            document.getElementById(obj).value = str;
            document.getElementById(obj2).value = this.list[loc].getElementsByTagName('a')[0].name;
            this.div.scrollTop = loc * 18;
            if (loc == this.list.length - 1)
                boolBottom = 1;            
        }
   }
   else if (key == 38 && loc != 0)
   {
        this.list[loc].className = '';
        loc--;
        this.list[loc].className = 'MattActive';
        str = this.list[loc].getElementsByTagName('a')[0].innerHTML;
        if (str.indexOf("(", 0) >= 0)
        {
            index = str.indexOf("(", 0);
            str = str.substring(0, index - 1);
        }
        document.getElementById(obj).value = str;
        document.getElementById(obj2).value = this.list[loc].getElementsByTagName('a')[0].name;
        this.div.scrollTop = loc * 18;
        if (loc == 0)
            boolTop = 0;
        if (loc == this.list.length - 2)
            boolBottom = 0;
        prevKey = 38;             
    }
}

function onFocus(obj)
{   
    if (document.getElementById(obj).value == 'mm/dd/yy') 
        document.getElementById(obj).value = '';
    document.getElementById('divcityDepart').style.visibility = "hidden";
    document.getElementById('divcodeDepart').style.visibility = "hidden";
    document.getElementById('divcityArrive').style.visibility = "hidden";
    document.getElementById('divcodeArrive').style.visibility = "hidden";
    document.getElementById('divlocOLeg1').style.visibility = "hidden";
    document.getElementById('divcodOLeg1').style.visibility = "hidden";
    document.getElementById('divlocDLeg1').style.visibility = "hidden";
    document.getElementById('divcodDLeg1').style.visibility = "hidden";
    document.getElementById('divlocOLeg2').style.visibility = "hidden";
    document.getElementById('divcodOLeg2').style.visibility = "hidden";
    document.getElementById('divlocDLeg2').style.visibility = "hidden";
    document.getElementById('divcodDLeg2').style.visibility = "hidden";
    document.getElementById('divlocOLeg3').style.visibility = "hidden";
    document.getElementById('divcodOLeg3').style.visibility = "hidden";
    document.getElementById('divlocDLeg3').style.visibility = "hidden";
    document.getElementById('divcodDLeg3').style.visibility = "hidden";
    document.getElementById('divlocOLeg4').style.visibility = "hidden";
    document.getElementById('divcodOLeg4').style.visibility = "hidden";
    document.getElementById('divlocDLeg4').style.visibility = "hidden";
    document.getElementById('divcodDLeg4').style.visibility = "hidden";
    document.getElementById('divlocOLeg5').style.visibility = "hidden";
    document.getElementById('divcodOLeg5').style.visibility = "hidden";
    document.getElementById('divlocDLeg5').style.visibility = "hidden";
    document.getElementById('divcodDLeg5').style.visibility = "hidden";
    loc = 0;
    boolTop = 0;
    boolBottom = 0;
    prevKey = 0;
}

function bodyClick()
{
    document.getElementById('divcityDepart').style.visibility = "hidden";
    document.getElementById('divcodeDepart').style.visibility = "hidden";
    document.getElementById('divcityArrive').style.visibility = "hidden";
    document.getElementById('divcodeArrive').style.visibility = "hidden";
    document.getElementById('divlocOLeg1').style.visibility = "hidden";
    document.getElementById('divcodOLeg1').style.visibility = "hidden";
    document.getElementById('divlocDLeg1').style.visibility = "hidden";
    document.getElementById('divcodDLeg1').style.visibility = "hidden";
    document.getElementById('divlocOLeg2').style.visibility = "hidden";
    document.getElementById('divcodOLeg2').style.visibility = "hidden";
    document.getElementById('divlocDLeg2').style.visibility = "hidden";
    document.getElementById('divcodDLeg2').style.visibility = "hidden";
    document.getElementById('divlocOLeg3').style.visibility = "hidden";
    document.getElementById('divcodOLeg3').style.visibility = "hidden";
    document.getElementById('divlocDLeg3').style.visibility = "hidden";
    document.getElementById('divcodDLeg3').style.visibility = "hidden";
    document.getElementById('divlocOLeg4').style.visibility = "hidden";
    document.getElementById('divcodOLeg4').style.visibility = "hidden";
    document.getElementById('divlocDLeg4').style.visibility = "hidden";
    document.getElementById('divcodDLeg4').style.visibility = "hidden";
    document.getElementById('divlocOLeg5').style.visibility = "hidden";
    document.getElementById('divcodOLeg5').style.visibility = "hidden";
    document.getElementById('divlocDLeg5').style.visibility = "hidden";
    document.getElementById('divcodDLeg5').style.visibility = "hidden";
    loc = 0;
    boolTop = 0;
    boolBottom = 0;
    prevKey = 0;
}
