// ---- EXPAND/CONTRACT FUNCTIONS ----
// ---- Last modified 11/09/2004: Mozilla support added by niceExpander@syntax101.com

// preload the expand/contract icon images
if (document.images) {
	expandIconImage = new Image();
	expandIconImage.src = "library/images/left-arrow.gif";
	contractIconImage = new Image();
	contractIconImage.src = "library/images/down-arrow.gif";
}

// Expands and contracts sections within the page
function expandAll(toggleState) {
	// toggleState -- 'toggle', 'expand', or 'contract'
	expArr = document.getElementsByName("exptrigger")
	for(i=0; i < expArr.length; i++){
		handleExpander(expArr[i], toggleState);
	}
}

function handleExpander(triggerEl, toggleState){
	// toggleState -- 'toggle', 'expand', or 'contract'
	// triggerEl -- the element that triggered the expansion call
	// parentEl -- the expansion group's 'container' element, must have id="expGroup"
	// expanderEl -- the element to show/hide, must have id="expander", must be an immediate child of parentEl
	// triggerImgEl -- the element WITHIN triggerEl that holds the 'expand/contract' icon image. Must have id="expIcon"
	 
	/* test browser type */
	var ie = document.all;
	var mozilla = document.getElementById && !document.all;
		
	/* ie uses parentElement to get traverse nodes; mozilla uses parentNode */
	parentEl = mozilla? triggerEl.parentNode : triggerEl.parentElement;
	
	while (parentEl.id != "expGroup") {parentEl = mozilla? triggerEl.parentNode : triggerEl.parentElement;}
	
	/* find the expander element*/
	for (var i = 0; i < parentEl.childNodes.length; i++) {
		if(parentEl.childNodes[i].id == "expander"){
			expanderEl = parentEl.childNodes[i];
		}
	}
	
	/* find the expander icon element*/
	for (var i = 0; i < triggerEl.childNodes.length; i++) {
		if(triggerEl.childNodes[i].id == "expIcon"){
			triggerImgEl = triggerEl.childNodes[i];
		}
	}
	switch(toggleState) {
		case 'toggle':
			if (expanderEl.style.display == 'none') {
				expand(expanderEl, triggerImgEl);
			} else {
				contract(expanderEl, triggerImgEl);
			}
		break;
		case 'expand':
			expand(expanderEl, triggerImgEl);
		break;
		case 'contract':
			contract(expanderEl, triggerImgEl);
		break;
	}
}

function expand(expanderEl, triggerImgEl) {
	expanderEl.style.display = 'block';
	if (triggerImgEl) 
		{triggerImgEl.src = contractIconImage.src;}
}

function contract(expanderEl, triggerImgEl) {
	expanderEl.style.display = 'none';
	if (triggerImgEl) 
		{triggerImgEl.src = expandIconImage.src;}
}