if(typeof(Meetup)==="undefined"){Meetup={}}if(Meetup.Facebook===undefined){Meetup.Facebook={}}(function(){var self=Meetup.Facebook;Meetup.Facebook.user_message_prompt="";Meetup.Facebook.user_message="";Meetup.Facebook.target_id="";Meetup.Facebook.action_links=null;Meetup.Facebook.allowMultiPosts=false;Meetup.Facebook.isPopup=false;Meetup.Facebook.fbSrcCode="fb_shr";Meetup.Facebook.isLoggingOut=false;Meetup.Facebook.hasTied=false;Meetup.Facebook.cookie="";Meetup.Facebook.trackingUrl;Meetup.Facebook.whatsThis;Meetup.Facebook.template;Meetup.Facebook.altTemplate={};Meetup.Facebook.altTemplateKey;Meetup.Facebook.extendedPermissionList="email";Meetup.Facebook.afterAuthUri;Meetup.Facebook.returnUri;Meetup.Facebook.isJoining=true;Meetup.Facebook.uid=null;Meetup.Facebook.isSplitTesting=false;Meetup.Facebook.initFnQueues=null;Meetup.Facebook.traxProcessName="";Meetup.Facebook.init=function(appid,callback){callback=self.assureCallback(callback);fbInitParam={appId:appid,status:true,cookie:true,xfbml:true,channelUrl:Meetup.Data.path_xdpath};FB.init(fbInitParam);if(self.isLoggingOut){self.logout()}else{var onInitialXFBMLRender=function(response){FB.Event.unsubscribe("xfbml.render",onInitialXFBMLRender);fbHasInitilized=true;var hash=self.getHash();if(hash!==""){self.setHash("initialized")}callback();if(self.initFnQueues){var queues=self.initFnQueues;for(var i=0,len=queues.length;i<len;++i){queues[i]()}self.initFnQueues=undefined}};FB.Event.subscribe("xfbml.render",onInitialXFBMLRender)}};Meetup.Facebook.extendPerms=function(p,cb,eb){if(p instanceof Array){p=p.join(",")}else{if(typeof p!=="string"){throw new Error("extendPerms: You need to pass a string or an array.")}}self.login(function(){self.getPermission(p,cb,eb)},null,p)};Meetup.Facebook.swapFbName=function(elm,newWindow){if(!elm){throw new Error("You need to pass elm here.")}newWindow=newWindow||false;var s=FB.getSession();var uid;if(s){uid=s.uid}else{uid=Meetup.Facebook.uid}if(uid){if(newWindow){elm.innerHTML=['<a href="http://www.facebook.com/profile.php?id=',uid,'" target="_blank"><fb:name uid="',uid,'" useyou="false" linked="false"></fb:name></a>'].join("")}else{elm.innerHTML=['<fb:name uid="',uid,'" useyou="false" linked="true"></fb:name>'].join("")}Meetup.Facebook.parseXFBML(elm)}};Meetup.Facebook.loginByInit=function(){if(!self.afterAuthUri){throw new Error("You need to at least set afterAuthUri")}var url=self.afterAuthUri;if(self.isJoining&&self.returnUri){url+=[((url.indexOf("?")>-1)?"&":"?"),"returnUri=",self.returnUri].join("")}self.login(function(resp){if(resp&&resp.session===null){return false}window.location.replace(url)},function(){},true)};Meetup.Facebook.onLoginButtonClick=function(url){if(url===undefined){if(!self.afterAuthUri){throw new Error("You need to at least set afterAuthUri")}url=self.afterAuthUri}if(self.isJoining&&self.returnUri){url+=[((url.indexOf("?")>-1)?"&":"?"),"returnUri=",self.returnUri].join("")}var goToNextStep=function(){window.location.replace(url)};secureLoginSession(goToNextStep)};Meetup.Facebook.disconnect=function(callback){LOG.error("use logout instead");self.logout(callback,false)};Meetup.Facebook.logout=function(callback,showDialog){showDialog=showDialog||false;callback=self.assureCallback(callback);if(showDialog){FB.ui({method:"auth.logout"},callback)}else{FB.logout(callback)}};Meetup.Facebook.revokeAuth=function(callback){callback=self.assureCallback(callback);var onSuccess=function(){var s=FB.getSession();FB.api({method:"auth.revokeAuthorization",session_key:s.session_key,sig:s.sig,uid:s.uid},callback)};var onError=function(){callback()};secureLoginSession(onSuccess,onError)};Meetup.Facebook.login=function(callback,errorback,perms){callback=self.assureCallback(callback);errorback=self.assureCallback(errorback);var opt={};if(perms){opt.perms=perms}else{opt.perms=self.extendedPermissionList}var hash=self.getHash();if(hash!="loggedIn"){var cb=function(){self.setHash("loggedIn");callback()};var eb=function(){self.setHash("error");errorback()};FB.login(function(){secureLoginSession(cb,eb)},opt)}};Meetup.Facebook.pushToFeed=function(callback,key){LOG.error("pushToFeed is deprecated!");self.streamPublish(callback,key)};Meetup.Facebook.streamPublish=function(callback,key){var hash=self.getHash();if(hash!="posted"){callback=self.assureCallback(callback);var tpl;if(self.altTemplateKey){tpl=self.altTemplate[self.altTemplateKey];if(!tpl){throw new Error("There is no template associated with the given altTemplateKey: "+self.altTemplateKey)}}else{if(key){tpl=self.altTemplate[key];if(!tpl){throw new Error("There is no template associated with the argument: "+key)}}else{tpl=self.template}}if(!tpl){throw new Error("You need to set template here!")}self.filterIE8(tpl);var func=function(){if(self.trackingUrl){(self.generateFunction({url:self.trackingUrl}))()}FB.ui({method:"stream.publish",message:self.user_message,attachment:tpl,action_links:self.action_links,user_prompt_message:self.user_prompt_message},function(rsp){if(rsp){self.markPosted()}callback()})};var s=FB.getSession();if(s){func()}else{self.login(func)}}self.killCookie()};Meetup.Facebook.filterIE8=function(obj){if(self.isIE8&&obj.description){obj.description=obj.description.replace("("," - ").replace(")","")}};Meetup.Facebook.killCookie=function(){if(self.cookie){document.cookie=self.cookie+"=;Expires=0; path=/;domain=.meetup.com"}};Meetup.Facebook.publishPopup=function(key){var tpl;if(self.altTemplateKey){tpl=self.altTemplate[self.altTemplateKey];if(!tpl){throw new Error("There is no template associated with the given altTemplateKey: "+self.altTemplateKey)}}else{if(key){tpl=self.altTemplate[key];if(!tpl){throw new Error("There is no template associated with the argument: "+key)}}else{tpl=self.template}}if(!tpl){throw new Error("You need to set template here!")}var values={prompt:(Meetup.Facebook.user_message_prompt?Meetup.Facebook.user_message_prompt:""),name:tpl.name,href:tpl.href,caption:(tpl.caption?tpl.caption:""),description:(tpl.description?tpl.description:""),src:((tpl.media&&tpl.media.length>0)?tpl.media[0].src:"")};var dims=getViewportDimensions();var y=(dims.w/2)-500;var x=(dims.h/2);var win=window.open("http://www.meetup.com/fbconnect_popup.jsp?"+queryString(values),"fb_photo",("location=0,status=0,height=550,width=630,top="+y+",left="+x));self.popedupWindow=win;win.focus()};Meetup.Facebook.parseXFBML=function(dom,callback){callback=self.assureCallback(callback);FB.XFBML.parse(dom,callback)};Meetup.Facebook.proxyLoginStatus=function(func){if(typeof func!=="function"){LOG.error("wrong argument");return null}FB.getLoginStatus(func,true)};Meetup.Facebook.assureCallback=function(cb,makePosted){makePosted=makePosted||false;var r=cb;if(makePosted==false){if(typeof cb!=="function"){r=self.noop}}else{if(typeof cb==="function"){r=function(a){cb(a);self.markPosted()}}else{r=self.markPosted}}return r};Meetup.Facebook.noop=function(a){return a};Meetup.Facebook.getHash=function(win){win=win||window;return win.location.hash.replace(/^#/,"")};Meetup.Facebook.setHash=function(hash,win){win=win||window;win.location.hash=hash};Meetup.Facebook.markPosted=function(){if(!self.allowMultiPosts){self.setHash("posted")}};Meetup.Facebook.proxyAccountTie=function(func){if(typeof Member==="undefined"||self.hasTied||Member.id===0){return false}var r=self.generateFunction({url:Meetup.Data.path_fb_tie,success:func});r()};Meetup.Facebook.generateFunction=function(obj){var r,opt;if(typeof window.jQuery!=="undefined"){opt={url:obj.url};if(obj.success){opt.success=obj.success}if(obj.error){opt.error=obj.error}if(obj.type){opt.type=obj.type}r=function(){j$.ajax(opt)}}else{opt={};if(obj.type){opt.method=obj.type}r=function(){var d=doXHR(obj.url,opt);if(obj.success){d.addCallback(obj.success)}if(obj.error){d.addErrback(obj.error)}return d}}return r};Meetup.Facebook.getPermission=function(ext_perm,cb,eb){cb=self.assureCallback(cb);eb=self.assureCallback(eb);if(!FB){LOG.error("Facebook object is not ready yet.");eb();return false}var s=FB.getSession();if(s===null||!s.uid){LOG.error("Facebook session does not exist.");eb();return false}var uid=s.uid;if(self.uid&&(self.uid!=uid)){LOG.warning("Tied Facebook uid and Facebook uid in browser session is not the same.")}if(ext_perm instanceof Array||ext_perm.indexOf(",")>0){getMultiPermission(uid,ext_perm,cb,eb)}FB.api({method:"users.hasAppPermission",ext_perm:ext_perm,uid:uid},function(resp){if(resp&&resp==1){cb()}else{var err={};err[ext_perm]=0;eb(err)}})};Meetup.Facebook.hookOnInit=function(func){if(fbHasInitilized){func()}else{if(self.initFnQueues===null){self.initFnQueues=[func]}else{if(self.initFnQueues===undefined){LOG.error("race condition!");throw new Error("Race condition!")}else{self.initFnQueues.push(func)}}}};var fbInitParam={};var ptSecureLoginSession=null;var fbHasInitilized=false;var getMultiPermission=function(uid,ext_perm,cb,eb){var arr,str;if(ext_perm instanceof Array){arr=ext_perm;arr.sort();str=arr.join(",")}else{arr=ext_perm.split(",");arr.sort();str=arr.join(",")}var query=FB.Data.query(["select ",str,'from permissions where uid = "',uid,'"'].join(""));query.wait(function(result){var err={};var obj=result[0];var r_arr=[];for(var name in obj){if(name!=="uid"){if(obj[name]==1){r_arr.push(name);err[name]=1}else{err[name]=0}}}r_arr.sort();if(str===r_arr.join(",")){cb()}else{eb(err)}})};var secureLoginSession=function(fnSuccess,fnError){fnSuccess=Meetup.Facebook.assureCallback(fnSuccess);FB.getLoginStatus(function(resp){if(!resp){LOG.error("No response!");if(fnError){fnError()}}else{if(resp.session){fnSuccess(resp)}else{if(resp.status==="connected"){ptSecureLoginSession=function(){FB.Event.unsubscribe("auth.sessionChange",ptSecureLoginSession);fnSuccess();ptSecureLoginSession=null};FB.Event.subscribe("auth.sessionChange",ptSecureLoginSession);FB.init(fbInitParam)}else{if(fnError){fnError()}}}}},true)}})();Meetup.Twitter={template:{},altTemplate:{},hasTied:false,handleName:""};