/*------------------------------------------------------------------------
 * create_request()
 * 
 * Create an XML HTTP Request object.
 *------------------------------------------------------------------------*/

function create_request() {
    var req;

    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
        req = false;
    }

    return req;
}


/*------------------------------------------------------------------------
 * request_HTML(url)
 * 
 * Fetch an HTML document.
 *------------------------------------------------------------------------*/

var http = create_request();
var http2 = create_request();
var http3 = create_request();
var http4 = create_request();

function request_HTML4(url, handler, failure) {
    http4.open('GET', url, true);
    http4.onreadystatechange = function () {
        if (http4.readyState == 4) {
            if (http4.status == 200)
                handler(http4.responseText);
            else if (failure)
                failure(http4);
        }
    };
    http4.send(null);
}

function request_HTML3(url, handler, failure) {
    http3.open('GET', url, true);
    http3.onreadystatechange = function () {
        if (http3.readyState == 4) {
            if (http3.status == 200)
                handler(http3.responseText);
            else if (failure)
                failure(http3);
        }
    };
    http3.send(null);
}

function request_HTML2(url, handler, failure) {
    http2.open('GET', url, true);
    http2.onreadystatechange = function () {
        if (http2.readyState == 4) {
            if (http2.status == 200)
                handler(http2.responseText);
            else if (failure)
                failure(http2);
        }
    };
    http2.send(null);
}


function request_HTML(url, handler, failure) {
    http.open('GET', url, true);
    http.onreadystatechange = function () {
        if (http.readyState == 4) {
            if (http.status == 200)
                handler(http.responseText);
            else if (failure)
                failure(http);
        }
    };
    http.send(null);
}



/*------------------------------------------------------------------------
 * request_XML(url)
 * 
 * Fetch an XML document.
 *------------------------------------------------------------------------*/

function request_XML(url, handler, failure) {
    http.open('GET', url, true);
    http.onreadystatechange = function () {
        if (http.readyState == 4) {
            if (http.status == 200)
                handler(http.responseXML.documentElement);
            else if (failure)
                failure(http);
        }
    };
    http.send(null);
}

/*------------------------------------------------------------------------
 * functions to get destination / country / city dropdowns
 *
 * Fetch several http documents.
 *------------------------------------------------------------------------*/

function get_destinations( startid, countryid, countyid, cityid ) {

    request_HTML3("/ajax/search_dropdown_destinations?startid=" + startid, function (html) {
        var curtextval = document.getElementById("search_destinations");
        curtextval.innerHTML = html;
    } );

    request_HTML2("/ajax/search_dropdown_countries?countryid=" + countryid + "&destination=" + startid, function (html) {
        var curtextval = document.getElementById("search_countries");
        curtextval.innerHTML = html;
    } );

    if ( document.getElementById("search_counties") ) {
    request_HTML4("/ajax/search_dropdown_counties?countyid=" + countyid + "&country=" + countryid, function (html) {
        var curtextval = document.getElementById("search_counties");
        curtextval.innerHTML = html;
    } );
    }

    request_HTML("/ajax/search_dropdown_cities?cityid=" + cityid + "&country=" + countryid, function (html) {
        var curtextval = document.getElementById("search_cities");
        curtextval.innerHTML = html;
    } );
}

function onChangeDest() {
  var Current = document.search.destination.selectedIndex;
  document.search.destination.value = document.search.destination.options[Current].text;
  document.search.destination.value = document.search.destination.options[Current].value;

  if ( document.getElementById("search_counties") ) {
  request_HTML4("/ajax/search_dropdown_counties?destination=" + document.search.destination.value , function (html) {
        var curtextval = document.getElementById("search_counties");
        curtextval.innerHTML = html;
  } );
  }

  request_HTML3("/ajax/search_dropdown_countries?destination=" + document.search.destination.value , function (html) {
        var curtextval = document.getElementById("search_countries");
        curtextval.innerHTML = html;
  } );

  request_HTML2("/ajax/search_dropdown_cities?destination=" + document.search.destination.value , function (html) {
        var curtextval = document.getElementById("search_cities");
        curtextval.innerHTML = html;
  } );
}

function onChangeCountry() {
  var Current = document.search.country.selectedIndex;
  document.search.country.value = document.search.country.options[Current].text;
  document.search.country.value = document.search.country.options[Current].value;

  if ( document.getElementById("search_counties") ) {
  request_HTML4("/ajax/search_dropdown_counties?country=" + document.search.country.value , function (html) {
        var curtextval = document.getElementById("search_counties");
        curtextval.innerHTML = html;
  } );
  }

  request_HTML3("/ajax/search_dropdown_cities?country=" + document.search.country.value , function (html) {
        var curtextval = document.getElementById("search_cities");
        curtextval.innerHTML = html;
  } );
}

function onChangeCounty() {
  var Current = document.search.county.selectedIndex;
  document.search.county.value = document.search.county.options[Current].text;
  document.search.county.value = document.search.county.options[Current].value;

  request_HTML3("/ajax/search_dropdown_cities?county=" + document.search.county.value , function (html) {
        var curtextval = document.getElementById("search_cities");
        curtextval.innerHTML = html;
  } );
}



