YAHOO.namespace("ps.Toolbar");(function(){var Dom=YAHOO.util.Dom,Ev=YAHOO.util.Event,Con=YAHOO.util.Connect,Bar=YAHOO.ps.Toolbar,Crt=false;var animateSpeed=0.5,heightOpen=161,heightClose=38,easing=YAHOO.util.Easing.easeBoth;var favoriteCarousel,favoriteResources,searchCarousel,searchResources,newToolbar;var config={resultsPage:"",detailsPage:"",openContent:false,carouselPage:false};var setConfig=function(keys){for(var i in keys){if(YAHOO.lang.hasOwnProperty(keys,i)){config[i]=keys[i]}}};var onInitSearchCarousel=new YAHOO.util.CustomEvent("onInitSearchCarousel"),onInitFavoriteCarousel=new YAHOO.util.CustomEvent("onInitFavoriteCarousel");var addCommas=function(nStr){nStr+="";x=nStr.split(".");x1=x[0];x2=x.length>1?"."+x[1]:"";var rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,"$1,$2")}return x1+x2};var open=function(sec,anim){if(Dom.hasClass("toolbarOpen","hide")){if(sec=="favorite"&&favoriteResources.length==0){message("You currently have no favorite listings saved.")}else{if(sec=="search"&&searchResources.length==0){message("You currently have no saved searches.")}else{Dom.addClass("toolbarClose","hide");if(anim==true){var animBar=new YAHOO.util.Anim("containerToolbar",{height:{from:heightClose,to:heightOpen}},animateSpeed,easing);animBar.onComplete.subscribe(function(){Dom.removeClass("toolbarOpen","hide");Dom.removeClass("toolbarLinks","hide");Dom.removeClass("toolbarAction","hide");if(YAHOO.lang.isString(sec)){showContent(sec)}});animBar.animate()}else{Dom.setStyle("containerToolbar","height",heightOpen+"px");Dom.removeClass("toolbarOpen","hide");Dom.removeClass("toolbarLinks","hide");Dom.removeClass("toolbarAction","hide");if(YAHOO.lang.isString(sec)){showContent(sec)}}}}}else{if(YAHOO.lang.isString(sec)){showContent(sec)}}};var close=function(){if(!Dom.hasClass("toolbarOpen","hide")){Dom.addClass("toolbarOpen","hide");Dom.addClass("toolbarLinks","hide");Dom.addClass("toolbarAction","hide");var animBar=new YAHOO.util.Anim("containerToolbar",{height:{from:heightOpen,to:heightClose}},animateSpeed,easing);animBar.onComplete.subscribe(function(){hideContent();Dom.removeClass("toolbarClose","hide");message("")});animBar.animate()}};var toogle=function(){if(Dom.hasClass("toolbarOpen","hide")){open()}else{close()}};var section=["favorite","search","info"];var showContent=function(sec){if(Dom.hasClass(sec+"Content","hide")){hideContent();Dom.removeClass(sec+"Content","hide");Dom.addClass(sec+"Link","sel");if(sec=="favorite"&&favoriteResources.length>0){favoriteCarousel.show()}else{if(sec=="favorite"&&favoriteResources.length==0){message("You currently have no favorite listings saved.")}else{if(sec=="search"&&searchResources.length>0){searchCarousel.show()}else{if(sec=="search"&&searchResources.length==0){message("You currently have no saved searches.")}}}}}};var hideContent=function(){for(var i in section){if(YAHOO.lang.hasOwnProperty(section,i)){if(!Dom.hasClass(section[i]+"Content","hide")){Dom.addClass(section[i]+"Content","hide");Dom.removeClass(section[i]+"Link","sel")}}}};var statusChange=function(){document.getElementById("containerToolbar").innerHTML=newToolbar;var search=newToolbar;var script;while(script=search.match(/(<script[^>]+javascript[^>]+>\s*(<!--)?)/i)){search=search.substr(search.indexOf(RegExp.$1)+RegExp.$1.length);if(!(endscript=search.match(/((-->)?\s*<\/script>)/))){break}block=search.substr(0,search.indexOf(RegExp.$1));search=search.substring(block.length+RegExp.$1.length);var oScript=document.createElement("script");oScript.text=block;document.getElementsByTagName("head").item(0).appendChild(oScript)}newToolbar=""};var login=function(){YAHOO.ps.container.wait.show();var username=Dom.get("toolUsername").value;if(!YAHOO.lang.isValue(username)){username=""}var password=Dom.get("toolPassword").value;if(!YAHOO.lang.isValue(password)){password=""}var auto=0;if(Dom.get("toolAuto").checked){auto=1}var postData="username="+username+"&password="+password+"&auto="+auto;Con.asyncRequest("POST","/server/account/login",loginCallback,postData)};var loginSuccess=function(o){if(Dom.inDocument("wait")){YAHOO.ps.container.wait.hide()}var response=YAHOO.ps.Ajax.eval(o);if(response!==false){Dom.addClass(["toolUsername","toolPassword"],"error");message(response.message);if(response.success<=0){for(var i=0;i<response.fields.length;i++){Dom.addClass(response.fields[i],"error")}}else{newToolbar=response.content;YAHOO.ps.Toolbar.close();window.setTimeout("YAHOO.ps.Toolbar.statusChange();",1000);window.setTimeout("YAHOO.ps.Toolbar.addGuestKey();",2000);window.setTimeout("YAHOO.ps.Toolbar.openSearchInfo();",2500)}}};var loginCallback={success:loginSuccess,failure:failure,timeout:10000};var logout=function(){YAHOO.ps.container.wait.show();Con.asyncRequest("POST","/server/account/logout",logoutCallback)};var logoutSuccess=function(o){if(Dom.inDocument("wait")){YAHOO.ps.container.wait.hide()}var response=YAHOO.ps.Ajax.eval(o);if(response!==false){if(response.success==1){newToolbar=response.content;close();window.setTimeout("YAHOO.ps.Toolbar.statusChange();",1000)}}};var logoutCallback={success:logoutSuccess,failure:failure,timeout:10000};var failure=function(o){if(YAHOO.util.Dom.inDocument("wait")){YAHOO.ps.container.wait.hide()}if(o.responseText!==undefined){message("Error: Unable to transmit update request.")}};var message=function(msg){Dom.get("toolbarMessage").innerHTML=msg;if(msg!=""){window.setTimeout("YAHOO.util.Dom.get('toolbarMessage').innerHTML = '';",2500)}};var clearResources=function(){if(YAHOO.lang.isObject(favoriteCarousel)){favoriteCarousel.clearItems()}if(YAHOO.lang.isObject(searchCarousel)){searchCarousel.clearItems()}favoriteResources=new Array();searchResources=new Array()};var addSearch=function(id,name,email,freq,criteria){var critArr=parseCriteria(criteria);var resArr=new Array();resArr.id=id;resArr.name=name;resArr.criteria=criteria;if(critArr.option=="sale"){resArr.option="For Sale";resArr.price="$"+addCommas(critArr.minsp)+" - $"+addCommas(critArr.maxsp);resArr.rooms=critArr.bed+"BR "+critArr.bath+"BA"}else{if(critArr.option=="rent"){resArr.option="For Rent";resArr.price="$"+addCommas(critArr.minrp)+" - $"+addCommas(critArr.maxrp);resArr.rooms=critArr.bed+"BR "+critArr.bath+"BA"}else{if(critArr.option=="land"){resArr.option="Land";resArr.price="$"+addCommas(critArr.minlp)+" - $"+addCommas(critArr.maxlp);resArr.rooms=""}}}if(email==1&&freq=="d"){resArr.email="Daily Emails"}else{if(email==1&&freq=="w"){resArr.email="Weekly Emails"}else{resArr.email="No Email"}}searchResources[searchResources.length]=resArr};var parseCriteria=function(strValues){var tmpValues={};var aPairs=strValues.split("&");for(var i=0;i<aPairs.length;i++){var sPair=aPairs[i];if(sPair.indexOf("=")>0){var n=sPair.indexOf("=");var sParam=aPairs[i].substring(0,n);var sValue=aPairs[i].substring(n+1);tmpValues[sParam]=sValue}}return tmpValues};var viewSearch=function(criteria){location.href=config.resultsPage+"/index/open/search/page/"+searchCarousel.get("currentPage")+"#criteria="+escape(criteria)};var successSearch=function(o){var response=YAHOO.ps.Ajax.eval(o);if(response!==false){Dom.removeClass("searchName","error");if(response.success<=0){message(response.error);for(var i=0;i<response.fields.length;i++){Dom.addClass(response.fields[i],"error")}}else{message("This search has been saved.");close();addSearch(response.search["id"],response.search["name"],response.search["email"],response.search["freq"],response.search["criteria"]);if(!YAHOO.lang.isUndefined(searchCarousel)){var latest=searchResources.length-1;var li="<div>"+searchResources[latest]["name"]+" <span>|</span> "+searchResources[latest]["email"]+" <span>|</span> "+searchResources[latest]["option"]+" <span>|</span> "+searchResources[latest]["price"]+" <span>|</span> "+searchResources[latest]["rooms"]+'</div><a href="javascript:void(0);" onClick="YAHOO.ps.Toolbar.deleteSearch('+searchResources[latest]["id"]+", "+latest+');"><img src="/resources/images/close-red.png" /></a>';searchCarousel.addItem(li)}Dom.get("searchName").value=="";YAHOO.ps.Form.setCheckboxBool("searchEmailAddress",0,"infoContent");YAHOO.ps.Form.setDropDown("searchFreq","d")}}};var saveSearch=function(){var name=Dom.get("searchName").value;var freq=Dom.get("searchFreq").value;var crit=escape(YAHOO.ps.Realestate.criteria.stringifyValues());var email=0;if(Dom.get("searchEmailAddress").checked){email=1}var postValues="name="+name+"&email="+email+"&freq="+freq+"&criteria="+crit;Con.asyncRequest("POST","/server/realestate/save-search",callbackSearch,postValues)};var guestRequestSave=false;var openSearchInfo=function(){if(guestRequestSave==true){addSearchInfo();guestRequestSave=false}};var addSearchInfo=function(){if(Dom.inDocument("infoContent")){open("info",true);message("Enter a name below to save a custom search.")}else{guestRequestSave=true;open(null,true);message("Login below to save your custom search criteria.")}};var callbackSearch={success:successSearch,failure:failure,timeout:5000};var successDelFavorite=function(o){var response=YAHOO.ps.Ajax.eval(o);if(response!==false){if(response.success>0){message("This listing has been removed from your favorites.")}}};var deleteFavorite=function(key,itemNum){var postValues="key="+key;Con.asyncRequest("POST","/server/realestate/delete-listing",callbackDelFavorite,postValues);favoriteCarousel.removeItem(itemNum)};var callbackDelFavorite={success:successDelFavorite,failure:failure,timeout:5000};var successDelSearch=function(o){var response=YAHOO.ps.Ajax.eval(o);if(response!==false){if(response.success>0){message("This search has been deleted.")}}};var deleteSearch=function(id,itemNum){var postValues="id="+id;Con.asyncRequest("POST","/server/realestate/delete-search",callbackDelSearch,postValues);searchCarousel.removeItem(itemNum)};var callbackDelSearch={success:successDelSearch,failure:failure,timeout:5000};var guestKey=null;var addGuestKey=function(){if(guestKey!=null){saveFavorite(guestKey);guestKey=null}};var addFavorite=function(key,address,price,image){var resArr=new Array();resArr.key=key;resArr.address=address;resArr.price=price;resArr.image=image;favoriteResources[favoriteResources.length]=resArr};var viewFavorite=function(key){location.href=config.detailsPage+"/key/"+key+"/open/favorite/page/"+favoriteCarousel.get("currentPage")};var successFavorite=function(o){var response=YAHOO.ps.Ajax.eval(o);if(response!==false){if(response.success<=0){message(response.error)}else{message("This listing has been saved.");if(response.listing["idx"]=="0"){addFavorite(response.listing["listing_key"],response.listing["street_address"],response.listing["list_price"],response.listing["url_image"])}else{addFavorite(response.listing["listing_key"],response.listing["city"],response.listing["list_price"],response.listing["url_image"])}if(!YAHOO.lang.isUndefined(favoriteCarousel)){var title=response.listing["city"];if(response.listing["idx"]=="0"){title=response.listing["street_address"]}if(title.length<24){title=title+" - $"+addCommas(response.listing["list_price"])}var latest=favoriteResources.length-1;var li='<a href="javascript:void(0);" onClick="YAHOO.ps.Toolbar.deleteFavorite('+response.listing["listing_key"]+", "+latest+');"><img class="close" src="/resources/images/close-red.png" /></a><div><span>'+title+'</span><a href="javascript:void(0);" onClick="YAHOO.ps.Toolbar.viewFavorite(\''+response.listing["listing_key"]+'\');"><img src="'+response.listing["url_image"]+'" /></a></div>';favoriteCarousel.addItem(li)}}}};var saveFavorite=function(key){if(Dom.inDocument("favoriteContent")){var postValues="key="+key;Con.asyncRequest("POST","/server/realestate/save-listing",callbackFavorite,postValues)}else{guestKey=key;open(null,true);message("Login below to save your favorite listings.")}};var callbackFavorite={success:successFavorite,failure:failure,timeout:5000};var initSearchCarousel=function(){var firstItem=0;if(config.carouselPage!==false&&config.openContent=="search"){firstItem=config.carouselPage*4}searchCarousel=new YAHOO.widget.Carousel("searchCarousel",{numVisible:4,isVertical:true,firstVisible:0,animation:false});var searchLi;for(var i=0;i<searchResources.length;i++){searchLi="<div  onClick=\"YAHOO.ps.Toolbar.viewSearch('"+searchResources[i]["criteria"]+"');\">"+searchResources[i]["name"]+" <span>|</span> "+searchResources[i]["email"]+" <span>|</span> "+searchResources[i]["option"]+" <span>|</span> "+searchResources[i]["price"]+" <span>|</span> "+searchResources[i]["rooms"]+'</div><a href="javascript:void(0);" onClick="YAHOO.ps.Toolbar.deleteSearch('+searchResources[i]["id"]+", "+i+');"><img src="/resources/images/close-red.png" /></a>';searchCarousel.addItem(searchLi)}searchCarousel.render();searchCarousel._syncUiItems();if(firstItem>0){searchCarousel.scrollTo(firstItem)}searchCarousel.set("animation",{speed:0.3});Dom.setStyle("searchCarousel","height","130px");onInitSearchCarousel.unsubscribe(initSearchCarousel)};var initFavoriteCarousel=function(){var firstItem=0;if(config.carouselPage!==false&&config.openContent=="favorite"){firstItem=config.carouselPage*5}favoriteCarousel=new YAHOO.widget.Carousel("favoriteCarousel",{numVisible:5,firstVisible:0,animation:false});var favoriteLi;for(var i=0;i<favoriteResources.length;i++){var title=favoriteResources[i]["address"];if(title.length<26){title=title+" - $"+addCommas(favoriteResources[i]["price"])}favoriteLi='<a href="javascript:void(0);" onClick="YAHOO.ps.Toolbar.deleteFavorite('+favoriteResources[i]["key"]+", "+i+');"><img class="close" src="/resources/images/close-red.png" /></a><div><span>'+title+'</span><a href="javascript:void(0);" onClick="YAHOO.ps.Toolbar.viewFavorite(\''+favoriteResources[i]["key"]+'\');"><img src="'+favoriteResources[i]["image"]+'" /></a></div>';favoriteCarousel.addItem(favoriteLi)}favoriteCarousel.render();favoriteCarousel._syncUiItems();if(firstItem>0){favoriteCarousel.scrollTo(firstItem)}favoriteCarousel.set("animation",{speed:0.5});onInitFavoriteCarousel.unsubscribe(initFavoriteCarousel)};var initLogin=function(){Ev.onDOMReady(function(){Ev.addListener("toolPassword","keypress",function(e){if(Ev.getCharCode(e)==13){Bar.login()}})})};var initAccount=function(){onInitFavoriteCarousel.subscribe(initFavoriteCarousel);onInitSearchCarousel.subscribe(initSearchCarousel);Ev.onDOMReady(function(){var currLoc=window.location.href;if(currLoc.indexOf(config.resultsPage)>=0&&currLoc.indexOf(config.detailsPage)<0){Crt=YAHOO.ps.Realestate.criteria}})};var setToolbar=function(){Ev.onDOMReady(function(){onInitFavoriteCarousel.fire();onInitSearchCarousel.fire();if(config.openContent=="favorite"||config.openContent=="search"){open(config.openContent,false)}})};Bar.open=open;Bar.close=close;Bar.toogle=toogle;Bar.login=login;Bar.logout=logout;Bar.message=message;Bar.showContent=showContent;Bar.statusChange=statusChange;Bar.clearResources=clearResources;Bar.saveFavorite=saveFavorite;Bar.addFavorite=addFavorite;Bar.deleteFavorite=deleteFavorite;Bar.viewFavorite=viewFavorite;Bar.saveSearch=saveSearch;Bar.addSearchInfo=addSearchInfo;Bar.addSearch=addSearch;Bar.deleteSearch=deleteSearch;Bar.viewSearch=viewSearch;Bar.initLogin=initLogin;Bar.initAccount=initAccount;Bar.setConfig=setConfig;Bar.setToolbar=setToolbar;Bar.addGuestKey=addGuestKey;Bar.openSearchInfo=openSearchInfo})();YAHOO.util.Event.onContentReady("tabs",function(){var a=new YAHOO.widget.MenuBar("tabs",{hidedelay:250,showdelay:0,zindex:100,shadow:true,autosubmenudisplay:true,lazyload:false});var b=[{id:"services",itemdata:[{text:"Residential Real Estate",url:"/services/residential"},{text:"Property Management",url:"/services/pm"},{text:"Relocation Services",url:"/relocate"},{text:"Commercial Real Estate",url:"/services/commercial"},{text:"Signature Mortgage",url:"/services/mortgage"}]},{id:"associates",itemdata:[{text:"Real Estate Agents",url:"/associates/agents"},{text:"Managing Brokers",url:"/associates/brokers"}]},{id:"offices",itemdata:[{text:"Alexandria - Old Town",url:"/offices/alexandria"},{text:"Arlington",url:"/offices/arlington"},{text:"Leesburg",url:"/offices/leesburg"},{text:"McLean",url:"/offices/mclean"},{text:"Middleburg",url:"/offices/middleburg"},{text:"Washington DC",url:"/offices/dc"}]},{id:"news",itemdata:[{text:"Northern Virginia",url:"/news/virginia"},{text:"Loudoun County Virginia",url:"/news/loudoun"},{text:"Washington DC",url:"/news/dc"},{text:"Montgomery County Maryland",url:"/news/maryland"}]},{id:"relocate",itemdata:[{text:"Relocation Services",url:"/relocate/services"},{text:"Relocation Team",url:"/relocate/team"},{text:"Virtual Relocation Kit",url:"/relocate/kit"},{text:"Worldwide Home Search",url:"/relocate/national"}]},{id:"about",itemdata:[{text:"Corporate Philosphy",url:"/about/philosphy"},{text:"Community Outreach",url:"/about/community"},{text:"Pawsitive",url:"/about/pawsitive"},{text:"Our Affiliates",url:"/about/affiliates"}]}];a.subscribe("beforeRender",function(){if(YAHOO.env.ua.gecko){YAHOO.util.Dom.addClass("tabs","ff")}if(this.getRoot()==this){this.getItem(1).cfg.setProperty("submenu",b[0]);this.getItem(2).cfg.setProperty("submenu",b[1]);this.getItem(3).cfg.setProperty("submenu",b[2]);this.getItem(4).cfg.setProperty("submenu",b[3]);this.getItem(5).cfg.setProperty("submenu",b[4]);this.getItem(6).cfg.setProperty("submenu",b[5])}});a.render()});