(function(n,t,i){function c(n){r.obj("validateOptions()",n);var t=!0;return(n.appId==null||n.appId==i||n.appId=="")&&(r.error("app ID is not supplied."),t=!1),window.FB==i&&(r.error("SDK (window.FB) is not supplied."),t=!1),t}function l(){r.log("submitted, access token stored.");r.event(u.initLoginSuccess);t(document).trigger(u.initLoginSuccess);bootler.notify({type:"success",containerType:"right",msg:"We just linked your Facebook account, and you can now share timeline events to your Facebook timeline!",closeable:!0,autoDismiss:!0})}function a(n){r.obj("error on log in.",n);r.log("Rolling back - signing out Facebook");FB.logout(function(){r.info("signed out of Facebook.");r.event(u.initLoginFailed);t(document).trigger(u.initLoginFailed)});bootler.notify({type:"error",containerType:"right",msg:"We cannot connect your account with Facebook at the moment due to an unexpected error, please try again later.",closeable:!0,autoDismiss:!0})}function v(n){t.ajax({url:"/api/UpdateFacebookSettings",type:"POST",data:n.credentials,success:function(t){t.Success?(l(t),n.onSuccess!=null&&n.onSuccess()):(a(t),n.onError!=null&&n.onError())}})}function y(n){t.ajax({url:"/api/ClearFacebookSettings",type:"POST",success:function(t){if(t.Success){if(r.log("settings cleared"),n!=null&&n.onSuccess!=null){r.log("onSuccess()");n.onSuccess(t)}}else if(r.obj("error clearing login",t),n!=null&&n.onSuccess!=null){r.log("onError()");n.onError(t)}}})}function o(n){var t="";switch(n.Failures[0].Message){case"timeline_event_not_shareable":t="This event is not currently shareable.";break;case"timeline_event_not_found":t="Event could not be found or has been deleted.";break;case"facebook_access_token_required":case"facebook_access_token_invalid":t=n.Failures[0].Message;break;default:t="Oops! An unexpected error occurred :( please try again later."}return t}function h(t){var u="Enter a personal message before you share this to your Facebook Timeline.",i;typeof t.previewContent!="undefined"&&(i=t.previewContent,u="<div>Facebook post preview:<\/div><div class='fb-preview'>   <div class='fb-thumbnail'><img src='/Content/Images/Social/fb-2-158x158.png'/><\/div>   <div class='fb-content'>       <div class='fb-title'>"+i.LinkTitle+"<\/div>       <div class='fb-subtitle'>"+i.LinkDescription+"<\/div>       <div class='fb-caption'>"+i.LinkCaption+"<\/div>   <\/div><\/div>");mootler.textInput({modalTitle:"<i class='fa fa-facebook'><\/i> Share to Facebook",modalMessage:u,placeholderText:"what&#39;s on your mind?",onConfirm:function(i){r.log(i);n.share({itemId:t.itemId,message:i})}})}var f="csFacebook",r=new CsLogger(f),e,s,u={initStart:f+".init.start",initEnd:f+".init.end",initLoginSuccess:f+".init.login.success",initLoginFailed:f+".init.login.failed",statusConnected:f+".status.connected",statusUnauthorised:f+".status.unauthorised",statusUnknown:f+".status.unknown"};n.enableLogging=function(){r.enable();r.enableLogToElement("#log-window");r.log("logging enabled.")};n.init=function(n){(r.event(u.initStart),t(document).trigger(u.initStart),c(n))&&(this.appId=n.appId,FB.Event.subscribe("auth.login",function(){r.event("(FB.Event.subscribe) auth.login")}),FB.Event.subscribe("auth.statusChange",function(n){if(r.event("(FB) auth.statusChange"),r.obj("csFacebook.init() came back with response object",n),n!=null&&n.status!=null){s=n.status;switch(n.status){case"connected":e=!0;r.event(u.statusConnected);t(document).trigger(u.statusConnected);break;case"not_authorized":e=!1;r.event(u.statusUnauthorised);t(document).trigger(u.statusUnauthorised);break;default:e=!1;r.event(u.statusUnknown);t(document).trigger(u.statusUnknown)}}}),r.event(u.initEnd),t(document).trigger(u.initEnd))};n.getLoginStatus=function(){return s};n.isConnected=function(){return e};n.connect=function(n){r.log("connect()");FB.login(function(t){if(r.log("FB.login() callback start"),t.authResponse){r.log("authResponse is valid, testing /me");var i={UserId:t.authResponse.userID,ShortTermToken:t.authResponse.accessToken};r.obj("vm",i);n.credentials=i;v(n)}else if(r.error("Error logging in or cancelled."),n.onError!=null)n.onError(t)},{scope:"publish_actions",return_scopes:!0});r.log("/connect()")};n.disconnect=function(n){r.log("disconnect()");r.log("(FB)/me/permissions/ Unauthorise");FB.api("/me/permissions","delete",function(){r.log("Unauthorised.");y(n)});e&&(r.log("logging out Facebook..."),FB.logout(function(n){r.obj("FB.Logout() returned a response object.",n)}),csUtilities.isGoNative()&&window.location.reload(!0));r.log("/disconnect()")};n.share=function(i){if(r.log("share()"),i==null){r.error("No arguments supplied.");return}if(i.itemId==null){r.error("You must provide an item ID.");return}if(i.date==null||i.date===""){r.warning("You did not supply a date, defaulting to today's date.");var u=new Date,f=u.toISOString().slice(0,10);i.date=f}t.ajax({url:"/API/FacebookShare",data:{itemId:i.itemId,date:i.date,message:i.message},type:"POST",success:function(t){if(r.obj("Response data",t),t.Success){if(bootler.notify({type:"success",containerType:"right",msg:"Done! That has just been shared to your Facebook timeline. What should we share next?",closeable:!0,autoDismiss:!0}),i.onSuccess!=null){r.log("onSuccess()");i.onSuccess(t)}}else if(o(t)==="facebook_access_token_required")r.warning("Access token not found."),mootler.okCancel({modalTitle:"Authorisation Required",modalMessage:"To enable Facebook sharing from HowDidiDo, we will first need your authorisation, this is done by logging into Facebook. <br/><br/>Click OK to continue.",confirmButtonName:"OK",onConfirm:function(){n.connect({onSuccess:function(){r.log("Repeat share action.");n.share(i)}})}});else if(o(t)==="facebook_access_token_invalid")r.warning("Access token is invalid or expired."),mootler.okCancel({modalTitle:"Access token expired",modalMessage:"It appears your previous Facebook access token has now expired. To enable Facebook sharing from HowDidiDo, we will need your authorisation, this is done by logging into Facebook. <br/><br/>Click OK to continue.",confirmButtonName:"OK",onConfirm:function(){n.connect({onSuccess:function(){r.log("Repeat share action.");n.share(i)}})}});else if(i.onError==null)bootler.notify({type:"error",containerType:"right",msg:o(t),closeable:!0,autoDismiss:!0});else{r.log("onError()");i.onError(t)}}});r.log("/share()")};n.shareWithDialog=function(n){r.log("shareWithDialog()");n.preview==!0||n.preview==="true"?csUtilities.getShareObject(n.itemId,n.date,1,{onSuccess:function(t){t.Success&&(n.previewContent=t.Payload);h(n)},onError:function(n){var t=o(n);bootler.notify({type:"error",containerType:"right",msg:t})}}):h(n);r.log("/shareWithDialog()")};n.shareLink=function(n){r.log("shareLink()");FB.ui({method:"share",href:n},function(n){r.obj("invoked.",n)});r.log("/shareLink()")}})(window.csFacebook=window.csFacebook||{},jQuery)