function toggleVisibility(elemID) {
	var enabled = getEnabled();
	
	var elem = (document.all) ? document.all(elemID) : document.getElementById(elemID)
	if (elem.className == "product") {
		elem.className = "product hidden"
		enabled = enabled.remove(elemID);
	} else {
		elem.className = "product"
		enabled.push(elemID);
	}
	setEnabled(enabled);
}

function getEnabled() {
	return readCookie('enabled') ? readCookie('enabled').split(',') : [];
}

function setEnabled(enabled) {
	createCookie('enabled', enabled, 1);
}

function initVisibility() {
	// close all toggles unless they have been previously opened, 
	// or it is the first element, and no previous state has been
	// recorded.

	var enabled = getEnabled();
	var products = getElementsByClass('product', null, 'div');
	
	var isFreshPage = true;
	
	for (i = 0; i < products.length; i++) {
		isFreshPage = isFreshPage && !enabled.inArray(products[i].id);
	}
	
	if (isFreshPage && products.length > 0) enabled.push(products[0].id);
	
	setEnabled(enabled);
	
	for (i = 0; i < products.length; i++) {
		var product = products[i];
		if (!enabled.inArray(product.id)) product.className = "product hidden";
	}
}

function distributeLoadEvents() {
  if (document.body.id == "products") initVisibility();
}


function addInvisibility() {
	var products = $('products-listing');
	
	if (products) {
		products = products.getElementsByTagName("h2");
		for( var i = 0; i < products.length; i++) {
			var product = products[i];
			var link = product.getElementsByTagName("a")[0];
			link.href = "javascript: toggleVisibility('" + product.parentNode.id + "')";
		}
	}
}

addLoadEvent(distributeLoadEvents);
addLoadEvent(addInvisibility);
