var select = {};

(function() {
	if (!dojo) return;
	
	dojo.addOnLoad(init);

	function init() {
		dojo.query("input.listItemSelectCheckbox").connect("onclick", function(event) {
			updateSelectCounter();			
		});
		
		dojo.query(".selectAllLink").connect("onclick", function(event) {
			dojo.stopEvent(event);

			setAllChecked(true);
			updateSelectCounter();
		});
		
		dojo.query(".selectNoneLink").connect("onclick", function(event) {
			dojo.stopEvent(event);

			setAllChecked(false);
			updateSelectCounter();
		});
		
		updateSelectCounter();
	}
	
	function setAllChecked(checked) {
		dojo.query("input.listItemSelectCheckbox").attr("checked", checked);
	}

	function updateSelectCounter() {
		var count = 0;
		var existingProductSelected = false;
		
		dojo.query("input.listItemSelectCheckbox").forEach(function(checkbox) {
			if (checkbox.checked) {
				count++;
				if (!dojo.hasClass(checkbox, "productMissing")) existingProductSelected = true;
			}
		});

		dojo.query(".selectedItemCount").forEach(function(element) {
			element.innerHTML = count;
		});
		
		dojo.query(".selectActionButton").attr("disabled", count == 0);
		dojo.query(".selectActionButton.productNotMissing").attr("disabled", !existingProductSelected);
	}
	
	function getSelectedValues() {
		var values = [];
		
		dojo.query("input.listItemSelectCheckbox").forEach(function(checkbox) {
			if (checkbox.checked) values.push(checkbox.value);
		});
	
		return values;
	}
	
	select.init = init;
	select.getSelectedValues = getSelectedValues;
})();
