// 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
        {   
            tab = document.createElement('table');
            tab.setAttribute('width', '300px');
            tab.setAttribute('cellPadding', '0px');
            tab.setAttribute('cellSpacing', '0px');
            tbo = document.createElement('tbody');
            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 + "');";
                tabr = document.createElement('tr');
                tabr.onmouseout = new Function('event', 'onMouseOut(this, event);');
                tabr.onmouseover = new Function('event', 'onMouseOver(this, event);');
                tabr.onclick = new Function('event', str);
                tabc = document.createElement('td');
                lin = document.createElement('a');
                //lin.setAttribute('href', str);
                //city = xmlDoc.getElementsByTagName("city")[i].childNodes[0].nodeValue;
                //code = xmlDoc.getElementsByTagName("code")[i].childNodes[0].nodeValue;
                //lin.onclick = new Function('event', 'valueSelected(city, obj, code, obj2);');
                //lin.onclick = new Function('event', str);
                lin.setAttribute('tabIndex', '-1');
                lin.className = 'MattInfo';
                lin.setAttribute('name', xmlDoc.getElementsByTagName("code")[i].childNodes[0].nodeValue);
                str = xmlDoc.getElementsByTagName("city")[i].childNodes[0].nodeValue + " (" + xmlDoc.getElementsByTagName("code")[i].childNodes[0].nodeValue + ")";
                txtN = document.createTextNode(str);
                lin.appendChild(txtN);
                tabc.appendChild(lin);
                tabr.appendChild(tabc);
                tbo.appendChild(tabr);
                j++;
            }
            if (j <= 5)
            document.getElementById("div" + obj).style.height = (j * 18);
            else
            document.getElementById("div" + obj).style.height = "90px";
            tab.appendChild(tbo);
            document.getElementById("div" + obj).appendChild(tab);
            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
        {
            tab = document.createElement('table');
            tab.setAttribute('width', '300px');
            tab.setAttribute('cellPadding', '0px');
            tab.setAttribute('cellSpacing', '0px');
            tbo = document.createElement('tbody');
            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 + "');";
                tabr = document.createElement('tr');
                tabr.onmouseout = new Function('event', 'onMouseOut(this, event);');
                tabr.onmouseover = new Function('event', 'onMouseOver(this, event);');
                tabr.onclick = new Function('event', str);
                tabc = document.createElement('td');
                lin = document.createElement('a');
                //lin.setAttribute('href', str);
                //lin.onclick = new Function('event', str);
                lin.setAttribute('tabIndex', '-1');
                lin.className = 'MattInfo';
                lin.setAttribute('name', xmlDoc.getElementsByTagName("city")[i].childNodes[0].nodeValue);
                str = xmlDoc.getElementsByTagName("code")[i].childNodes[0].nodeValue;
                txtN = document.createTextNode(str);
                lin.appendChild(txtN);
                tabc.appendChild(lin);
                tabr.appendChild(tabc);
                tbo.appendChild(tabr);
                j++;
            }
            if (j <= 5)
            document.getElementById("div" + obj).style.height = (j * 18);
            else
            document.getElementById("div" + obj).style.height = "90px";
            tab.appendChild(tbo);
            document.getElementById("div" + obj).appendChild(tab);
            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.bgColor = "#FFFFFF";
}

function onMouseOver(obj, event)
{
    p = obj.parentNode;
    for (i = 0; i < p.childNodes.length; i++)
        p.childNodes[i].bgColor = "#FFFFFF";
    obj.bgColor = "#7f9db9";
    // set loc 
}

function onMouseDown(obj, event)
{
    this.div = document.getElementById("div" + obj);
    this.list = this.div.getElementsByTagName('tr');

    this.list[loc].bgColor = "#FFFFFF";
    loc = 0;
    boolTop = 0;
    boolBottom = 0;
    prevKey = 0;
}

function onKeyDown(obj, obj2, event)
{
    this.div = document.getElementById("div" + obj);
    this.list = this.div.getElementsByTagName('tr');

    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].bgColor = "#FFFFFF";
        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].bgColor = "#7f9db9";
            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].bgColor = "#FFFFFF";
            loc++;
            this.list[loc].bgColor = "#7f9db9";
            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].bgColor = "#FFFFFF";
        loc--;
        this.list[loc].bgColor = "#7f9db9";
        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;
}
