var foldingList = new Object;
foldingList.elementLookup = function (object){
	if (typeof(object)=="string") {
		if(!(object = document.getElementById(object))){
			return false; // no such id
		};
	};
	while (object.tagName.toLowerCase() != "li"){
		object = object.parentNode;
		if (object == document.body) {
			return false; // no list item to open
		}
	};
	if (!object.getElementsByTagName("ul").length) {
		return false; // no ul found in li
	};
	return object;
};

foldingList.open = function (object){
	if (object != undefined){
		if(!(object = foldingList.elementLookup(object))){
			return true; /* do not cancel event */
		};
		object.className += (object.className?"open":" open");
		return false;
	}
};

foldingList.close = function (object){
	if (object != undefined){
		if(!(object = foldingList.elementLookup(object))){
			return true; /* do not cancel event */
		};
		object.className = object.className.replace(/(^|\s)+open($|\s)+/, "");
		return false;
	}
};

foldingList.toggle = function (object){
		if (object != undefined){
		if(!(object = foldingList.elementLookup(object))){
			return true; /* do not cancel event */
		}; 
		object.className = /(^|\s)+open($|\s)+/.test(object.className)?(object.className.replace(/(^|\s)+open($|\s)+/),""):(object.className?(object.className + " open"):"open");
	}
};

foldingList.bind = function(object) {
	if (pageIndex == -1) return false;
	if (typeof(object)=="string") {
		if(!(object = document.getElementById(object))){
			return false; // no such id
		};
	};
	var spans = object.getElementsByTagName("span");
	for (var i=0; i<spans.length; i++ ){
		$(spans[i]).click( function( event ){
			if (event.target != this) return true; // Skip exec but throw bubbling
			return foldingList.toggle(this);
		});
	};
	if (typeof(pageIndex) != "undefined" && typeof(spans[pageIndex]) != "undefined") this.open(spans[pageIndex]);
};
