function isObject(a){return (a && typeof(a) == 'object');}

function validateFPSearchForm1(){
	with(document.fpSearchForm1){
		if(isEmpty(listnum, 'MLS #', true, true)) return false;
		if(!isNumeric(listnum, 'MLS #', true, true)) return false;
	}
	return true;
}

function validateFPSearchForm2(){
	with(document.fpSearchForm2){
		if(!isSelected(minprice, 'minimum price', true, true)) return false;
		if(!isSelected(maxprice, 'maximum price', true, true)) return false;
	}
	return true;
}

function isSelected(fld, lbl, sel, popup){
	// This is a utility function for form field validation.
	//		fld = The Field
	//		lbl = The Label - if the field's selected value is 0 the label will be used in the message
	//		sel = Select It	- if the field's selected value is 0, should it be selected
	// ADDED 9/9/2004 to be able t supress popup
	//		popup = true or false - should we do the popup message
	// If the field's selected value is 0 then it will display a message and return false.
	
	var txt = fld.options[fld.selectedIndex].value;
	if(txt == 0){
		if(popup) alert('Please choose ' + lbl + '.\n\rIt is required.');
		if(sel) fld.focus();
		return false;
	}
	return true;
}

function isEmpty(fld, lbl, sel, popup){
	// This is a utility function for form field validation.
	//		fld = The Field
	//		lbl = The Label - if the field is empty the label will be used in the message
	//		sel = Select It	- if the field is empty, should it be selected
	// ADDED 9/9/2004 to be able t supress popup
	//		popup = true or false - should we do the popup message
	// If the field is empty then it will display a message and return true.
	
	var txt = fld.value.replace(/ /g, "");
	if(txt == ''){
		if(popup) alert('Please fill in ' + lbl + '.\n\rIt is required.');
		if(sel) fld.focus();
		return true;
	}
	return false;
}

function isNumeric(fld, lbl, sel, popup){
	// This is a utility function for form field validation.
	//		fld = The Field
	//		lbl = The Label - if the field is empty the label will be used in the message
	//		sel = Select It	- if the field is not a number, should it be selected
	// ADDED 9/9/2004 to be able t supress popup
	//		popup = true or false - should we do the popup message
	// If the field is not a number then it will display a message and return false.
	
	var txt = fld.value.replace(/ /g, "");
	if(isNaN(txt)){
		if(popup) alert('Only the numbers 0-9 are allowed in ' + lbl);
		if(sel) fld.focus();
		return false;
	}
	return true;
}

function isEmail(fld){
	// This is a utility function for form field validation
	// It checks an email address using a pattern matching technnique.
	//		fld = The Field
	// If the email addres doesn't match the pattern, it will display a message and return false

	var email = fld.value;
	var re = /^(\".+\"|[a-z]\w*(\.[a-z]\w*)*)@(\[\d{1,3}(\.\d{1,3}){3}]|[a-z]\w*(\.[a-z]\w*)+)$/i;
	if(!re.test(email)){
		alert('Email address is an invalid format.\n\rPlease check your spelling and try again.');
		fld.focus();
		fld.select();
		return false;
	}
	return true;
}

function resize_iframe(frame_id){
	//Input the IDs of the IFRAMES you wish to dynamically resize to match its content height:
	//Separate each ID with a comma. Examples: ["myframe1", "myframe2"] or ["myframe"] or [] for none:
	var iframeids=[frame_id]
	
	//Should script hide iframe from browsers that don't support this script (non IE5+/NS6+ browsers. Recommended):
	var iframehide="yes"
	
	var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
	var FFextraHeight=parseFloat(getFFVersion)>=0.1? 16 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers
	
	function resizeCaller() {
		var dyniframe=new Array()
			for (i=0; i<iframeids.length; i++){
			if (document.getElementById)
			resizeIframe(iframeids[i])
			//reveal iframe for lower end browsers? (see var above):
			if ((document.all || document.getElementById) && iframehide=="no"){
			var tempobj=document.all? document.all[iframeids[i]] : document.getElementById(iframeids[i])
			tempobj.style.display="block"
			}
		}
	}
	
	function resizeIframe(frameid){
		var currentfr=document.getElementById(frameid)
			if (currentfr && !window.opera){
			currentfr.style.display="block"
			if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax
			currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight; 
			else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
			currentfr.height = currentfr.Document.body.scrollHeight;
			if (currentfr.addEventListener)
			currentfr.addEventListener("load", readjustIframe, false)
			else if (currentfr.attachEvent){
			currentfr.detachEvent("onload", readjustIframe) // Bug fix line
			currentfr.attachEvent("onload", readjustIframe)
			}
		}
	}
	
	function readjustIframe(loadevt) {
		var crossevt=(window.event)? event : loadevt
		var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement
		if (iframeroot)
		resizeIframe(iframeroot.id);
	}
	
	function loadintoIframe(iframeid, url){
		if (document.getElementById)
		document.getElementById(iframeid).src=url
	}
	
	if (window.addEventListener)
		window.addEventListener("load", resizeCaller, false)
		else if (window.attachEvent)
		window.attachEvent("onload", resizeCaller)
		else
		window.onload=resizeCaller

}
