
var WidgetItems = new Array();

function InitializeSidebarItems() {

	var sidebar = document.getElementById(fp_sidebarcollapse_sidebarID);
	if(sidebar) {
		
		// Assumes one main list under sidebar div
		var mainList = sidebar.getElementsByTagName(fp_sidebarcollapse_sidebarListEl)[0];

		if(mainList) {

			var sidebarItems = sidebar.getElementsByTagName(fp_sidebarcollapse_sidebarListItemEl);

			for(var i=0; i < sidebarItems.length; i++) {
					if(sidebarItems[i].parentNode==mainList) {
						
						if(sidebarItems[i].className.indexOf(fp_sidebarcollapse_sidebarListItemPartialClassName)!=-1) {
							
							sidebarItems[i].ItemTitle = GetSidebarWidgetItemTitle(sidebarItems[i]);
							
							if(sidebarItems[i].ItemTitle) {

								var toggleLink = document.createElement('a');
								toggleLink.className = "SideBarWidgetToggle";
								sidebarItems[i].ToggleLink = toggleLink;
								sidebarItems[i].ItemTitle.appendChild(toggleLink);

								// Add to array
								WidgetItems.push(sidebarItems[i]);

								var storedValue = SideBarWidgetGetCookie(sidebarItems[i].id);
								if(storedValue=='N') {
									HideSidebarWidget(sidebarItems[i].id);
								}
								else {
									ShowSidebarWidget(sidebarItems[i].id);
								}
								
							}
							
						}
					}
			}
			
		}
	}

}

function HideSidebarWidget(widgetID) {
	var widget = GetWidgetByID(widgetID);
	if(widget) {
		for(var i=0; i < widget.childNodes.length; i++) {
			if(widget.childNodes[i]!=widget.ItemTitle) {
				if(widget.childNodes[i].style) {
					
					if(widget.childNodes[i].displaystyle==null) {
						widget.childNodes[i].displaystyle = widget.childNodes[i].style.display;
					}

					widget.childNodes[i].style.display = 'none';
				}
			}
		}
		
		SideBarWidgetSetCookie(widget.id,'N')
		var storedValue = SideBarWidgetGetCookie(widget.id);
		if(storedValue!='Y') {
			// Link to Show
			while(widget.ToggleLink.hasChildNodes()) {
				widget.ToggleLink.removeChild(widget.ToggleLink.lastChild);
			}
			widget.ToggleLink.setAttribute('href','javascript:ShowSidebarWidget(\'' + widget.id+ '\');');
			widget.ToggleLink.setAttribute('class','show');
			widget.ToggleLink.appendChild( document.createTextNode(fp_sidebarcollapse_show) );
		}
	}
}

function ShowSidebarWidget(widgetID) {
	var widget = GetWidgetByID(widgetID);
	if(widget) {
		for(var i=0; i < widget.childNodes.length; i++) {
			if(widget.childNodes[i]!=widget.ItemTitle) {
				if(widget.childNodes[i].style) {
					if(widget.childNodes[i].displaystyle!=null) {
						widget.childNodes[i].style.display = widget.childNodes[i].displaystyle;
					}
				}
			}
		}
		
		SideBarWidgetSetCookie(widget.id,'Y')
		var storedValue = SideBarWidgetGetCookie(widget.id);
		if(storedValue=='Y') {
			// Link to Hide
			while(widget.ToggleLink.hasChildNodes()) {
				widget.ToggleLink.removeChild(widget.ToggleLink.lastChild);
			}
			widget.ToggleLink.setAttribute('href','javascript:HideSidebarWidget(\'' + widget.id+ '\');');
			widget.ToggleLink.setAttribute('class','hide');
			widget.ToggleLink.appendChild( document.createTextNode(fp_sidebarcollapse_hide) );
		}
	}
}

function GetWidgetByID(ID) {
		for(var i = 0; i < WidgetItems.length; i++) {
			if(WidgetItems[i].id==ID) {
				return WidgetItems[i];
			}
		}
		return null;
}

function GetSidebarWidgetItemTitle(item) {
		for(var i=0; i < item.childNodes.length; i++) {
			if(item.childNodes[i].className) {
				if(item.childNodes[i].className.indexOf(fp_sidebarcollapse_sidebarWidgetTitlePartialClassName)!=-1) {
					return item.childNodes[i];
				}
			}
		}
		return null;
}

/**
 * Sets a Cookie with the given name and value.
 *
 * name       Name of the cookie
 * value      Value of the cookie
 * [expires]  Expiration date of the cookie (default: end of current session)
 * [path]     Path where the cookie is valid (default: path of calling document)
 * [domain]   Domain where the cookie is valid
 *              (default: domain of calling document)
 * [secure]   Boolean value indicating if the cookie transmission requires a
 *              secure transmission
 */
function SideBarWidgetSetCookie(name, value, expires, path, domain, secure)
{
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}


/**
 * Gets the value of the specified cookie.
 *
 * name  Name of the desired cookie.
 *
 * Returns a string containing value of specified cookie,
 *   or null if cookie does not exist.
 */
function SideBarWidgetGetCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}


if(!window.registeredloadfunctions) {
	window.registeredloadfunctions = new Array();
}
function appendInitializeSidebarItemsToOnLoadEvent(func) {
	if(window.registeredloadfunctions[func]==null) {
		window.registeredloadfunctions[func] = true;
		  var oldonload = window.onload;
		  if (typeof window.onload != 'function') {
			window.onload = func;
		  } else {
			window.onload = function() {
			  oldonload();
			  func();
			}
		  }
	}  
}

appendInitializeSidebarItemsToOnLoadEvent(InitializeSidebarItems);

