// widget toggle v1.0
// JavaScript Document
// Dependencies: cookie.js, flexOnload.js

var WIDGET_EXPIRES = 60 * 60 * 24 * 31; // one month (in seconds)
var WIDGET_PREFIX = "widget"; // how to recognize widgets (starts with prefix in id)
var WIDGET_TAGLIST = new Array("p", "ul", "img");
	
/**
*/
function syncWidgets()
{
	var widgets = getWidgets();
	
	for(var i = 0; i < widgets.length; i++)
	{
		var isCollapsed = (getCookie(widgets[i].id) == "1");
		setWidgetState(widgets[i], isCollapsed);
	}
}

// add syncWidgets to onload function
flexOnloadRegister("syncWidgets()");

/**
* @param String id
*/
function toggleWidget(id)
{
	// get widget
	var myWidget = document.getElementById(id);				
	if(!myWidget)
	{
		return;
	}

	// get button object ..
	var myButton = myWidget.getElementsByTagName("h3")[0].getElementsByTagName("a")[0];
	var isCollapsed = (myButton.className != "buttonExpand-c16");
	setWidgetState(myWidget, isCollapsed);
	
	var expiresDate = new Date();
	expiresDate.setTime(expiresDate.getTime() + (WIDGET_EXPIRES * 1000));
	setCookie(id, isCollapsed ? "1" : "0", expiresDate, "/");
}

/**
* @param boolean
*/
function setWidgetState(myWidget, isCollapsed)
{
	// toggle button
	var myButton = myWidget.getElementsByTagName("h3")[0].getElementsByTagName("a")[0];
	if(myButton)
	{
		myButton.className = isCollapsed ? "buttonExpand-c16" : "buttonCollapse-c16";
	}

	// toggle widget body
	var tagList = WIDGET_TAGLIST;
	for(var t = 0; t < tagList.length; t++)
	{
		var myList = myWidget.getElementsByTagName(tagList[t]);				
		if(myList)
		{				
			for(var i = 0; i < myList.length; i++)
			{
				myList[i].style.display = isCollapsed ? "none" : "block";		
			}
		}
	}
}

/**
* @return array with widget Objects
*/
function getWidgets()
{
	var widgets = new Array();
	var list = document.getElementsByTagName("div");
	if(list)
	{
		for(var i = 0; i < list.length; i++)
		{
			// if div element is a widget ..
			if(list[i].id.substring(0, 6) == WIDGET_PREFIX)
			{
				// .. add it to widgets list
				widgets[widgets.length] = list[i];
			}
		}
	}
	return widgets;
}
