function updateStates(multiple, size, countryField, stateField, stateSelectDiv, stateLoadingDiv, countyField, countySelectDiv, onclick, populateCACitiesAsCounties) {
	var countryField = (countryField == null)?('country'):(countryField);
	var stateField = (stateField == null)?('state'):(stateField);
	var countyField = (countyField == null)?('countyId'):(countyField);
	var stateSelectDiv = (stateSelectDiv == null)?('divStateSelect'):(stateSelectDiv);
	var stateLoadingDiv = (stateLoadingDiv == null)?('divStateLoading'):(stateLoadingDiv);
	var countySelectDiv = (countySelectDiv == null)?('divCountySelect'):(countySelectDiv);
	var onclick = (onclick == null)?(''):(onclick);
	var populateCACitiesAsCounties = (populateCACitiesAsCounties == null)?(0):(populateCACitiesAsCounties);

	var f = document.edit_form;
	var country = f[countryField].options[f[countryField].selectedIndex].value;
	var divCountySelect = document.getElementById(countySelectDiv);
	var oXmlHttp = zXmlHttp.createRequest();
	var divStateLoading = document.getElementById(stateLoadingDiv);
	divCountySelect.innerHTML = "";
	divStateLoading.innerHTML = "<b style=\"color: #ff0000\">Loading...</b>";
	var url = "index.php?p=FindContractor&e=getStates&country=" + country + "&size=" + size + "&countryField=" + countryField + "&stateField=" + stateField + "&stateSelectDiv=" + stateSelectDiv + "&stateLoadingDiv=" + stateLoadingDiv + "&countyField=" + countyField + "&countySelectDiv=" + countySelectDiv + "&populateCACitiesAsCounties=" + populateCACitiesAsCounties;
	if(multiple) {
		url += "&multiple=1";
	}
	oXmlHttp.open("get", url, true);
	oXmlHttp.onreadystatechange = function() {
		if(oXmlHttp.readyState == 4) {
			if(oXmlHttp.status == 200) {
				displayStateSelect(oXmlHttp.responseText, stateSelectDiv, stateLoadingDiv);
			}
			else {
				alert('Unable to load state list');
			}
		}
	};
	oXmlHttp.send(null);
}

function displayStateSelect(sText, stateSelectDiv, stateLoadingDiv) {
	var stateSelectDiv = (stateSelectDiv == null)?('divStateSelect'):(stateSelectDiv);
	var stateLoadingDiv = (stateLoadingDiv == null)?('divStateLoading'):(stateLoadingDiv);

	var divStateSelect = document.getElementById(stateSelectDiv);
	divStateSelect.innerHTML = sText;
	var divStateLoading = document.getElementById(stateLoadingDiv);
	divStateLoading.innerHTML = "";
}

function updateCounties(multiple, size, countryField, stateField, countyField, countySelectDiv, onclick, populateCACitiesAsCounties) {
	var countryField = (countryField == null)?('country'):(countryField);
	var stateField = (stateField == null)?('state'):(stateField);
	var countyField = (countyField == null)?('countyId'):(countyField);
	var countySelectDiv = (countySelectDiv == null)?('divCountySelect'):(countySelectDiv);
	var onclick = (onclick == null)?(''):(onclick);
	var populateCACitiesAsCounties = (populateCACitiesAsCounties == null)?(0):(populateCACitiesAsCounties);


	var f = document.edit_form;
	var country = f[countryField].options[f[countryField].selectedIndex].value;
	var states = new Array();
	if(f[stateField].type == 'select-multiple') {
		for(i=0; i<f[stateField].options.length; i++) {
			if(f[stateField].options[i].selected) {
				states.push(f[stateField].options[i].value);
			}	
		}	
	}
	else {
		states.push(f[stateField].options[f[stateField].selectedIndex].value);
	}
	var divCountySelect = document.getElementById(countySelectDiv);
	if(!populateCACitiesAsCounties) {
		if(country == 'Canada') {
			divCountySelect.innerHTML = "N/A";
			return;
		}
	}
	var oXmlHttp = zXmlHttp.createRequest();
	divCountySelect.innerHTML = "<b style=\"color: #ff0000\">Loading...</b>";
	var url = "index.php?p=FindContractor&e=getCounties&size=" + size + "&countryField=" + countryField + "&stateField=" + stateField + "&countyField=" + countyField;
	for(i=0; i<states.length; i++) {
		url += "&state" + i + "=" + states[i];
	}
	if(multiple) {
		url += "&multiple=1";
	}
	oXmlHttp.open("get", url, true);
	oXmlHttp.onreadystatechange = function() {
		if(oXmlHttp.readyState == 4) {
			if(oXmlHttp.status == 200) {
				displayCountySelect(oXmlHttp.responseText, countySelectDiv);
			}
			else {
				alert('Unable to load county list (' + url + ')');
			}
		}
	};
	oXmlHttp.send(null);
}

function displayCountySelect(sText, countySelectDiv) {
	var countySelectDiv = (countySelectDiv == null)?('divCountySelect'):(countySelectDiv);

	var divCountySelect = document.getElementById(countySelectDiv);
	divCountySelect.innerHTML = sText;
}

function hideCity(lang) {
	cityField = document.getElementById('divCityField');
	countyField = document.getElementById('divCountyField');
	if(document.edit_form.country.options[document.edit_form.country.selectedIndex].value == 'Canada') {
		cityField.style.display = 'none';
		if(lang == 'FR') {
			countyField.innerHTML = 'Ville:';
		}
		else {
			countyField.innerHTML = 'City:';
		}
	}
	else {	
		cityField.style.display = 'block';
		if(lang == 'FR') {
			countyField.innerHTML = 'Comté:';
		}
		else {
			countyField.innerHTML = 'County:';
		}
	}
}

