yelp.provide("yelp.ui.widget.fb");yelp.ui.widget.fb.BottomFloater=Class.create(yelp.ui.widget.Floater,{initialize:function($super,a){this.callbacks=yelp.event.makeCallbacks(this,["onClickHideLink"]);$super(a);this.track()},maxFriends:5,toString:yelp.lambda("BottomFloater"),className:"signup-floater",track:yelp.emptyFunction,makeHtml:function(){var a=new Element("p").update(this.callToActionHTML());this.hideLink=new Element("a",{href:"#",id:"signup-hide"}).update(yelp._("Hide"));var c=new Element("ul");
var b=this.content.friends.filter(function(e){return Boolean(e.thumbnail_url)});b.shuffled().slice(0,this.maxFriends).each(function(g){var e=new Element("img",{src:g.thumbnail_url,title:g.display_name,alt:g.display_name});if(g.uri){var f=new Element("a",{href:g.uri});f.insert(e);e=f}c.insert({top:new Element("li").insert(e)})});var d=document.createDocumentFragment();d.appendChild(c);d.appendChild(this.hideLink);d.appendChild(a);return this.makeWrapper(d)},callToActionHTML:yelp.lambda(""),addListeners:function(){this.hideLink.observe("click",this.callbacks.onClickHideLink)
},onClickHideLink:function(a){this.hide();this.disable()},disable:yelp.emptyFunction});yelp.ui.widget.fb.SignupFloater=Class.create(yelp.ui.widget.fb.BottomFloater,{makeFloater:function($super){$super();this.floater.delegate("click","a.signup",function(a){pageTracker._trackEvent("fb-connect","click","signup-floater")})},callToActionHTML:function(){var a=yelp.lang.ngettext("1 of your friends has already joined Yelp.","$n of your friends have already joined Yelp.",this.content.potentialNewFriendsCount);
var b='<a class="signup action-link inline-block" href="/signup">'+yelp._("Sign up and join them")+"</a>";return[a,b].join(" ")},toString:yelp.lambda("SignupFloater"),track:function(){pageTracker._trackEvent("fb-connect","show","signup-floater")},disable:function(){new yelp.async.ajax.Request("/facebook_connect/disable_signup_floater",{method:"post"})}});yelp.ui.widget.fb.SyncFloater=Class.create(yelp.ui.widget.fb.BottomFloater,{callToActionHTML:function(){var b=yelp.lang.ngettext("You have 1 Facebook friend you're not friends with yet on Yelp.","You have $n Facebook friends you're not friends with yet on Yelp.",this.content.potentialNewFriendsCount,{name:name});
var a='<a class="action-link inline-block" href="/facebook_sync">'+yelp._("Become friends with them now")+"</a>";return[b,a].join(" ")},toString:yelp.lambda("SyncFloater"),disable:function(){new yelp.async.ajax.Request("/facebook_connect/disable_sync_floater",{method:"post"})}});yelp.ui.widget.fb.Tooltip=Class.create({initialize:function(c,b,a){this.logger=new yelp.util.ClassLogger(this);this.callbacks=yelp.event.makeCallbacks(this,this.callbackNames());this.logger.debug("new(id=%o, origin=%o, content=%o)",c,b,a);
this.origin=$(b);this.originOffset=20;this.tooltipId=c;this.tooltipClassName="facebook-tooltip";this.content=a;this.makeTooltip(a)},toString:yelp.lambda("fb.Tooltip"),callbackNames:yelp.lambda(["hideTooltip"]),makeTooltip:function(a){this.tooltip=this.makeHtml(a);$(document.body).insert({bottom:this.tooltip});yelp.ui.widget.popupRegistry.add(this.tooltipId);this.positionTooltip();this.tooltipClose.observe("click",this.callbacks.hideTooltip)},makeInnerContent:function(a){return a},makeHtml:function(a){this.tooltipArrow=new Element("div",{id:"facebook-arrow"});
this.tooltipClose=new Element("div",{id:"facebook-tooltip-close"});var b=new Element("div",{id:this.tooltipId,className:this.tooltipClassName}).update(this.makeInnerContent(a));b.insert({top:this.tooltipArrow});b.insert({top:this.tooltipClose});return b},positionTooltip:function(){var b=this.origin.cumulativeOffset();var a=b.left-((this.tooltip.getWidth()-this.origin.getWidth())/2);this.tooltip.setStyle({left:a+"px",top:(b.top+this.originOffset)+"px"});this.tooltipArrow.setStyle({left:((this.tooltip.getWidth()/2)-8)+"px"})
},hideTooltip:function(){this.tooltip.hide();yelp.ui.widget.popupRegistry.remove(this.tooltipId)}});yelp.ui.widget.fb.SortTooltip=Class.create(yelp.ui.widget.fb.Tooltip,{initialize:function($super,a){$super("fb-sort-tooltip","facebook-friends-sort",a);this.controller=a.controller;this.reviews=a.reviews},callbackNames:function($super){var a=$super();a.push("onReadMore");return a},onReadMore:function(a){this.controller.showReviews(this.reviews)},makeTooltip:function($super){$super.apply(this,$A(arguments).slice(1));
this.tooltip.delegate("click","a.read-more",this.callbacks.onReadMore)},makeInnerContent:function($super,e){var g=e.reviews.pluck("user").sortBy(function(i){return Number(Boolean(i.thumbnail_url))+Math.random()});var f=g.pluck("display_name");var h=yelp._("Read their reviews");var c;if(f.length===1){c=yelp._("<strong>$name</strong> reviewed this business",{name:f.first()});h=yelp._("Read $name's review",{name:f.first()})}else{if(f.length<4){c=yelp._("<strong>$names_list and $name</strong> reviewed this business",{names_list:f.slice(0,-1).join(", "),name:f.last()})
}else{c=yelp.lang.ngettext("<strong>$names_list</strong> and another Facebook friend reviewed this business","<strong>$names_list</strong> and $n other Facebook friends reviewed this business",f.length-3,{names_list:f.slice(0,3).join(", ")})}}var d=new Element("a",{href:"#","class":"read-more"}).update(h);var b=new Element("p").update(c);b.insert({bottom:d});if(g.first().thumbnail_url){var a=new Element("a",{href:"#","class":"read-more"});a.insert(new Element("img",{src:g.first().thumbnail_url,alt:g.first().display_name}));
b.insert({top:a})}return b}});yelp.ui.widget.fb.ActivityFeedTeaserTooltip=Class.create(yelp.ui.widget.fb.Tooltip,{initialize:function($super){$super.apply(this,$A(arguments).slice(1));new yelp.async.ajax.Request("/facebook_connect/activity_feed_tooltip_viewed",{method:"post"})},makeInnerContent:function($super,b){var c=new Element("ul");b.each(function(g){var e=new Element("img",{src:g.thumbnail_url,width:30,height:30,title:g.display_name,alt:g.display_name});if(g.uri){var f=new Element("a",{href:g.uri});
f.insert(e);e=f}c.insert({top:new Element("li").insert(e)})});var d=new Element("div",{className:"inner"}).insert(c);var a=new Element("p").update(yelp._('Your friends are on Yelp - <a href="#">See what they\'re up to</a>.'));d.insert({top:a});return d}});yelp.ui.widget.fb.DisconnectBar=Class.create(yelp.ui.widget.MenuItem,{initialize:function($super){$super();yelp.event.domLoaded(function(){var a=$(this.keyElements.container);if(a.retrieve(this.toString())){throw new Error(this.toString()+" already initialized")
}a.store(this.toString(),this);var b=$("fb-logout-link");b.observe("click",function(c){FB.logout(function(){a.update(yelp._("You have been logged out of Facebook"))}.bind(this))}.bind(this));this.setupMenuObservers($(this.keyElements.dropMenuAnchor));yelp.hub.subscribe("ext.FB.user_info",this.callbacks.onUserInfo);a.show()},this)},callbackNames:function($super){var a=$super();a.push("onUserInfo");return a},IDENTIFIER:"fb_disconnect",menuElementIDS:["fb-notice-options","fb-notice"],keyElements:{container:"fb-notice",dropMenuAnchor:"fb-notice-options-link",dropMenu:"fb-notice-options"},toString:yelp.lambda("fb.DisconnectBar"),onUserInfo:function(a){if(!a){return
}var b=$("fb-notice-pic");b.src=a.thumbnail_url;b.alt=a.display_name}});yelp.ui.widget.fb.isBottomFloaterDisabled=function(){return yelp.util.cookie.get(yelp.config.cookies.FB_FLOATER)==="D"};yelp.ui.widget.fb.HomepageSignupAd=Class.create({initialize:function(d,b,c){var f=new Element("div",{id:"fb-yelp-signup"});f.insert("<h3>"+yelp.lang.ngettext("Hey, 1 of your friends has joined Yelp!","Hey, $n of your friends have joined Yelp!",c)+"</h3>");f.insert('<p class="subheader">'+yelp._('<a class="signup" href="/signup">Sign up</a> and never miss their reviews')+"</p>");
f.delegate("click","a.signup",function(g){pageTracker._trackEvent("fb-connect","click","social-ad")});var a=new Element("div",{id:"friends-photos"});d.shuffled().slice(0,5).each(function(h){if(h.thumbnail_url){var g=new Element("img",{src:h.thumbnail_url,width:45,height:45});if(h.uri){g=(new Element("a",{href:h.uri})).insert(g)}a.insert(g)}});f.insert(a);if(b=="home"){$("double-ad").insert(f);var e=new Fx.Style($("double-ad"),"left",{duration:500});e._start(0,-300)}else{if(b=="activity_feed"){f.setStyle({position:"relative",left:"300px"});
$("signup-ad-wrap").insert(f);var e=new Fx.Style(f,"left",{duration:500});e._start(300,0)}}pageTracker._trackEvent("fb-connect","show","social-ad")},maxFriends:5});yelp.ui.widget.fb.requestFriends=function(){yelp.hub.subscribe("ext.FB.session",function(a){if(!a){return}new yelp.async.ajax.Request("/facebook_connect/fb_friends_on_yelp/"+a.uid,{method:"get",parameters:{loggedin:yelp.config.isLoggedIn?1:0},onSuccess:function(b){if(!b.responseJSON.success){return}yelp.hub.publish("ext.FB.friend_previews",b.responseJSON.friends);
yelp.hub.publish("ext.FB.potential_new_friends_count",b.responseJSON.potential_new_friends_count)}})})};yelp.ui.widget.fb.setupLoggedInUIElements=function(){yelp.hub.subscribe("ext.FB.session",function(a){if(!a){return}yelp.ui.widget.fb._setupSyncFloater()});yelp.ui.widget.fb.requestFriends()};yelp.ui.widget.fb.setupLoggedOutUIElements=function(){yelp.hub.subscribe("ext.FB.session",function(a){if(a){yelp.ui.widget.fb._setupDisconnectBar();yelp.ui.widget.fb._setupSignupFloater();yelp.ui.widget.fb._setupHomeSignupAd();
yelp.ui.widget.fb._setupInfoDisconnectButton()}});yelp.ui.widget.fb.requestFriends()};yelp.ui.widget.fb._setupDisconnectBar=function(){yelp.hub.subscribe("ext.FB.bluebar",function(a){if(!a){new yelp.ui.widget.fb.DisconnectBar()}})};yelp.ui.widget.fb._setupSyncFloater=function(){if(yelp.config.hideFBSyncFloater||["facebook_sync","import_photo_fb","import_friends_fb"].member(yelp.config.servletName)){return}yelp.hub.subscribe("ext.FB.friend_previews",function(b){var a=b.filter(function(c){return !c.is_yelp_friend
});if(a.length===0){return}yelp.hub.subscribe("ext.FB.potential_new_friends_count",function(c){if(c===0){return}new yelp.ui.widget.fb.SyncFloater({friends:a,potentialNewFriendsCount:c})})})};yelp.ui.widget.fb._setupSignupFloater=function(){if(["home","activity_feed","static"].member(yelp.config.servletName)){return}yelp.hub.subscribe("ext.FB.bluebar",function(a){if(a){return}yelp.hub.subscribe("ext.FB.user_info",function(b){if(!b||b.suppressSignupFloater||b.user_id){return}yelp.hub.subscribe("ext.FB.friend_previews",function(c){if(c.length===0){return
}yelp.hub.subscribe("ext.FB.potential_new_friends_count",function(d){if(d===0){return}new yelp.ui.widget.fb.SignupFloater({friends:c,potentialNewFriendsCount:d})})})})})};yelp.ui.widget.fb._setupActivityFeedTeaser=function(){if(!(["home","search","activity_feed"].member(yelp.config.servletName))){yelp.hub.subscribe("ext.FB.user_info",function(a){if(a.activityFeedTooltipViews<2){yelp.hub.subscribe("ext.FB.friend_previews",function(c){var b=c.filter(function(d){return Boolean(d.thumbnail_url)}).slice(0,7);
if(b.length>0){yelp.event.domLoaded(function(){new yelp.ui.widget.fb.ActivityFeedTeaserTooltip("fb-friend-faces","activity-feed-menu-item",b)})}})}})}};yelp.ui.widget.fb._setupHomeSignupAd=function(){if(["home","activity_feed"].member(yelp.config.servletName)){yelp.hub.subscribe("ext.FB.user_info",function(a){if(!a||a.user_id){return}yelp.hub.subscribe("ext.FB.friend_previews",function(b){if(b.length>=2){yelp.hub.subscribe("ext.FB.potential_new_friends_count",function(c){yelp.event.domLoaded(function(){new yelp.ui.widget.fb.HomepageSignupAd(b,yelp.config.servletName,c)
})})}})})}};yelp.ui.widget.fb._disconnectFacebook=function(a){var b=$("disconnect-button");yelp.ui.widget.YButton.toggleButtonClass(b,"disabled");b.observe("click",function(d){var c={sesstok:yelp.util.cookie.readCookie(yelp.config.cookies.SESSION,true)};fb_cookie=FB.Cookie.load();if(fb_cookie){c.fb_session_key=fb_cookie.session_key}new yelp.async.ajax.Request("/facebook_connect/destroy",{method:"post",parameters:c,onSuccess:function(f){if(f.responseJSON.success){var e=Yelp.Pops.AlertPopFactory("fb-disconnect-pop",yelp._("Finish unlinking your account"),yelp._("<p>We have removed your Facebook information from Yelp.</p><p><strong>You're not done yet! There is another step to disconnecting Yelp and Facebook.</strong></p><p>You need to go to <a href=\"$url\">Facebook's Privacy Preferences</a> to turn off the connect feature between Yelp and Facebook.",{url:yelp.config.fb.privacy_settings_url}));
e.show();yelp.ui.widget.YButton.toggleButtonClass(b,"disabled",true);b.stopObserving("click")}else{var g=Yelp.Pops.AlertPopFactory("fb-disconnect-error-pop",yelp._("Error unlinking your account"),"<p>"+f.responseJSON.message+"</p>");g.show()}}})})};yelp.ui.widget.fb._setupInfoDisconnectButton=function(){if(yelp.config.servletName=="static"){yelp.hub.subscribe("ext.FB.session",yelp.ui.widget.fb._disconnectFacebook)}};if(yelp.config.isLoggedIn){yelp.ui.widget.fb.setupLoggedInUIElements()}else{yelp.ui.widget.fb.setupLoggedOutUIElements()
};
