function ProductCollection() {
	this.products = new Array(); 
	
	var arrayElements = byId("products").getElementsByTagName("span");
	var featureElements;
	if (byId("featureproducts") != null) {
		featureElements = byId("featureproducts").getElementsByTagName("span");
	}		
	for (var i=0; i<arrayElements.length; i++) {
		var productElements = arrayElements[i].getElementsByTagName(productTag);
		for (var j=0; j<productElements.length; j++) {
			if (productElements[j].id.indexOf("IMG") == 0) {
				this.products.push(new Product(productElements[j]));
			}			
		}					
	}
	if (featureElements != null) {
		for (var i=0; i<featureElements.length; i++) {
			var productElements = featureElements[i].getElementsByTagName(productTag);
			for (var j=0; j<productElements.length; j++) {
				if (productElements[j].id.indexOf("FTR") == 0) {
					this.products.push(new Product(productElements[j]));
				}			
			}					
		}
	}
}

extend(ProductCollection, {
	getAllProducts: function() {
		return this.products;
	},
	
	getProduct: function (id) {
		for (var i=0; i < this.products.length; i++) {
			if (this.products[i].productId == id) {
				return this.products[i];
			}
		}
	}						
 })	

function addDojoDndSourceTargets(collection) {
	var sourceListeners = new Array();
	var products = collection.getAllProducts();
	for (var i=0; i < products.length; i++) {
		var dragCopySource = new dojo.dnd.HtmlDragCopySource(byId(products[i].productId), "target", false);
		dojo.event.connect(dragCopySource, "onDragStart", this, "fadeIn");
		dojo.event.connect(dragCopySource, "onDragEnd", this, "fadeOut");
		dojo.event.connect(dragCopySource, "onDragStart", this, "disableBubbling");
		sourceListeners.push(dragCopySource);
	}
	return sourceListeners;
}

function unregisterDND(listeners) {
	if (listeners.length > 0) {
		for (var i=0; i<listeners.length; i++) {
			dojo.event.disconnect(listeners[i], "onDragStart", this, "fadeIn");
			dojo.event.disconnect(listeners[i], "onDragEnd", this, "fadeOut");
			dojo.event.disconnect(listeners[i], "onDragStart", this, "disableBubbling");
			listeners[i].unregister();
		}
	}
}
