function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
 
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, 3000);
}

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, e) {
			var WEB_ID_FORM = document.webIDForm;
			var USE_DISPLAY = false;
			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();
				} else {
					cancel(e);
				}	return;
			}
			if(form && fields) {
				if(checkFields()) {
					form.submit();
				} else {
					cancel(e);
				} return;
			}
			function cancel(e) {
				if(!e.preventDefault) {
					e.returnValue = false;
				} else {
					e.preventDefault();
				}
			}
			function checkWebID() {
				var fieldObjectValidity = true;
				var fieldDefaultValue = "Enter Web ID";
				if(!fields) fields = document.webIDForm.agentsStr;
				if(!messages) messages = "You must enter a listing ID number 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 || phoneField.value.length > 12)
								|| phoneField.value.length == 11) {
								messenger(wrongNumberLength);
								formValidity = false;
							}	else if(phoneField.value.search(/[a-zA-Z]/i) >= 0) {
								messenger(alphaNumericNumber);
								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);
								formValidity = false;
							}
						}	else if(form.elements[fields[i]].name.toLowerCase() == "name") {
							var nameField = form.elements[fields[i]];
							var invalidFullName = "Please enter your full name.";
							if((nameField.value.search(/\s/i) == -1)
								|| (nameField.value.search(/\w/i) == -1)) {
								messenger(invalidFullName);
								formValidity = false;
							}
						} else if((form.elements[fields[i]].name.toLowerCase() == "zip")
								|| (form.elements[fields[i]].name.toLowerCase() == "billing_zip")) {
							var zipField = form.elements[fields[i]];
							var invalidZipCode = "Please correctly enter your five digit zip code.";
							if((zipField.value.length != 5)
								|| (zipField.value.search(/[a-zA-Z]/i) >= 0)) {
								messenger(invalidZipCode);
								formValidity = false;
							}
						}
					}
				} return formValidity;
			}
		}		
	}
}

function popUp(url, winname, width, height, scroll, resize, status) {
	newWin=window.open(url,winname,'toolbar=0,location=0,directories=0,,menubar=0' 
		+ ',scrollbars='+scroll 
		+ ',resizable='+resize 
		+ ',status=' + status 
		+ ',width=' + width 
		+ ',height='+ height);
	self.name = "mainWin"; 
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

/* Functions that swaps images. */
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

/* Functions that handle preload. */
function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function removeAB(str_) {
	digits = '0123456789.';
	clr = '';
	for (i=0; i<str_.length; i++) {
		if (digits.indexOf(str_.charAt(i))>-1) {
			clr +=  str_.charAt(i);
		}
	}
	if (clr.length == 0) { clr = "0"; }
	return clr;
}

function removeABC(val, name) {
	newVal = val.replace(/[^\d\.]/g,'')
	document.getElementById(name).value = newVal;
}

function formatPhone(Phone,Ext) {

	Phone = Phone.toUpperCase();
	
	digits = '0123456789X';
	clr = '';
	for (i=0; i<Phone.length; i++) {
		if (digits.indexOf(Phone.charAt(i))>-1) {
			clr +=  Phone.charAt(i);
		}
	}
	
	if (Ext>0) {
		n=clr.indexOf('X');
		if (n>-1) {
			document.alertForm.Ext.value = clr.substr(n+1,4);
			clr = clr.replace("X","");
			clr = clr.substr(0,10);
		}		
	}
	
	if (clr.length > 0)
	clr = "(" + clr.substr(0,3) + ") " + clr.substr(3,3) + "-" + clr.substr(6,10);
	
	return(clr);
}

//if checkbox for an area is checked, mark area as selected
function checkSelectedAreas(myForm){
	var myArray = myForm.cat;
	for ( var i=myArray.length-1; i>=0; --i ){
		if (myArray[i].checked) return true;
	}
	alert ('Please select at least one area to narrow down the results.');
	return false;
}

//OPENS UP POPUPS
function popUpEmail(url,width,height) {
	sealWin=window.open(url,"win1","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width="+width+",height="+height);
	self.name = "mainWin"; 
}

function capitalize(string){ return string.charAt(0).toUpperCase() + string.slice(1); }

function submitForm(){
	var error = "";
	
	$.each($(".required"), function() { 
		if( $(this).val() == "" || $(this).val() == '$0' || $(this).val() == $(this).attr('def')){
			def = $(this).attr('def');
			error = error + capitalize(def) + " is a required field.\n";
			$(this).css("border","1px solid red");
		} else if($(this).attr('def') == 'Your full name') {
			thisVal = $(this).val();
			if(thisVal.search(" ") == -1){
				def = $(this).attr('def');
				error = error + def + " needs to consist of both first and last names.\n";
				$(this).css("border","1px solid red");
			}
		} else {
			$(this).css("border","1px solid green");
		}
	});
	
	if( $('#thisForm').attr('page') == 'alerts' ){
		var areasFound = false;
		$.each($("input[name='cat']:checked"), function() { areasFound = true; });
		if($('#cats').val() != null) { areasFound = true; }
		if(!areasFound) {	error = error + "Select at least one area.\n"; }
	}
	
	if(error != ""){ alert(error); } else { return $('#thisForm').submit(); }
}

function CurrencyFormatted(value){
	var buf = "";
	var sBuf = "";
	var j = 0;
	value = String(value);
	if (value.indexOf(".") > 0) { buf = value.substring(0, value.indexOf(".")); } else { buf = value; }
	if (buf.length%3!=0&&(buf.length/3-1) > 0) { sBuf = buf.substring(0, buf.length%3) + ","; buf = buf.substring(buf.length%3); }
	j = buf.length;
	for (var i = 0; i <(j/3-1); i++) { sBuf = sBuf+buf.substring(0, 3) + ","; buf = buf.substring(3); }
	sBuf = sBuf+buf;
	if (value.indexOf(".") > 0) { value = sBuf + value.substring(value.indexOf("."));} else { value = sBuf; }
	return "$"+value;
}

