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;
}
function openWindow(windowname) {
    var newWindow = window.open(windowname,"pop","scrollbars=yes,status=no,menubar=no,toolbar=no,resizeable=yes,HEIGHT=400,WIDTH=500");
}




/*
	city csuggestions
*/
var city_suggestion = 0;
function getCityList(id, url, phrase_city, city, e)
{
	var denied_keys = new Array(13, 37, 38, 39, 40, 27, 34, 20, 16, 17, 18, 45, 36, 33, 35, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123);
	
	var event = e;
	if(!event)
	{
		event = window.event;
	}

	var k;
	for (k in denied_keys)
	{
		if (event.keyCode == denied_keys[k])
		{
			return false;
		}
	}

	if (trim(phrase_city) == "") return false;

	var request2;
	city_suggestion = 0;
	
    if (window.XMLHttpRequest)
    {
	    request2 = new XMLHttpRequest();
    }
    else
    {
	    if (window.ActiveXObject)
	    {
		    try
		    {
			    request2 = new ActiveXObject("Msxml2.XMLHTTP");
		    }
		    catch (e)
		    {
			    try
			    {
				    request2 = new ActiveXObject("Microsoft.XMLHTTP");
			    }
			    catch (e)
			    {
			    }
		    }
	    }
    }

    if (request2)
    {
		request2.onreadystatechange = function()
        {
        	// if xmlhttp shows "loaded"
        	if (request2.readyState==4)
        	{
        	  // if "OK"
        		if (request2.status==200)
        		{
        			if (trim(city.value) == trim(phrase_city))
        			{
//        				var id = document.getElementById('city_suggestions');
						id.innerHTML = request2.responseText;
						id.style.display = 'block';
        			}
        		}
        		else
           		{
        //    		alert("Problem retrieving XML data");
        	    }
        	}
        }

	    request2.open("GET", url, true);
	    request2.send(null);
    }
}

function closeCitySuggestions()
{
	if (document.getElementById('city_suggestions').style.display == "block")
	{
		document.getElementById('city_suggestions').style.display = 'none';
	}	
}

function moveByCitySuggestions(form_id, e)
{
	var event = e;
	if(!event)
	{
		event = window.event;
	}

	switch(event.keyCode)
	{
		case 38:
			if (city_suggestion == 0)
			{
				city_suggestion = 1;
			}
			city_suggestion -= 1;
			changeCitySuggestionsBackground(city_suggestion, city_suggestion+1);
			break;
	    case 40:
			if (changeCitySuggestionsBackground(city_suggestion+1, city_suggestion))
			{
				city_suggestion += 1;
			}
	    	break;
	    case 13:
//	    	document.getElementById('city').value = document.getElementById('city_suggestion_'+city_suggestion).innerHTML;
//	    	closeCitySuggestions();
//			alert(form_id);
			form_id.submit();
	    	break;
	}

	return false;
}

function changeCitySuggestionsBackground(city_suggestion, previous_city_suggestion)
{
	if (document.getElementById('city_suggestion_'+city_suggestion))
	{
		if (document.getElementById('city_suggestion_'+previous_city_suggestion))
		{
			document.getElementById('city_suggestion_'+previous_city_suggestion).style.backgroundColor='#FFFFFF';
		}
		
		if (document.getElementById('city_name_'+previous_city_suggestion))
		{
			document.getElementById('city_name_'+previous_city_suggestion).style.backgroundColor='#FFFFFF';
		}
		
		document.getElementById('city_suggestion_'+city_suggestion).style.backgroundColor='#F1F1F2';
		document.getElementById('city_name_'+city_suggestion).style.backgroundColor='#F1F1F2';
		document.getElementById('header_country').value = document.getElementById('country_name_'+city_suggestion).innerHTML;
		
		if(document.getElementById('header_countryB'))
		{
		  document.getElementById('header_countryB').value = document.getElementById('country_name_'+city_suggestion).innerHTML;
		}
		document.getElementById('country').value = document.getElementById('country_name_'+city_suggestion).innerHTML;

		document.getElementById('city').value = document.getElementById('city_name_'+city_suggestion).innerHTML;
		document.getElementById('city_elem').value = document.getElementById('city_name_'+city_suggestion).innerHTML;
		
		if(document.getElementById('cityB'))
		{
		    document.getElementById('cityB').value = document.getElementById('city_name_'+city_suggestion).innerHTML;
		}

		return true;
	}
	else
	{
		return false;
	}
}

function pageBlanking()
{
	return false;
}

