
Event.DOMReady(RolloverSwitch);

function RolloverSwitch(){
	var rollovers = Document.getElementsByClassMatch("JS:RolloverSwitch");
	rollovers.each(
		function(element){
			Event.addEvent(element, "mouseover", RolloverSwitch.init);
		}
	);
}
RolloverSwitch.init = function(evt){
	var element = Event.getTarget(evt);
	// loop through and get element with the event attached encase a child element called the event
	while(element.className.indexOf("JS:RolloverSwitch") < 0){
		element = element.parentNode;
	}
	var parameters = Document.getArguments(element, "JS:RolloverSwitch");
	var container = document.getElementById(parameters[0]);
	//var hideElements = Document.getChildNodes(container);
	var showElement = document.getElementById(parameters[1]);
	var instant = (parameters[2]) ? true : false;
	var currentAppearance = Document.getStyle(showElement, "display");
	// only hide if element exists and selection is not already visible
	if(showElement && currentAppearance == "none" && ! container.animating){
		container.animating = true;
		RolloverSwitch.hideElements(container, showElement, instant);
	}
}
RolloverSwitch.hideElements = function(container, showElement, instant){
	var hideElements = Document.getChildNodes(container);
	var currentlyOnShow = null;
	for(var i = 0; i < hideElements.length; i ++){
		var element = hideElements[i];
		if(Document.getStyle(element, "display") != "none"){
			currentlyOnShow = element;
			continue;
		}
		RolloverSwitch.setAppearances(element);
	}
	if(instant){
		RolloverSwitch.setAppearances(currentlyOnShow);
		RolloverSwitch.show(container, showElement, instant);
	}
	else if(currentlyOnShow){
		var fadeOut = new Tween(currentlyOnShow, "alpha", Regular.easeIn, Document.getOpacity(currentlyOnShow), 0, 0.15);
		fadeOut.onMotionFinished = function(){
			RolloverSwitch.setAppearances(currentlyOnShow);
			RolloverSwitch.show(container, showElement, instant);
		}
	}
}
RolloverSwitch.show = function(container, element, instant){
	if(instant){
		container.animating = false;
		element.style.display = "block";
	}
	else{
		element.style.opacity = 0;
		element.style.filter = "alpha(opacity=0)"; 
		element.style.display = "block";
		var fadeIn = new Tween(element, "alpha", Regular.easeIn, Document.getOpacity(element), 100, 0.15);
		fadeIn.onMotionFinished = function(){
			container.animating = false;
		}
	}
}
RolloverSwitch.setAppearances = function(element){
	// assign css styles for error prevention for quick hovers
	element.style.display = "none";
	element.style.opacity = 1;
	element.style.filter = "alpha(opacity=100)"; 
}
