// GENERIC REUSABLE FUNCTIONS AND DOM MANIPULATIONS



function fnShowElement(element) {element.style.display = "block";}

function fnHideElement(element) {element.style.display = "none";}

// empty a container of children
function fnEmptyElement(elContainer) {
	while (elContainer.hasChildNodes()) {
		elContainer.removeChild(elContainer.firstChild);
	}
}





// check across browsers to find dimensions of viewport
function fnViewportDimensions() {
	// all except Explorer
	if (self.innerHeight)
	{x = self.innerWidth; y = self.innerHeight;}
	else if (document.documentElement && document.documentElement.clientHeight)
	{x = document.documentElement.clientWidth; y = document.documentElement.clientHeight;}
	// other Explorers
	else if (document.body)	{x = document.body.clientWidth; y = document.body.clientHeight;}
}





// determine the number of a clicked item in a group
function fnWhichItem(element,parentLevel) {

	// find the top level element unique to each item
	if (parentLevel > 1) {
		for (var i=0; i<parentLevel; i++) {
			element = element.parentNode;
		}
	}

	// find out where in its container element it occurs
	var arElements = element.parentNode.childNodes;
	for (elementSelected=0; elementSelected<arElements.length; elementSelected++) {
		if (element == arElements[elementSelected]) {
			return elementSelected;
		}
	}
}





//takes a block and expands it
// parameters are ELEMENT, START VALUE, INCREMENT STEP, MILLISECONDS, TARGET OPACITY
function fnFadeInElement(element,intGrow,intStep,milliseconds,targetOpacity,elementNext) {
	var flGrow = Math.sin(intGrow*(Math.PI/180));

	if (ie) {
		element.style.filter = "alpha(opacity="+flGrow*targetOpacity*100+")";
	} else {

		element.style.opacity = (flGrow * targetOpacity);
	}

	intGrow = intGrow + intStep;
	if (intGrow <= 90) {
		t=setTimeout(function(){fnFadeInElement(element,intGrow,intStep,milliseconds,targetOpacity,elementNext)}, milliseconds);
		if (elementNext) {
			fnShowElement(elementNext);
			fnFadeInElement(elementNext,0,30,1,1);
		}
	}
}
