var get = document.getElementById;

var Navigation = {
	sfHover : function() {
		var sfEls = document.getElementById("NavigationList").getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].onmouseover=function() { this.className+=" sfhover"; }
			sfEls[i].onmouseout=function() { this.className=this.className.replace(new RegExp(" sfhover\\b"), ""); }
		}
	}
}

function display(str, elementID /* optional - switches DIV elements */ ) {
	var displayElement;
	var defaultElement = document.getElementById("MSG_default");
	if(!elementID) displayElement = defaultElement;
	else displayElement = document.getElementById(elementID);
	var msgGraphics = new Animation(displayElement);
	var fadeOutDisplay = function() { msgGraphics.fadeElementOpacity(-1, 0, 50);		 };	
	msgGraphics.fadeElementOpacity(1, 100, 25);	
	displayElement.innerHTML = "<img src='images/visuals/information.gif' class='MSG_information' />"
	 + "<div class='MSG_'><span class='title'>For Your Information</span><br /><br />" + str + "</div>"; 
	setTimeout(fadeOutDisplay, 1500); }
	
var Container = {
	itself : null,	
	setObject : function(element) { this.itself = element; },
	UI : {
		setElementVisual : function() {
			if(!Container.itself) return;
			var element = Container.itself;
			var elUI = Container.itself.style;	
			var state = element.getAttribute("status");
			var destruct = function() { window.eventElementState = element.getAttribute("status"); }
			if(!state || state == "hidden" || state == "static") {
				elUI.visibility = "visible"; elUI.display = "block";
				element.setAttribute("status", "shown");				
			}
			else {
				elUI.visibility = "hidden"; elUI.display = "none";
				element.setAttribute("status", "hidden");
			} destruct();
		}
	}, Form : {
		itself : null,	
		setObject : function(form) { this.itself = form; },
		validate : function(fields, messages, displayBox) {
			var WEB_ID_FORM = document.webIDForm;
			var USE_DISPLAY = true;
			var form = this.itself;
			var messenger = function(m) { alert(m); };
			if(!displayBox) displayBox = "MSG_default";
			if(USE_DISPLAY) messenger = function(m) { display(m, displayBox); };
			if(form == WEB_ID_FORM) { if(checkWebID()) form.submit(); return; }
			if(form && fields) { if(checkFields()) form.submit(); return; }
			function checkWebID() {
				var fieldObjectValidity = true;
				var fieldDefaultValue = "enter web id or agent name";
				if(!fields) fields = webIDForm.agentsStr;
				if(!messages) messages = "You must enter a listing ID or agent name to search for.";
				var fieldObject = fields;
				var message = messages;
				if(fieldObject.value.toLowerCase() == fieldDefaultValue) {
					messenger(message);
					fieldObject.value = "";
					fieldObject.focus();
					fieldObjectValidity = false;
				} return fieldObjectValidity; }
			function checkFields() {
				var STRICT_VALIDATION = true;
				var DEFAULT_MSG = "Please make sure the form has been completely filled out.";
				var formValidity = true;
				for(var i = 0; i < fields.length; i++) {
					// loose validation
					if(!form.elements[fields[i]].value) {
						if(!messages || !messages[i] || messages[i] == "") {
							messenger(DEFAULT_MSG); formValidity = false; }
						else messenger(messages[i]); return; formValidity = false;
					} else if(STRICT_VALIDATION) {
						// strict validation - special case for name, phone, and email fields
						if((form.elements[fields[i]].name.toLowerCase() == "phone")
							|| (form.elements[fields[i]].name.toLowerCase() == "dphone")
							|| (form.elements[fields[i]].name.toLowerCase() == "dayphone")) {
							var phoneField = form.elements[fields[i]];
							var wrongNumberLength = "Phone number must be 10 digits long.";
							var alphaNumericNumber = "Phone number must contain only digits.";
							if(phoneField.value.length != 10) {
								messenger(wrongNumberLength); return; formValidity = false; }
							else if(phoneField.value.search(/[a-zA-Z]/i) >= 0) {
								messenger(alphaNumericNumber); return; formValidity = false; } }
						else if(form.elements[fields[i]].name.toLowerCase() == "email") {
							var emailField = form.elements[fields[i]];
							var invalidEmailSyntax = "Please enter a valid E-Mail address.";
							if((emailField.value.search(/@/i) == -1)
								|| (emailField.value.search(/\./i) == -1)
								|| (emailField.value.length < 5)) {
								messenger(invalidEmailSyntax); return; formValidity = false; } }
						else if((form.elements[fields[i]].name.toLowerCase() == "name")
								|| (form.elements[fields[i]].name.toLowerCase() == "firstname")
								|| (form.elements[fields[i]].name.toLowerCase() == "lastname")) {
							var nameField = form.elements[fields[i]];
							var invalidFullName = "Please enter a legitimate full name.";
							if((nameField.value.search(/\w/i) == -1)
								|| (nameField.value.search(/\d/i) > -1)) {
								messenger(invalidFullName); return; formValidity = false; } }
					}
				} return formValidity;
			}
		}		
	}
}