function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	
	document.cookie = name+"="+value+expires+"; path=/; domain = "+COOKIE_DOMAIN;
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
	
function GlobalReplaceWithComma(needle, haystack)
{
	while (haystack.indexOf(needle) != -1) 
	{
		haystack = haystack.replace(needle, ',');
	}
	return haystack;
}

function GlobalReplaceComma(replacement, haystack)
{
	while (haystack.indexOf(',') != -1) 
	{
		haystack = haystack.replace(',', replacement);
	}
	return haystack;
}

function _dom_toggle()
{
	return this;
}
	_dom_toggle.prototype.objref = function(id)
	{
		return document.getElementById ? document.getElementById(id) : (document.all ? document.all[id] : (document.layers ? document.layers[id] : null));
	}

	_dom_toggle.prototype.cancel_event = function()
	{
		if ( window.event )
		{
			window.event.cancelBubble = true;
		}
	}

	_dom_toggle.prototype.save_toggle_status = function(id, pre_id, cookie_name, status)
	{
		id = id.replace(pre_id, '');
		var cookie_value = readCookie(cookie_name);
		var comma_encode = '%2C';
		cookie_value = GlobalReplaceWithComma(comma_encode, cookie_value);
		
		// if we are hiding an element put it into the cookie
		if ( status )
		{
			if ( cookie_value == null || cookie_value == '' )
			{
				createCookie(cookie_name, id, 365);
			}
			else
			{
				cookie_value = cookie_value + ',' + id;
				cookie_value = GlobalReplaceComma(comma_encode, cookie_value);
				createCookie(cookie_name, cookie_value, 365);
			}
		}
		else
		{
			cookie_value = ',' + cookie_value + ','; 
			id = ',' + id + ',';
			cookie_value = GlobalReplaceWithComma(id, cookie_value);
			cookie_value = cookie_value.substring(1, cookie_value.length-1);
			cookie_value = GlobalReplaceComma(comma_encode, cookie_value);
			createCookie(cookie_name, cookie_value, 365);
		}
	}
	
	_dom_toggle.prototype.toggle = function(id, open_close_id, open_icon, close_icon, pre_id, cookie_name)
	{
		var object = this.objref(id);
		var icon = this.objref(open_close_id);

		if ( object && object.style )
		{
			if ( object.style.display == 'none' )
			{
				object.style.display = '';
				if ( cookie_name != '' )
				{
					this.save_toggle_status(id, pre_id, cookie_name, false);
				}
			}
			else
			{
				object.style.display = 'none';
				if ( cookie_name != '' )
				{
					this.save_toggle_status(id, pre_id, cookie_name, true);
				}
			}
			if ( icon && icon.src )
			{
				icon.src = (object.style.display == 'none') ? open_icon : close_icon;
			}
		}
		this.cancel_event();
	}

// instantiate
dom_toggle = new _dom_toggle();
var keep_toggle_status = 1;