function mupr_do_rate(form_obj, results_div_name, target_url) {

	if ( ( ! document.getElementById ) || ( ! document.getElementsByTagName ) ) return false;
	
	var mysack = new sack(target_url);
	var did_vote = false;

	var voting_objs = form_obj.getElementsByTagName("input");	
	if ( ( voting_objs.length == 0 ) || ( voting_objs.length == undefined ) ) return false;

	var re = /factor_([0-9]+)/;
	for ( var i=0; i<voting_objs.length; i++ ) {
		tagname = voting_objs[i].name;
		factor_id = tagname.replace(re, "$1");
		if ( ( ! isNaN(factor_id) ) && voting_objs[i].checked && ( ! isNaN(voting_objs[i].value) ) ) {
			mysack.setVar('ratings['+factor_id+']', voting_objs[i].value);
			did_vote = true;
		}
		
		if ( voting_objs[i].type == "hidden" ) mysack.setVar(voting_objs[i].name, voting_objs[i].value);
	}

	if ( ! did_vote ) return false;

	mysack.execute = 1;
	mysack.method = 'POST';
	mysack.setVar("vote_results_div_id", results_div_name);
	mysack.onError = function() { alert('AJAX error in voting'); };
	
	document.getElementById('mupr_submit_button').innerHTML = 'casting vote...';
	mysack.runAJAX();

	return true;
}

