
var LinkListSettings = new Array();

function prepareLinkLists() {
	
	readLinksListSettingsFromCookie();
	
	var linkEl;

	var	linksDiv = document.getElementById("links");

	var	mainLinksLabel = document.getElementById("linksListLabel");
	var	parentList = document.getElementById("linksList");

	// Create the toggle link
	linkEl = document.createElement('a');
	
	// Show / Hide the list
	if( (LinkListSettings.length!=0) && (!getPreferenceForList("linksList")) ) {
		parentList.style.display = "none";
		linkEl.appendChild( document.createTextNode("[show]") );
	}
	else {
		parentList.style.display = "block";
		linkEl.appendChild( document.createTextNode("[hide]") );
	}
	linkEl.setAttribute('id','LinksToggle');
	linkEl.setAttribute('class','menuToggleLink');
	linkEl.setAttribute('href','javascript:toggleLinksVisibility();');

	// Clear out the element
	w3cClearAllChildElements(linksDiv);
	
	// Re-add the elements
	linksDiv.appendChild(linkEl);
	linksDiv.appendChild(mainLinksLabel);
	linksDiv.appendChild(parentList);

	var listCatName;
	var li;
	var linksList;
	var linkListLabel;
	var linkCategoryTitle;
		
	// Find the link list items within the ul
	if(parentList!=null) {
		for(var intParentListChildPosition=0; intParentListChildPosition < parentList.childNodes.length; intParentListChildPosition++) {
			if(parentList.childNodes[intParentListChildPosition].nodeName == "LI") {
				
				li = parentList.childNodes[intParentListChildPosition];
				
				// Get list name (in H2 tag)
				linkListLabel = li.childNodes[0];
				listCatName = linkListLabel.childNodes[0].nodeValue;
	
				// Add an id attribute to this LI
				li.id = removeSpaces(listCatName);
				
				// Add an id attribute to the actual link list within this LI
				if(li.childNodes.length==2) {
					linksList = li.childNodes[1];
				}
				else {
					linksList = li.childNodes[2];
				}
				linksList.id = removeSpaces(listCatName) + "LinksList";
				
				// Add the LI to the array of link lists
				//linkListItems.push(li);

				// Create the toggle link
				linkEl = document.createElement('a');
				
				// Show Hide the list
				if( (LinkListSettings.length!=0) && (!getPreferenceForList(linksList.id)) ) {
					linksList.style.display = "none";
					linkEl.appendChild( document.createTextNode("[show]") );
				}
				else {
					linksList.style.display = "block";
					linkEl.appendChild( document.createTextNode("[hide]") );
				}

				linkEl.setAttribute('id',linksList.id + 'Toggle');
				linkEl.setAttribute('class','menuToggleLink');
				linkEl.setAttribute('href','javascript:toggleLinkListVisibility(\'' + linksList.id + '\');');

				linkCategoryTitle = document.createElement('span');
				linkCategoryTitle.appendChild( document.createTextNode(listCatName) );

				// Clear out the element
				w3cClearAllChildElements(li);
				
				// Re-add the elements
				li.appendChild(linkEl);
				li.appendChild(linkCategoryTitle);
				li.appendChild(linksList);
			}
		}
	}	
	updateLinksListSettingsCookie();
}

function getPreferenceForList(listName) {
	
	var retVal = false;
	var tmpArray;
	
	for(var iPrefPos = 0; iPrefPos < LinkListSettings.length; iPrefPos++) {
		tmpArray = LinkListSettings[iPrefPos].split('^');
		
		if(tmpArray[0]==listName) {
			retVal = (tmpArray[1]=='1');
		}
	}

	return retVal;
}

function readLinksListSettingsFromCookie() {
	var stringValue = getCookie("linksListSettings");
	if(stringValue!=null) {
		LinkListSettings = stringValue.split('|');
	}
	else {
		LinkListSettings = new Array();
	}
}

function updateLinksListSettingsCookie() {
		
	var today = new Date();
	var cookieExpires = new Date();
	cookieExpires.setTime(today.getTime() + 1000*60*60*24*365);

	LinkListSettings = new Array();

	// Main list
	var	linksList = document.getElementById("linksList");
	if(linksList.style.display == "none") {
		LinkListSettings[LinkListSettings.length] = "linksList^0";
	}		
	else {
		LinkListSettings[LinkListSettings.length] = "linksList^1";
	}

	for(var intPosition=0; intPosition < linksList.childNodes.length; intPosition++) {
		if(linksList.childNodes[intPosition].nodeName == "LI") {
		
			for(var intChildPosition=0; intChildPosition < linksList.childNodes[intPosition].childNodes.length; intChildPosition++) {
				if(linksList.childNodes[intPosition].childNodes[intChildPosition].nodeName == "UL") {
					if(linksList.childNodes[intPosition].childNodes[intChildPosition].style.display == "none") {
						LinkListSettings[LinkListSettings.length] = linksList.childNodes[intPosition].childNodes[intChildPosition].id + "^0";
					}		
					else {
						LinkListSettings[LinkListSettings.length] = linksList.childNodes[intPosition].childNodes[intChildPosition].id + "^1";
					}
				}
			}
		}
	}
	
	setCookie("linksListSettings", LinkListSettings.join('|'), cookieExpires);
}


function toggleLinksVisibility() {

	var	linksList = document.getElementById("linksList");
	var	toggleLink = document.getElementById("LinksToggle");

	if(linksList.style.display == "none") {
		// Show
		linksList.style.display = "block";
		w3cSetInnerHTML(toggleLink,"[hide]");
	}
	else {
		// Hide
		linksList.style.display = "none";
		w3cSetInnerHTML(toggleLink,"[show]");
	}

	updateLinksListSettingsCookie();
}

function toggleLinkListVisibility(linksListID) {

	var	linksList = document.getElementById(linksListID);
	var	toggleLink = document.getElementById(linksListID + "Toggle");

	if(linksList.style.display == "none") {
		// Show
		linksList.style.display = "block";
		w3cSetInnerHTML(toggleLink,"[hide]");
	}
	else {
		// Hide
		linksList.style.display = "none";
		w3cSetInnerHTML(toggleLink,"[show]");
	}
	updateLinksListSettingsCookie();
}

appendFunctionToOnLoadEvent(prepareLinkLists);