    function HttpRequest(sUrl, fpCallback, id)
    {
        this.request = this.createXmlHttpRequest();
        this.request.open("GET", sUrl, true);
        var tempRequest = this.request;
        function request_readystatechange()
        {
            if (tempRequest.readyState == 4)
            {
                if (tempRequest.status == 200)
                {
                     fpCallback(tempRequest.responseText, id);
                }
                else
                {
                     alert("An error occurred trying to contact the server.");
                }
            }
        }
        this.request.onreadystatechange = request_readystatechange;
    }
    HttpRequest.prototype.createXmlHttpRequest = function ()
    {
        if (window.XMLHttpRequest)
        {
        var oHttp = new XMLHttpRequest();
        return oHttp;
    }
    else if (window.ActiveXObject)
    {
        var versions =
        [
            "MSXML2.XmlHttp.6.0",
            "MSXML2.XmlHttp.3.0"
        ];
        for (var i = 0; i < versions.length; i++)
        {
            try
            {
                 var oHttp = new ActiveXObject(versions[i]);
                 return oHttp;
            }
            catch (error)
            {
              //do nothing here
            }
        }
    }
    return null;
}
HttpRequest.prototype.send = function ()
{
    this.request.send(null);
}

function removeAllOptions(selectbox, numMinus)
{
	var i;
	for(i=selectbox.options.length-1;i>= (0+numMinus);i--)
	{
		//selectbox.options.remove(i);
		selectbox.remove(i);
	}
}


function addOption(selectbox, value, text )
{
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}


function getList(id, listtype, id_to_mod)
{ 
//alert("getting list..."); 
	if(id_to_mod == "cbopro"){
		try{
			removeAllOptions(document.getElementById("cboloc"), 1);
		} catch(err){
		//alert(err);
		}
	}   
    var crit_id = document.getElementById(id).value;
    var url = "/getlist/" + listtype + "/" + crit_id;
    var request = new HttpRequest(url, getList_callBack, id_to_mod);
    request.send();
}

function getList2(id, listtype, id_to_mod)
{ 
//alert("getting list..."); 
	if(id_to_mod == "cbopro"){
		try{
			removeAllOptions(document.getElementById("cboloc"), 1);
		} catch(err){
		//alert(err);
		}
	}   
    var crit_id = document.getElementById(id).value;
    var url = "/getlist/" + listtype + "/" + crit_id;
    var request = new HttpRequest(url, getList2_callBack, id_to_mod);
    request.send();
}

function getList2_callBack(sResponseText, id)
{
	var optTouples = sResponseText.split(";");
	var elem_to_mod = document.getElementById(id);
	try{
		removeAllOptions(document.getElementById(id), 0);
		for(i=0; i<optTouples.length; i++){
			//alert('in for loop '+i);	
			var option_arr = optTouples[i].split(",");
				
			addOption(elem_to_mod, option_arr[0], option_arr[1]);
			//alert('adding option: '+option_arr[0]+' '+option_arr[1]);
		}
	}catch(err){
		//alert(err);
	}
}

function getList_callBack(sResponseText, id)
{
		var salCats = sResponseText.split("***");
		sResponseText = salCats[0];
		removeAllOptions(document.getElementById("cbocategory"), 0);
		var optTouples = salCats[1].split(";");
		var elem_to_mod = document.getElementById("cbocategory");
		for(i=0; i<optTouples.length; i++){
			//alert('in for loop '+i);	
			var option_arr = optTouples[i].split(",");
				
			addOption(elem_to_mod, option_arr[0], option_arr[1]);
			//alert('adding option: '+option_arr[0]+' '+option_arr[1]);
		}		


	var optTouples = sResponseText.split(";");
	var elem_to_mod = document.getElementById(id);
	try{
		removeAllOptions(document.getElementById(id), 0);
		for(i=0; i<optTouples.length; i++){
			//alert('in for loop '+i);	
			var option_arr = optTouples[i].split(",");
				
			addOption(elem_to_mod, option_arr[0], option_arr[1]);
			//alert('adding option: '+option_arr[0]+' '+option_arr[1]);
		}
	}catch(err){
		//alert(err);
	}
}

function loadCities(){
    var url = "/get_cities.php";
    var request = new HttpRequest(url, getCities_callBack);
    request.send();
}
