<!-- Clientside error handling -->
var defaultErrorTagColor	= '#CC0000';

var apliaOldErrorsTag		= null;		// hold errors from previous failed form submission
var apliaOldErrorsInline	= null;		// hold errors from previous failed form submission
var apliaOldErrorsBlock		= null;		// hold errors from previous failed form submission

var apliaErrorsTag 		= new Array();	// errors-tag-name
var apliaErrorsInline	= new Array();	// errors-inline-name
var apliaErrorsBlock	= new Array();	// errors-block-name

function clearOldErrors() {
	// 1) find all apliaOldErrorsInline 
	// clear body
	// hide errors
	if (apliaOldErrorsInline != null) {
		for (var i = 0; i < apliaOldErrorsInline.length; i++) {
			var errorInline = new YAHOO.widget.Module(apliaOldErrorsInline[i][0]);
			errorInline.hide();
		}
	}
	
	// 2a) find all apliaOldErrorsBlock
	// clear body
	if (apliaOldErrorsBlock != null) {
		var errorBlock = new YAHOO.widget.Module("error-block-messages");
		
		// 2b) hide error-block-display-main (note: might not exist)
		var errorBlockDisplay = new YAHOO.widget.Module("error-block-display-main"); 
		errorBlockDisplay.hide();
	}
	
	// 3) find all apliaOldErrorsTag
	// clear styles
	if (apliaOldErrorsTag != null) {
		for (var i = 0; i < apliaOldErrorsTag.length; i++) {
			var errorTag = YAHOO.util.Dom.get(apliaOldErrorsTag[i][0]);
			errorTag.style.color = "";
		}		
	}
	
	// reset all error arrays
	apliaOldErrorsTag 		= null;	
	apliaOldErrorsInline	= null;
	apliaOldErrorsBlock		= null;
}

function addErrorInline(divId, errorText) {
	// find by divId
	var existingErrorInline = null;
	for (var x = 0; x < apliaErrorsInline.length; x++) {
		if (apliaErrorsInline[x][0] == divId) {
			// exist
			existingErrorInline = apliaErrorsInline[x];
		}
	}
	if (existingErrorInline == null) {
		// create new pair
		var pair = new Array(divId, new Array(errorText));
		apliaErrorsInline.push(pair);
	} else {
		// append to existing error
		existingErrorInline[1].push(errorText);
	}
}

function addErrorBlock(errorText) {
	var pair = new Array(errorText);
	apliaErrorsBlock.push(pair);
}

function addErrorTag(divId, tagColor) {
	var pair = new Array(divId, tagColor);
	apliaErrorsTag.push(pair);
}

function showErrors() {

	// A) Remove old errors on screen
	clearOldErrors();

	// B) Show current errors on screen
	// 1) find all apliaErrorsInline
	// show
	for (var i = 0; i < apliaErrorsInline.length; i++) {
		var errorInline = new YAHOO.widget.Module(apliaErrorsInline[i][0]);
		errorInline.cfg.setProperty("display", "inline"); 
		var body = "";
		for (var x = 0; x < apliaErrorsInline[i][1].length; x++) {
			body = body + apliaErrorsInline[i][1][x];
			if (x != apliaErrorsInline[i][1].length - 1) {
				body = body + "<br/>";
			}
		}
		errorInline.setBody(body);
		errorInline.render();
		errorInline.show();
	}
	
	// 2a) find all apliaErrorsBlock
	// insert messages to error-block-messages
	var errorBlockMessages = "";
	for (var i = 0; i < apliaErrorsBlock.length; i++) {
		errorBlockMessages = errorBlockMessages + apliaErrorsBlock[i][0] + "<br/>";
	}		
	if (errorBlockMessages != "") {
		var errorBlock = new YAHOO.widget.Module("error-block-messages");
		errorBlock.setBody(errorBlockMessages);		
		errorBlock.render();	
	}
	
	// 2b) show error-block-display-main (note: might not exist)
	if (errorBlockMessages.length > 0) {
		var errorBlockDisplay = new YAHOO.widget.Module("error-block-display-main"); 
		errorBlockDisplay.show();
	}
	
	// 3) find all apliaErrorsTag
	// add styles
	for (var i = 0; i < apliaErrorsTag.length; i++) {
		var errorTag = YAHOO.util.Dom.get(apliaErrorsTag[i][0]);
		var errorTagColor = apliaErrorsTag[i][1];
		if (errorTagColor == null) {
			errorTag.style.color = defaultErrorTagColor;
		} else {
			errorTag.style.color = errorTagColor;
		}
	}
	
	// C) Current errors become old errors next time submit button is hit
	apliaOldErrorsTag		= apliaErrorsTag;	
	apliaOldErrorsInline	= apliaErrorsInline;
	apliaOldErrorsBlock		= apliaErrorsBlock;	
	
	apliaErrorsTag			= new Array();
	apliaErrorsInline		= new Array();
	apliaErrorsBlock		= new Array();
}
