function createUpdateFormClosure() {
	var update = document.getElementById('update');
	return function() {
		saveScrollCoordinates(document.forms.orderform);
		update.click()
	};
}

function updateOnChange(elements, all) {
	// only add handlers to the last element by default
	if(all) {
		EventManager.Add(elements[elements.length-1],'change',createUpdateFormClosure());
	} else {
		for(var i=0; i<elements.length; i++) {
			EventManager.Add(elements[i],'change',createUpdateFormClosure());
		}
	}
}

// We handle the New Rental select lists a little differently.
function updateTotalsOnChange(elements) {
	for(var i=0; i<elements.length; i++) {
		EventManager.Add(elements[i],'change',updateTotals(i));
	}
}

function updateTotals(i) {
	return function() {
		toolTotal = document.getElementsByName('drillRigCount[]')[i].value * document.getElementsByName('toolsCount[]') [i].value;
		toolTotalText = toolTotal + ' x ' + document.getElementsByName('coreSize[]')[i].value;
		document.getElementsByName('totalTools[]')[i].innerHTML = toolTotalText;
	}
}

function registerEvents() {
	// hide the manual update
	var update = document.getElementById('update');
	update.style.display = 'none';

	// add handlers for Ezy-Mark New Rental
	updateTotalsOnChange(document.getElementsByName('coreSize[]'));
	updateTotalsOnChange(document.getElementsByName('drillRigCount[]'));
	updateTotalsOnChange(document.getElementsByName('toolsCount[]'));
	updateOnChange(document.getElementsByName('coreSize[]'), true);
	updateOnChange(document.getElementsByName('drillRigCount[]'), true);
	updateOnChange(document.getElementsByName('toolsCount[]'), true);
/*
	updateOnChange(document.getElementsByName('coreSize[]'), false);
	updateOnChange(document.getElementsByName('drillRigCount[]'), false);
	updateOnChange(document.getElementsByName('toolsCount[]'), false);
*/

	// add handlers for Consumables
	updateOnChange(document.getElementsByName('product[]'), true);
	updateOnChange(document.getElementsByName('quantity[]'), true);
	updateOnChange(document.getElementsByName('size[]'), true);

	// add handlers for Ezy-Mark Exchange
	updateOnChange(document.getElementsByName('ezymarkCoreSize[]'), true);
	updateOnChange(document.getElementsByName('ezymarkSerial[]'), true);
	updateOnChange(document.getElementsByName('ezymarkReason[]'), true);

	// add handlers for Ezy-Log New Rental
	updateOnChange(document.getElementsByName('ezylogRentalRate[]'), true);
	updateOnChange(document.getElementsByName('ezylogRentalQuantity[]'), true);
	updateOnChange(document.getElementsByName('ezylogRentalDuration[]'), true);

	// add handlers for Ezy-Log Return
	updateOnChange(document.getElementsByName('ezylogReturnSerial[]'), true);
	updateOnChange(document.getElementsByName('ezylogReturnReason[]'), true);
}

EventManager.Add(window,'load', registerEvents);