

	/*
		Developed by Robert Nyman, http://www.robertnyman.com
		Code/licensing: http://code.google.com/p/getelementsbyclassname/
	*/	
	var getElementsByClassName = function (className, tag, elm){
		if (document.getElementsByClassName) {
			getElementsByClassName = function (className, tag, elm) {
				elm = elm || document;
				var elements = elm.getElementsByClassName(className),
					nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
					returnElements = [],
					current;
				for(var i=0, il=elements.length; i<il; i+=1){
					current = elements[i];
					if(!nodeName || nodeName.test(current.nodeName)) {
						returnElements.push(current);
					}
				}
				return returnElements;
			};
		}
		else if (document.evaluate) {
			getElementsByClassName = function (className, tag, elm) {
				tag = tag || "*";
				elm = elm || document;
				var classes = className.split(" "),
					classesToCheck = "",
					xhtmlNamespace = "http://www.w3.org/1999/xhtml",
					namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
					returnElements = [],
					elements,
					node;
				for(var j=0, jl=classes.length; j<jl; j+=1){
					classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
				}
				try	{
					elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
				}
				catch (e) {
					elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
				}
				while ((node = elements.iterateNext())) {
					returnElements.push(node);
				}
				return returnElements;
			};
		}
		else {
			getElementsByClassName = function (className, tag, elm) {
				tag = tag || "*";
				elm = elm || document;
				var classes = className.split(" "),
					classesToCheck = [],
					elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
					current,
					returnElements = [],
					match;
				for(var k=0, kl=classes.length; k<kl; k+=1){
					classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
				}
				for(var l=0, ll=elements.length; l<ll; l+=1){
					current = elements[l];
					match = false;
					for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
						match = classesToCheck[m].test(current.className);
						if (!match) {
							break;
						}
					}
					if (match) {
						returnElements.push(current);
					}
				}
				return returnElements;
			};
		}
		return getElementsByClassName(className, tag, elm);
	};
	
	
	
	
	
	
	
	
	var objs = getElementsByClassName('object');
	
	for(i=0;i<objs.length;i++){
		objs[i].style.display = 'none';
		getElementsByClassName('attrlist', 'ul', objs[i])[0].style.display = 'none';

		var xi = document.createElement('img');
		xi.setAttribute('src', 'x.png');	
		objs[i].appendChild(xi);
		xi.style.position = 'absolute';
		xi.style.top = '10px';
		xi.style.right = '10px';
		xi.style.cursor = 'pointer';
		xi.onclick = function(){
			var t = document.getElementById('btn-' + this.parentNode.id);
			toggleVis(this.parentNode.id, t);
		}
		xi.onmouseover = function(){this.src = 'x-hover.png'};
		xi.onmouseout = function(){this.src = 'x.png'};
		
		var si = document.createElement('img');
		si.setAttribute('src', 'down.png');	
		getElementsByClassName('description', 'li', objs[i])[0].appendChild(si);
		si.style.position = 'absolute';
		si.style.top = '10px';
		si.style.left = '10px';
		si.style.cursor = 'pointer';
		si.onclick = function(){
			if(getElementsByClassName('attrlist', 'ul', this.parentNode.parentNode)[0].style.display == 'none'){
				getElementsByClassName('attrlist', 'ul', this.parentNode.parentNode)[0].style.display = 'block';
				this.src = 'up.png';
				this.onmouseover = function(){this.src = 'up-hover.png'};
				this.onmouseout = function(){this.src = 'up.png'};
			} else {
				getElementsByClassName('attrlist', 'ul', this.parentNode.parentNode)[0].style.display = 'none';	
				this.src = 'down.png';
				this.onmouseover = function(){this.src = 'down-hover.png'};
				this.onmouseout = function(){this.src = 'down.png'};
			}
		}
		si.onmouseover = function(){this.src = 'down-hover.png'};
		si.onmouseout = function(){this.src = 'down.png'};
	}
	toggleExample();
	
	function toggleVis(elem, t){
		oelem = document.getElementById(elem);
		if(oelem.style.display == 'none' && elem != 'example'){
			oelem.style.display = 'block';
			t.style.background = '#FF6';
			t.onmouseover = function(){t.style.background = '#FF6'};
			t.onmouseout = function(){t.style.background = '#FF6'};
			toggleExample();
		} else {
			if(elem != 'example'){
				oelem.style.display = 'none';
				t.style.background = 'none';
				t.onmouseover = function(){t.style.background = '#FFF'};
				t.onmouseout = function(){t.style.background = 'none'};
			}
			toggleExample();
		}
	}
	

	function toggleExample(){
		var objs = getElementsByClassName('object');
		var exampleStatus = 'false';
		for(i=0;i<objs.length;i++){
			if(objs[i].style.display == 'none'){
				exampleStatus = 'true';
			} else {
				exampleStatus = 'false';
				break;
			}
		}
		if(exampleStatus == 'true'){
			document.getElementById('example').style.display = 'block';
		} else {
			document.getElementById('example').style.display = 'none';	
		}		
	}

	
	function hideGroups(){
		var allGroups = getElementsByClassName('group');
		for(g=0;g<allGroups.length;g++){
			allGroups[g].style.display = 'none';	
		}
	}
	hideGroups();
	
	function toggleGroup(e,btn){
		var elg = document.getElementById(e);
		if(elg.style.display == 'none'){
			hideGroups();
			elg.style.display = 'block';
			var allbtns = btn.parentNode.getElementsByTagName('li');
			for(b=0;b<allbtns.length;b++){
				allbtns[b].style.borderStyle = 'outset';
				allbtns[b].style.background = "#00FFFF";
			}
			btn.style.borderStyle = 'inset';
			btn.style.background = "#00EAEA";
		} else {
			elg.style.display = 'none';
			btn.style.borderStyle = 'outset';
			btn.style.background = "#00FFFF";
		}
	}

