function setupForms() {
    var i, j, city, cityHidden, location;
    for (i = 0; i < document.forms.length; i++) {
	if (!(city = document.getElementById('' + document.forms[i].id + '_city'))) continue;
	cityHidden = document.getElementById('' + document.forms[i].id + '_city:hidden');
	if (!document.getElementById('' + document.forms[i].id + '_location')) continue;

	city.disabled = false;
	for (j = 0; j < city.options.length; j++) {
	    if (city.options[j].defaultSelected) {
		city.selectedIndex = j;
		break;
	    }
	}

	city.onchange = function() {
	    var form, i, req;
	    form = this.form;
	    location = form.location ? form.location : form['location[]'];
	    if (!this.value) {
		for (i = 0; i < location.options.length; ) {
		    if (location.options[i].value > 0)
			location.remove(i);
		    else {
			location.options[i].selected = true;
			i++;
		    }
		}
		location.disabled = true;
		return;
	    }

	    req = new Subsys_JsHttpRequest_Js();
	    req.onreadystatechange = function() {
		var i;
		if (req.readyState != 4 || !req.responseJS) return;
		location.disabled = false;
		location.options.length = 0;
		for (i = 0; i < req.responseJS.length; i++) {
		    location.options[i] = new Option(req.responseJS[i].name, req.responseJS[i].value, 0, req.responseJS[i].value == 0);
		}
	    }
	    req.caching = true;
	    req.open('POST', '/board/load_location.php', true);
	    req.send({ city: this.value, 'for': form.id });
	}

	if (cityHidden) cityHidden.parentNode.removeChild(cityHidden);
    }
}