var xmlhttp=false;
var lastKeyCode = "";
var key_pos = 0;
var index_page = false;

/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
@end @*/

var fr_ready = false;
var xmlHttpReady = true;
var keyword = "";
var last_keyword = "";

var IE = document.all?true:false;

var locationCoordX = 0;
var locationCoordY = 0;

var isIndex = false;

function fillLocations(elem1,elem2, value)
{
    var xmlhttp=false;
    var select1 =  elem1.innerHTML.split('>')[0] + ">";
    var select2 =  elem2.innerHTML.split('>')[0] + ">";
    elem1.innerHTML = select1+"<OPTION>Loading</OPTION></SELECT>";
    elem2.innerHTML = select2+"<OPTION>Loading</OPTION></SELECT>";
    var txt;

    if (!xmlHttpReady)
    {
        return;
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            xmlhttp=false;
        }
    }
    if (!xmlhttp && window.createRequest) {
        try {
            xmlhttp = window.createRequest();
        } catch (e) {
            xmlhttp=false;
        }
    }

    xmlhttp.open("GET", "/car_hire/get_locations.php?id_country="+value,true);
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            txt = xmlhttp.responseText;
            elem1.innerHTML = select1 + txt + '</SELECT>';
            elem2.innerHTML = select2 + txt + '</SELECT>';
        }
    }
    xmlhttp.send(null);
}

function callInProgress(xmlhttp)
{
    switch ( xmlhttp.readyState )
    {
        case 1, 2, 3:
            return true;
        break;

        // Case 4 and 0
        default:
            return false;
        break;
    }
}

function showAjax(text)
{
//    addDebug("ajax:" + text + " " + GetLastKeyCode());
    if (GetLastKeyCode() == 13)
    {
         return submitData();
    }
    if (processKey(GetLastKeyCode()))
    {
        return;
    }
    last_keyword = text;
    if (!xmlHttpReady)
    {
        return;
    }

    if (text == keyword)
        return;

    var text = new String(text);
    if (text.length == "")
    {
        showAjax_block('none');
        return;
    }

    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            xmlhttp=false;
        }
    }
    if (!xmlhttp && window.createRequest) {
        try {
            xmlhttp = window.createRequest();
        } catch (e) {
            xmlhttp=false;
        }
    }

    var url = "/get_city_list.php?txt=" + text;
    try
    {
        keyword = text;
        xmlhttp.open("GET", url, true);
        xmlhttp.onreadystatechange=ResponseHandler;
        try
        {
            if (xmlHttpReady == true)
                xmlhttp.send(null);
        }
        catch(ex)
        {
            //alert("catched");
        }
    }
    catch (e)
    {
    }
}

function ResponseHandler()
{

    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        if (xmlhttp.responseText == "")
        {
            xmlHttpReady = true;
            return;
        }
//        alert(keyword + " " + last_keyword);
            document.getElementById("ajaxres").innerHTML = PrepareAjaxData(xmlhttp.responseText);

        xmlHttpReady = true;

        if (keyword != last_keyword)
        {
            setTimeout('showAjax(last_keyword)',10)
//            showAjax(last_keyword);
        }
        dropPos();
    }
    else
    {
        xmlHttpReady = false;
    }
}

function PrepareAjaxData(data)
{
    eval(data);
    var s = "<table cellspacing=\"0\" class='ajax_table' name=\"table_test\" style=\"padding:0px; width:250px;\">";
    var city_count = array1.length;
//    alert(s);
    for (var i = 0; i < city_count; i++)
    {
        s += "<tr id=\"id_row_" + i + "\" >";
        s += "<td id=\"id_city_" + i + "\" onmouseover=\"setPos2("+i+")\" onclick=\"submitData()\" class='ajax_city'>" + array1[i]+ "</td>";
        s += "<td id=\"id_country_" + i + "\" onmouseover=\"setPos2("+i+")\" onclick=\"submitData()\" class='ajax_country'>" + array2[i]+ "</td>";
        s += "</tr>";
    }
    s += "</table><div style=\"display:none;\" id=\"city_count\">" + city_count + "</div>";
    if (city_count > 0)
        showAjax_block('block');
    else
        showAjax_block('none');
    moveCityList();
    return s;
}

function showAjax_block(txt)
{
    if (txt == "")
        txt = "none";
   document.getElementById("ajaxres").style.display = txt;
}

function moveCityList()
{

    obj = document.getElementById('city_elem');
//    obj_height = obj.offsetHeight;
    oCities = document.getElementById('ajaxres');
    if (obj == null || oCities == null)
        return;
    var add_x = 0;
    var add_y = 0;

    if (IE && index_page)
    {
        add_x = 10;
        add_y = 15;
    }


    oCities.style.left = findOffsetLeft(obj)+add_x+'px';

    oCities.style.top = findOffsetTop(obj)+21+add_y+'px';
}


function findOffsetLeft(obj)
{
    var curleft = 0;
    if (obj.offsetParent)
    {
        while (obj.offsetParent)
        {
            curleft += obj.offsetLeft;
            obj = obj.offsetParent;
        }
    }
    else if (obj.x)
    {
        curleft += obj.x;
    }
    return curleft;
}

function findOffsetTop(obj)
{
    var curtop = 0;
    if (obj.offsetParent)
    {
        while (obj.offsetParent)
        {
            curtop += obj.offsetTop;
            obj = obj.offsetParent;
        }
    }
    else if (obj.y)
    {
        curtop += obj.y;
    }
    return curtop;
}

function GetLastKeyCode()

{

    return lastKeyCode;

}

window.onload = function()
{

    document.onkeydown = register;

    moveCityList();

}

function register(e)
{
    if (!e) e = window.event;
    lastKeyCode = e['keyCode'];
}

function setPos(num,sel)
{
    var obj = document.getElementById("id_row_"+num);
    var obj_ci = document.getElementById("id_city_"+num);
    var obj_co = document.getElementById("id_country_"+num);
    if (obj == null || obj_ci == null || obj_co == null)
    {
        key_pos = 0;
        return;
    }
    obj.className = "ajax-"+ sel;
    key_pos = num;
//    setValues();
}

function setPos2(num)
{
    setPos(key_pos,"empty");
    key_pos = num;
    if (num != -1)
    {
        setValues();
    }
    else
    {
        return
    }
    setPos(key_pos,"select");
//    addDebug(fill);
}
function keyupper()
{
    if (key_pos == 0)
        return;
    setPos2(key_pos-1);

}
function keydown()
{
    var obj = document.getElementById("city_count");
    if (obj ==null)
        return;
    if (!(key_pos+1 < obj.innerHTML))
        return;
//    addDebug((key_pos+1) + " " + obj.innerHTML);
    setPos2(key_pos+1);
}
function processKey(key)
{
    if (key == 38)
    {
       keyupper();
       return true;
    }
    if (key == 40)
    {
       keydown();
       return true;
    }
    return false;
}
function dropPos()
{
    setPos2(-1);
}

function setValues()
{
    var num = key_pos;
    var obj = document.getElementById("id_row_"+num);
    var obj_ci = document.getElementById("id_city_"+num);
    var obj_co = document.getElementById("id_country_"+num);
    var elem_co = document.getElementById("country");
    var elem_ci = document.getElementById("city_elem");
    if (obj == null || obj_ci == null || obj_co == null || elem_co == null || elem_ci == null)
        return false;
    elem_co.value = obj_co.innerHTML;
    elem_ci.value = obj_ci.innerHTML;
    return true;
}

function submitData()
{
//    alert(key_pos);
    if (key_pos == -1)
    {
        setCountry="";
        document.forms["search_frm"].submit();
    }
    if (!setValues())
        return;
    document.forms["search_frm"].submit();
    return true;
}
function setCountry(country)
{
    var elem_co = document.getElementById("country");
    elem_co.value = country;
}
function addDebug(txt)
{
    var elem = document.getElementById("debug");
//    alert(txt);
    elem.innerHTML = elem.innerHTML + "<br>" + txt;
}
