function updateTotals() {
	var xhr = new ajax_basics();

	var shipping = '';
	if(ship_select = document.getElementById('sc_shipping_type')) {
		var shipping = ship_select.value;
		}
	
	var gift_wrap = '';
	if(gw_select = document.getElementById('gw_options'))	{
		var gw_options = gw_select.getElementsByTagName('option');
		var gift_wrap = '';
		for(var o = 0; o < gw_options.length; o++) {
			if(gw_options[o].selected) {
				gift_wrap = gw_options[o].value;
				}
			}
		}

	xhr.setUrl(window.location.protocol + '//' + window.location.hostname + '/checkout_update_response.php');
	//defining this clearly for testing
	var canvas = document.getElementById('sc_totals');
	xhr.setCanvas(canvas);
	xhr.setCallback(function() {
								var got_back = xhr.forwardResponse();
								if(got_back[0] == 'xml') {
									var errors = got_back[1].getElementsByTagName('error');
									if(errors.length > 0) {
										var error_arr = new Array;
										for(var e = 0; e < errors.length; e++) {
											one_error = new Object;
											var error_id_val = getOneValue(errors[e], 'error_id'); 										
											var error_text_val = getOneValue(errors[e], 'error_text');
											one_error.error_id = error_id_val;
											one_error.error_text = error_text_val;
											if(redirect_el = errors[e].getElementsByTagName('redirect')) {
												redirect_url = redirect_el[0].getAttribute('url');
												one_error.redirect_url = redirect_url;
												window.location = redirect_url + '?error_message=' + error_text_val;
												}
											error_arr[error_arr.length-1] = one_error;
											}
										}
									}
							 	})
	var data_array = new Object;
	data_array.action = 'updateTotals';
	if(shipping) 
		data_array.shipping = shipping;
	if(gift_wrap)
		data_array.gift_wrap = gift_wrap;
	data_array.call_page = 'cart';
	return xhr.setData(data_array);
	};
	
function totals_init() {
	if(!document.getElementById || !document.getElementsByTagName || !document.createElement || !document.createTextNode) {
		return false;
		}
	if(ups_options_list = document.getElementById('ups_responses')) {
		ups_options = ups_options_list.getElementsByTagName('li');
		for(uo = 0; uo < ups_options.length; uo++) {
			addEvent(ups_options[uo], 'click', updateTotals);
			}
		}
	if(gw_options = document.getElementById('gw_options')) {
		addEvent(gw_options, 'change', updateTotals);
		}
	};

addLoadEvent(totals_init);