require(["jquery","social/event-tracker"],function(n,t){"use strict";n(function(){var i=new t(n(window));n("#about-page .sub-nav a").on("click",function(){i.trackEvent(n(this))})})});require(["jquery","social/event-tracker"],function(n,t){"use strict";n(function(){var i=new t(n(window));n(".dna-link").on("click",function(){i.trackEvent(n(this))})})});define("projects/join",["angular"],function(n){var t=n.module("JoinRequestApp",[]);return t.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())})}}),t.controller("JoinController",["$scope","$http","joinRequestUrl","signInUrl","joinUrl",function(n,t,i,r,u){n.name=null;n.email=null;n.reTypeEmail=null;n.rationale=null;n.requestErrorMessage=null;n.signInErrorMessage=null;n.joining=!1;n.signingIn=!1;n.username=null;n.password=null;n.reTypeEmailValid=!1;n.reTypeEmailError=null;n.isJoinRequestValid=function(){return n.reTypeEmailValid};n.isSignInValid=function(){return n.username!==null&&n.password!==null};n.validateReTypeEmail=function(){n.reTypeEmail?n.email!==n.reTypeEmail?(n.requestErrorMessage="Emails do not match",n.reTypeEmailValid=!1):(n.reTypeEmailError=null,n.reTypeEmailValid=!0):(n.requestErrorMessage="Please retype your email address",n.reTypeEmailValid=!1)};n.signInAndJoin=function(){n.signIn(n.join)};n.signInAndJoinRequest=function(){n.signIn(n.joinRequest)};n.joinRequest=function(){$("#joinDialog").modal("hide");$("#joinRequest").modal("show")};n.signIn=function(i){if(!n.signingIn){n.signingIn=!0;n.signInErrorMessage=null;var u={username:n.username,password:n.password};t.post(r,u).then(function(t){t.success?t.result.canJoinGroup?i&&i():location.reload():n.signInErrorMessage=t.error;n.signingIn=!1},function(t){n.signInErrorMessage=t.error;n.signingIn=!1})}};n.tryCreateJoinRequest=function(){n.validateReTypeEmail();n.isJoinRequestValid()&&!n.joining&&n.createJoinRequest()};n.createJoinRequest=function(){if(!n.joining){n.joining=!0;n.requestErrorMessage=null;var r={emailAddress:n.email,requestorName:n.name,message:n.rationale};t.post(i,r).then(function(t){var i=t.data;i.success?location.reload():n.requestErrorMessage=i.error},function(t){n.requestErrorMessage=t.data.error;n.joining=!1})}};n.join=function(){n.joining||(n.joining=!0,t.post(u).then(function(t){var i=t.data;i.success?location.reload():n.signInErrorMessage=i.error;n.joining=!1},function(t){n.signInErrorMessage=t.data.error;n.joining=!1}))}}]),function(i,r,u,f){t.value("joinRequestUrl",r);t.value("signInUrl",u);t.value("joinUrl",f);n.bootstrap(i,[t.name])}});define("projects/links",["angular","jquery","class","angular-ui.sortable","ftdna-directives"],function(n,t){var i=n.module("projectsLinks",["ui.sortable","ftdnaDirectives"]);return i.filter("displayUrl",function(){var n=40;return function(t){if(typeof t=="string"){t=t||"";var i=t.indexOf("://");if(i>0&&(t=t.substring(i+3,t.length)),t.length>n)return t.substr(0,n-3)+"..."}return t}}),i.controller("LinksController",["linkData","$scope","$http",function(n,i,r){function h(t,r){var u=n.categories,f,e;u.length==1?t.displayOrder=1:r==0?t.displayOrder=Math.min(0,u[r+1].displayOrder-5):r==u.length-1?t.displayOrder=u[r-1].displayOrder+5:(f=u[r-1].displayOrder,e=u[r+1].displayOrder,t.displayOrder=(f+e)/2);t.changed=!0;i.updateCategory(t)}function s(n){return n.indexOf("://")==-1&&(n="http://"+n),n}function c(n,t,r){if(t.links.length==1)n.displayOrder=1;else if(r==0)n.displayOrder=Math.min(0,t.links[r+1].displayOrder-5);else if(r==t.links.length-1)n.displayOrder=t.links[r-1].displayOrder+5;else{var u=t.links[r-1].displayOrder,f=t.links[r+1].displayOrder;n.displayOrder=(u+f)/2}n.changed=!0;i.updateLink(n,t)}var f,u,e,o;for(i.linkCategories=n.categories,i.allowManage=n.allowManage,f=0;f<n.categories.length;f++)u=n.categories[f],u.links=u.links||[],u.links.category=u;i.linkSortingOptions={placeholder:"link-placeholder",connectWith:".links-container",handle:".link-sort-handle",helper:function(n,t){var i=t.clone();return i.addClass("dragging"),i},stop:function(n,t){t.item.angularData&&i.$apply(function(){c(t.item.angularData.movedObject,t.item.angularData.newList.category,t.item.angularData.newIndex)})}};i.categorySortingOptions={placeholder:"category-placeholder",handle:".category-sort-handle",helper:function(n,t){var i=t.clone();return i.addClass("dragging"),i},stop:function(n,t){t.item.angularData&&i.$apply(function(){h(t.item.angularData.movedObject,t.item.angularData.newIndex)})}};i.setEditMode=function(t){i.editMode=t;i.originalCategoryCount===0&&(n.categories=[],i.linkCategories=n.categories)};e="link";o="category of links";i.performDelete=function(){var u=i.deleteObject,f=u.container.indexOf(u.item);u.container.splice(f,1);r.post(n.deleteUrl,{id:u.item.id,type:u.type==e?"link":"category"});t("#confirm-delete").modal("hide")};i.startDeleteCategory=function(r){i.deleteObject={title:r.name,subtitle:null,type:o,item:r,container:n.categories};t("#confirm-delete").modal("show")};i.updateCategory=function(t){t.changed&&(t.pendingUpdate?t.updateQueued||(t.updateQueued=!0,t.pendingUpdate.then(function(){t.updateQueued=!1;t.pendingUpdate=null;t.changed=!0;i.updateCategory(t)})):t.pendingUpdate=r.post(n.updateCategoryUrl,{id:t.id,name:t.name,displayOrder:t.displayOrder}).then(function(n){var i=n.data;i.success&&(t.id=i.result.id)}),t.changed=!1,i.originalCategoryCount=n.categories.length)};i.createCategory=function(){var t={id:null,name:null,editName:!0,displayOrder:0,links:[]};n.categories.length&&(t.displayOrder=n.categories[n.categories.length-1].displayOrder+5);t.links.category=t;i.originalCategoryCount=n.categories.length;n.categories.push(t);i.editMode=!0};i.startDeleteLink=function(n,r){i.deleteObject={title:n.name,subtitle:r.name,type:e,item:n,container:r.links};t("#confirm-delete").modal("show")};i.addLink=function(n){var r=s(n.newLink.url),t={name:n.newLink.name,url:r,categoryId:n.id,id:null,displayOrder:0,changed:!0};n.links.length>1&&(t.displayOrder=n.links[n.links.length-1].displayOrder+5);n.links.push(t);i.updateLink(t,n);n.newLink={}};i.updateLink=function(t,u){if(t.changed){var f=s(t.url);t.url=f;t.pendingUpdate?t.updateQueued||(t.updateQueued=!0,t.pendingUpdate.then(function(){t.updateQueued=!1;t.pendingUpdate=null;t.changed=!0;i.updateLink(t,u)})):t.pendingUpdate=r.post(n.updateLinkUrl,{id:t.id,name:t.name,url:t.url,displayOrder:t.displayOrder,categoryId:u.id}).then(function(n){var i=n.data;i.success&&(t.id=i.result.id)});t.changed=!1}}}]),function(t,r){i.value("linkData",r);n.bootstrap(t,[i.name])}});define("projects/member-list",["jquery","angular"],function(n,t){var i=t.module("MemberListApp",[]);return i.controller("MemberListController",["members","$scope",function(n,t){t.members=n;t.columns=[[],[],[]];t.pageSize=30;t.currentPage=0;t.getColumns=function(){var i,r,n;if(t.columns.pageNumber!=t.currentPage||t.columns.searchText!=t.searchText){for(n=0;n<t.columns.length;n++)t.columns[n].splice(0,t.columns[n].length);for(t.columns.pageNumber=t.currentPage,t.columns.searchText=t.searchText,i=[],n=0;n<t.members.length;n++)(!t.searchText||t.members[n].name.toLowerCase().indexOf(t.searchText.toLowerCase())>-1)&&i.push(t.members[n]);for(t.totalPages=Math.ceil(i.length/t.pageSize),r=t.pageSize*t.currentPage,n=r;n<r+t.pageSize&&n<i.length;n++)t.columns[n%t.columns.length].push(i[n])}return t.columns};t.getPageRange=function(){var f=t.currentPage,o=t.totalPages,u=o-1,e=[],n=f-5,i=f+5,r;for(n<0&&(i=i+-n,n=0),i>u&&(n=n-(i-u),n=Math.max(0,n),i=u),r=n;r<=i;r++)e.push(r);return e};t.setPage=function(n){n=Math.max(0,n);n=Math.min(n,t.totalPages-1);t.currentPage=n}}]),function(n,r){i.value("members",r);t.bootstrap(n,[i.name])}});require.config({paths:{ZeroClipboard:"/js/ZeroClipboard/ZeroClipboard"}});require(["jquery","projects/join","social/event-tracker","ZeroClipboard","common/pageInit"],function(n,t,i,r,u){"use strict";r.config({hoverClass:"hover",activeClass:"active"});n(function(){var e=n("#joinRequestBtn").data("url"),o=n("#signInBtn").data("url"),s=n("#signInBtn").data("join-url"),f;t("#joinModals",e,o,s);f=new i(n(window));n(".pj-nav a").on("click",function(){f.trackEvent(n(this))});n("#gf-donate-link").on("click",function(){f.trackEvent(n(this))});n(".admin-list").on("click",".admin-name",function(){var f=n(this).parents(".admin-contact-panel").first(),i=f.find(".admin-email-info"),t,u;if(!i.is(":visible")){i.show();t=f.find(".copy-button");u=new r(t);u.on("ready",function(){t.tooltip();u.on("aftercopy",function(){t.attr("title","Copied!").tooltip("fixTitle").tooltip("show");setTimeout(function(){t.attr("title","Copy to clipboard").tooltip("fixTitle")},1e3)})});u.on("error",function(){i.find(".input-group-btn").remove();i.find(".input-group").addClass("no-clipboard-copy")})}f.find(".email-address").click()});n(".admin-list").on("click",".admin-email-info .email-address",function(){n(this).select()});u.init()})});require(["jquery"],function(n){n(".search-box .glyphicon").on("click",function(){var t=n(this).parents(".search-box").first().find("input");t.focus()});n(".search-box input").on("change",function(){var t=n(this),i=!!t.val();i?t.addClass("has-value"):t.removeClass("has-value")});n(".search-box input").on("keyup",function(t){t.keyCode==27&&n(this).val("").blur().change()})});define("projects/surnames",["angular","jquery","class"],function(n,t){var i=n.module("SurnamesModule",[]);return i.directive("applyScrollTo",function(){return{restrict:"A",link:function(n,i){var r=!0;n.$watch("scrollTo",function(u){var e,f;r?(r=!1,e=n.scrollTo,n.scrollTo=null,setTimeout(function(){n.$apply(function(){n.scrollTo=e})},500)):u&&(f=i.find("[data-scroll-point]").filter(function(){return t(this).data("scroll-point")[0]==u}).first(),f.length&&(f[0].scrollIntoView(),n.scrollTo=null))})}}}),i.controller("SurnameController",["$scope","$http","surnameData",function(n,t,i){function o(){var t=n.searchText||"",f,e,o;if(t=t.toLowerCase(),r.searchText!==t){for(r.splice(0,r.length),u.splice(0,u.length),f=0;f<i.surnames.length;f++)e=i.surnames[f],e.lowerName.indexOf(t)>-1&&(r.push(e),o=e.lowerName[0],u.indexOf(o)==-1&&u.push(o));r.searchText=t}}var f,e,r,u;for(n.showUserSurnames=i.showUserSurnames,n.scrollTo=i.scrollTo,f=0;f<i.surnames.length;f++)e=i.surnames[f],e.index=f,e.lowerName=e.name.toLowerCase();n.hasFilterLetter=function(n){return o(),u.indexOf(n)>-1};n.setScrollTo=function(t){n.scrollTo=t};r=[];u=[];n.getSurnames=function(){return o(),r}}]),function(r,u){function f(){var n=r.find(".surnames-container"),i=t(document).height(),u=i-n.offset().top-10;n.height(u)}i.value("surnameData",u);n.bootstrap(r,[i.name]);f();t(window).on("resize",function(){f()})}})