define("social/css-tricks",["jquery"],function(n){function t(t){t.find(".remove-text-nodes").each(function(){var t=n(this).contents().filter(function(){return this.nodeType===3});t.remove()});t.find(".fixed-width").each(function(){var t=n(this);t.css("min-width",t.width())})}return t});require(["social/css-tricks","jquery"],function(n,t){t(function(){n(t(document))})});define("social/blockables",["jquery","social/event-tracker","class"],function(n,t){var i={};return i.init=function(i){var r=this;this.controller=i;r.eventTracker=new t(n(window));i.registerInteractableAddedCallback(function(n){r.interactableAdded(n)})},i.interactableAdded=function(t){var i=this,r,u;if(t.is(".blockable")){if(t.is(".user-hidden")){t.on("click",".unhide-blockable",function(r){r.preventDefault();i.controller.interactMenu.unhide(n(this),t)});t.on("click",".unreport-blockable",function(r){r.preventDefault();i.controller.interactMenu.unreport(n(this),t)})}r=t.parent();r.is(".interactable-container")&&i.updateHiddenCount(r)}u=t.find(".interactable-container").filter(function(){var i=n(this).parents(".interactable").first();return i[0]==t[0]});u.length&&u.each(function(){var t=n(this);t.on("click","> .blockable-count > .reveal-hidden",function(n){n.preventDefault();t.is(".hidden-revealed")?t.removeClass("hidden-revealed"):t.addClass("hidden-revealed")})})},i.updateHiddenCount=function(t){var r=t.find(".blockable-count"),u=t.children(".blockable.user-hidden").length,i;u?(i=r.children(".hidden-count"),i.length||(i=n('<a href="#" class="hidden-count reveal-hidden"><\/a>"'),r.append(i)),i.text(u+" hidden")):r.find(".hidden-count").remove()},i.getUrl=function(n,t){return this.controller.buildRequestUrl("interact",n.data("interact-object-id"),t)},i.hide=function(t,i){var r=this,f=this.getUrl(i,"hide"),u=n.Deferred();return n.ajax(f,{type:"POST",success:function(n){n.success?(r.eventTracker.trackEvent(t),r.controller.rebuildObject(i),u.resolve(n)):(r.controller.error(n.error),u.reject)}}),u.promise()},i.unhide=function(t,i){var u=this,f=this.getUrl(i,"unhide"),r=n.Deferred();return n.ajax(f,{type:"POST",success:function(n){n.success?(u.controller.rebuildObject(i),r.resolve(n)):(u.controller.error(n.error),r.reject)}}),r.promise()},i.reportMenu=function(t,i){var r=this,u=this.getUrl(i,"report-menu");n.ajax(u,{type:"POST",success:function(n){n.success?r.controller.reportMenuModule.loadMenu(i,n.result.html):r.controller.error(n.error)}})},i.report=function(t,i){var u=this,f=i.find(".report-menu input[name=report-menu]:checked").val(),e=this.controller.buildRequestUrl("interact",i.data("interact-object-id"),"report",f),r=n.Deferred();return n.ajax(e,{type:"POST",success:function(t){t.success?(u.controller.rebuildObject(i),n(".report-menu").modal("hide"),r.resolve(t)):(u.controller.error(t.error),r.reject)}}),r.promise()},i.unreport=function(t,i){var u=this,f=this.getUrl(i,"unreport"),r=n.Deferred();return n.ajax(f,{type:"POST",success:function(n){n.success?(u.controller.rebuildObject(i),r.resolve(n)):(u.controller.error(n.error),r.reject)}}),r.promise()},i.delete=function(t,i){var u=this,f=this.getUrl(i,"delete"),r=n.Deferred();return n.ajax(f,{type:"POST",success:function(n){n.success?(u.eventTracker.trackEvent(t),i.remove(),r.resolve(n)):(u.controller.error(n.error),r.reject)}}),r.promise()},Object.subClass(i)});define("social/comments",["jquery","social/event-tracker","class"],function(n,t){"use strict";function r(n){return/[^\s]+/.test(n)}var i={};return i.init=function(i){var r=this;this.controller=i;r.commenting=!1;r.eventTracker=new t(n(window));i.registerInteractableAddedCallback(function(n){r.interactableAdded(n)})},i.interactableAdded=function(n){var t=this,i;if(n.is(".commentable")){n.on("input keyup change",".comment-list .new-comment .new-comment-message",function(n){t.newCommentMessage_change(this,n)});n.on("keypress",".comment-list .new-comment .new-comment-message",function(n){t.newCommentMessage_keypress(this,n)});n.on("click",".comment-list .new-comment .new-comment-post",function(n){t.newCommentPost_click(this,n)});n.on("click",".comment-list .previous-comments",function(n){t.previousComments_click(this,n)});i=n.find(".comment-list .new-comment-message");i.autosize({append:"x"})}},i.newCommentMessage_change=function(t){var i=n(t),u=i.parents(".comment-list").first().find(".new-comment-post");r(i.val())?(i.addClass("commenting"),u.fadeIn("fast")):(i.removeClass("commenting"),u.fadeOut("fast"))},i.newCommentMessage_keypress=function(t,i){if(i.which===13&&!i.shiftKey){i.preventDefault();var r=n(t).parents(".new-comment").first().find(".new-comment-post");r.click()}},i.newCommentPost_click=function(t){var i=this,u,f,e,o;i.commenting||(i.commenting=!0,u=n(t).parents(".comment-list").first(),f=u.find(".new-comment-message"),r(f.val())&&(e={message:f.val()},o=u.data("comment-url"),n.ajax(o,{data:e,type:"POST",success:function(r){if(r.success){f.val("").change().trigger("autosize.resize");var e=n(r.result.html),o=u.find(".new-comment");o.before(e);i.controller.interactableAdded(e);i.eventTracker.trackEvent(n(t))}else i.controller.error(r.error);i.commenting=!1}})))},i.previousComments_click=function(t){var f=this,i=n(t),r,u;i.is(".loading")||(r=i.parents(".comment-list").first(),u=i.data("next-page-url"),i.find(".number-previous-comments").text("Loading..."),i.addClass("loading"),n.ajax(u,{type:"POST",success:function(t){var u,s,h,e;if(t.success){for(u=t.result,u.nextPage?(i.removeClass("loading"),i.find(".number-previous-comments").text(u.remainingComments+(u.remainingComments==1?" Comment":" Comments")),i.data("next-page-url",u.nextPage)):i.remove(),s=0,h=r.find(".comment, .new-comment").first(),e=0;e<u.comments.length;e++){var c=u.comments[e],o=n(c.html),l=o.data("interact-object-id"),a=r.find("[data-interact-object-id='"+l+"']").length;a||(s++,h.before(o),h=o,f.controller.interactableAdded(o))}s||r.find(".previous-comments").click()}}}))},Object.subClass(i)});define("social/event-tracker",["jquery","google-analytics","class"],function(n,t){return Object.subClass({init:function(n){var i=this;i.$window=n;i.ga=new t(n)},getLabel:function(){return n(".social-container").data("analytics-label")},getCategory:function(n){return n.data("analytics-category")},getAction:function(n){return n.data("analytics-action")},trackEvent:function(n){var t=this;t.ga.trackEvent(t.getCategory(n),t.getAction(n),t.getLabel(),null)}})});define("social/infinite-scrolling",["jquery","class"],function(n){"use strict";return Object.subClass({init:function(n,t){var i=this;i.itemSelector=n;i.fncLoadNextPage=t;i.addEventListeners()},addEventListeners:function(){var t=this;n(window).on("scroll",function(){var i=n(t.itemSelector).last(),r=n(this).scrollTop()+n(this).height();i.length&&r>i.offset().top&&t.fncLoadNextPage()})}})});define("social/interact-menu",["jquery","class"],function(n){var t={},r={Delete:"Delete",Report:"Report",ReportSave:"ReportSave",Hide:"Hide",UnHide:"Un-Hide",UnReport:"Un-Report",Edit:"Edit"},i={},u;return i[r.Delete]="delete",i[r.Report]="reportMenu",i[r.ReportSave]="report",i[r.UnReport]="unreport",i[r.Hide]="hide",i[r.UnHide]="unhide",i[r.Edit]="edit",u=[],t.init=function(n){var t=this;this.controller=n;t.controller.container.on("click",".interactable .report-box .interact-action",function(n){t.interactAction_click(this,n)});t.controller.container.on("click",".interactable .report-menu .interact-action",function(n){t.interactAction_click(this,n)})},t.addInteractMenuCallback=function(n,t){u.push({action:n,callback:t})},t.interactAction_click=function(t,r){r.preventDefault();var u=n(t),f=u.parents(".interactable").first(),e=u.data("action"),o=i[e],s=this[o];s.apply(this,[u,f])},t.hide=function(t,i){var r=this;n.when(r.controller.blockables.hide(t,i)).done(function(){r.handleInteractCallbacks("hide",i)})},t.unhide=function(t,i){var r=this;n.when(r.controller.blockables.unhide(t,i)).done(function(){r.handleInteractCallbacks("unhide",i)})},t.reportMenu=function(n,t){this.controller.blockables.reportMenu(n,t)},t.report=function(t,i){var r=this;n.when(r.controller.blockables.report(t,i)).done(function(){r.handleInteractCallbacks("report",i)})},t.unreport=function(t,i){var r=this;n.when(r.controller.blockables.unreport(t,i)).done(function(){r.handleInteractCallbacks("unreport",i)})},t.edit=function(n,t){this.controller.updateDialog.update(t)},t.delete=function(t,i){var r=this;n.when(r.controller.blockables.delete(t,i)).done(function(){r.handleInteractCallbacks("delete",i)})},t.handleInteractCallbacks=function(n,t){var i,r,u;if(self=this,i=self.getInteractCallbacks(n),i)for(r=0;r<i.length;r++)u=i[r],u(t)},t.getInteractCallbacks=function(t){return n.map(u,function(n){if(n.action===t)return n.callback})},Object.subClass(t)});define("social/like",["jquery","social/event-tracker","class"],function(n,t){"use strict";var i={};return i.init=function(i){var r=this;r.controller=i;r.eventTracker=new t(n(window));r.registerEventListeners();r.controller.registerInteractableAddedCallback(function(n){r.interactableAdded(n)})},i.registerEventListeners=function(){var t=this;t.controller.container.on("click",".likeable .like-bar .like-button",function(){var i=n(this),r=i.parents(".like-bar").first(),u=r.parents(".likeable").first(),f=i.is(".liked"),e=u.data("interact-object-id"),o=t.controller.buildRequestUrl("likes",e,f?"unlike-item":"like-item");n.ajax(o,{type:"POST",success:function(i){if(i.success){var u=n(i.result.html);r.replaceWith(u);t.initializeLikeBar(u)}else t.controller.error(i.error)}})});t.controller.container.on("hide.bs.modal",".like-dialog",function(){t.likeUserDialog.find(".modal-body").html("Loading...")})},i.interactableAdded=function(t){var r=this,i;t.is(".likeable")&&(i=t.find(".like-bar").not(".initialized"),i.each(function(){r.initializeLikeBar(n(this))}))},i.initializeLikeBar=function(t){var i=this,r,u;if(!t.is(".initialized")){t.addClass("initialized");r=t.parents(".likeable").first().data("interact-object-id");u=t.find(".like-string.can-hover").each(function(){var t=n(this),u;t.popover({content:"Loading...",placement:"auto top",trigger:"hover"});u=!1;t.on("show.bs.popover",function(){if(!u){var f=i.controller.buildRequestUrl("likes",r,"get-names");n.ajax(f,{type:"POST",data:{userIds:t.data("user-ids")},success:function(n){var r,f;if(u=!0,n.success){for(r="",f=0;f<n.result.length;f++)r=r+n.result[f]+"\r\n";t.popover("destroy");t.popover({content:r,placement:"auto top",trigger:"hover"});t.popover("show")}else i.controller.error(n.error)}})}})});t.on("click",".like-string.can-click",function(){i.likeUserDialog.modal("toggle");var t=n(this),u=i.controller.buildRequestUrl("likes",r,"user-dialog");n.ajax(u,{type:"POST",data:{userIds:t.data("user-ids")},success:function(n){n.success?i.likeUserDialog.find(".modal-body").html(n.result.html):i.controller.error(n.error)}})})}},Object.subClass(i)});define("social/message-box",["jquery","class"],function(n){var t={};return t.init=function(t){this.controller=t;this.element=n("#message-box");this.header=this.element.find(".modal-header");this.body=this.element.find(".modal-body")},t.show=function(n,t){this.header.text(n);this.body.text(t)},Object.subClass(t)});define("social/new-post-controller",["angular","jquery","social/event-tracker","class"],function(n,t,i){var f={},r,u;return f.init=function(u){var o=this,e=new i(t(window)),f=u.container.find(".timeline");r.value("newPostUrl",f.data("post-url"));r.value("socialController",u);r.value("eventTracker",e);n.bootstrap(f,["timelineModule"])},r=n.module("timelineModule",["monospaced.elastic","ngAnimate"]),u=!(window.File&&window.FileReader&&window.FileList&&window.Blob),r.directive("ftdnaEnter",function(){return function(n,t,i){t.bind("keydown keypress",function(t){t.which!==13||t.shiftKey||(n.$apply(function(){n.$eval(i.ftdnaEnter)}),t.preventDefault())})}}),r.controller("newPostController",["$scope","$http","newPostUrl","socialController","eventTracker",function(n,i,r,f,e){function s(){var n=t("#post-button");e.trackEvent(n)}function h(){var i=t("#select-photo");i.replaceWith(i.clone());i=t("#select-photo");u?(i.change(function(){var r=i.val().split("\\");r=r[r.length-1];n.safeApply(function(){n.legacyPhotoFile=r;n.showPhotoForm=!1});t("#new-post-text").focus()}),n.legacyPhotoFile=null,n.showPhotoForm=!1):i.change(function(t){n.safeApply(function(){n.photoSelected(t.target.files[0])})})}n.safeApply=function(n){var t=this.$root.$$phase;t=="$apply"||t=="$digest"?n&&typeof n=="function"&&n():this.$apply(n)};n.text=null;n.postType=1;var o=t(".post-scope-menu").find(".post-scope").first();n.scopeType=o.val();n.scopeName=o.text();n.posting=!1;n.setScope=function(t,i){n.scopeType=t;n.scopeName=i};n.createPost=function(u){if(!n.legacyPhotoFile&&(u&&u.preventDefault(),!n.posting)){n.posting=!0;var e={message:n.text,photoToken:n.photoToken,postType:n.postType,postScope:n.scopeType};i.post(r,e).then(function(i){var r=i.data,u,e;r.success?(u=t(r.result.html),e=f.container.find(".timeline .timeline-entries"),e.prepend(u),f.interactableAdded(u),n.text=null,n.photoToken=null,n.photoUrl=null,n.postType=1,t("*").blur(),n.posting=!1,s()):f.error(r.error)})}return!0};n.tryCreatePost=function(){n.showPostButton()&&(n.legacyPhotoFile?n.posting||(n.posting=!0,s(),t("#new-post-form").submit()):n.createPost())};n.getPlaceHolder=function(){return n.postType==2?t("#postTypeQuestion").data("placeholder"):t('.post-scope[value="'+n.scopeType+'"]').data("placeholder")};n.focusText=function(){t("#new-post-text").focus()};n.showPostButton=function(){return!!n.text||n.hasPhoto()||n.legacyPhotoFile};n.photoToken=null;n.photoUrl=null;n.legacyPhotoFile=null;n.hasPhoto=function(){return n.photoToken&&n.photoUrl?!0:n.legacyPhotoFile?!0:!1};n.addPhoto=function(){u?n.showPhotoForm=!0:t("#select-photo").click()};n.clearPhoto=function(){n.photoToken=null;n.photoUrl=null;n.showPhotoForm=!1;h()};n.photoSelected=function(i){var r=new FormData;r.append("file",i);n.uploading=!0;n.uploadProgress=0;t.ajax({type:"POST",url:t("#select-photo").data("url"),data:r,processData:!1,contentType:!1,success:function(i){i.success&&(n.safeApply(function(){n.photoToken=i.result.photoToken;n.photoUrl=i.result.photoUrl}),t("#new-post-text").focus())},complete:function(){n.safeApply(function(){n.uploading=!1;n.uploadProgress=0})},xhr:function(){var i=t.ajaxSettings.xhr();return i.upload&&i.upload.addEventListener("progress",function(t){n.safeApply(function(){n.uploadProgress=Math.floor(t.loaded/t.total*100)})}),i}})};h();t(function(){if(!u&&Modernizr.draganddrop){var i=!1,r=-1;t(document).on("dragstart dragenter dragover",function(n){var r=n.originalEvent.dataTransfer;/chrome/i.test(navigator.userAgent)&&t.inArray("text/html",r.types)>-1||t.inArray("Files",r.types)>-1&&(n.stopPropagation(),n.preventDefault(),t("#drop-zone").show(),t(".post-tools").addClass("dragging-file"),i=!0,n.originalEvent.dataTransfer.dropEffect="none",t(n.target).is("#drop-zone")&&(n.originalEvent.dataTransfer.dropEffect="move"))}).on("drop dragleave dragend",function(u){u.preventDefault();u.stopPropagation();i=!1;u.type=="drop"&&t(u.target).is("#drop-zone")&&(t("#drop-zone").hide(),t(".post-tools").removeClass("dragging-file"),n.safeApply(function(){n.photoSelected(u.originalEvent.dataTransfer.files[0])}));clearTimeout(r);r=setTimeout(function(){i||(t("#drop-zone").hide(),t(".post-tools").removeClass("dragging-file"))},70)})}})}]),Object.subClass(f)});define("social/photo-container",["jquery","angular","social/photo-modal","/js/masonry/masonry.pkgd.js","class"],function(n,t,i,r){"use strict";var u={};return u.init=function(t){var r=this;r.socialController=t;r.photoModal=new i(t);t.registerInteractableAddedCallback(function(t){var u=t.find(".photo-container"),i;if(u.length)u.each(function(){r.initializeContainer(n(this))});else if(t.is(".masonry-image")){if(i=t.parents(".photo-container").first(),!i.length)throw"New interactable image was added to the page, but it doesn't have a parent photo-container.";r.initializeContainer(i)}});t.registerInteractMenuCallback("delete",function(t){t.is(".masonry-image")&&r.socialController.container.find(".photo-container").each(function(){r.organizeContainer(n(this))})});t.container.find(".photo-container").each(function(){r.initializeContainer(n(this))})},u.initializeContainer=function(t){var i=this;if(!t.data("photoContainerInitialized")){t.data("photoContainerInitialized",!0);t.on("click",".masonry-image .masonry-image-content",function(){var t=n(this).data("image-modal-url");i.photoModal.loadModalImage(t)});t.on("mouseenter",".masonry-image",function(){var i=n(this),t=i.find(".photo-caption-container"),r;t.length&&t.height()===0&&(r=setTimeout(function(){t.css({height:"auto"});var n=t.height();t.removeAttr("style");t.animate({height:n},300)},500),i.data("timeout-id",r))});t.on("mouseleave",".masonry-image",function(){var t=n(this),i=t.find(".photo-caption-container");clearTimeout(n(t).data("timeout-id"));i.animate({height:0},300)})}i.organizeContainer(t)},u.organizeContainer=function(n){var t=this,i;t.showLoading(n);i=new r(n[0],{itemSelector:".masonry-image",columnWidth:n.data("column-width"),gutter:n.data("gutter-width"),transitionDuration:0});t.hideLoading(n)},u.loadContainer=function(){var n=this},u.showLoading=function(n){var i=this,t=n.parent().find(".loading");t.show()},u.hideLoading=function(n){var i=this,t=n.parent().find(".loading");t.hide()},Object.subClass(u)});define("social/photo-modal",["jquery","social/event-tracker"],function(n,t){"use strict";var i=angular.module("photoModalModule",["monospaced.elastic","ngAnimate"]);return i.directive("ftdnaEnter",function(){return function(n,t,i){t.bind("keydown keypress",function(t){t.which!==13||t.shiftKey||(n.$apply(function(){n.$eval(i.ftdnaEnter)}),t.preventDefault())})}}),i.controller("photoModalController",["$scope","$http","photoModal",function(t,i,r){function u(){return n(".caption-text").text()!==null&&n(".caption-text").text()!==""}t.text=null;t.showNewCaptionBox=!u();t.showSaveButton=function(){return!!t.text};t.showCloseIcon=function(){return u()};t.saveCaption=function(u){u.preventDefault();var f={objectId:n(".photo-info").data("identifier"),caption:t.text};i.post(r.updatePhotoUrl,f).then(function(i){i.data.success&&(i.data.result.Caption!==null&&i.data.result.caption!==""&&n(".caption-text").text(i.data.result.caption),t.showNewCaptionBox=!1,r.eventTracker.trackEvent(n("#save-caption")))})}}]),Object.subClass({init:function(i){var r=this;r.socialController=i;r.eventTracker=new t(n(window))},attachModalEvents:function(){var t=this;t.modalElement.on("click",".show-comments-button",function(n){n.preventDefault();t.showComments()});t.modalElement.on("click",".hide-comments-button",function(n){n.preventDefault();t.hideComments()});t.modalElement.on("click",".img-nav",function(){var i=n(this).data("image-modal-url");t.loadModalImage(i)});t.modalElement.on("click",".close-modal-button",function(){t.closeModal()})},createModal:function(){var t=this;t.modalElement||(t.modalElement=n('<div class="photo-modal-container modal fade open-sans" tabindex="-1" role="dialog" aria-labelledby="imageModalLabel" aria-hidden="true" />'),n(".social-container").append(t.modalElement),t.attachModalEvents())},loadModalImage:function(t){var r=this;n.ajax(t,{type:"POST",success:function(t){if(t.success){r.createModal();r.modalElement.html(t.result.html);r.updatePhotoUrl=t.result.updatePhotoUrl;i.value("photoModal",r);angular.bootstrap(r.modalElement.children().first(),[i.name]);r.commentsSection=r.modalElement.find(".comment-section");r.imageContainer=r.modalElement.find(".xlImg-container");var u=r.commentsSection.find(".interactable");u.each(function(t,i){r.socialController.interactableAdded(n(i))});r.modalElement.modal("show")}else r.socialController.error(t.error)}})},hideComments:function(){var t=this,i=t.commentsSection.outerWidth(!0);t.commentsSection.animate({right:-i},"slow");t.imageContainer.animate({width:"100%"},500);n(".show-comments").show()},showComments:function(){var t=this,i=t.commentsSection.outerWidth(!0);t.commentsSection.animate({right:0},500);t.imageContainer.animate({width:"85%"},500,function(){t.imageContainer.removeAttr("style")});n(".show-comments").hide()},closeModal:function(){var n=this;n.modalElement.modal("hide")}})});define("social/photo-upload",["angular","jquery","social/event-tracker","class"],function(n,t,i){"use strict";var r=n.module("photoUploadModule",["monospaced.elastic","ngAnimate"]),u=!(window.File&&window.FileReader&&window.FileList&&window.Blob);return r.controller("photoUploadController",["$scope","$http","$q","photoUpload",function(n,i,r,f){function e(t){return n.photos[t]}function o(){var i=t("#select-photo");i.replaceWith(i.clone());i=t("#select-photo");u?(i.change(function(){var r=i.val().split("\\");r=r[r.length-1];n.safeApply(function(){n.legacyPhotoFiles.push(r);n.showPhotoForm=!1});t("#new-post-text").focus()}),n.legacyPhotoFiles=[],n.showPhotoForm=!1):i.change(function(t){n.safeApply(function(){for(var i=0;i<t.target.files.length;i++)n.photoSelected(t.target.files[i])})})}n.safeApply=function(n){var t=this.$root.$$phase;t=="$apply"||t=="$digest"?n&&typeof n=="function"&&n():this.$apply(n)};n.photos=[];n.legacyPhotoFiles=[];n.saving=!1;n.uploadMessage="";n.hasPhoto=function(){return n.photos.length>0?!0:n.legacyPhotoFiles.length>0?!0:!1};n.uploading=function(){var t=_.where(n.photos,{uploading:!0});return t.length>0};n.addPhoto=function(){u?n.showPhotoForm=!0:t("#select-photo").click()};n.clearAllPhotos=function(){n.photos=[];n.legacyPhotoFiles=[]};n.clearPhoto=function(i){n.photos=t.grep(n.photos,function(n){return n.photoToken!==i});n.hasPhoto()||(n.showPhotoForm=!1,o())};n.createPhotos=function(r){if(n.legacyPhotoFiles.length===0){r&&r.preventDefault();n.saving=!0;var u=_.map(n.photos,function(n){return{albumId:f.albumId,photoToken:n.photoToken,caption:n.caption}});i.post(f.createPhotoUrl,u).then(function(i){var u,s,e,h,c;if(i.data.success){if(u=i.data.result.photos,f.controller.photoGallery.find(".no-more-photos").length){for(s=f.controller.photoGallery.find('.photo-group[data-identifier="'+f.albumId+'"] .photo-container'),e=0;e<u.length;e++)h=u[e],c=t(h),s.append(c);f.controller.organizeImages();f.eventTracker.trackEvent(t(r.target))}u.length>1?n.uploadMessage="Your photos have been uploaded.":u.length===1&&(n.uploadMessage="Your photo has been uploaded.");n.clearAllPhotos();n.saving=!1;n.saved=!0;o()}})}};n.photoSelected=function(i){var u=new FormData,r;u.append("file",i);n.photos.push({file:i,uploading:!0,uploadProgress:0});r=n.photos.length-1;t.ajax({type:"POST",url:t("#select-photo").data("url"),data:u,processData:!1,contentType:!1,success:function(t){t.success&&n.safeApply(function(){var n=e(r);n.photoToken=t.result.photoToken;n.photoUrl=t.result.photoUrl;n.caption=""})},complete:function(){n.safeApply(function(){var n=e(r);n.uploading=!1;n.uploadProgress=0})},xhr:function(){var i=t.ajaxSettings.xhr();return i.upload&&i.upload.addEventListener("progress",function(t){n.safeApply(function(){var n=e(r);n.uploadProgress=Math.floor(t.loaded/t.total*100)})}),i}})};o()}]),Object.subClass({init:function(u,f){var e=this;e.controller=u;e.container=f;e.eventTracker=new i(t(window));e.createPhotoUrl=e.container.data("create-photos-url");e.selectPhotosBtn=e.container.find("#selectPhotosBtn");e.selectPhoto=e.container.find("#select-photo");e.albumId=e.container.data("album-id");r.value("photoUpload",e);n.bootstrap(f,["photoUploadModule"])}})});define("social/pin",["jquery","class"],function(n){"use strict";return Object.subClass({init:function(t){var i=this;i.controller=t;i.pinArea=n(".pinned-container");i.controller.container.on("click",".pinnable .pin-button",function(t){n(this).parents(".pinned").length==0?i.pin(this,t):i.unPin(this,t)});i.controller.container.tooltip({selector:".pinnable .pin-button",placement:"bottom",trigger:"hover"});setTimeout(function(){i.unPinNotificationStories()},2e3)},pin:function(t){var i=this,r=n(t),u=r.data("pin-url"),f=r.parents(".pinnable");n.ajax(u,{type:"POST",success:function(t){if(t.success){if(f.remove(),i.pinArea.html(t.result.html),i.controller.rebuildObjects(n(".timeline .pinnable")),n("html, body").animate({scrollTop:i.pinArea.offset().top+"px"},500),localStorage.hasPinnedAPost===undefined||localStorage.hasPinnedAPost==="false"){localStorage.hasPinnedAPost=!0;var r=i.pinArea.find(".pinned-background");r.popover({content:"You have pinned a post to the top of the activity feed. To remove it click the pin icon again.",placement:"right"});r.popover("show")}}else i.controller.error(t.error)},error:function(n){i.controller.error(n.error)}})},unPin:function(t){var i=this,r=n(t),u=r.data("pin-url"),f=r.parents(".pinnable");n.ajax(u,{type:"POST",success:function(t){var r,u;if(t.success){i.pinArea.html(t.result.html);var s=t.result,h=n(".timeline").first(),e=i.pinArea;for(r=0;r<s.timelineEntries.length;r++)if(u=s.timelineEntries[r],u.html&&u.html.length){var f=n(u.html),c=f.data("interact-object-id"),o=h.find('[data-interact-object-id="'+c+'"]');o.length?(i.controller.rebuildObject(o),e=o):(e.after(f),i.controller.interactableAdded(f),e=f)}}else i.controller.error(t.error)},error:function(n){i.controller.error(n.error)}})},unPinNotificationStories:function(){var t=this;n(".notification-story").each(function(){var i=n(this),r=i.data("pin-url");n.ajax(r,{type:"POST",success:function(n){n.success||t.controller.error(n.error)},error:function(n){t.controller.error(n.error)}})})}})});define("social/profile-viewer",["angular","jquery","class"],function(n,t){"use strict";return Object.subClass({init:function(n,i){var r=this;r.controller=n;r.container=i!=null?i:r.controller.container;r.profileDialog=t("#social-profile-dialog");r.addEventListeners()},addEventListeners:function(){var n=this;n.container.on("click",".view-profile-dialog",function(){n.profileDialog.modal("toggle");var r=n.controller.buildRequestUrl("profile","dialog"),i=t(this).data("user-ids").toString();t.ajax(r,{type:"POST",data:{userIds:i},success:function(t){if(t.success){n.profileDialog.find(".modal-body").html(t.result.html);i.indexOf(",")==-1&&n.profileDialog.find(".view-profile").first().click();var r=n.profileDialog.find(".modal-title").first();r.text(t.result.title)}else n.controller.error(t.error)}})});n.container.on("click",".view-profile",function(){var i=t(this),r=i.find(".details"),u;r.length?r.is(":visible")||n.showDetails(i):(u=i.data("profile-url"),t.ajax(u,{type:"POST",success:function(r){if(r.success){var u=t(r.result.html);i.append(u);n.showDetails(i)}}}))});t("html").on("click",function(i){var r=t(i.target),u=r.is(".view-profile")||r.parents(".view-profile").length>0;u||n.hideDetails()})},showDetails:function(n){var r=this,t,i;r.hideDetails();t=n.find(".details");i=n.find(".icons");t.slideDown(500);i.animate({width:17},500);n.css({cursor:"default"})},hideDetails:function(){var t=this,n=t.container.find(".view-profile"),i=n.find(".details"),r=n.find(".icons");i.slideUp(500);r.animate({width:0},500);n.css({cursor:""})}})});define("social/report-menu",["jquery","class"],function(n){"use strict";return Object.subClass({init:function(n){var t=this;t.controller=n;t.controller.container.on("hide.bs.modal",".report-menu",function(){t.closeMenu()});t.controller.container.on("change",".interactable .report-menu input",function(){var n=t.controller.container.find(".report-menu .interact-action");n.show()})},loadMenu:function(n,t){n.append(t);n.find(".report-menu").modal("toggle")},closeMenu:function(){n(".report-menu").remove()}})});define("social/time",["jquery","class"],function(n){function t(n){var i=n.getHours()%12,t;return i===0&&(i=12),i=i.toString(),t=n.getMinutes(),t=t<10?"0"+t.toString():t.toString(),i+":"+t+(n.getHours()>=12?"pm":"am")}function r(n,t){var i=f[n.getMonth()]+" "+n.getDate();return t&&(i=i+", "+n.getFullYear()),i}var i={},u,f,e;return i.init=function(n){this.controller=n;var t=this;setInterval(function(){t.updateSocialTimes(n.container)},6e4);this.updateSocialTimes(n.container);n.registerInteractableAddedCallback(function(n){t.updateSocialTimes(n)})},u=/\.[0-9]+/,i.updateSocialTimes=function(i){var f=new Date,o=i.find("[data-social-time]").each(function(){var s=n(this),a="",h=s.data("social-time"),v;h=h.replace(u,"");var i=new Date(Date.parse(h)),y=f-i,p=y/1e3,c=p/60,o=c/60,l=o/24;a=c<=2?"Just now":o<=1?Math.round(c)+" minutes ago":l<=1?Math.round(o)+(Math.round(o)<=1?" hour ago":" hours ago"):l<=2?"Yesterday at "+t(i):l<=300?r(i,!1)+" @ "+t(i):r(i,!0)+" @ "+t(i);s.text(a);v=e[i.getDay()]+", "+r(i,!0)+" at "+t(i);s.attr("title",v)})},f=["January","February","March","April","May","June","July","August","September","October","November","December"],e=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Object.subClass(i)});define("social/update-dialog",["jquery","angular","class"],function(n,t){var i=t.module("SocialUpdateDialog",["monospaced.elastic"]),r={};return r.init=function(r){var u=this;u.controller=r;u.updateDialog=n("#social-update-dialog");i.value("updateHandler",u);t.bootstrap(u.updateDialog,[i.name])},r.update=function(n){this.launchDialog(n)},i.controller("UpdateDialogController",["updateHandler","$scope","$http",function(n,t,i){n.launchDialog=function(r){var u=r.data("interact-object-id"),f=n.controller.buildRequestUrl("update",u,"get-contents");i.post(f).then(function(i){if(i.data.success){n.updateDialog.modal("show");var f=i.data.result;t.type=f.Type;t.text=f.Data.Text;t.interactable=r;t.objectId=u}else update.controller.error(i.data.error)})};n.updateDialog.on("shown.bs.modal",function(){t.$broadcast("elastic:adjust");n.updateDialog.find("textarea").focus()});t.save=function(){var r=n.controller.buildRequestUrl("update",t.objectId),u=i.post(r,{text:t.text});u.then(function(i){i.data.success?(n.controller.rebuildObject(t.interactable),t.type=null,t.text=null,t.interactable=null,t.objectId=null,n.updateDialog.modal("hide")):update.controller.error(i.data.error)})}}]),Object.subClass(r)}),function(){"use strict";define("social/controller",["social/comments","social/time","social/interact-menu","social/report-menu","social/blockables","social/photo-container","social/like","social/update-dialog","social/profile-viewer","social/pin","social/css-tricks","jquery","class"],function(n,t,i,r,u,f,e,o,s,h,c,l){var a={};return a.init=function(c){var v=this,a,l;this.container=c;a=c.data("request-url");l=a.split("?");this.requestUrlBase=l[0];this.requestUrlQuery=l[1]?"?"+l[1]:"";this.interactableAddedCallbacks=[];this.socialTime=new t(this);this.comments=new n(this);this.interactMenu=new i(this);this.blockables=new u(this);this.photoContainer=new f(this);this.reportMenuModule=new r(this);this.updateDialog=new o(this);this.like=new e(this);this.profileViewer=new s(this);this.pin=new h(this)},a.bootstrap=function(){var n=this,t=n.container.find(".interactable");t.each(function(){n.interactableAdded(l(this))})},a.registerInteractableAddedCallback=function(n){this.interactableAddedCallbacks.push(n)},a.registerInteractMenuCallback=function(n,t){this.interactMenu.addInteractMenuCallback(n,t)},a.organizePhotoContainers=function(){var n=this,t=n.container.find(".photo-container");t.each(function(){var t=l(this);n.photoContainer.organizeContainer(t)})},a.interactableAdded=function(n){var t,i;for(c(n),t=0;t<this.interactableAddedCallbacks.length;t++)i=this.interactableAddedCallbacks[t],i(n)},a.buildRequestUrl=function(){for(var n=this.requestUrlBase,t=0;t<arguments.length;t++)n=n+"/"+encodeURIComponent(arguments[t]);return n+this.requestUrlQuery},a.rebuildObjects=function(n){for(var i=this,t=0;t<n.length;t++)i.rebuildObject(l(n[t]))},a.rebuildObject=function(n){var t=this,r=n.data("interact-object-id"),u=t.buildRequestUrl("object",r,"render"),i=new l.Deferred;return l.ajax(u,{type:"POST",success:function(r){if(r.success){var u=l(r.result.html);n.replaceWith(u);t.interactableAdded(u);i.resolve(u)}else i.reject(),t.error(r.error)}}),i.promise()},a.error=function(n){alert(n)},Object.subClass(a)})}()