function pageInit() {
	layoutInit();
	viewInit();
}

function getScoresIntoNode(nodeName, endCallback) {
	var contentNode = dojo.byId(nodeName);
	dojo.xhrPost({
		url: getScoreUrl(),
		form: getCriteriaFormNode(),
		handleAs: "text",
		handle: function(data, args) {
			if (typeof data == "error") {
				contentNode.innerHTML = "Scores could not be retrieved.  Try again later.";
			} else {
				contentNode.innerHTML = data;
			}
			endCallback();
		},
	});
}

function fade(fadeIn, nodeName, endCallback) {
	var animationArgs = {
		node: nodeName,
		duration: 500,
		delay: 0,
		onEnd: endCallback
	};
	if (fadeIn) {
	    dojo.fadeIn(animationArgs).play();
	} else {
	    dojo.fadeOut(animationArgs).play();
	}
}

function fadeLoadingScores(fadeInLoading, fadeInScores, endCallback) {
	var callbackCompletion = {
		loadingCallbackComplete: false,
		scoreCallbackComplete: false,
		checkCallbacksComplete: function() {
			if (callbackCompletion.loadingCallbackComplete && callbackCompletion.scoreCallbackComplete) {
				endCallback();
			}
		},
		loadingCallback: function() {
			callbackCompletion.loadingCallbackComplete = true;
			callbackCompletion.checkCallbacksComplete();
		},
		scoresCallback: function() {
			callbackCompletion.scoreCallbackComplete = true;
			callbackCompletion.checkCallbacksComplete();				
		}
	};
	fade(fadeInLoading, getLoadingNode(), callbackCompletion.loadingCallback);
	fade(fadeInScores, getScoresNode(), callbackCompletion.scoresCallback);
}

function criteriaFormSubmit(event) {
	eventChain = {
		finished: function() {
			// Does nothing.
		},
		fadeIn: function() {
			fadeLoadingScores(false, true, eventChain.finished);
		},
		updateScores: function() {
			getScoresIntoNode(getScoresNode(), eventChain.fadeIn);
		},
		start: function() {
			fadeLoadingScores(true, false, eventChain.updateScores);
		}
	};
	if (event != null) {
		event.preventDefault();
	}
	eventChain.start();
}

function toggleFilterCriteria() {
	criteriaNode = getCriteriaNode();
	var animationArgs = {
		node: criteriaNode,
		duration: 500
	};
	if (dojo.byId(criteriaNode).style.display == "none") {
		dojo.fx.wipeIn(animationArgs).play();
	} else {
		dojo.fx.wipeOut(animationArgs).play();
	}

}


