function callAJAX(form, result, noreset, showform, callback) {
	var waiting = document.createElement('div');
	waiting.innerHTML = '<img src="/images/loading.gif" alt="" /> Loading';
	form.parentNode.insertBefore(waiting, form);
	hideDiv(form);
	if (result === false) {
		// Create a form result div - remove previous one if already created
		if (document.getElementById('formresult')) {
			document.getElementById('formresult').parentNode.removeChild(document.getElementById('formresult'));
		}
		var resultant = document.createElement('div');
		resultant.setAttribute('id','formresult');
		resultant.className = 'infomsg';
		form.parentNode.insertBefore(resultant, form);
	} else {
		if (document.getElementById(result)) {
			var resultant = document.getElementById(result);
		} else {
			var resultant = result;
		}
		resultant.className = 'infomsg';
	}
	var status = AjaxRequest.submit(
	    form
	    ,{
	      'timeout':25000,
	      'onTimeout':function(req){ alert('Your request timed out. Please try again.'); showDiv(form); form.parentNode.removeChild(waiting); form.reset(); },
	      'onSuccess':function(req){ if (isset(callback)) callback(req.responseText,form); else resultant.innerHTML = req.responseText; var test = req.responseText.split("<<<DATA<<<"); if (test[0] === 'error') { resultant.innerHTML = test[1]; form.reset(); showDiv(form); } if (isset(noreset) && noreset !== true) form.reset(); if (showform !== false) showDiv(form); form.parentNode.removeChild(waiting); },
	      'onError':function(req){ alert('Your request was not completed. Server response: '+req.statusText); showDiv(form); form.parentNode.removeChild(waiting); form.reset(); }
	    }
	  );
	return false;
}

function updateQuantityPrice(data,form) {
	if (data == 'error') {
		alert('Unable to update quantity. Try again.');
		form.reset();
	} else {
		data = data.split('<<<DATA<<<');
		if (data[0] == 'done') {
			document.getElementById('price-'+data[1]).innerHTML = data[2];
			document.getElementById('price-total').innerHTML = data[3];
		} else {
			if (data[0] == 'remove') {
				hide('item-'+data[1]);
				document.getElementById('price-total').innerHTML = data[2];
			}
		}
	}
}