/* (c) LoopNet Map Search Manager Version 5.8 */
LNJS.__searchmanager=true;LNJS.SearchManager=Class.create();LNJS.SearchManager.prototype=(new LNJS.Base()).extend({initialize:function(options){this.__className="LNJS.SearchManager";this.options={rentType:"YR",searchType:"FS",searchTypes:["FS","FL","FSFL","RS","PD"],selectedCats:[[],[],[]],trackHistory:false,selectedListings:{},selectedListingsCount:0}.extend(options||{});this.pageIndex=0;this.pageCount=0;this.pinIndex=-1;this.pinHoverIndex=-1;this.pinCallOutNum=1;this.basicZ=1000;this.premiumZ=1200;this.showcaseZ=1400;this.rsZ=1400;this.searchHasRun=false;this.searchType=this.options.searchType;this.searchTypes=this.options.searchTypes;this.selectedCats=this.options.selectedCats;this.rentType=this.options.rentType;this.selectedComparables={};this.selectedComparablesCount=0;this.selectedComparablesPrice=0;this.selectedListings=this.options.selectedListings;this.selectedListingsCount=this.options.selectedListingsCount;this.supportsSavedSearch=true;this.isInitialSearch=false;this.temporarySearchHasRun=false;this.isInitalPan=false;this.isInitalZoom=false;this.pagingSupported=false;this.currentPage=1;this.pageSize=20;this.pageDisplayStartIndex=this.currentPage;this.pageDisplayEndIndex=this.pageSize;this.pageStartIndex=0;this.sortingSupported=false;this.currentlySorting=false;this.searchID=0;this.resultCount=0;this.sortCommand='';this.sortOrder='';this.popup=$(this.options.popup);this.resultcont=$(this.options.resultcont);this.resultCount=$(this.options.resultCount);this.pData=null;this.lData=null;this.adjustMapBasedOnPins=false;if(LNJS.isNull(this.popup))throw this.Err(this.__className+" requires a valid popup element! cannot find "+this.options.popup);if(LNJS.isNull(this.resultcont))throw this.Err(this.__className+" requires a valid results element! cannot find "+this.options.resultcont);if(LNJS.isNull(LNJS.SearchCriteriaManager))throw this.Err(this.__className+" requires LNJS.SearchCriteriaManager!");this.CritMgr=new LNJS.SearchCriteriaManager(this.options.critopt);if(this.options.trackHistory){if(LNJS.History)LNJS.History.addObserver({historyChange:this._onHistoryChange});}},setCurrentPage:function(curPg){this.currentPage=curPg;this.pageStartIndex=((this.currentPage-1)*this.pageSize);var pageEndIndex=(this.pageStartIndex+this.pageSize)-1;this.pageDisplayStartIndex=this.pageStartIndex+1;this.pageDisplayEndIndex=pageEndIndex+1;},validateCriteria:function(){if(!this._isPD()){var selectedCatIds=this._getSelectedCatIds();if(selectedCatIds.length==0)throw this.LNErr(LNJS.ErrType.RequiredField,LNJS.ErrSource.MapPropertyTypes,this.searchType);}if(this._isPD()){var pid=LNJS.Page.EL.propid.value.trim();if(pid==LNJS.Page.propidDefault){throw this.LNErr(LNJS.ErrType.RequiredField,LNJS.ErrSource.MapPropertyID,pid);}else{if(!LNJS.RegEx.test(pid,LNJS.RegEx.IsListingID))throw this.LNErr(LNJS.ErrType.InvalidData,LNJS.ErrSource.MapPropertyID,pid);}}},resortResultsList:function(){var sortFields=this.buildResortOrder();this.hidePinProfile();if(LNJS.Page.EL.result0msg)Element.hide(LNJS.Page.EL.result0msg);LNJS.Page.SearchMgr._clearResultList();LNJS.Page.showResortingResultsMsg();if(!LNJS.Page.loadingSearch){if(LNJS.Page.searchMode=='view'){LNJS.SavedCriteria=null;LNJS.Page.searchMode=null;}}var options=({queueLength:1,SOAPMethod:'ResortResults',SOAPNamespace:'http://www.loopnet.com/WebServices',postBody:GetSoapInput('<PFRequestData><SortInstructions SearchID="'+searchID+'">'+sortFields.toXml()+'</SortInstructions></PFRequestData>','ResortResults','http://www.loopnet.com/WebServices',-1,true),groupName:'resortResultsList',onComplete:LNJS.Page.SearchMgr._resortResultsList_callback});var url='/xNet/MainSite/WebServices/'+((this._isRS()?'Comparables':'Listings'))+'/Search.asmx';LNJS.Ajax.post(url,options);this.searchHasRun=true;},performSearch:function(){this.hidePinProfile();if(LNJS.Page.EL.result0msg)Element.hide(LNJS.Page.EL.result0msg);LNJS.Page.SearchMgr._clearPins();LNJS.Page.SearchMgr._clearResultList();LNJS.Page.showUpdatingMapMsg();if(!LNJS.Page.loadingSearch){if(LNJS.Page.searchMode=='view'){LNJS.SavedCriteria=null;LNJS.Page.searchMode=null;}}if(typeof LNJS.Page.SearchMgr.SearchDataHandler!='undefined'){var handler=LNJS.Page.SearchMgr.SearchDataHandler();var options=handler[0];var url=handler[1];}else{var options=({queueLength:1,SOAPMethod:'PerformSearchAndGetMapPointsForSearch',SOAPNamespace:'http://www.loopnet.com/WebServices',postBody:GetSoapInput('<PFRequestData>'+this.CritMgr.Criteria.toXml()+this._getRetInst(),'PerformSearchAndGetMapPointsForSearch','http://www.loopnet.com/WebServices',-1,true),groupName:'performSearch',onComplete:LNJS.Page.SearchMgr._performSearch_callback});var url='/xNet/MainSite/WebServices/'+((this._isRS()?'Comparables':'Listings'))+'/Search.asmx';}LNJS.Ajax.post(url,options);this.searchHasRun=true;},hidePinProfile:function(){this._hiliteItem(false);Element.hide(LNJS.Page.SearchMgr.popup);},showMarketingPage:function(feature,event){var url='';switch(feature){case 1:url='/xNet/MainSite/Marketing/Advertising/?Advertising=ShowcaseProperty&nav=no';break;case 2:url='/xNet/MainSite/Marketing/PremiumMembership.aspx?Feature=PremiumListings&nav=no&LinkCode=10630';break;case 3:url='/xNet/Mainsite/Marketing/Products/SearcherPro/?LinkCode=10710&nav=no';break;case 4:url='/xNet/Mainsite/Marketing/Products/SearcherPro/?nav=no';default:break;}if(url!=''){var w_height=(screen.height?screen.height:620);var w_newHeight=(w_height>620?w_height:620);LNJS.Page.openWindow({url:url,features:"width=800,height="+w_newHeight+",top=30,left=30,toolbar=no,location=no,directories=no,status=yes,scrollbars=yes,resizable=yes,menubar=no,screenX=200,screenY=200"});}},showProfile:function(id,linkcode,stepid){if(LNJS.Page.SearchMgr._isRS()&&!LNJS.User.rSID.y())return;if(!stepid)stepid=101;var url=LNJS.Page.SearchMgr._isMLS()?'/xNet/MainSite/Listing/Profile/Profile.aspx?LID='+id+'&stepid='+stepid+'&popupview=true':'/xNet/MainSite/Comparables/Profile/Comparable.aspx?CID='+id+'&popupview=true';var w_height=(screen.height?screen.height:620);var w_newHeight=(w_height>620?w_height:620);if(linkcode)url+='&linkcode='+linkcode;LNJS.Page.openWindow({url:url,features:"width=1000,height="+w_newHeight+",top=30,left=30,toolbar=no,location=no,directories=no,status=yes,scrollbars=yes,resizable=yes,menubar=no,screenX=200,screenY=200"});},prevPin:function(event){if(LNJS.isNull(this.pData)||this.pData.resultCount==0)return;if(parseInt(this.pinIndex)-1>=0)this.pinIndex--;else this.pinIndex=this.pData.resultCount-1;if(this.pData.items[this.pinIndex].pin)this.showPinProfile(this.pData.items[this.pinIndex].pin,event);},nextPin:function(event){if(LNJS.isNull(this.pData)||this.pData.resultCount==0)return;if(parseInt(this.pinIndex)+1<this.pData.resultCount)this.pinIndex++;else this.pinIndex=0;if(this.pData.items[this.pinIndex].pin)this.showPinProfile(this.pData.items[this.pinIndex].pin,event);},dispose:function(){this._clearResultList();this.popup=null;this.resultcont=null;this.CritMgr.dispose();this.CritMgr=null;},trackCheckbox:function(id,swap){var rchk=$('rchk'+id);var pchk=$('pchk'+id);var oMgr=LNJS.Page.SearchMgr;if(rchk==null){LNJS.Trace.error('trackCheckbox: ID: '+id+'; Can\'t find the result checkbox!');return;}if(swap)rchk.checked=!rchk.checked;if(pchk)pchk.checked=rchk.checked;if(oMgr._isMLS()){if(rchk.checked){oMgr.selectedListings[id]=id;oMgr.selectedListingsCount++;}else{oMgr.selectedListings[id]=null;delete oMgr.selectedListings[id];oMgr.selectedListingsCount--;}}else{if(rchk.checked){var aprice=Number(oMgr.lData.items[rchk.name.replace('rchk','')].compprice);oMgr.selectedComparables[id]={id:id,price:aprice};oMgr.selectedComparablesPrice=(oMgr.selectedComparablesPrice+aprice).round(2);oMgr.selectedComparablesCount++;}else{var rprice=oMgr.selectedComparables[id].price;oMgr.selectedComparables[id]=null;delete oMgr.selectedComparables[id];oMgr.selectedComparablesPrice=(oMgr.selectedComparablesPrice-rprice).round(2);oMgr.selectedComparablesCount--;}}oMgr.setSelectedItemDisplay(oMgr,LNJS.Page);oMgr=null;rchk=null;pchk=null;},setSelectedItemDisplay:function(oMgr,oPage){if(oMgr._isMLS()){Element[(oMgr.selectedListingsCount>0)?'show':'hide'](oPage.EL.clearProperties);oPage.EL.reportingTrayCont.title=(oMgr.selectedListingsCount>0)?'':'To use this, you must have at least one property selected.';oPage.EL.reportingCount.innerHTML=oMgr.selectedListingsCount;}else{Element[(oMgr.selectedComparablesCount>0)?'show':'hide'](oPage.EL.clearRecentSales);oPage.EL.purchasingCount.innerHTML=oMgr.selectedComparablesCount;if(oPage.EL.purchasingPrice){if(oMgr.selectedComparablesPrice==0)sPrice='0.00';else{sPrice=oMgr.selectedComparablesPrice.toString();if(sPrice.substr(sPrice.indexOf('.')).length<3)sPrice+='0';}oPage.EL.purchasingPrice.innerHTML='$'+sPrice;}}},_isRS:function(type){return(type||this.searchType)=="RS";},_isFSFL:function(type){return(type||this.searchType)=="FSFL";},_isFS:function(type){return((type||this.searchType)=="FS"||(type||this.searchType)=="FSFL");},_isFL:function(type){return((type||this.searchType)=="FL"||(type||this.searchType)=="FSFL");},_isPD:function(type){return(type||this.searchType)=="PD";},_isMLS:function(type){return!((type)?this._isRS(type):this._isRS());},_isLoc:function(){return(LNJS.Page.EL.suggest!=null&&LNJS.Page.EL.suggest.value.trim().length>0&&!this._isPD());},_onChangeCat:function(event){var checkbox=Event.element(event);for(i=0;i<LNJS.Page.SearchMgr.selectedCats.length;i++){var list=LNJS.Page.SearchMgr.selectedCats[i];var type=LNJS.Page.SearchMgr.searchTypes[i];catid=checkbox.id.replace(/[^\d]/g,'');if(type=="RS"){chkbox=document.forms[0]["FS"+catid];if(LNJS.isNull(chkbox))continue;}else{chkbox=document.forms[0][type+catid];if(LNJS.isNull(chkbox))continue;}if(!checkbox.checked){delete list[catid];chkbox.checked=false;}else{list[catid]=checkbox.title;chkbox.checked=true;}chkbox=null;}},_getSelectedCatIds:function(){var selected=[];indx=this.searchTypes.getByValue(this.searchType)[0];if(indx==-1){LNJS.Trace.warn('_getSelectedCatIds() Unknown searchType: '+this.searchType);return selected;}var list=this.selectedCats[indx];for(catid in list){if(typeof list[catid]=='string')selected.push(catid);}return selected;},_getAllSelectedCatIds:function(){var selected=[];for(i=0;i<this.selectedCats.length;i++){var list=this.selectedCats[i];for(catid in list){if(typeof list[catid]=='string'&&selected.indexOf(catid)==-1)selected.push(catid);}}return selected;},_getSelectedCatNames:function(){var selected=[];indx=this.searchTypes.getByValue(this.searchType)[0];if(indx==-1){LNJS.Trace.warn('_getSelectedCatNames() Unknown searchType: '+this.searchType);return selected;}var list=this.selectedCats[indx];for(catid in list){if(typeof list[catid]=='string')selected.push(list[catid]);}return selected;},_checkSelection:function(ReportType){msg='';switch(ReportType){case"10":if(this.selectedListingsCount>LNJS.LineReportLimit){msg='You have selected '+this.selectedListingsCount+' properties, which exceeds the '+LNJS.LineReportLimit+'-property limit for this report.  Select a smaller number of properties and rerun the report.';}break;case"20":if(this.selectedListingsCount>LNJS.SummaryReportLimit){msg='You have selected '+this.selectedListingsCount+' properties, which exceeds the '+LNJS.SummaryReportLimit+'-property limit for this report.  Select a smaller number of properties and rerun the report.';}break;case"30":if(this.selectedListingsCount>LNJS.DetailedReportLimit){msg='You have selected '+this.selectedListingsCount+' properties, which exceeds the '+LNJS.DetailedReportLimit+'-property limit for this report.  Select a smaller number of properties and rerun the report.';}break;}if(msg.length>0){LNJS.Page.Msgs.genericMsg.title="";LNJS.Page.Msgs.genericMsg.text=msg;LNJS.Page.showMsg(LNJS.Page.Msgs.genericMsg);return false;}return true;},_setResults:function(oResults,sType){try{if(!LNJS.isNull(oResults)){eval('this.'+(!LNJS.isNull(sType)?sType:"Results")+' = '+oResults);if(this.pData){if(this.pData.resultCount!=this.pData.items.length){LNJS.Trace.error(this.__className+": ERROR resultCount: "+this.pData.resultCount+"; Items Count: "+this.pData.items.length,this.__className.toLowerCase()+".setResults");this.pData.resultCount=this.pData.items.length;}}if(this.lData){if(this.pagingSupported){this.setupPager(this.currentPage,this.lData.resultCount);}}}}catch(e){throw this.Err(this.__className+": Results Invalid! - "+e.message);}},_clearPins:function(){if(LNJS.Page){if(LNJS.Page.MapMgr)LNJS.Page.MapMgr.deleteAllShapes();}if(!LNJS.isNull(this.pData)){if(this.pData.items)this.pData.items.length=0;this.pData=null;}this.pinIndex=-1;},_clearResultList:function(){Element.innerHTML(this.resultcont,"");this.lData=null;setTimeout((function(){this.haveResultList=false;}).bind(this),10);},_haveResultList:function(){this.haveResultList===true;},_getItemType:function(p){if(this._isMLS()){if(p.sc)return"showcase";if(p.lp)return"lp";return(p.pl)?"premium":"basic";}else{return"rs";}},_getZIndex:function(p,i){var type=this._getItemType(p);var zIndex=this[type+"Z"]-i;p.zIndex=zIndex;return zIndex;},_resortResultsList_callback:function(oReq){if(LNJS.Ajax.ActiveAjaxGroupRequestsCount["resortResultsList"]>0){LNJS.Trace.warn('_resortResultsList_callback() Search in progress... exiting!');return;}if(oReq.ReturnCode=='0'){LNJS.Page.loadingSearch=false;LNJS.Page.SearchMgr._getResortedListings();}else{if(oReq.ReturnCode=='-100'){window.location='/xNet/MainSite/User/session/loginblock.aspx';}else{throw LNJS.Page.SearchMgr.Err(LNJS.Page.SearchMgr.__className+": return code not 0!");}}},_performSearch_callback:function(oReq){if(LNJS.Ajax.ActiveAjaxGroupRequestsCount["performSearch"]>0){LNJS.Trace.warn('_performSearch_callback() Search in progress... exiting!');return;}if(oReq.ReturnCode=='0'){LNJS.Page.loadingSearch=false;var sSummary=oReq.responseXML.documentElement.selectSingleNode("//SearchSummary");this.searchID=parseInt(sSummary.getAttribute("SearchResultID"));var sMapPoints=LNJS.Xml.getText(oReq.responseXML.documentElement.selectSingleNode("//MapPoints"));if(!LNJS.isNull(sMapPoints)){LNJS.Page.SearchMgr._clearPins();LNJS.Page.SearchMgr._setResults(sMapPoints,"pData");LNJS.Page.SearchMgr._plotPins();LNJS.Page.showSearchResultTools();if(LNJS.Page.SearchMgr.pData.resultCount>0){LNJS.Page.SearchMgr.resultCount.className="mapSearch-numResults";var resulttext=LNJS.Page.SearchMgr.pData.resultCount;switch(resulttext){case 1:resulttext+='</strong> '+(LNJS.Page.SearchMgr._isMLS()?'Result':'RecentSale');break;case 100:resulttext+='+</strong> '+(LNJS.Page.SearchMgr._isMLS()?'Results':'RecentSales');break;default:resulttext+='</strong> '+(LNJS.Page.SearchMgr._isMLS()?'Results':'RecentSales');break;}Element.innerHTML(LNJS.Page.SearchMgr.resultCount,'<strong>'+resulttext+' Found');if(LNJS.Page.SearchMgr._isPD()){LNJS.Page.MapMgr.setCenterAndZoom(new VELatLong(parseFloat(LNJS.Page.SearchMgr.pData.items[0].lat),LNJS.Page.SearchMgr.pData.items[0].lon),17);}LNJS.Page.SearchMgr._getListings();}else{LNJS.Page.SearchMgr.resultCount.className="mapSearch-noResults";Element.innerHTML(LNJS.Page.SearchMgr.resultCount,"<strong>No results found.</strong>");LNJS.Page.SearchMgr._renderResultList();}if(LNJS.Page.EL.criterionName){if(LNJS.Page.EL.criterionName.value.length==0){var sName=LNJS.Page.SearchMgr._getSelectedCatNames();switch(LNJS.Page.SearchMgr.searchType){case'FS':sName+=' For Sale';break;case'FL':sName+=' For Lease';break;}if(sName.length>50)sName=sName.substring(0,50);LNJS.Page.EL.criterionName.value=sName;}}}else{throw LNJS.Page.SearchMgr.Err(LNJS.Page.SearchMgr.__className+": MapPoints node missing!");}}else{if(oReq.ReturnCode=='-100'){window.location='/xNet/MainSite/User/session/loginblock.aspx';}else{throw LNJS.Page.SearchMgr.Err(LNJS.Page.SearchMgr.__className+": return code not 0!");}}},_getResortedListings:function(){var list='';for(var i=0;i<this.pData.resultCount;i++){p=this.pData.items[i];if(i==this.pData.resultCount-1)list=list+(p.lid||p.cid);else list=list+(p.lid||p.cid)+",";}var Type=this._isMLS()?'Listing':'Comparable';var options=({queueLength:1,SOAPMethod:'Get'+Type+'MemReader',SOAPNamespace:'http://www.loopnet.com/WebServices',postBody:GetSoapInput('<PFRequestData><'+Type+'List ID="'+list+'" rSID="'+LNJS.User.rSID+'" /></PFRequestData>','Get'+Type+'MemReader','http://www.loopnet.com/WebServices',-1,true),groupName:'_getResortedListings_callback',onComplete:LNJS.Page.SearchMgr._getResortedListings_callback});var url='/xNet/MainSite/WebServices/'+Type+'s/Search.asmx';LNJS.Ajax.post(url,options);},_getResortedListings_callback:function(oReq){if(oReq.ReturnCode=='0'){var sSearchResults=LNJS.Xml.getText(oReq.responseXML.documentElement.selectSingleNode("//SearchResults"));if(!LNJS.isNull(sSearchResults)){LNJS.Page.SearchMgr._clearResultList();LNJS.Page.SearchMgr._setResults(sSearchResults,"lData");LNJS.Page.SearchMgr._renderResultList();}else{throw LNJS.Page.SearchMgr.Err(LNJS.Page.SearchMgr.__className+": SearchResults node missing!");}}else{throw LNJS.Page.SearchMgr.Err(LNJS.Page.SearchMgr.__className+": return code not 0!");}LNJS.Page.hideResortingResultsMsg();},_getListings:function(){var list='';for(var i=0;i<this.pData.resultCount;i++){p=this.pData.items[i];if(i==this.pData.resultCount-1)list=list+(p.lid||p.cid);else list=list+(p.lid||p.cid)+",";}var Type=this._isMLS()?'Listing':'Comparable';var options=({queueLength:1,SOAPMethod:'Get'+Type+'MemReader',SOAPNamespace:'http://www.loopnet.com/WebServices',postBody:GetSoapInput('<PFRequestData><'+Type+'List ID="'+list+'" rSID="'+LNJS.User.rSID+'" />'+this._getRetInst()+'','Get'+Type+'MemReader','http://www.loopnet.com/WebServices',-1,true),groupName:'_getListings_callback',onComplete:LNJS.Page.SearchMgr._getListings_callback});var url='/xNet/MainSite/WebServices/'+Type+'s/Search.asmx';LNJS.Ajax.post(url,options);},_getListings_callback:function(oReq){if(oReq.ReturnCode=='0'){var sSearchResults=LNJS.Xml.getText(oReq.responseXML.documentElement.selectSingleNode("//SearchResults"));if(!LNJS.isNull(sSearchResults)){LNJS.Page.SearchMgr._clearResultList();LNJS.Page.SearchMgr._setResults(sSearchResults,"lData");LNJS.Page.SearchMgr._renderResultList();}else{throw LNJS.Page.SearchMgr.Err(LNJS.Page.SearchMgr.__className+": SearchResults node missing!");}}else{throw LNJS.Page.SearchMgr.Err(LNJS.Page.SearchMgr.__className+": return code not 0!");}},_onHistoryChange:function(eventName,source,hash){var debug=[];switch(source){case'addHistory':case'addHistorySafari':params=LNJS.Page._checkHashURL();if(params!=null){}break;case'updateFromHistory':break;case'_watchHistoryLength':case'_watchHash':if(hash.length==0)break;params=LNJS.Base64.decode(hash).split('|');if(params.length<3)break;if(LNJS.Page)LNJS.Page.MapMgr.setMapState(params,LNJS.Page.SearchMgr);}}});