var zDisableSearchFilter=0;
var GMap2=false;
var zValues=[];
function zInitZValues(v){
	for(var i=0;i<v;i++){
		zValues[i]=[];	
	}
}
var is_webkit = navigator.userAgent.toLowerCase().indexOf('webkit') > -1;
/*Author: Karina Steffens, www.neo-archaic.net*/
function zswfr(s,s1,s2){var t1pos=s.indexOf(s1);if(t1pos != -1){var t1s=s.substr(0,t1pos);var t1e=s.substr(t1pos+s1.length,s.length-(t1pos+s1.length));return t1s+s2+t1e;}else{return s;}}function zswf(v){v=zswfr(v,'zswf="off"','zswf="off" style="display:block;"');document.write(v);};var ie=(document.defaultCharset&&document.getElementById&&!window.home);if(ie && !is_webkit)document.write('<style type="text/css" id="hideObject">object{display:none;}</style>');
function zswf2(){
	if(!document.getElementsByTagName)return;var x=[];var s=document.getElementsByTagName('object');
	for(var i=0;i<s.length;i++){
		var o=s[i];var h=o.outerHTML;
		if(h && h.indexOf('zswf="off"')!=-1){
			continue;
		}
		var params="";
		var q=true;
		for (var j=0;j<o.childNodes.length;j++){
			var p=o.childNodes[j];
			if(p.tagName=="PARAM"){
				if(p.name=="flashVersion"){
					q=zswfd(p.value);
					if(!q){
						o.id=(o.id=="")?("stripFlash"+i):o.id;x.push(o.id);break;
					}
				}
				params+=p.outerHTML;
			}
		}
		if(!q)continue;
		if(!ie)continue;
		if(o.className.toLowerCase().indexOf("noswap")!=-1)continue;
		var t=h.split(">")[0]+">";
		var j=t+params+o.innerHTML+"</OBJECT>";
		o.outerHTML=j;
	}
	if(x.length)stripFlash(x);
	if(ie && !is_webkit)document.getElementById("hideObject").disabled=true;
}
function zswfd(v){if(navigator.plugins&&navigator.plugins.length){var plugin=navigator.plugins["Shockwave Flash"];if(plugin==undefined)return false;var ver=navigator.plugins["Shockwave Flash"].description.split(" ")[2];return (Number(ver)>=Number(v))}else if(ie&&typeof(ActiveXObject)=="function"){try{var flash=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+v);return true;}catch(e){return false;}}return true;}function zswfs(x){if(!document.createElement)return;for(var i=0;i<x.length;i++){var o=document.getElementById(x[i]);var n=o.innerHTML;n=n.replace(/<!--\s/g,"");n=n.replace(/\s-->/g,"");n=n.replace(/<embed/gi,"<span");var d=document.createElement("div");d.innerHTML=n;d.className=o.className;d.id=o.id;o.parentNode.replaceChild(d,o);}}

//var zFlashJSTempFunc=window.onload;window.onload=function(){if(typeof(zFlashJSTempFunc)=="function"){try{zFlashJSTempFunc();}catch(e){}}zswf2();} 
zswf2();
function zToggleDisplay(id){
	var d=document.getElementById(id);
	if(d.style.display=="none"){
		d.style.display="block";
	}else{
		d.style.display="none";
	}
}


function zListingDisplayHelpBox(){
	document.write('<a href="javascript:zToggleDisplay(\'zListingHelpDiv\');">Need help using search?</a><br>'+
	'<div id="zListingHelpDiv" style="display:none; border:1px solid #990000; padding:10px; padding-top:0px;">'+
	'<p style="font-size:14px; font-weight:bold;">Search Directions:</p>'+
	'<p>Click on one of the search options below and use the text fields, sliders and check boxes to enter your search data.  After you are done, click "Search MLS" and the results will load on the right. </p>'+
	'<p>Start typing a city into the box and our system will automatically show you a list of matching cities.  Select each city you wish to include in the search by using the arrow keys up and down.  Please the enter key or left click with your mouse to confirm the selection.  To remove a city, click the "X" button to the left of the city name. Only cities matching the ones in our system may be selected.</p>'+
	'<p>After typing an entry, click "Click to Update" or "Update Results" to update your search. </p>'+
	'<p>You can select or type as many options as you want.</p>'+
	'<p>Your search will automatically show the # of matching listings as you update each search field.</p>'+
	'<p>After searching, only the available options will appear.  To reveal more options again, try unselecting or extending the range for your next search.</p>'+
	'</div>');
}

var GMap=false;

function zFindPosition(obj) {
	var curleft = curtop = curwidth = curheight = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		curwidth=obj.offsetWidth;
		curheight=obj.offsetHeight;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop,curwidth,curheight];
}
// mls image rollovers and code for the zInputLinkBox suggestion box. - it is not compatible with other data sources yet.
function zGetAbsPosition(object) {
	var position = new Object();
	position.x = 0;
	position.y = 0;
	position.cx =0;
	position.cy =0;

	if( object ) {
		position.x = object.offsetLeft;
		position.y = object.offsetTop;

		if( object.offsetParent ) {
			var parentpos = zGetAbsPosition(object.offsetParent);
			position.x += parentpos.x;
			position.y += parentpos.y;
		}
		position.cx = object.offsetWidth;
		position.cy = object.offsetHeight;
	}
	position.width=position.cx;
	position.height=position.cy;
	return position;
}
var zIArrM=new Array();
var zIArrM2=new Array();
var zIArrM3=new Array();
  var zIArrMST=new Array();
function zImageMouseReset(id,mev){
	var d2=document.getElementById(id);
	var dpos=zGetAbsPosition(d2);
	var dimg=document.getElementById(id+"_img");
	if(
		(zMousePosition.x > dpos.x)                &&
		(zMousePosition.x < (dpos.x + dpos.width))  &&
		(zMousePosition.y > dpos.y)                &&
		(zMousePosition.y < (dpos.y + dpos.height))){
		return;
	}
	zIArrMST[id]=false;
	zIArrM5[id]=-1;
	zIArrM2[id]=new Array();
	dimg.style.display="block";
	dimg.src=zIArrM[id][0];
}
function zImageOnError(o){
	o.src='/z/a/listing/images/image-not-available.gif'; o.style.width='100px';
}

  var zIArrMSize=new Array();
  var zIArrM5=new Array();
  
function zImageMouseMove(id,mev,forceResize){
	var d=document.getElementById(id);
	var dpos=zGetAbsPosition(d);
	var dimg=document.getElementById(id+"_img");
	if(forceResize!=true){
	  var offsetX =mev.clientX-dpos.x;
	  p=(offsetX/dpos.width);
	  if(zIArrM == null || zIArrM[id] == null){
		return;  
	  }
	}else{
		p=0;	
	}
  o=Math.floor(zIArrM[id].length*p);
  if(zIArrM5[id]==o || zIArrM[id].length==0) return;
  zIArrM5[id]=o;
  var lbl=zIArrM[id][o];
  if(lbl != dimg.src && zIArrM[id].length!=0 && o<zIArrM[id].length){
	  if(zIArrM3[id]==false){
		  for(var n=0;n<zIArrM[id].length;n++){
			var nm=new Image();
			nm.src=zIArrM[id][n];
			zIArrMSize[nm.src]=[nm.width,nm.height];
		  }
	  }
	if(zIArrM2[id][o]!=1){
		dimg.o222=dimg;
		dimg.o333=id;
		dimg.onload=function(){
			zImageStoreLoaded(this.o222,this.o333);
			var v1=zGetAbsPosition(this.parentNode);
			if(v1.width==0) return;
			if(zIArrMSize[this.src] && zIArrMSize[this.src][1]==0){
				setTimeout("zImageMouseLoadDelayed('"+this.id+"')",50);
				return;
			}
			var r1=zIArrMSize[this.src][0]/v1.width;
			var nw=v1.width;
			var nh=r1*zIArrMSize[this.src][1];
			if(nh>v1.height){
				r1=v1.height/zIArrMSize[this.src][1];
				nw=Math.round(r1*zIArrMSize[this.src][0]);
				nh=v1.height;
			}
			//alert(nw+":"+nh+":"+v1.height+":"+v1.width);
			if(nw==0){
				this.width=v1.width;
				this.height=v1.height;
			}else{
				this.width=Math.floor(nw);
				this.height=Math.floor(nh);
			}
			//var n3=document.getElementById(this.o333+"_db");
			//n3.value=nw+":"+nh+":"+v1.width+":"+v1.height+":"+zIArrM5[this.o333]+":"+zIArrM[this.o333].length;//Math.floor((v1.height-nh)/2)+":"+v1.height+":"+zIArrMSize[this.src][1];
			this.style.paddingLeft=Math.max(0,Math.floor((v1.width-nw)/2))+"px";
			this.style.paddingRight=Math.max(0,Math.floor((v1.width-nw)/2))+"px";
			this.style.paddingTop=Math.max(0,Math.floor((v1.height-nh)/2))+"px";
			this.style.paddingBottom=Math.max(0,Math.floor((v1.height-nh)/2))+"px";
		}
		/*if(/Safari/.test(navigator.userAgent)){
			dimg.src=null;
		}else{
			dimg.style.display="none";
		}*/
	}else{
		dimg.onload=null;
	}
		dimg.style.display="block";
	if(zIArrM[id][o] != dimg.src){
	//alert('test:'+dimg.style.display+":"+dimg.src+':'+zIArrM[id][o]);
		dimg.src=zIArrM[id][o];  
	}
  }
}
function zImageMouseLoadDelayed(id){
	var d=document.getElementById(id);	
	d.onload();
}
function zImageStoreLoaded(obj,id){
	obj.style.display="block";
	for(i=0;i<zIArrM[id].length;i++){
		if(zIArrM[id][i] == obj.src){
			zIArrM2[id][i]=1;
			return;
		}
	}
}
if(arrM==null){
	var arrM=[];
	var arrM2=[];
	var arrM3=[];
}




var zIgnoreClickBackup=false;
function zRenable(){
	if(zIgnoreClickBackup){
		zIgnoreClickBackup=false;
	}else{
		zInputHideDiv();
	}
	return true;
}
document.onclick=zRenable;


function zFixText(myString){
	myString = zMakeEnglish(myString);	
	myString = zIsAlphabet(myString);
	myString = myString.toLowerCase();
	return myString;
}


function zFormatTheArray(myArray){
	var useThisArray = [];
	for(i=0;i < myArray.length; i++){
	useThisArray[i] = zFixText(myArray[i]);
	}
	
return useThisArray;	
}


function zDisableEnter(e){
	var key;
     if(window.event) key = window.event.keyCode;     //IE
     else key = e.which;     //firefox
     if(key == 13 || key == 40 || key ==38){
          return false;
	 }else{
          return true;
	 }
}

var selIndex=0;
function zKeyboardEvent(e, obj,obj2,forceEnter){
	var keynum;
	if(e==null) return;
	var numcheck;
	if(!selIndex){
		selIndex=0;
	}
	if(window.event){
		keynum = e.keyCode;
	}else{
		keynum = e.which;
	}
	if(obj.value.length > 2){	
		var doc = document.getElementById("zTOB");
		//var allLinks = doc.getElementsByTagName('a');
		//arrNewLink
		if(keynum == 13 || forceEnter == true){
			// enter
			if(obj.value == "") return;
			if(doc.style.display=="block"){
				var textToForm = document.getElementById("lid"+arrNewLink[selIndex]).innerHTML;
				var textValue=textToForm;
				for(var i=0;i<zArrCityLookup.length;i++){
					var arrJ=zArrCityLookup[i].split("\t");
					if(arrJ[0]==textToForm){
						textValue=arrJ[1];
						break;
					}
				}
				obj.value=textToForm;
				obj2.value=textValue;
				//zInputPutIntoForm(textToForm,textValue, formName,obj2.id,false);
				zInputHideDiv(formName);
			}else{
				obj2.value=obj.value;
			}
			selIndex=-1;
		}else if(keynum == 40){
			//down
			selIndex++;
			selIndex=Math.min(selIndex,arrNewLink.length-1);
		}else if(keynum==38){
			// up	
			selIndex--;
			selIndex=Math.max(0,selIndex);
		}else{
			if(doc.style.display!="block"){
				obj2.value=obj.value;
				selIndex=-1;
			}
			return;	
		}
		var firstBlock=-1;
		var matched=false;
		for(i=0;i<arrNewLink.length;i++){
			var c=document.getElementById('lid'+arrNewLink[i]);
			if(firstBlock==-1 && c.style.display=="block"){
			//	firstBlock=i;	
			}
			if(c.style.display=="none"){
			//	selIndex++;	
			}
			if(i==selIndex){
				matched=true;
				c.className="zTOB-selected";
				// set new value here
				var textToForm = c.innerHTML;
				var textValue=textToForm;
				for(var n=0;n<zArrCityLookup.length;n++){
					var arrJ=zArrCityLookup[n].split("\t");
					if(arrJ[0]==textToForm){
						textValue=arrJ[1];
						break;
					}
				}
				obj.value=textToForm;
				obj2.value=textValue;
			}else{
				c.className="zTOB-link";
			}
		}
	}
}	


function zInputHideDiv(name){
	var z=document.getElementById("zTOB");
	if(z!=null){z.style.display="none";}
}

	

function zIsAlphabet(elem){
	var alphaExp = /^[a-zA-Z0-9 ]+$/;
	if(elem.match(alphaExp)){
		return elem;
	}else{
		return elem;
	}
}



function zInputPutIntoForm(linkSelected, valueSelected, formName, valueId, enableOnEnter){
	var arrP=linkSelected.split(", ");
	var arrCity=new Array();
	for(i=0;i<arrP.length;i++){
		if(i+1!=arrP.length){
			arrCity.push(arrP[i]);
		}
	}
	//alert(valueId+":"+formName+":"+linkSelected+":"+valueSelected+":"+document.getElementById(formName));
	var v1=document.getElementById(valueId);
	document.getElementById(formName).value = linkSelected;
	v1.value=valueSelected;
	//alert(document.getElementById(formName).id+":"+v1.id+":"+valueSelected);
	
	if(enableOnEnter){
		//zInputSetSelectedOptions(true,#zOffset#,'#arguments.ss.name#',null,#arguments.ss.allowAnyText#,#arguments.ss.onlyOneSelection#);document.getElementById('#arguments.ss.name#_zmanual').value='';
		zFormOnEnter(null,document.getElementById(formName),document.getElementById(formName));
	}
	return;
	v1.value="";
	document.getElementById(formName).value ="";
	selIndex=0;
	zCurrentCityLookupLabel='';
}
function zInputLinkBuildBox(obj, obj2,arrResults){
	selIndex=0;
	//alert(obj.name);
	var arrP=zFindPosition(obj);
	var b=document.getElementById("zTOB");
	b.style.position="absolute";
	b.style.left=(arrP[0]-zPositionObjSubtractPos[0])+"px";
	b.style.top=(arrP[1]+arrP[3]-zPositionObjSubtractPos[1])+"px";
	
	formName = obj2.id;
	var v="";
	var doc = document.getElementById("zTOB");
	doc.style.height=(50+(Math.min(10,arrResults.length)*23))+"px";
	class1='class="zTOB-selected" ';
	arrNewLink=[];
	v=v+'<div class="top">Click a city below or use the keyboard up and down arrow keys and press enter to select the city.</div>';
	for (j=0; j < arrResults.length; j++){
		var arrJ=arrResults[j].split("\t");
	v=v+'<a id="lid'+j+'" '+class1+' href="javascript:void(0);" onclick="zInputPutIntoForm(\''+arrJ[0]+'\',\''+arrJ[1]+'\',\''+obj.id+'\', \''+formName+'\',true); zInputHideDiv(\''+formName+'\');" >'+arrJ[0]+'</a>';
		class1='class="zTOB-link" ';	
		arrNewLink.push(j);
	}
	document.getElementById("zTOB").style.display="block";
	document.getElementById("zTOB").innerHTML=v;
	document.getElementById("zTOB").scrollTop="0px";
}


function zMlsCheckCityLookup(e, obj, obj2, type){
var keynum;
	if(e==null) return;
	if(window.event){
	keynum = e.keyCode;
	}else{
	keynum = e.which;	
	}
	if(obj.value.length > 2){
		if(keynum !=13 && keynum !=40 && keynum!=38){
		zMlsCallCityLookup(obj,obj2,type);
		}	
	}else{
		zInputHideDiv();
	}
}

var daysToOffset=0;

function zMakeEnglish(elem){
	var elem1 = elem;
	var alphaExp = /^[a-zA-Z ]+$/;
	if(elem.match(alphaExp)){
		return elem;
	}else{
		var englishList = "A,A,A,A,A,A,AE,C,E,E,E,E,I,I,I,I,ETH,N,O,O,O,O,O,O,U,U,U,U,Y,THORN,s,a,a,a,a,a,a,ae,c,e,e,e,e,i,i,i,i,eth,n,o,o,o,o,o,o,u,u,u,u,y,thorn,y,OE,oe,S,s,Y,f";		 
		var foreignList="À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ð,Ñ,Ò,Ó,Ô,Õ,Ö,Ø,Ù,Ú,Û,Ü,Ý,Þ,ß,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,ø,ù,ú,û,ü,ý,þ,ÿ,Œ,œ,Š,š,Ÿ,ƒ";		
		var arrEnglish = englishList.split( "," );
		var arrForeign = foreignList.split( "," );
		for(e = 0; e < elem.length; e ++){
			for(f=0; f < arrForeign.length; f++){				
				if (elem1.charAt(e) == arrForeign[f]){
					myChar = elem1.charAt(e);
					if (!(myChar.match(alphaExp))){
						pattern = new RegExp(arrForeign[f]);
						elem1 = elem1.replace(pattern, arrEnglish[f]);
					}
				}
			}
		}
		return elem1;
	}
}

var zArrCityLookup=[];
var arrNewLink=[];
var zCurrentCityLookupLabel="";
function zMlsCallCityLookup(obj,obj2,type){	
	var strValue="";
	arrNewLink=[];
	var suggCount=0;
	strValue=obj.value;
	strValue = zFixText(strValue);	
	if(strValue.length >= 3){
		var arrNew=[];
		var arrNew2=[];
		arrNewLink=[];
		var firstIndex=-1;
		var resetSelect=false;
		var m=zGetCityLookupObj();
		var d1=strValue.substr(0,1);
		var d2=strValue.substr(1,1);
		var d3=strValue.substr(2,1);
		var m2=false;
		try{
		eval("var m2=m."+d1+"."+d2+"."+d3+";");
		}catch(e){
			zInputHideDiv();
			return;	
		}
		if(m2==null || m2==false){
			zInputHideDiv();
			return;	
		}
		zArrCityLookup=m2;
			zInputLinkBuildBox(obj, obj2,m2); 
			aN=[];
			var fb=null;
			var fbi=-1;
			var fixB=false;
			var foundB=false;
			zCurrentCityLookupLabel="";
			for(var i=0;i<m2.length;i++){
				var cb=document.getElementById('lid'+i);
				if(cb.innerHTML.substr(0, strValue.length).toLowerCase() != strValue || strValue.length>cb.innerHTML.length){
					if(fb==null){
						fb=cb;
						fbi=i;
					}
					cb.style.display="none";
					if(cb.className=="zTOB-selected"){
						fixB=true;
						cb.className="box-link";
					}
				}else if(cb.className=="zTOB-selected"){
					var arrJ=m2[i].split("\t");
					obj2.value=arrJ[1];
					zCurrentCityLookupLabel=arrJ[0];
					foundB=true;
				}
			}
			if(fixB && fb!=null){
				fb.className="zTOB-selected";
				selIndex=fbi;
			}
			if(!foundB && m2.length>0){
				var cb=document.getElementById('lid0');
				cb.className="zTOB-selected";
				selIndex=0;
				
				
			}
		var ajaxArrCleanResults=zFormatTheArray(m2);	
		
		for(i=0;i<ajaxArrCleanResults.length;i++){
			var aib=document.getElementById("lid"+i);
			if(ajaxArrCleanResults[i].substr(0, strValue.length) == strValue){
				arrNew.push(m2[i]);
				arrNew2.push(i);
				if(aib!=null){
					arrNewLink.push(i);
					if(aib.className=="zTOB-selected"){
						selIndex=arrNewLink.length-1;
					}
					aib.style.display="block";
					if(firstIndex==-1){
						firstIndex=arrNewLink.length-1;
					}
				}
			}else{
				if(aib!=null){
					if(aib.className=="zTOB-selected"){
						resetSelect=true;
						aib.className="box-link";
					}
					aib.style.display="none";
				}
			}
		}
		if(resetSelect && firstIndex!=-1){
			selIndex=arrNew2[0];
			document.getElementById("lid"+arrNewLink[firstIndex]).className="zTOB-selected";
		}
		if(arrNew.length > 0){
			if(arrNewLink.length == 0){
				zInputLinkBuildBox(obj,obj2, arrNew);
			}else if(document.getElementById("zTOB").style.display=="none"){
				document.getElementById("zTOB").style.display="block";
				for(i=0;i<arrNewLink.length;i++){
					if(i==0){
						selIndex=arrNewLink[i];
						document.getElementById("lid"+arrNewLink[i]).className="zTOB-selected";
					}else{
						document.getElementById("lid"+arrNewLink[i]).className="box-link";
					}
				}
			}
		}else{
			zInputHideDiv();
		}
	}	
} 


function zStringReplaceAll(str, strTarget, strSubString){
	return str.replace( new RegExp(strTarget,"g"), strSubString ); 
}

var zFormData=new Array();
function zFormOnKeyUp(formName, fieldIndex){
	var f=zFormData[formName].arrFields[fieldIndex];
	var o=document.getElementById(f.id);
	if(zFormData[formName].error){
		zFormSubmit(formName,true,false);
	}
	
}
function zFormOnChange(formName, fieldIndex){
	var f=zFormData[formName].arrFields[fieldIndex];
	var o=document.getElementById(f.id);
	if(zFormData[formName].error){
		zFormSubmit(formName,true,false);
	}
	zFormData[formName].onChangeCallback(formName);
}
function zFormSetError(id,error){
	var tr=document.getElementById(id+'_container');
	if(tr != null){
		if(error){
			tr.className="tr_error";
		}else{
			tr.className="";
		}
	}
}

var zAjaxData=[];
var zAjaxCounter=0;
/*
var tempObj={};
tempObj.id="zMapListing";
tempObj.url="/urlInQuotes.html";
tempObj.callback=functionNameNoQuotes;
tempObj.errorCallback=functionNameNoQuotes;
tempObj.cache=false; // set to true to disable ajax request when already downloaded same URL
tempObj.ignoreOldRequests=true; // causes only the most recent request to have its callback function called.
zAjax(tempObj);
*/
function zAjax(obj){
	var req = null;  
	if(window.XMLHttpRequest){ 
	  req = new XMLHttpRequest();  
	}else if (window.ActiveXObject){ 
	  req = new ActiveXObject('Microsoft.XMLHTTP');  
	}
	if(zAjaxData[obj.id]==null){
		zAjaxData[obj.id]=new Object();
		zAjaxData[obj.id].requestCount=0;
		zAjaxData[obj.id].requestEndCount=0;
		zAjaxData[obj.id].cacheData=[];
	}
	if(obj.cache==null){
		obj.cache=false;	
	}
	if(obj.method==null){
		obj.method="get";	
	}
	if(obj.debug==null){
		obj.debug=false;	
	}
	if(obj.errorCallback==null){
		obj.errorCallback=function(){};	
	}
	if(obj.url==null || obj.callback==null){
		alert('zAjax() Error: obj.url and obj.callback are required');	
	}
	zAjaxData[obj.id].requestCount++;
	zAjaxData[obj.id].cache=obj.cache;
	zAjaxData[obj.id].debug=obj.debug;
	zAjaxData[obj.id].method=obj.method;
	zAjaxData[obj.id].url=obj.url;
	zAjaxData[obj.id].ignoreOldRequests=obj.ignoreOldRequests;
	zAjaxData[obj.id].callback=obj.callback;
	zAjaxData[obj.id].errorCallback=obj.errorCallback;
	if(zAjaxData[obj.id].cache && zAjaxData[obj.id].cacheData[obj.url] && zAjaxData[obj.id].cacheData[obj.url].success){
		zAjaxData[obj.id].callback(zAjaxData[obj.id].cacheData[obj.url].responseText);
	}
	req.onreadystatechange = function(){  
		if(req.readyState == 4 || req.readystate == "complete"){
			var id=req.getResponseHeader("x_ajax_id");
			if(req.status!=200){
				if(id==null || id==""){
					document.write(req.responseText);
				}else{
					if(zAjaxData[id].debug){
						document.write('AJAX SERVER ERROR - (Click back and refresh to continue):<br>'+req.responseText);
					}else{
						zAjaxData[id].errorCallback(req);
					}
				}
				return;
			}else if(id==null || id==""){
				alert("zAjax() Error: The ajax URL MUST output the x_ajax_id.\nColdfusion Example: <cf"+"header name=\"x_ajax_id\" value=\"#x_ajax_id#\">\nNote: x_ajax_id is passed via zAjax, do not put this in the url yourself!\n"+zAjaxData[obj.id].url);	
				return;
			}
			zAjaxData[id].requestEndCount++;
			if(!zAjaxData[id].ignoreOldRequests || zAjaxData[id].requestCount == zAjaxData[id].requestEndCount){
				if(req.status == 200){
					if(zAjaxData[id].cache){
						zAjaxData[id].cacheData[zAjaxData[id].url]=new Object();
						zAjaxData[id].cacheData[zAjaxData[id].url].responseText=req.responseText;
						zAjaxData[id].cacheData[zAjaxData[id].url].success=true;
					}
					zAjaxData[id].callback(req.responseText);
				}else{ 
					if(zAjaxData[id].debug){
						document.write('AJAX SERVER ERROR - (Click back and refresh to continue):<br>'+req.responseText);
					}else{
						zAjaxData[id].errorCallback(req);
					}
				}
			}
		} 
	};
	var randomNumber = Math.random()*1000;
	var derrUrl="&zFPE=1";
	if(zAjaxData[obj.id].debug){
		derrUrl="";
	}
	var action=zAjaxData[obj.id].url;
	if(action.indexOf("x_ajax_id=") != -1){
		alert("zAjax() Error: Invalid URL.  \"x_ajax_id\" can only be added by the system.\nDo not put this CGI variable in the action URL.");
	}
	if(zAjaxData[obj.id].method.toLowerCase() == "get"){
		if(action.indexOf("?") == -1){
			action+='?'+derrUrl+'&ztmp='+randomNumber;
		}else{
			action+='&'+derrUrl+'&ztmp='+randomNumber;
		}
		action+="&x_ajax_id="+escape(obj.id);
		req.open(zAjaxData[obj.id].method,action,true);
		req.setRequestHeader("Accept-Encoding","gzip,deflate;q=0.5");
		req.setRequestHeader("TE","gzip,deflate;q=0.5");
		req.send("");  
	}else if(zAjaxData[obj.id].method.toLowerCase() == "post"){
		alert('not implemented - use zForm() instead');
	}
}

var zAjaxLastFormName="";
var zAjaxOnLoadCallback=function(){};
var zAjaxOnErrorCallback=function(){};
function zFormSubmit(formName,validationOnly,onChange,debug){	
	// validation for all fields...
	if((validationOnly==null || !validationOnly) && onChange==false){
		if(zFormData[formName].submitContainer != ""){
			var sc=document.getElementById(zFormData[formName].submitContainer);
			if(sc != null){
				zFormData[formName].submitContainerBackup=sc.innerHTML;
				sc.innerHTML="Please wait...";
			}
		}
	}
	//addHistoryEvent();
	var arrQuery=new Array();
	var error=false;
	var anyError=false;
	var arrError=new Array();
	for(var i=0;i<zFormData[formName].arrFields.length;i++){
		error=false;
		var f=zFormData[formName].arrFields[i];
		var value="";
		if(f.type == "file" && zFormData[formName].ajax){
			alert('File upload doesn\'t work with AJAX. Must use iframe and server-side progress bar (php for non-breaking uploads)');
			return false;
		}else if(f.type == "text" || f.type=="file" || f.type=="hidden"){
			var o=document.getElementById(f.id);
			value=o.value;
		}else if(f.type == "select"){
			var o=document.getElementById(f.id);
			if(o.options[o.selectedIndex].value != ""){
				value=o.options[o.selectedIndex].value;
			}
		}else if(f.type == "radio"){
			var o=document.getElementById(f.id);
			var arrF=document[formName][f.id];
			for(var g=0;g<arrF.length;g++){
				if(arrF[g].checked){
					value=arrF[g].value;
				}
			}
		}else if(f.type == "checkbox"){
			var o=document.getElementById(f.id);
			if(o.checked){
				value=o.value;
			}
		}else if(f.type == "zExpandingBox"){
            arrV=new Array();
            for(var g=0;g<zExpArrMenuBox.length;g++){
            	if(zExpArrMenuBox[g]==f.id){
		            var c=document.getElementById('zExpMenuBoxCount'+g).value;
                    for(var n=0;n<c;n++){
                    	var cr=document.getElementById('zExpMenuOption'+g+'_'+n);
                        if(cr.checked){
                        	arrV.push(cr.value);
                        }
                    }
                }
            }
            value=arrV.join(",");
		}
		value=value.replace(/^\s+|\s+$/g,"");
		arrQuery.push(f.id+"="+escape(value));
		if(value==""){
			if(f.allowNull != null & f.allowNull){
				continue;
			}else if(f.required != null && f.required){
				arrError.push(f.friendlyName+' is required.');
				zFormSetError(f.id,true);
				error=true;
				anyError=true;
				continue;
			}
		}
		if(f.number != null & f.number){
			value2 = parseFloat(value);
			if(value != value2){
				arrError.push(f.friendlyName+' must be a number.');
				zFormSetError(f.id,true);
				error=true;
				anyError=true;
				continue;
			}
		}
		if(f.email != null & f.email){
			var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if (!filter.test(value)) {
				arrError.push(f.friendlyName+' must be a well formatted email address, (ex. johndoe@domain.com).');
				zFormSetError(f.id,true);
				error=true;
				anyError=true;
				continue;
			}
		}
		zFormSetError(f.id,false);
	}
	var queryString=arrQuery.join("&");
	var fm=document.getElementById("zFormMessage_"+formName);
	if(anyError){
		fm.innerHTML='<table width="100%;" cellpadding="5" cellspacing="0" border="0"><tr><th>Please correct your entry and try again.</th></tr><tr><td>'+arrError.join("</td></tr><tr><td>")+'</td></tr></table>';
		fm.style.display="block";
		zFormData[formName].error=true;
	}else{
		zFormData[formName].error=false;
		fm.style.display="none";
	}
	if(validationOnly!=null && validationOnly){
		return false;
	}
	if(anyError){
		window.location.href='#anchor_'+formName;
		if(zFormData[formName].submitContainer != ""){
			var sc=document.getElementById(zFormData[formName].submitContainer);
			if(sc != null){
				sc.innerHTML=zFormData[formName].submitContainerBackup;
			}
		}
		return false;
	}
	// ignore double clicks / incomplete requests.
	if(zFormData[formName].ajax){
		if(zFormData[formName].ajaxStartCount != zFormData[formName].ajaxEndCount){
			if(zFormData[formName].ajaxSuccess){
				// no new data needed
				//alert('already done');
			}
		}else{
			var req = null;  
			if(window.XMLHttpRequest){ 
			  req = new XMLHttpRequest();  
			}else if (window.ActiveXObject){ 
			  req = new ActiveXObject('Microsoft.XMLHTTP');  
			}
			zAjaxLastFormName=formName;
			zAjaxLastOnLoadCallback=zFormData[formName].onLoadCallback;
			zAjaxLastOnErrorCallback=zFormData[formName].onErrorCallback;
			//req.formName=formName;
			//req.onLoadCallback=zFormData[formName].onLoadCallback;
			//req.onErrorCallback=zFormData[formName].onErrorCallback;
			req.onreadystatechange = function(){  
				if(req.readyState == 4 || req.readystate == "complete"){
					//alert(req.status+":complete"+req.responseText);
					zFormData[zAjaxLastFormName].ajaxEndCount++;
					if(req.status == 200){
						zAjaxLastOnLoadCallback(req.responseText);
						//zFormData[zAjaxLastFormName].onLoadCallback(req.responseText);
						zFormData[zAjaxLastFormName].ajaxSuccess=true;
						if(zFormData[zAjaxLastFormName].successMessage != false){
							var fm=document.getElementById("zFormMessage_"+zAjaxLastFormName);
							fm.style.display="block";
							fm.innerHTML='<div class="successBox">Form submitted successfully.<br>'+req.responseText+'</div>';
						}
					}else{ 
						zFormData[zAjaxLastFormName].ajaxStartCount=0;
						zFormData[zAjaxLastFormName].ajaxEndCount=0;
						zFormData[zAjaxLastFormName].ajaxSuccess = false;
						if(zFormData[zAjaxLastFormName].debug){
							document.write('AJAX SERVER ERROR - (Click back and refresh to continue):<br>'+req.responseText);
							//zAjaxLastOnLoadCallback(req.responseText);
						}else{
							zAjaxLastOnErrorCallback(req.status+": The server failed to process your request.\nPlease try again later.");
						}
					} 
					if(zFormData[zAjaxLastFormName].submitContainerBackup != null && zFormData[zAjaxLastFormName].submitContainer != ""){
						var sc=document.getElementById(zFormData[zAjaxLastFormName].submitContainer);
						if(sc != null){
							sc.innerHTML=zFormData[zAjaxLastFormName].submitContainerBackup;
						}
					}
				} 
			};		
			// reset the ajax request status variables
			zFormData[formName].ajaxSuccess=false;
			zFormData[formName].ajaxStartCount++;
			var randomNumber = Math.random()*1000;
			var action=zFormData[formName].action;
			
			var derrUrl="&zFPE=1";
			if(zFormData[formName].debug){
				derrUrl="";
			}
			if(zFormData[formName].method.toLowerCase() == "get"){
				if(action.indexOf("?") == -1){
					action+='?'+queryString+derrUrl+'&ztmp='+randomNumber;
				}else{
					action+='&'+queryString+derrUrl+'&ztmp='+randomNumber;
				}
				req.open(zFormData[formName].method,action,true);
				//req.setRequestHeader("Accept-Encoding","gzip,deflate;q=0.5");
				//req.setRequestHeader("TE","gzip,deflate;q=0.5");
				req.send("");  
			}else if(zFormData[formName].method.toLowerCase() == "post"){
				if(action.indexOf("?") == -1){
					action+=derrUrl+'&ztmp='+randomNumber;
				}else{
					action+=derrUrl+'&ztmp='+randomNumber;
				}
				queryString=encodeURI(queryString);
				req.open(zFormData[formName].method,action,true);
				// call open before sending headers
				//req.setRequestHeader("Accept-Encoding","gzip,deflate;q=0.5");
				//req.setRequestHeader("TE","gzip,deflate;q=0.5");
				req.setRequestHeader("Content-type", zFormData[formName].contentType);
				//req.setRequestHeader("Content-length", queryString.length);
				//req.setRequestHeader("Connection", "close");
				req.send(queryString);  
			}
		}
		return false;
	}else{
		return true;
	}
}



var zExpArrMenuBox=new Array();
var zExpMenuBoxChecked=new Array();
var zExpMenuBoxData=new Array();
function zExpMenuToggleCheckBox(k,n,r,m,v){
	var o=document.getElementById("zExpMenuOption"+k+"_"+n);
	var o2=document.getElementById("zExpMenuOptionLink"+k+"_"+n);
	var i=0;
	var checkBoolean=true;
	if(m==1){
		checkBoolean=false;
	}
	n2=zExpArrMenuBox[zExpMenuLastIgnoreClick];
	for(var i=0;i<zExpArrMenuBox.length;i++){
		f=zExpArrMenuBox[i];
		if(f != n2){
			var g1=document.getElementById(f+"_expmenu1");
			var g2=document.getElementById(f+"_expmenu2");
			var g4=document.getElementById(f+"_expmenu4");
			if(g4!=null){
				g2.style.display="none";
				g4.innerHTML="More Options &gt;&gt;";
				g4.className="zExpMenuOption";
			}
		}
	}
	if(r=='radio'){
		for(var i=0;i<zExpMenuBoxChecked[k].length;i++){
			var o=document.getElementById("zExpMenuOption"+k+"_"+zExpMenuBoxChecked[k][i]);
			var o2=document.getElementById("zExpMenuOptionLink"+k+"_"+zExpMenuBoxChecked[k][i]);
			o.checked=false;
			o2.className="zExpMenuOption";
		}
		var o=document.getElementById("zExpMenuOption"+k+"_"+n);
		var o2=document.getElementById("zExpMenuOptionLink"+k+"_"+n);
		var o_2=document.getElementById("zExpMenuOption"+k+"_"+n+"_2");
		var o2_2=document.getElementById("zExpMenuOptionLink"+k+"_"+n+"_2");
		o.checked=true;
		o2.className="zExpMenuOptionOver";
		zExpMenuBoxChecked[k]=new Array();
		zExpMenuBoxChecked[k][0]=n;
		if(o_2 != null){
			o_2.checked=true;
			o2_2.className="zExpMenuOptionOver";
			zExpMenuBoxChecked[k][1]=n+"_2";
		}
	}else{
		var checkedNow=false;
		if(v==1){
			var o_2=document.getElementById("zExpMenuOption"+k+"_"+n+"_2");
			var o2_2=document.getElementById("zExpMenuOptionLink"+k+"_"+n+"_2");
			if(o_2.checked == checkBoolean){
				o.checked=false;
				o2.className="zExpMenuOption";
				o_2.checked=false;
				o2_2.className="zExpMenuOption";
			}else{
				checkedNow=true;
				o.checked=true;
				o2.className="zExpMenuOptionOver";
				o_2.checked=true;
				o2_2.className="zExpMenuOptionOver";
			}
		}else{
			var o_2=document.getElementById("zExpMenuOption"+k+"_"+n+"_2");
			var o2_2=document.getElementById("zExpMenuOptionLink"+k+"_"+n+"_2");
			if(o.checked == checkBoolean){
				o.checked=false;
				o2.className="zExpMenuOption";
				if(o_2 != null){
					o_2.checked=false;
					o2_2.className="zExpMenuOption";
				}
			}else{
				checkedNow=true;
				o.checked=true;
				o2.className="zExpMenuOptionOver";
				if(o_2 != null){
					o_2.checked=true;
					o2_2.className="zExpMenuOptionOver";
				}
			}
		}
		var arrC=new Array();
		for(var i=0;i<zExpMenuBoxChecked[k].length;i++){
			if(checkedNow || (!checkedNow && i!=n)){
				arrC.push(zExpMenuBoxChecked[k][i]);
			}
		}
		zExpMenuBoxChecked[k]=arrC;
	}
	if(o.onchange!=null){
		o.onchange();
	}
}
function setPos(obj,left,top){
	obj.style.left=left+"px";
	obj.style.top=top+"px";
}
function zExpMenuToggleMenu(n){
	if(n!=null){
		var m1=document.getElementById(n+"_expmenu1");
		var m2=document.getElementById(n+"_expmenu2");
		var m4=document.getElementById(n+"_expmenu4");
		if(m1==null) return;
		if(m2.style.display=="block"){
			m2.style.display="none";
			m4.innerHTML="More Options &gt;&gt;";
			m4.className="zExpMenuOption";
		}else{
			m4.innerHTML="&lt;&lt; Hide Options";
			m4.className="zExpMenuOptionOver";
			m2.style.display="block";
			var arrPos=zFindPosition(m1);
			setPos(m2,(arrPos[0]+arrPos[2]),arrPos[1]);
		}
	}
	for(var i=0;i<zExpArrMenuBox.length;i++){
		f=zExpArrMenuBox[i];
		if(f != n){
			var g1=document.getElementById(f+"_expmenu1");
			var g2=document.getElementById(f+"_expmenu2");
			var g4=document.getElementById(f+"_expmenu4");
			if(g4==null) return;
			g2.style.display="none";
			g4.innerHTML="More Options &gt;&gt;";
			g4.className="zExpMenuOption";
		}
	}
}
var zExpMenuIgnoreClick=-1;
var zExpMenuLastIgnoreClick=-1;
function zExpMenuOnClick(){
	if(zExpMenuIgnoreClick!=-1){
		zExpMenuLastIgnoreClick=zExpMenuIgnoreClick;
		zExpMenuIgnoreClick=-1;
	}else{
		zExpMenuToggleMenu();
	}
	return true;
}
if(document.onclick!=null){
	var zExpMenuOnClickBackup=document.onclick;
	document.onclick=function(){
		zExpMenuOnClickBackup();
		zExpMenuOnClick();
	}
}else{
	document.onclick=zExpMenuOnClick;
}


// dragging
var zMousePosition={x:0,y:0};

function zDrag_mouseCoords(e) {
    if (document.layers) {
        var xMousePosMax = window.innerWidth+window.pageXOffset;
        var yMousePosMax = window.innerHeight+window.pageYOffset;
    } else if (document.all) {
        var xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
        var yMousePosMax = document.body.clientHeight+document.body.scrollTop;
    } else if (document.getElementById) {
        var xMousePosMax = window.innerWidth+window.pageXOffset;
        var yMousePosMax = window.innerHeight+window.pageYOffset;
    }
	var xMousePos=0;
	var yMousePos=0;
	if (e.pageX){ xMousePos=e.pageX;
	}else if(e.clientX){ xMousePos=e.clientX + (document.documentElement.scrollLeft ?   document.documentElement.scrollLeft :   document.body.scrollLeft);}
	if (e.pageY){ yMousePos=e.pageY;
	}else if (e.clientY){ yMousePos=e.clientY + (document.documentElement.scrollTop ?	document.documentElement.scrollTop : document.body.scrollTop);}
	return {x:xMousePos,y:yMousePos,pageWidth:xMousePosMax,pageHeight:yMousePosMax};	
}
function zDrag_makeClickable(object){
	object.onmousedown = function(){
		zDrag_dragObject = this;
	}
}
function zDragTableOnMouseUp(){}
function zDrag_mouseUp(ev){
	ev           = ev || window.event;
	zDragTableOnMouseUp(ev);
	var mousePos = zDrag_mouseCoords(ev);
	for(var i=0; i<zDrag_dropTargets.length; i++){
		var curTarget  = zDrag_dropTargets[i];
		var targPos    = zDrag_getPosition(curTarget);
		var targWidth  = parseInt(curTarget.offsetWidth);
		var targHeight = parseInt(curTarget.offsetHeight);

		if(
			(mousePos.x > targPos.x)                &&
			(mousePos.x < (targPos.x + targWidth))  &&
			(mousePos.y > targPos.y)                &&
			(mousePos.y < (targPos.y + targHeight))){
				// zDrag_dragObject was dropped onto curTarget!
		}
	}
	if(zDrag_dragObject!=null){
		var paramObj=zDrag_arrParam[zDrag_dragObject.id];
		paramObj.callbackFunction(zDrag_dragObject,paramObj,true);
	}
	zDrag_dragObject   = null;
}

function zDrag_getMouseOffset(target, ev){
	ev = ev || window.event;
	var docPos    = zDrag_getPosition(target);
	var mousePos  = zDrag_mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
function zDrag_getPosition(e){
	var left = 0;
	var top  = 0;
	while (e.offsetParent){
		left += e.offsetLeft;
		top  += e.offsetTop;
		e     = e.offsetParent;
	}
	left += e.offsetLeft;
	top  += e.offsetTop;
	return {x:left, y:top};
}

var zDragTableOnMouseMove=function(){};
var zMapMarkerRollOut=function(){};
function zDrag_mouseMove(ev){
	zDragTableOnMouseMove(ev);
	zOutEditDiv(ev);
	zMapMarkerRollOut(false);
	ev           = ev || window.event;
	var mousePos = zDrag_mouseCoords(ev);
	zMousePosition=mousePos;
	if(zDrag_dragObject){
		var pObj=zDrag_arrParam[zDrag_dragObject.id];
		var bObj=document.getElementById(pObj.boxObj);
		var p1=zDrag_getPosition(bObj);
		if(navigator.userAgent.indexOf("MSIE 6.0") != -1){
			if(zDrag_arrParam[zDrag_dragObject.id].zValue+3==zDrag_arrParam[zDrag_dragObject.id].zValueValue){
				zDrag_dragObject.style.marginRight=(((parseInt(bObj.style.width)-((mousePos.x - zDrag_mouseOffset.x) - p1.x))-parseInt(zDrag_dragObject.style.width))/2)+"px";
			}else{
				zDrag_dragObject.style.marginLeft=(((mousePos.x - zDrag_mouseOffset.x) - p1.x)/2)+"px";
			}
		}else{
			if(zDrag_arrParam[zDrag_dragObject.id].zValue+3==zDrag_arrParam[zDrag_dragObject.id].zValueValue){
				zDrag_dragObject.style.marginRight=((parseInt(bObj.style.width)-((mousePos.x - zDrag_mouseOffset.x) - p1.x))-parseInt(zDrag_dragObject.style.width))+"px";
			}else{
				zDrag_dragObject.style.marginLeft=((mousePos.x - zDrag_mouseOffset.x) - p1.x)+"px";
			}
		}
		zDrag_arrParam[zDrag_dragObject.id].callbackFunction(zDrag_dragObject,zDrag_arrParam[zDrag_dragObject.id]);
		return false;
	}
}
function zDrag_makeDraggable(obj,paramObj){
	if(!obj) return;
	zDrag_arrParam[obj.id]=paramObj;
	obj.onmousedown = function(ev){
		zDrag_dragObject  = this;
		zDrag_mouseOffset = zDrag_getMouseOffset(this, ev);
		return false;
	}
	paramObj.callbackFunction(obj,paramObj);
}

function zGoToURL(url) { 
	var a=document.getElementById("zOverEditATag");
	a.setAttribute("href",url);
	if(a.click){
		a.click();
	}else{
		window.top.location.href=url;
	}
}
//document.write('<style type="text/css">#zOverEditATag,#zOverEditATag:link,#zOverEditATag:visited,#zOverEditATag:active{font-family:verdana, arial, sans-serif;background-color:#000000; color:#FFFFFF; border:3px solid #999999; padding:4px;font-size:11px;display:block;} #zOverEditATag:hover{ background-color:#FFFFFF; color:#000000;}</style><div id="zOverEditDivTag" style="z-index:20001;  position:absolute; background-color:#FF0000; display:none; cursor:pointer; left:0px; top:0px; width:250px; height:32px; text-align:center; font-weight:bold; line-height:18px; " onclick="zOverEditClick();"><a id="zOverEditATag" href="javascript:zOverEditClick();" target="_top" title="Click EDIT to edit this content">EDIT</a><input type="text" id="testF493" name="testF493" value="" size="30"></div>');
document.write('<style type="text/css">#zOverEditATag,#zOverEditATag:link,#zOverEditATag:visited,#zOverEditATag:active{font-family:verdana, arial, sans-serif;background-color:#000000; color:#FFFFFF; border:3px solid #999999; padding:4px;font-size:11px;display:block;} #zOverEditATag:hover{ background-color:#FFFFFF; color:#000000;}</style><div id="zOverEditDivTag" style="z-index:20001;  position:absolute; background-color:#FF0000; display:none; cursor:pointer; left:0px; top:0px; width:50px; height:32px; text-align:center; font-weight:bold; line-height:18px; " onclick="zOverEditClick();"><a id="zOverEditATag" href="javascript:zOverEditClick();" target="_top" title="Click EDIT to edit this content">EDIT</a></div>');
var zCurOverEditLink="";
var zOverEditDisableMouseOut=false;
var zCurOverEditObj=null;
var zOverEditDivTag1=document.getElementById("zOverEditDivTag");
function zOverEditClick(){
	if(zCurOverEditLink!=""){
		zGoToURL(zCurOverEditLink);
	}
}
var zOverEditLastLink="";
var zOverEditLastPos={x:0,y:0};
function zOverEditDiv(o,theLink){
	if(theLink != zOverEditLastLink){
		zOverEditLastLink=theLink;
		zCurOverEditObj=document.getElementById(o);
		zCurOverEditLink=theLink;
		zOverEditDivTag1.style.left=(zMousePosition.x+10)+"px";
		zOverEditDivTag1.style.top=(zMousePosition.y+10)+"px";
		zOverEditLastPos={x:zMousePosition.x,y:zMousePosition.y};
		zOverEditDivTag1.style.display="block";
	}else{
		var xChange=Math.abs((zMousePosition.x+10)-zOverEditLastPos.x);
		var yChange=Math.abs((zMousePosition.y+10)-zOverEditLastPos.y);
		if(xChange<=70 && yChange<=70){
			return;
		}else{
			zCurOverEditObj=document.getElementById(o);
			zCurOverEditLink=theLink;
			zOverEditDivTag1.style.left=(zMousePosition.x+10)+"px";
			zOverEditDivTag1.style.top=(zMousePosition.y+10)+"px";
			zOverEditLastPos={x:zMousePosition.x,y:zMousePosition.y};
			zOverEditDivTag1.style.display="block";
		}
	}
}


function zOutEditDiv(){
	if(zOverEditDivTag1.style.display=="block"){
		var xChange=Math.abs((zMousePosition.x+10)-zOverEditLastPos.x);
		var yChange=Math.abs((zMousePosition.y+10)-zOverEditLastPos.y);
		if(xChange>300 || yChange>300){
			zOverEditDivTag1.style.display="none";
		}
	}
}
function zDrag_addDropTarget(dropTarget){
	zDrag_dropTargets.push(dropTarget);
}
if(document.onmousemove!=null){
	var zDragOnMouseMoveBackup=document.onmousemove;
	document.onmousemove=function(ev){
		zDragOnMouseMoveBackup(ev);
		zDrag_mouseMove(ev);
	}
}else{
	document.onmousemove=zDrag_mouseMove;
}
if(document.onmouseup!=null){
	var zDragOnMouseUpBackup=document.onmouseup;
	document.onmouseup=function(ev){
		zDragOnMouseUpBackup(ev);
		zDrag_mouseUp(ev);
	}
}else{
	document.onmouseup=zDrag_mouseUp;
}


var zDrag_arrParam=new Array();
var zDrag_dragObject  = null;
var zDrag_mouseOffset = null;
var zDrag_dropTargets = [];







function zExpShowUpdateBar(v, s){
	var d1=document.getElementById("zExpUpdateBar"+v);
	if(d1){
		d1.style.display=s;
	}
}


var zInputSlideOldValue="";
function zInputSlideOnChange(oid,v1,v2,zExpValue){
	var d1=document.getElementById(oid);
	if(v1=="") v1="min";
	if(v2=="") v2="max";
	var newValue=v1+"-"+v2;
	if(newValue != zInputSlideOldValue){
		d1.value=newValue;
		zInputSlideOldValue=newValue;
		if(zExpValue!=null){
			zExpOptionSetValue(zExpValue,newValue);
		}
		d1.onchange();
	}
}
function zInputSliderSetValue(id, zV, zOff, v, zExpValue){
	var d1=document.getElementById(id);
	var d2=document.getElementById(id+"_label");
	var f=false;
	var alphaExp = /[^0-9]/;
	v=v.split(",").join("").split("$").join("");
	if(v.match(alphaExp) && v!="min"&v!="max"){
		if(zV+3==zOff){
			v=zValues[zV+5];
		}else{
			v=zValues[zV+4];
		}
		d2.value=v;
		f=true;
		alert('You may type only numbers 0-9.');
	}
	v=v.split(",").join("").split("$").join("");
	d2.value=v;
	v=parseFloat(v);
	if(zV+3==zOff){
		if(parseFloat(zValues[zV+2])>parseFloat(v)){
			v=zValues[zV+2];
			d2.value=zValues[zV+5];
			alert('The first value must be smaller than the second value. Your data has been reset.');
			return;
		}
	}else{
		if(parseFloat(v)>parseFloat(zValues[zV+3])){
			v=zValues[zV+3];
			d2.value=zValues[zV+4];
			alert('The first value must be smaller than the second value. Your data has been reset.');
			return;
		}
	}
	d1.value=v;
	zValues[zOff]=v;
	zInputSlideOnChange('zInputHiddenValues'+zV,zValues[zV+2],zValues[zV+3],zExpValue);
}

function zInputSlideLimit(obj,paramObj,forceOnChange){
	var dd1=document.getElementById(paramObj.valueId);
	var dd2=document.getElementById(paramObj.labelId);
	var firstLoad=false;
	if(zDrag_dragObject==null){
		firstLoad=true;
		if(dd2.value==""){
			if(paramObj.constrainLeft){
				dd2.value="max";
				dd1.value="";
			}else{
				dd2.value="min";
				dd1.value="";
			}
		}
	}
	
	// if(navigator.userAgent.indexOf("MSIE 6.0") != -1){ - need to double or halve the value to force this to work on IE 6.
	if(!firstLoad){
		var rightSlider=false;
		if(paramObj.zValue+3==paramObj.zValueValue){
			rightSlider=true;
		}
		var d1=zDrag_getPosition(obj);
		var d2=document.getElementById("zInputSliderBox"+paramObj.zValue);
		var d3=zDrag_getPosition(d2);
		if(paramObj.constrainObj){
			var sw=parseInt(d2.style.width)-parseInt(obj.style.width);
		}else{
			var sw=parseInt(d2.style.width);
		}
		var dw=parseInt(obj.style.width);
		if(navigator.userAgent.indexOf("MSIE 6.0") != -1){
			dw/=2;
			sw/=2;
		}
		var y=d3.y;
		if(rightSlider){
			var x=parseInt(obj.style.marginRight);
		}else{
			var x=parseInt(obj.style.marginLeft);
		}
		var first=false;
		var last=false;
		if(paramObj.constrainObj){
			d4=document.getElementById(paramObj.constrainObj);
			d4.style.zIndex=1;
			obj.style.zIndex=3;
			if(rightSlider){
				var dx=sw-(dw+parseInt(d4.style.marginLeft));
			}else{
				var dx=sw-(dw+parseInt(d4.style.marginRight));
			}
			d5=zDrag_getPosition(d4);
			if(paramObj.constrainLeft){
				if(x>=dx){
					x=dx;
					if(x>=sw-dw){
						first=true;
					}
				}else if(x<=0){
					x=0;
					if(x<=0){
						last=true;
					}
				}
			}else{
				var sw2=dx-0;
				if(x<=0){
					x=0;
					first=true;
				}else if(x>=dx){
					x=dx;
					if(x+dw>=0+sw){
						last=true;
					}
				}
			}
		}else{
			if(x<=0){
				x=0;
				first=true;
			}else if(x+dw>=0+sw){
				x=((0+sw)-dw);
				last=true;
			}
		}
		if(paramObj.zValue+3==paramObj.zValueValue){
			obj.style.marginRight=x+"px";
			x=sw-(x+dw);
			percent=Math.max(0,(x)/(sw-dw));
		}else{
			obj.style.marginLeft=x+"px";
			percent=Math.min(1,Math.max(0,(x)/(sw-dw)));
		}
		var arrLabel=zValues[paramObj.zValue];
		var arrValue=zValues[paramObj.zValue+1];
		offset=Math.min(arrLabel.length-1,Math.round(percent*(arrLabel.length-0.5)));
		if(first){
			dd1.value="";
			dd2.value="min";
		}else if(last){
			dd1.value="";
			dd2.value="max";
		}else{
			dd1.value=arrValue[offset];
			dd2.value=arrLabel[offset];
		}
		zValues[paramObj.zValueLabel]=dd2.value;
		zValues[paramObj.zValueValue]=dd1.value;
	}
	if(forceOnChange!=null && forceOnChange){
		zInputSlideOnChange('zInputHiddenValues'+paramObj.zValue,zValues[paramObj.zValue+2],zValues[paramObj.zValue+3],paramObj.zExpOptionValue);
	}
}

var zExpOptionLabelHTML=[];
function zExpOptionSetValue(i,v,h){
	var d1=document.getElementById('zExpOption'+i+'_button');
	if(h==null) h="none";
	if(d1!=null) d1.innerHTML=zExpOptionLabelHTML[i]+" <span id=\"zExpOption"+i+"_value\" style=\"display:"+h+";\">"+zStringReplaceAll(v,",",", ")+"</span>";
}


function zCheckboxOnChange(obj,zv){
	var running=true;
	var n=0;
	var arrV=[];
	var arrL=[];
	while(running){
		n++;
		var d2=document.getElementById(obj.name+"label"+n);
		if(d2==null) break;
		var d1=document.getElementById(obj.name+n);
		if(d1.checked){
			arrL.push(d2.innerHTML);
			arrV.push(d1.value);
		}
	}
	var dn=obj.name.substr(0,obj.name.length-5);
	var d1=document.getElementById(dn);
	d1.value=arrV.join(",");
	if(zv!=-1){
		zExpOptionSetValue(zv,"<br>"+arrL.join("<br>"));
	}
	d1.onchange();
}

function zEnableTextSelection(target){
	target.onmousedown=function(){return true};
	target.onselectstart=function(){return true};
	target.style.MozUserSelect="text";
}
function zDisableTextSelection(target){
if (typeof target.onselectstart!="undefined") //IE route
	target.onselectstart=function(){return false}
else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
	target.style.MozUserSelect="none"
else if(target.onmousedown==null) //All other route (ie: Opera)
	target.onmousedown=function(){return false}
}


var zMotiontimerlen = 10;
var zMotionslideAniLen = 150;
var zMotiontimerID = new Array();
var zMotionstartTime = new Array();
var zMotionobj = new Array();
var zMotionendHeight = new Array();
var zMotionmoving = new Array();
var zMotiondir = new Array();
var zMotionLabel=new Array();
var zMotionHOC=new Array();
var zMotionObjClicked="";
function zMotionOnMouseDown(objname){
	zMotionObjClicked=objname;
	return false;
}
function zMotiontoggleSlide(objname, label, hoc){
	zMotionLabel[objname]=document.getElementById(label);
	if(hoc!=""){
		zMotionHOC[objname]=document.getElementById(hoc);
	}else{
		zMotionHOC[objname]="";	
	}
	if(zMotionObjClicked!=objname) return;
	if(document.getElementById(objname).style.display == "none"){
		zMotionHOC[objname].style.display="none";
		zMotionslidedown(objname);
	}else{
		zMotionslideup(objname);
	}
}
function zMotionslidedown(objname){
	if(zMotionmoving[objname])
			return;

	if(document.getElementById(objname).style.display != "none")
			return; // cannot slide down something that is already visible

	zMotionmoving[objname] = true;
	zMotiondir[objname] = "down";
	zMotionstartslide(objname);
}

function zMotionslideup(objname){
	if(zMotionmoving[objname])
			return;

	if(document.getElementById(objname).style.display == "none")
			return; // cannot slide up something that is already hidden

	zMotionmoving[objname] = true;
	zMotiondir[objname] = "up";
	zMotionstartslide(objname);
}

function zMotionstartslide(objname){
	zMotionobj[objname] = document.getElementById(objname);

	zMotionendHeight[objname] = parseInt(zMotionobj[objname].style.height);
	zMotionstartTime[objname] = (new Date()).getTime();

	if(zMotiondir[objname] == "down"){
		zMotionobj[objname].style.height = "1px";
	}
	zMotionobj[objname].style.overflow="hidden";
	zMotionobj[objname].style.display = "block";
	zMotiontimerID[objname] = setInterval('zMotionslidetick("' + objname + '");',zMotiontimerlen);
}

function zMotionslidetick(objname){
	var elapsed = (new Date()).getTime() - zMotionstartTime[objname];
	if (elapsed > zMotionslideAniLen)
		zMotionendSlide(objname)
	else {
		var d =Math.round(elapsed / zMotionslideAniLen * zMotionendHeight[objname]);
		if(zMotiondir[objname] == "up") d = zMotionendHeight[objname] - d;
		zMotionobj[objname].style.height = d + "px";
	}
}

function zMotionendSlide(objname){
	clearInterval(zMotiontimerID[objname]);

	if(zMotiondir[objname] == "up"){
		zMotionobj[objname].style.display = "none";
		zMotionHOC[objname].style.display="inline";
	}else{
		zMotionobj[objname].style.overflow="auto";
	}
	zMotionobj[objname].style.height = zMotionendHeight[objname] + "px";

	delete(zMotionHOC[objname]);
	delete(zMotionLabel[objname]);
	delete(zMotionmoving[objname]);
	delete(zMotiontimerID[objname]);
	delete(zMotionstartTime[objname]);
	delete(zMotionendHeight[objname]);
	delete(zMotionobj[objname]);
	delete(zMotiondir[objname]);

	return;
}



function zCLink(d){d.href='javascript:void(0);';}
function zSetInput(id,v){
	var d=document.getElementById(id);d.value=v;
	if(d.onchange!=null){
		d.onchange();
	}
}
var zFormOnEnterValues=new Array();
function zFormOnEnterAdd(id,d){
	zFormOnEnterValues[id]=d;
}
function zFormOnEnter(e,obj){
	if(zFormOnEnterValues[obj.id]!=null){
		if(e==null){
			eval(zFormOnEnterValues[obj.id]);
		}else{
			if(window.event){var keynum= e.keyCode;}else{var keynum = e.which;}if(keynum==13){
				eval(zFormOnEnterValues[obj.id]);
			}
		}
	}
}
function zInputRemoveOption(id,zOffset){
    var ab=new Array();
    var ab2=new Array();
    var ab3=new Array();
    for(var i=0;i<zValues[zOffset].length;i++){
        if(id!=i){ 
			ab.push(zValues[zOffset+1][i]); ab2.push(zValues[zOffset][i]); ab3.push(zValues[zOffset+2][i]); 
		}else{
			if(zValues[zOffset+2][i] != "" && zValues[zOffset+6] == false){
				var d=document.getElementById(zValues[zOffset+2][i]);
				d.style.display="block";
			}
		}
    }
    zValues[zOffset+2]=ab3;
    zValues[zOffset+1]=ab;
    zValues[zOffset]=ab2;
	var ofield=document.getElementById(zValues[zOffset+4]);
	var ofieldlabel=document.getElementById(zValues[zOffset+4]+"_zlabel");
	ofield.value=zValues[zOffset+1].join(",");
	ofieldlabel.value=zValues[zOffset].join(",");
	if(ofield.onchange!=null){
		ofield.onchange();
	}
    zInputSetSelectedOptions(false,zOffset);
}
function zHasInnerText(){
	return (document.getElementsByTagName("body")[0].innerText != undefined) ? true : false;	
}

var zInputBoxLinkValues=[];
function zInputSetSelectedOptions(checkField,zOffset,fieldName,linkId,allowAnyText,onlyOneSelection){
    if(checkField){
		var ofield=document.getElementById(fieldName);
		var ofieldlabel=document.getElementById(fieldName+"_zlabel");
		var ofL=document.getElementById(fieldName+"_zmanual");
		var ofV=document.getElementById(fieldName+"_zmanualv");
        var cid=ofV.value;
        var cname=ofL.value;
		var obj=ofL;
		var it=zHasInnerText() ? obj.innerText : obj.textContent;
		if(zValues[zOffset+6]==true && zValues[zOffset+1].length>0 && cname!=""){
			alert('Only one value can be selected for this field');
			ofV.value="";
			ofL.value="";
			return;	
		}
        if(allowAnyText && cname!=""){
			// ignore
		}else if(cid=="0"){
            alert('Please make a selection before clicking the add button.');
            return;
        }else if(cname==""){
			return;	
		}
		for(var i=0;i<zValues[zOffset].length;i++){
			if(zValues[zOffset+1][i] == cid){// && zValues[zOffset][i]==cname){
				alert('The option, '+zValues[zOffset][i]+', has already been selected.');
				return;
			}
		}
		// loop links here with the zOffset
		for(var i=0;i<zValues[zOffset+3].length;i++){
			if(zValues[zOffset+3][i] == cid){
				linkId="zInputLinkBox"+zOffset+"_link"+(i+1);
				var d1=document.getElementById(linkId);
				d1.style.display="none";
				break;
			}
		}
		if(!allowAnyText && cid==cname){
			alert('Only valid entries are accepted. Please type an entry that appears in the suggestion box and than select it or press enter.');
			return;
		}
		ofV.value="";
		ofL.value="";
		if(linkId==null) linkId="";
        zValues[zOffset+2].push(linkId);
        zValues[zOffset+1].push(cid);
        zValues[zOffset].push(cname);
		ofield.value=zValues[zOffset+1].join(",");
		ofieldlabel.value=zValues[zOffset].join(",");
		if(ofield.onchange!=null){
			ofield.onchange();
		}
		var arrM=[];
		for(var i=0;i<zValues[zOffset].length;i++){
			arrM[zValues[zOffset][i]]=i;
		}
		zValues[zOffset].sort();
		var arrN=[];
		var arrN2=[];
		for(var i=0;i<zValues[zOffset].length;i++){
			arrN[i]=zValues[zOffset+1][arrM[zValues[zOffset][i]]];
			arrN2[i]=zValues[zOffset+2][arrM[zValues[zOffset][i]]];
		}
		zValues[zOffset+1]=arrN;
		zValues[zOffset+2]=arrN2;
    }
	zExpOptionSetValue(zValues[zOffset+5],"<br>"+zValues[zOffset].join("<br>"));
    var cb=document.getElementById("zInputOptionBlock"+zOffset);
    var arrBlock2=new Array();
	if(zValues[zOffset].length!=0){
		arrBlock2.push('<div class="zInputLinkBoxSelected"><div class="zInputLinkBoxSelectedHead">SELECTED:</div>');// style=".zInputLinkBoxSelectedHead { border:1px solid #CCCCCC;cursor:default;float:left;width:140px; overflow:hidden;"><div style="float:left;width:100%;background-color:#CCCCCC;font-weight:bold;} ">SELECTED:</div>');
		for(var i=0;i<zValues[zOffset].length;i++){
			var s='background-color:#F2F2F2;';
			if(i%2==0){
				s="background-color:#FFFFFF;";
			}
			if(zValues[zOffset+2][i] != ""){
			var d1=document.getElementById(zValues[zOffset+2][i]);
				d1.style.display="none";
			}
			arrBlock2.push('<div style="float:left;'+s+'"><a href="javascript:zInputRemoveOption('+(arrBlock2.length-1)+','+zOffset+');" title="Click the X to remove this option." class="zTOB-closeBox">X</a><div class="zInputLinkBoxSItem" style="'+s+'">'+zValues[zOffset][i]+'</div></div>');
		}
		arrBlock2.push('</div><br clear="all">');
	}
    //arrBlock2.push('<input type="hidden" name="'+fieldName+"_zmanualv"+'_zhidden" id="'+fieldName+"_zmanualv"+'_zhidden" value="'+zValues[zOffset+1].join(",")+'">');
    cb.innerHTML=arrBlock2.join('');
    if(arrBlock2.length==0){
        cb.style.display="inline";
    }else{
        cb.style.display="block";
    }
}

function getMLSTemplate(obj,row){
	var arrR=new Array();
	arrR.push('<table cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" wid'+'th="110" style="font-size:10px; font-style:italic;"><div class="listing-l-img"><a href="##URL##"><img src="##PHOTO1##" alt="##TITLE##" width="100" height="78" class="listing-d-im'+'g" border="0"></a></div>ID####MLS_ID##-##LISTING_ID##</td><td valign="top"><h2><a href="##URL##" style="text-decoration:none; ">##TITLE##</a></h2><span>##DESCRIPTION##</span><span class="listing-l-l'+'inks" style="padding-bottom:0px; "><a href="##URL##">Read More</a><a href="/z/_a/listing/inquiry_property?acti'+'on=form&mls_id=##MLS_ID##&listing_id=##LISTING_ID##" rel="nofollow">Send An Inquiry</a><a href="/z/_a/listing/sl?save'+'Act=check&mls_id=##MLS_ID##&listing_id=##LISTING_ID##" rel="nofollow">Save Listing</a>');
	if(obj["VIRTUAL_TOUR"][row] != ""){
		arrR.push('<a href="##VIRTUAL_TOUR##" target="_blank" rel="nofollow">View Virtual Tour</a>');
	}
	arrR.push('</span></td></tr><tr><td colspan="2" style="border-bottom:1px solid ##999999;">&nbsp;</td></table><br />');
	return arrR.join("");
}
var zDebugMLSAjax=false;
function loadMLSResults(r){
	if(zDebugMLSAjax){
		document.write(r);
		return;
	}
	eval('var myObj='+r+';');
	var m=myObj;
	arrD=new Array();
	setMLSCount(m.COUNT);
	//alert(m.SS[0].LABEL[0]);
  //          for(var g=0;g<zExpArrMenuBox.length;g++){
//            	if(zExpArrMenuBox[g]==f.id){
	// NOW I KNOW WHAT THIS WAS FOR! redraw from ajax results
					//zExpMenuRedraw(0,m.SS[0].LABEL,m.SS[0].VALUE);
	// loop listings
	//m.DATA["URL"]=new Array();
	m.DATA["TITLE"]=new Array();
	for(i=0;i<m.COUNT;i++){
		m.DATA["TITLE"][i]="Test title";
		var t=getMLSTemplate(m.DATA,i);
		for(g in m.DATA){
			t=zStringReplaceAll(t,"##"+g+"##",m.DATA[g][i]);
		}
		arrD.push(t);
	}
	var r2=document.getElementById("mlsResults");
	r2.innerHTML="";
	r2.innerHTML+=arrD.join('<hr size="1">');
}
var zUpdateMapMarkers=null;
function displayMLSCount(r,skipParse){
	// throws an error when debugging is enabled.
	if(zDebugMLSAjax){
		document.write(r);	
		return;
	}
	eval('var myObj='+r+';');
	if(myObj.success){
		setMLSCount(myObj.COUNT);
		if(zUpdateMapMarkers!=null){
			zUpdateMapMarkers(myObj);	
		}
	}else{
		alert(myObj.errorMessage);
	}
	
}
var zSearchFormChanged=false;
var zDisableSearchFormSubmit=false;
var firstSetMLSCount=true;
var zDisableSearchCountBox=false;
function setMLSCount(c){
	if(zDisableSearchCountBox) return;
	var theHTML='<span style="font-size:24px;line-height:30px;">'+c+'</span><br><span style="font-size:11px;font-weight:bold;">listings match your <br>search criteria<br>&nbsp;</span></span>';
	var r92=document.getElementById("resultCountAbsolute");
	var r93=document.getElementById("searchFormTopDiv");
	r93.style.height="130px";
	r92.style.display="block";
	var theHTML='<span style="font-size:24px;line-height:30px;">'+c+'</span><br><span style="font-size:11px;font-weight:bold;">matching listings<br><a href="javascript:jumpToSearchForm();" style="color:#369;">Go to search form</a>'
	if(zSearchFormChanged && zDisableSearchFormSubmit==false){
		theHTML+='<br><button onclick="document.zMLSSearchForm.submit();" style="font-size:13px; font-weight:bold; margin-top:10px; width:140px; padding:5px; background-color:##BBBBBB; color:##000000; border:1px solid ##000000; text-decoration:none; cursor:pointer;"; name="sfbut1">Show Results</button>';
	}
	theHTML+='</span></span>';
	if(r92!=null){
		r92.innerHTML=theHTML;
	}
	if(firstSetMLSCount){
		firstSetMLSCount=false;
		updateCountPosition(null,15);
	}
}
var zMapCoorUpdate=null;
function getMLSCount(formName){
	zSearchFormChanged=true;
	if(zMapCoorUpdate!=null){
		zMapCoorUpdate(false, formName);
	}
	var v1=document.getElementById("search_map_lat_blocks");
	if(GMap2 && v1 && v1.value=="") return;
	var ab=zFormData[formName].action;
	var cb=zFormData[formName].onLoadCallback;
	var aj=zFormData[formName].ajax;
	zFormData[formName].ajax=true;
	zFormData[formName].ignoreOldRequests=true;
	zFormData[formName].onLoadCallback=displayMLSCount;
	zFormData[formName].successMessage=false;
	zFormData[formName].action='/z/_a/listing/search-form?action=ajaxCount';
	if(zDisableSearchFilter==1){
		zFormData[formName].action+="&zDisableSearchFilter=1";
	}
	zFormSubmit(formName,false,true);
	zFormData[formName].ajax=aj;
	zFormData[formName].action=ab;
	zFormData[formName].onLoadCallback=cb;
}
var zSearchFormTimeoutId=0;
var zSearchFormFloaterAbsoluteFix=false;
var zSearchFormFloaterDisplayed=false;
var zWindowIsLoaded=false;
function updateCountPosition(e,r2){
	r111=zModalLockPosition(e);
	if(!zWindowIsLoaded) return;
	var r9=document.getElementById("resultCountAbsolute");
	var r95=document.getElementById("searchFormTopDiv");
	if(r95==null) return;
	var p2=zFindPosition(r95);
	var scrollP=document.body.scrollTop+document.documentElement.scrollTop;
	/*if(zPositionObjSubtractPos[0]!=0 || zPositionObjSubtractPos[1]!=0){
		scrollP=(scrollP-p2[1]);
		p2[0]=zPositionObjSubtractPos[;
		p2[1]=zSearchFormFloaterAbsoluteFix.y;	
	}*/
	scrollP=Math.max(scrollP,p2[1]);
	/*
	if(zSearchFormFloaterAbsoluteFix!=false){
		if(scrollP!=p2[1]){
			scrollP+=p2[1];
		}
	}*/
	if(r2!=null){
		zSearchFormFloaterDisplayed=true;
		if(scrollP+"px" != r9.style.top){
			r9.style.top=(scrollP-zPositionObjSubtractPos[1])+"px";
			var r10=getWindowSize();
		}
		if(p2[0]+'px' != r9.style.left){
			r9.style.left=(p2[0]-zPositionObjSubtractPos[0])+'px';
		}
		clearTimeout(zSearchFormTimeoutId);
	}else{
		clearTimeout(zSearchFormTimeoutId);
		zSearchFormTimeoutId=setTimeout("updateCountPosition(null,true);",300);	
	}
	
	/*
	var d2=document.getElementById("homeSearchDiv");
	var d3=zFindPosition(d2);
	document.getElementById("testdebug").value=p2[0]+":"+d3[0]+":"+(zPositionObjSubtractPos[1]+":"+d3[1]+":"+d3+":"+d2.offsetLeft+":"+d2.offsetTop+":"+(scrollP-zPositionObjSubtractPos[1]-d3[1])+":"+d3[2]);
	r9.style.top=(scrollP-d3[1])+"px";
	r9.style.left=(p2[0]-d3[0])+"px";
	r9.style.left=(d3[0]-zPositionObjSubtractPos[0])+"px";*/
	//r9.style.left=+"px";
	zSearchFormChanged=false;
	if(r111==false){
		return false;
	}
}
function zJumpToId(id,offset){	
	var r94=document.getElementById(id);
	if(r94==null) return;
	var p=zFindPosition(r94);
	var isWebKit = navigator.userAgent.toLowerCase().indexOf('webkit') > -1;
	if(!offset || offset == null){
		offset=0;
	}
	if(isWebKit){
		document.body.scrollTop=p[1]+offset;
	}else{
		document.documentElement.scrollTop=p[1]+offset;
	}
}
function jumpToSearchForm(){	
	//var r94=document.getElementById("searchFormTopDiv");
	var r94=document.getElementById("mlsResults");
	if(r94==null) return;
	var p=zFindPosition(r94);
	var isWebKit = navigator.userAgent.toLowerCase().indexOf('webkit') > -1;
	if(isWebKit){
		document.body.scrollTop=Math.max(0,p[1]-70);
	}else{
		document.documentElement.scrollTop=Math.max(0,p[1]-70);
	}
}
function getWindowSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return {width:myWidth,heigh:myHeight};
}
if(window.onscroll != null){
	var zMLSonScrollBackup=window.onscroll;
	window.onscroll=function(){
		zMLSonScrollBackup();
		r111=updateCountPosition();
		return r111;
	}
}else{
	window.onscroll=updateCountPosition;
}
if(window.onmousewheel != null){
	var zMLSonScrollBackup2=window.onmousewheel;
	window.onmousewheel=function(){
		zMLSonScrollBackup2();
		r111=updateCountPosition();
		return r111;
	}
}else{
	window.onmousewheel=updateCountPosition;
}
function zWindowOnResize(){
	zResizeModal();
	zWindowOnLoad();	
	updateCountPosition();
}

if(window.onresize != null){
	var zMLSonResizeBackup=window.onresize;
	window.onresize=function(){
		zMLSonResizeBackup();
		zWindowOnResize();
	}
}else{
	window.onresize=zWindowOnResize;
}
var zPositionObjSubtractId=false;
var zPositionObjSubtractPos=new Array(0,0);
function zWindowOnLoad(){
	if(zPositionObjSubtractId!=false){
		var d1=document.getElementById(zPositionObjSubtractId);
		//alert('load:'+d1.offsetLeft+":"+d1.offsetTop+":"+zFindPosition(d1));
		//zPositionObjSubtractPos=new Array(d1.offsetLeft,d1.offsetTop);
		zPositionObjSubtractPos=zFindPosition(d1);
		//zPositionObjSubtractPos[2]=d1.offsetTop;
//		zPositionObjSubtractPos=zFindPosition(d1);
	}
	zWindowIsLoaded=true;
	updateCountPosition();
	if(zo('zMenuClearUniqueId')){
		zMenuInit();
	}
}
if(window.onload != null){
	var zMLSonloadBackup=window.onload;
	window.onload=function(){
		zMLSonloadBackup();
		zWindowOnLoad();
	}
}else{
	window.onload=zWindowOnLoad;
}

var zMLSMessageBgColor="0x990000";
var zMLSMessageTextColor="0xFFFFFF";
var zMLSMessageOutputId=0;
function zMLSShowFlashMessage(message){
	zMLSMessageOutputId++;
	message=zStringReplaceAll(message,"\r","");
	if(message==""){
		document.write('<img src="/z/a/images/s.gif" width="100%" height="100%">');
	}else{
		zswf('<object zswf="off" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="221" height="161" id="zMLSMessage'+zMLSMessageOutputId+'" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="allowFullScreen" value="false" /><param name="movie" value="/z/a/listing/images/message.swf?messageText='+escape(message)+'&bgColor='+zMLSMessageBgColor+'&textColor='+zMLSMessageTextColor+'" /><param name="quality" value="high" /><param name="scale" value="noscale" /><param name="wmode" value="transparent" /><param name="salign" value="TL" /><param name="bgcolor" value="#ffffff" />	<embed src="/z/a/listing/images/message.swf?messageText='+escape(message)+'&bgColor='+zMLSMessageBgColor+'&textColor='+zMLSMessageTextColor+'" quality="high" scale="noscale" wmode="transparent" bgcolor="#ffffff" width="221" height="161" name="zMLSMessage'+zMLSMessageOutputId+'" salign="TL" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /></object>');	
	}
}

function zAjaxWalkscore(obj){
	var tempObj={};
	tempObj.id="zAjaxWalkScore";
	tempObj.url="/z/_a/util/walkscore?latitude="+obj.latitude+"&longitude="+obj.longitude;
	tempObj.cache=false;
	tempObj.callback=zAjaxWalkscoreCallback;
	tempObj.ignoreOldRequests=false;
	zAjax(tempObj);	
}
var zWalkscoreIndex=0;
function zAjaxWalkscoreCallback(r){
	var d1=document.getElementById("walkscore-div");
	var json=eval('(' + r + ')');
	//if we got a score
	if (json && json.status == 1) {
		var htmlStr = 'Walk Score&#8482;: ' + json.walkscore + " Description: "+json.description;//'<a target="_blank" href="' + json.ws_link + '">Walk Score</a>&#8482;: ' + json.walkscore + " Description: "+json.description;
	}
	//if no score was available
	else if (json && json.status == 2) {
		var htmlStr = '';//'<a target="_blank" href="http://www.wal'+'kscore.com" rel="nofollow">Walk Score</a>&#8482;: <a target="_blank" href="' + json.ws_link + '">Get Score</a>';
	}else{
		d1=false;	
	}
	zWalkscoreIndex++;
	//make sure we have a place to put it:
	if (d1) { //if you want to wrap P tags around the html, can do that here before inserting into page element
		htmlStr = htmlStr + getWalkScoreInfoHtml(zWalkscoreIndex);
		d1.innerHTML = htmlStr;
	}
}
	//show/hide the walkscore info window
	function toggleWalkScoreInfo(index) {
		var infoElem = document.getElementById("walkscore-api-info" + index);
		if (infoElem && infoElem.style.display == "block")
			infoElem.style.display = "none";
		else if (infoElem)
			infoElem.style.display = "block";
	}
function getWalkScoreInfoHtml(index) {
	return '<span id="walkscore-api-info' + index + '" class="walkscore-api-info" style="font-size:12px; padding-top:10px; display:block; float:left; clear:both;">Walk Score measures how walkable an address is based on the distance to nearby amenities. A score of 100 represents the most walkable area compared to other areas.<hr size="1"></span></span>';// <a href="http://www.walkscore.com" target="_blank">Learn more</a>. <hr size="1"></span></span>';
}
function zMenuInit(){ // modified version of v1.1.0.2 by PVII-www.projectseven.com
 if(navigator.appVersion.indexOf("MSIE")==-1){return;}
 var i,k,g,lg,r=/\s*zMenuHvr/,nn='',c,cs='zMenuHvr',bv='zMenuDiv';
 for(i=0;i<10;i++){g=document.getElementById(bv+i);if(g){
 lg=g.getElementsByTagName("LI");if(lg){for(k=0;k<lg.length;k++){
 lg[k].onmouseover=function(){
	 var pos=zGetAbsPosition(this);
	 var c2=document.getElementById(this.id+"_menu");
	 c=this.className;cl=(c)?c+' '+cs:cs;
	 if(c2){
	 c2.style.position="absolute";
	 var vertical=zo(this.id.split("_")[0]+"Vertical");
	 if(vertical){
	 c2.style.top=(pos.y)+"px";c2.style.left=(pos.x+pos.width)+"px";
	 }else{
	 c2.style.top=(pos.y+pos.height)+"px";c2.style.left=pos.x+"px";
	 }
	 }
 
 this.className=cl;};lg[k].onmouseout=function(){c=this.className;
 this.className=(c)?c.replace(r,''):'';};}}}nn=i+1;}
}
function zo(variable){
    if(typeof(window[variable]) == "undefined"){
		return false;	
	}else{
		return eval(variable);	
	}
}


document.write('<div id="zModalOverlayDiv"><div id="zModalOverlayDiv2"></div></div>');
var zModalObjectHidden=new Array();
var zModalScrollPosition=new Array();
function zModalLockPosition(e){
	var el = document.getElementById("zModalOverlayDiv");
	if(el && el.style.visibility=="visible"){
		window.scrollTo(zModalScrollPosition[0],zModalScrollPosition[1]);
		return false;
	}else{
		return true;
	}
}
function zGetClientWindowSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return {"width":myWidth,"height":myHeight};
}
function zResizeModal(){
	var el = document.getElementById("zModalOverlayDiv");
	if(el.style.visibility != "visible") return;
	var windowSize=zGetClientWindowSize();
	el.style.top=zModalScrollPosition[1]+"px";
	el.style.left=zModalScrollPosition[0]+"px";
	el.style.width=windowSize.width+"px";
	el.style.height=windowSize.height+"px";
	var el2 = document.getElementById("zModalOverlayDiv2");
	var pos=zGetAbsPosition(el2);
	var left=(windowSize.width/2)-(pos.width/2);
	var top=(windowSize.height/2)-(pos.height/2);
	el2.style.left=left+'px';
	el2.style.top=top+'px';
}
var zModelCancelFirst=false;
function zShowModal(content, obj){
	if(zModelCancelFirst) return;
    zModalScrollPosition = [
        self.pageXOffset ||
        document.documentElement.scrollLeft ||
        document.body.scrollLeft
        ,
        self.pageYOffset ||
        document.documentElement.scrollTop ||
        document.body.scrollTop
        ];
	if(navigator.userAgent.indexOf("MSIE 6.0") != -1){
		var arr=document.getElementsByTagName("select");
		for(var i=0;i<arr.length;i++){
			if(arr[i].style.visibility=="" || arr[i].style.visibility == "visible"){
				arr[i].style.visibility="hidden";
				zModalObjectHidden.push(arr[i]);
			}
		}
	}
	var el = document.getElementById("zModalOverlayDiv");
	var windowSize=zGetClientWindowSize();
	el.style.top=zModalScrollPosition[1]+"px";
	el.style.left=zModalScrollPosition[0]+"px";
	el.style.width=windowSize.width+"px";
	el.style.height=windowSize.height+"px";
	var left=(windowSize.width/2)-(obj.width/2);
	var top=(windowSize.height/2)-(obj.height/2);
	el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";
	var el2 = document.getElementById("zModalOverlayDiv2");
	el2.style.left=left+'px';
	el2.style.top=top+'px';
	el2.style.width=obj.width+'px';
	el2.style.height=obj.height+'px';
	el2.innerHTML='<div style="width:50px; font-weight:bold; float:right;"><a href="javascript:void(0);" onclick="zCloseModal();">X Close</a></div><br clear="all"> '+content+'<div>';  
}
function zCloseModal(){
	var el = document.getElementById("zModalOverlayDiv");
	el.style.visibility = "hidden";
	for(var i=0;i<zModalObjectHidden.length;i++){
		zModalObjectHidden[i].style.visibility="visible";
	}
}

function zModalSaveSearch(searchId){
	var modalContent1='<iframe src="/z/_a/listing/property/save-search?searchId='+searchId+'" frameborder="0" scrolling="no" width="520" height="390" style="margin:0px;"></iframe>';
	zShowModal(modalContent1,{'width':520,'height':410});
}
/*
function zToggleSortFormBox(){
	var d1=document.getElementById("search_remarks");
	var d2=document.getElementById("search_remarks_negative");
	var d3=document.getElementById("zSortFormBox");
	var d5=document.getElementById("zSortFormBox2");
	var d4=document.getElementById("search_sort");
	if(d1.value !="" || d2.value != ""){
		d3.style.display="none";
		d4.selectedIndex=0;
		d5.style.display="block";
	}else{
		d3.style.display="block";
		d5.style.display="none";
	}
}
*/