/*************************************************************************/
/* Application specific functions
/*************************************************************************/

ValidFormAlerter.prototype.push = function(strElementId, strAlert) {
	//*** Add alert to the element.

	//*** Create the main error notification.
	this.mainPush(this.mainAlert);

	//*** Find the parent div with the right class
	var objParent = getParentByClass(document.getElementById(strElementId), ["required","optional"]);

	if (objParent) {
		//*** Add the "error" class to the current class.
		if (objParent.tagName.toLowerCase() == "div") {
			var strClass = objParent.className + " error";
			objParent.className = strClass;
		}

		//*** Add error description to the element.
		var objErrorElmnt = this.constructError(strAlert);
		var objFirstElmnt = objParent.firstChild;
		objParent.insertBefore(objErrorElmnt, objFirstElmnt);
	}
};

ValidFormAlerter.prototype.pop = function(strElementId) {
	//*** Remove any alerts from the element.

	//*** Find the parent div with the right class
	if (strElementId) {
		try {
			var objElement = document.getElementById(strElementId).parentNode;
			objParent = getParentByClass(objElement, "error");
		} catch(e) {
			//*** Checkbox or radio button.
			var objElement = document.getElementById(this.id)[strElementId];
			var objElement = objElement[objElement.length - 1];
			var objParent = getParentByClass(objElement, "error");
		}

		if (objParent) {
			var objErrorElmnt = objParent.firstChild;

			//*** Remove the "error" class from the current class.
			if (objParent.tagName.toLowerCase() == "div") {
				var strClass = objParent.className;
				strClass = strClass.split("error").join(" ").trim();
				objParent.className = strClass;
			}

			//*** Remove error description from the element.
			if (objErrorElmnt.className.toLowerCase() == "error") {
				objParent.removeChild(objErrorElmnt);
			}
		}
	}
};

ValidFormAlerter.prototype.mainPush = function(strError) {
	//*** Add main alert to the document.

	var objForm = document.getElementById(this.id);
	var blnFound = false;
	
	try {
		blnFound = $(".error-main", objForm);
	} catch(e) {
		//alert(e.message);
	}
	
	if (blnFound.length == 0) {
		var objErrorElmnt = this.constructMainError(strError);
		objForm.insertBefore(objErrorElmnt, objForm.firstChild);
	}
	scroll(0,0);
};

ValidFormAlerter.prototype.mainPop = function() {
	//*** Remove main alert from the document.

	var objForm = document.getElementById(this.id);
	var objElements = getElementsByClass("error-tr", objForm.parentNode, "div");

	try {
		var objErrorElmnt = objElements[objElements.length - 1];
		objForm.parentNode.removeChild(objErrorElmnt);
	} catch(e) {
		//*** Could not find the error element.
	}
};

ValidFormAlerter.prototype.constructMainError = function(strError) {
	//*** Build the MainError HTML. ***************************************
	//*
	//* <div class="error-main">
	//*     <p>The error string.</p>
	//* </div>
	//*********************************************************************

	var objCurrent = document.createElement("p");
	var objText = document.createTextNode(strError); 
	objCurrent.appendChild(objText);

	var objDiv = document.createElement("div");
	objDiv.className = "error-main";
	objDiv.appendChild(objCurrent);
	objCurrent = objDiv;

	return objCurrent;
};

ValidFormAlerter.prototype.constructError = function(strError) {
	//*** Build the element error description. ****************************
	//*
	//* <span class="alert">The error string.</span>
	//*********************************************************************

	var objCurrent = document.createElement("p");
	objCurrent.className = "error";
	var objText = document.createTextNode(strError); 
	objCurrent.appendChild(objText);

	return objCurrent;
};
