function togglePrice(add, value1, value2) {
	value1 = Math.max(0, value1);
	value2 = Math.max(0, value2);
	var spans = document.getElementsByTagName('SPAN');
	for (var i=0; i<spans.length; i++) {
		var className = spans[i].className;
		if (!className) continue;
		if (className == 'price' || className == 'price2') {
			title = spans[i].getAttribute("title");
			if (title == null || title == '') continue;
			newvalue = parseFloat(title) + (add ? 1 : -1) * (className == 'price' ? value1 : value2);
			spans[i].setAttribute("title", Math.max(0, newvalue));
			spans[i].innerHTML = currency(newvalue);
		}
	}
}

function toInt(value) {
	value = parseInt(value);
	if (!value) value = 0;
	return value;
}

function toggleReadOnly(id) {
	obj = document.getElementById(id);
	if (!obj) return;
	obj.readOnly = !obj.readOnly;
	obj.style.background = obj.readOnly ? '#EEE' : '#FFF';
}

function validateBundles(bundle_id) {
	if (!window.required_products) return true;
	var bundles = document.forms['products'].elements['bundle_id['+bundle_id+'][]'];
	var unsatisfied = clone(window.required_products);
	for (name in bundles) {
		for (i in unsatisfied) {
			if (!unsatisfied[i]) continue;
			for (k in unsatisfied[i]) {
				if (bundles[name].value == unsatisfied[i][k]) {
					if (bundles[name].type == 'checkbox' && bundles[name].checked) {
						delete unsatisfied[i];
						break;
					}
					if (bundles[name].type == 'select-one') {
						delete unsatisfied[i];
						break;
					}
				}
			}
		}
	}
	var error = '';
	for (i in unsatisfied) {
		error += "\n- " + window.categories[i];
	}
	if (error) {
		alert(window.i18n.errorRequiredCategories + error);
		return false;
	}
	return true;
}