PageSourceSearch

https://bids.consigli.com/assets/modules2/Global/app.js?v=20260925.1

js consigli.com collected 2026-09-25 21:56:44 UTC 1,152,181 bytes, 2 lines download raw bytes

1var _PJQ$constants$module,_PJQ$constants$subscr;function _regeneratorRuntime(){"use strict";_regeneratorRuntime=function(){return a};var a={},e=Object.prototype,d=e.hasOwnProperty,t="function"==typeof Symbol?Symbol:{},n=t.iterator||"@@iterator",i=t.asyncIterator||"@@asyncIterator",s=t.toStringTag||"@@toStringTag";function o(e,t,i){return Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{o({},"")}catch(e){o=function(e,t,i){return e[t]=i}}function r(e,t,i,s){var o,a,r,l,n=t&&t.prototype instanceof h?t:h,c=Object.create(n.prototype),d=new w(s||[]);return c._invoke=(o=e,a=i,r=d,l="suspendedStart",function(e,t){if("executing"===l)throw new Error("Generator is already running");if("completed"===l){if("throw"===e)throw t;return J()}for(r.method=e,r.arg=t;;){var i=r.delegate;if(i){var s=C(i,r);if(s){if(s===u)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===l)throw l="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);l="executing";var n=p(o,a,r);if("normal"===n.type){if(l=r.done?"completed":"suspendedYield",n.arg===u)continue;return{value:n.arg,done:r.done}}"throw"===n.type&&(l="completed",r.method="throw",r.arg=n.arg)}}),c}function p(e,t,i){try{return{type:"normal",arg:e.call(t,i)}}catch(e){return{type:"throw",arg:e}}}a.wrap=r;var u={};function h(){}function l(){}function c(){}var m={};o(m,n,function(){return this});var f=Object.getPrototypeOf,g=f&&f(f(_([])));g&&g!==e&&d.call(g,n)&&(m=g);var P=c.prototype=h.prototype=Object.create(m);function v(e){["next","throw","return"].forEach(function(t){o(e,t,function(e){return this._invoke(t,e)})})}function b(l,c){var t;this._invoke=function(i,s){function e(){return new c(function(e,t){!function t(e,i,s,n){var o=p(l[e],l,i);if("throw"!==o.type){var a=o.arg,r=a.value;return r&&"object"==_typeof(r)&&d.call(r,"__await")?c.resolve(r.__await).then(function(e){t("next",e,s,n)},function(e){t("throw",e,s,n)}):c.resolve(r).then(function(e){a.value=e,s(a)},function(e){return t("throw",e,s,n)})}n(o.arg)}(i,s,e,t)})}return t=t?t.then(e,e):e()}}function C(e,t){var i=e.iterator[t.method];if(void 0===i){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,C(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var s=p(i,e.iterator,t.arg);if("throw"===s.type)return t.method="throw",t.arg=s.arg,t.delegate=null,u;var n=s.arg;return n?n.done?(t[e.resultName]=n.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):n:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function y(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function S(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function w(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(y,this),this.reset(!0)}function _(t){if(t){var e=t[n];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,s=function e(){for(;++i<t.length;)if(d.call(t,i))return e.value=t[i],e.done=!1,e;return e.value=void 0,e.done=!0,e};return s.next=s}}return{next:J}}function J(){return{value:void 0,done:!0}}return o(P,"constructor",l.prototype=c),o(c,"constructor",l),l.displayName=o(c,s,"GeneratorFunction"),a.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===l||"GeneratorFunction"===(t.displayName||t.name))},a.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,o(e,s,"GeneratorFunction")),e.prototype=Object.create(P),e},a.awrap=function(e){return{__await:e}},v(b.prototype),o(b.prototype,i,function(){return this}),a.AsyncIterator=b,a.async=function(e,t,i,s,n){void 0===n&&(n=Promise);var o=new b(r(e,t,i,s),n);return a.isGeneratorFunction(t)?o:o.next().then(function(e){return e.done?e.value:o.next()})},v(P),o(P,s,"Generator"),o(P,n,function(){return this}),o(P,"toString",function(){return"[object Generator]"}),a.keys=function(i){var s=[];for(var e in i)s.push(e);return s.reverse(),function e(){for(;s.length;){var t=s.pop();if(t in i)return e.value=t,e.done=!1,e}return e.done=!0,e}},a.values=_,w.prototype={constructor:w,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEac
1h(S),!e)for(var t in this)"t"===t.charAt(0)&&d.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(i){if(this.done)throw i;var s=this;function e(e,t){return o.type="throw",o.arg=i,s.next=e,t&&(s.method="next",s.arg=void 0),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var n=this.tryEntries[t],o=n.completion;if("root"===n.tryLoc)return e("end");if(n.tryLoc<=this.prev){var a=d.call(n,"catchLoc"),r=d.call(n,"finallyLoc");if(a&&r){if(this.prev<n.catchLoc)return e(n.catchLoc,!0);if(this.prev<n.finallyLoc)return e(n.finallyLoc)}else if(a){if(this.prev<n.catchLoc)return e(n.catchLoc,!0)}else{if(!r)throw new Error("try statement without catch or finally");if(this.prev<n.finallyLoc)return e(n.finallyLoc)}}}},abrupt:function(e,t){for(var i=this.tryEntries.length-1;0<=i;--i){var s=this.tryEntries[i];if(s.tryLoc<=this.prev&&d.call(s,"finallyLoc")&&this.prev<s.finallyLoc){var n=s;break}}n&&("break"===e||"continue"===e)&&n.tryLoc<=t&&t<=n.finallyLoc&&(n=null);var o=n?n.completion:{};return o.type=e,o.arg=t,n?(this.method="next",this.next=n.finallyLoc,u):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),u},finish:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var i=this.tryEntries[t];if(i.finallyLoc===e)return this.complete(i.completion,i.afterLoc),S(i),u}},catch:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var i=this.tryEntries[t];if(i.tryLoc===e){var s=i.completion;if("throw"===s.type){var n=s.arg;S(i)}return n}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,i){return this.delegate={iterator:_(e),resultName:t,nextLoc:i},"next"===this.method&&(this.arg=void 0),u}},a}function asyncGeneratorStep(e,t,i,s,n,o,a){try{var r=e[o](a),l=r.value}catch(e){return void i(e)}r.done?t(l):Promise.resolve(l).then(s,n)}function _asyncToGenerator(r){return function(){var e=this,a=arguments;return new Promise(function(t,i){var s=r.apply(e,a);function n(e){asyncGeneratorStep(s,t,i,n,o,"next",e)}function o(e){asyncGeneratorStep(s,t,i,n,o,"throw",e)}n(void 0)})}}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function _createClass(e,t,i){return t&&_defineProperties(e.prototype,t),i&&_defineProperties(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,s=new Array(t);i<t;i++)s[i]=e[i];return s}function _iterableToArrayLimit(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var s,n,o=[],a=!0,r=!1;try{for(i=i.call(e);!(a=(s=i.next()).done)&&(o.push(s.value),!t||o.length!==t);a=!0);}catch(e){r=!0,n=e}finally{try{a||null==i.return||i.return()}finally{if(r)throw n}}return o}}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var PJQ=PJQ||{};PJQ.helpers={getMobileOS:function(){var e=navigator.userAgent||navigator.vendor||window.opera;return/android/i.test(e)?"android":/iPad|iPhone|iPod/.test(e)&&!window.MSStream?"ios":null},setViewport:function(e){var t=document.getElementById("viewport");null!=t&&t.remove();var i=document.getElementsByName("viewport");if(i&&0<i.length)for(var s=0;s<i.length;s++)"function"==typeof i[s].remove&&i[s].remove();if(null!=e){var n=document.createElement("meta");n.id="viewport",n.name="viewport",n.content=e,document.getElementsByTagName("head")[0].appendChild(n)}},domReadyHelper:function(){if("function"==typeof $){$("#Form").submit(function(e){e.preventDefault()});
1var e=$(".skin-header"),t=PJQ.app.$el;if(0<_.size(e)){t.css({top:e.height(),bottom:0,left:0,position:"fixed","overflow-y":"auto"});var i=$(".skin-footer");0<_.size(i)&&t.css("bottom",i.height())}window.getParameterByName=function(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(location.search);return null===t?"":decodeURIComponent(t[1].replace(/\+/g," "))},window.processUpload=function(e,t,i){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files"},{endpoint:"processupload",value:e}],[{parameter:"folderId",value:i}]),isApi2:!0}).post().done(_.bind(function(e){jQuery("#dlg-uplc").click(),"function"==typeof FileUploadCallback&&FileUploadCallback()},this))},$.extend({form:function(e,t,i){null==i&&(i="POST"),null==t&&(t={});var o=$("<form>").attr({method:i,action:e}).css({display:"none"}),s=function e(t,i){if($.isArray(i))for(var s=0;s<i.length;s++){e(t+"[]",i[s])}else if("object"===_typeof(i))for(var n in i)i.hasOwnProperty(n)&&e(t+"["+n+"]",i[n]);else null!=i&&o.append($("<input>").attr({type:"hidden",name:String(t),value:String(i)}))};for(var n in t)t.hasOwnProperty(n)&&s(n,t[n]);return o.appendTo("body")}}),"object"===_typeof($.ui)&&("function"==typeof $.ui.dialog&&$.widget("ui.dialog",$.extend({},$.ui.dialog.prototype,{_title:function(e){this.options.title?e.html(this.options.title):e.html("&#160;")}})),"object"===_typeof($.views)&&$.views.helpers({formatPhone:function(e){return 10==e.length?e.substring(0,3)+"-"+e.substring(3,6)+"-"+e.substring(6):e},formatNewsfeedName:function(e){var t=e.substring(e.indexOf("{")+1);return t.substring(0,t.indexOf("|"))},formatNewsfeed:function(e){return-1==e.indexOf("}")?e:e.substring(e.lastIndexOf("}")+1)},formatDate:function(e){var t=new Date(parseInt(e.substr(6)));return dateFormat(t,"dddd, mmmm d, yyyy @ h:MM:ss TT Z")},parseDate:function(e){if(!e||"n/a"===e.toLowerCase())return"N/A";var t=new Date(e);return dateFormat(t,"mm/dd/yyyy")},isTooOld:function(e){if(!e)return!0;var t=new Date(parseInt(e.substr(6)));return 5<(new Date-t)%864e5%36e5/6e4},parseDateDT:function(e){if(!e||0==e.trim().length)return"";-1!=e.indexOf(" ")&&(e=e.substring(0,e.indexOf(" ")));var t=new Date(e);return PJQ.helpers.dateHelpers.getDateString(t,PJQ.helpers.dateHelpers.dateFormats.DATE)},parseTimeDT:function(e){return e?-1==e.indexOf("AM")&&-1==e.indexOf("PM")?"":e.substring(e.indexOf(" ")+1):""},isLast:function(){return this.index==this.parent.data.length-1},notLast:function(){return this.index!==this.parent.data.length-1}})),"object"===_typeof($.blueimp)&&($.blueimp.fileupload.prototype._initProgressListener=function(i){var s=this,e=i.xhr?i.xhr():jQuery.ajaxSettings.xhr();e.upload&&(jQuery(e.upload).bind("progress",function(e){var t=e.originalEvent;e.lengthComputable=t.lengthComputable,e.loaded=t.loaded,e.total=t.total,s._onProgress(e,i)}),i.xhr=function(){return e})})}}},PJQ.helpers.dateHelpers={dateFormats:{URL_DATE:"MM-dd-yyyy",DATE_TIME:"MM/dd/yyyy hh:mm TT",TIME:"hh:mm TT",DATE:"MM/dd/yyyy",DATE_MONTH_DAY:"MM/dd",DATE_YMD:"yyyy-MM-dd",MONTH_YEAR:"MMMM yyyy",MONTH_DAY_SHORT:"MMM dd",datePicker:{DATE_TIME:"MM/DD/YYYY hh:mm A",DATE:"MM/DD/YYYY",ALT_DATE:"MM-DD-YYYY"}},getTimezoneByOffset:function(e){for(var t in this.timezones)if(this.timezones[t].offset===e)return t;return null},getFormattedTimezoneOffset:function(e){var t=60*e,i=function(e){return(e<10?"0":"")+e};return(0<=t?"+":"-")+i(Math.floor(Math.abs(t)/60))+":"+i(Math.abs(t)%60)},timezones:{ACST:{name:"AUS Central Standard Time",abbr:"ACST",offset:9.5},ADT:{name:"Azerbaijan Standard Time",abbr:"ADT",offset:5},AEST:{name:"AUS Eastern Standard Time",abbr:"AEST",offset:10},AKDT:{name:"Alaskan Standard Time",abbr:"AKDT",offset:-8},AST:{name:"Afghanistan Standard Time",abbr:"AST",offset:4.5},BST:{name:"Bangladesh Standard Time",abbr:"BST",offset:6},CAST:{name:"Cen. Australia Standard Time",abbr:"CAST",offset:9.5},CBST:{name:"Central Brazilian Standard Time",abbr:"CBST",offset:-4},CST:{name:"Central Standard Time",abbr:"CST",offset:-6},CDT:{name:"Central Daylight Time",abbr:"CDT",offset:-5},CEDT:{name:"Central European Standard Time",abbr:"CEDT",offset:2},CPST:{name:"Central Pacific Standard Time",abbr:"CPST",offset:11},CVST:{name:"Cape Verde Standard Time",abbr:"CVST",offset:-1},DST:{name:"Dateline Standard Time",abbr:"DST",offset:-12},EAST:{name:"E. Australia Standard Time",abbr:"EAST",offset:10},EDT:{name:"Eastern Daylight Time",abbr:"EST",offset:-4},EST:{name:"Eastern Standard Time",abbr:"EST",offset:-5},EEDT:{name:"E. Europe Standard Time",abbr:"EEDT",offset:3},ESAST:{name:"E. South America Standard Time",abbr:"ESAST",offset:-3},FDT:{name:"FLE Standard Time",abbr:"FDT",offset:3},FST:{name:"Fiji Standard Time",abbr:"FST",offset:12},GDT:{name:"GTB Standard Time",abbr:"GDT",offset:3},GET:{name:"Georgian Standard Time",abbr:"GET",offset:4},GMT:{name:"GMT Standard Time",abbr:"GMT",offset:0},GST:{name:"Greenwich Standard Time",abbr:"GST",offset:0},HST:{name:"Hawaiian Standard Time",abbr:"HST",offset:-10},IDT:{name:"Iran Standard Time",abbr:"IDT",offset:4.5},IST:{name:"India Standard Time",abbr:"IST",offset:5.5},JDT:{name:"Israel Standard Time",abbr:"JDT",offset:3},JST:{name:"Japan Standard Time",abbr:"JST",offset:9},KDT:{name:"Kamchatka Standard Time",abbr:"KDT",offset:13},KST:{name:"Korea Standard Time",abbr:"KST",offset:9},LST:{name:"Libya Standard Time",abbr:"LST",offset:2},MEDT:{name:"Middle East Standard Time",abbr:"MEDT",offset:3},MPST:{name:"Singapore Standard Time",abbr:"MPST",offset:8},MSK:{name:"Moscow Standard Time",abbr:"MSK",offset:3},MDT:{name:"Mountain Daylight Time",abbr:"MDT",offset:-6},MST:{name:"Mountain Standard Time",abbr:"MST",offset:-7}
1,NAEST:{name:"North Asia East Standard Time",abbr:"NAEST",offset:8},NAST:{name:"North Asia Standard Time",abbr:"NAST",offset:8},NCAST:{name:"N. Central Asia Standard Time",abbr:"NCAST",offset:7},NDT:{name:"Newfoundland Standard Time",abbr:"NDT",offset:-2.5},NST:{name:"Nepal Standard Time",abbr:"NST",offset:5.75},NZST:{name:"New Zealand Standard Time",abbr:"NZST",offset:12},PDT:{name:"Pacific Daylight Time",abbr:"PDT",offset:-7},PKT:{name:"Pakistan Standard Time",abbr:"PKT",offset:5},PSST:{name:"Pacific SA Standard Time",abbr:"PSST",offset:-4},PST:{name:"Pacific Standard Time",abbr:"PST",offset:-8},PYT:{name:"Paraguay Standard Time",abbr:"PYT",offset:-4},RDT:{name:"Romance Standard Time",abbr:"RDT",offset:2},SAMT:{name:"Samara Time",abbr:"SAMT",offset:4},SAST:{name:"SE Asia Standard Time",abbr:"SAST",offset:7},SDT:{name:"Syria Standard Time",abbr:"SDT",offset:3},SEST:{name:"SA Eastern Standard Time",abbr:"SEST",offset:-3},SLST:{name:"Sri Lanka Standard Time",abbr:"SLST",offset:5.5},SPST:{name:"SA Pacific Standard Time",abbr:"SPST",offset:-5},SST:{name:"Samoa Standard Time",abbr:"SST",offset:13},SWST:{name:"SA Western Standard Time",abbr:"SWST",offset:-4},TDT:{name:"Turkey Standard Time",abbr:"TDT",offset:3},TST:{name:"Tonga Standard Time",abbr:"TST",offset:13},UST:{name:"Ulaanbaatar Standard Time",abbr:"UST",offset:8},UTC:{name:"UTC",abbr:"UTC",offset:0},VST:{name:"Vladivostok Standard Time",abbr:"VST",offset:11},WAST:{name:"W. Australia Standard Time",abbr:"WAST",offset:8},WCAST:{name:"W. Central Africa Standard Time",abbr:"WCAST",offset:1},WEDT:{name:"W. Europe Standard Time",abbr:"WEDT",offset:2},WPST:{name:"West Pacific Standard Time",abbr:"WPST",offset:10},YEKT:{name:"Yekaterinburg Time",abbr:"YEKT",offset:5},YST:{name:"Yakutsk Standard Time",abbr:"YST",offset:9}},parseDateString:function(e){var t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];return 0<_.size(e)?new Date(t||-1===e.indexOf("Z")?e:e.slice(0,-1)):e},GetDaysInMonth:function(e,t){return/8|3|5|10/.test(--e)?30:1==e?(t%4||!(t%100))&&t%400?28:29:31},tryParseDateString:function(e){var t=new Date(e);return"[object Date]"===Object.prototype.toString.call(t)?isNaN(t.getTime())?null:t:null},getDayName:function(e){return e<0||6<e?"Invalid day number":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][e]},getWeekBounds:function(e){var t=new Date(e),i=t.getUTCDate()-t.getUTCDay(),s=t.getUTCDate()+(6-t.getUTCDay());return{start:new Date(t.setUTCDate(i)),end:new Date(t.setUTCDate(s))}},getCurrentMonth:function(){return(new Date).getMonth()+1},getCurrentYear:function(){return(new Date).getFullYear()},getTimeStats:function(e,t){var i=Date.parse(e)-Date.parse(t),s=Math.floor(i/PJQ.constants.time.millis.ONE_MINUTE),n=Math.floor(s%50),o=Math.floor(i/1e3/60),a=Math.floor(o%60),r=Math.floor(i/PJQ.constants.time.millis.ONE_HOUR),l=Math.floor(r%24),c=Math.floor(i/PJQ.constants.time.millis.ONE_DAY),d=Math.floor(c%30),p=Math.floor(i/PJQ.constants.time.millis.ONE_MONTH),u=Math.floor(p%12);return{years:Math.floor(i/PJQ.constants.time.millis.ONE_YEAR),months:u,totalMonths:p,days:d,totalDays:c,hours:l,totalHours:r,minutes:a,totalMinutes:o,seconds:n,totalSeconds:s,totalMillis:i}},getTimeString:function(e){if(null==e)return"";var t=e.toLocaleTimeString("en-US",{hour12:!1}).split(":");return t[0]=t[0]<24?t[0]:0,t[0]=t[0]<10?"0"+t[0]:t[0],"".concat(t[0],":").concat(t[1],":").concat(t[2])},getMinutesFromHoursDecimal:function(e){var t=Math.floor(e),i=60*(e-t);return 60*t+Math.round(i)},getCountdownString:function(e){var t="";return 0<(e=this.getTimeStats(e,new Date)).days&&(t+=e.days+"d "),(0<e.hours||0<e.days)&&(t+=e.hours+"h "),(0<e.minutes||0<e.hours||0<e.days)&&(t+=e.minutes+"m "),t+=e.seconds+"s"},checkDateIsBeforeToday:function(e){if(!e)return!0;var t=new Date(e);t.setHours(0,0,0,0);var i=new Date;return i.setHours(0,0,0,0),t<i},checkDateBetweenDays:function(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Date;return i.getTime()<=t.getTime()&&i.getTime()>=e.getTime()},checkDateRangesOverlap:function(e,t,i,s){return e=new Date(e),t=new Date(t),i=new Date(i),s=new Date(s),e<=i&&i<=t||(e<=s&&s<=t||i<e&&t<s)},getFromNowString:function(e){return moment(new Date(e)).fromNow()},getTimeElapsed:function(e){return this.getTimeStats(new Date,e)},getTimeRemaining:function(e){return this.getTimeStats(e,new Date)},getNewDateAddMilliseconds:function(e,t){return e?(e=new Date(e),new Date(e.setTime(e.getTime()+t))):e},getNewDateAddSeconds:function(e,t){return this.getNewDateAddMilliseconds(e,1e3*t)},getNewDateAddHours:function(e,t){return this.getNewDateAddMilliseconds(e,t*PJQ.constants.time.millis.ONE_HOUR)},getNewDateAddDays:function(e,t){var i=2<arguments.length&&void 0!==arguments[2]&&arguments[2];if(t-=3<arguments.length&&void 0!==arguments[3]&&arguments[3]?1:0,i){var s=new Date(e),n=s.getDay();return s.setDate(s.getDate()+t+(6===n?2:+!n)+2*Math.floor((t-1+(n%6||1))/5)),s}return this.getNewDateAddMilliseconds(e,t*PJQ.constants.time.millis.ONE_DAY)},getDateMillisecondsDiff:function(e,t){return this.getDateDiff(e,t,"milliseconds")},getDateSecondsDiff:function(e,t){return this.getDateDiff(e,t,"seconds")},getDateMinutesDiff:function(e,t){return this.getDateDiff(e,t,"minutes")},getDateHoursDiff:function(e,t){return this.getDateDiff(e,t,"hours")},getDateDaysDiff:function(e,t,i){var s=3<arguments.length&&void 0!==arguments[3]&&arguments[3];if(i){for(var n=0,o=new Date(t);o<=e;)0!==o.getDay()&&6!==o.getDay()&&n++,o=o.addDays(1);return n}return this.getDateDiff(e,t,"days")+(s?1:0)},getDateDiff:function(e,t,i){e=null==e?new Date:e,t=null==t?new Date:t;var s=parseInt(e.getTime()-t.getTime()),n=0;switch(i){case"days":n=s/PJQ.constants.time.millis.ONE_DAY;break;case"hours":n=s/PJQ.constants.time.millis.ONE_HOUR;break;case"minutes":n=s/PJQ.constants.time.millis.ONE_MINUTE;break;case"seconds":n=s/PJQ.constants.time.millis.ONE_SECOND;break;default:n=s}return n=Math.floor(isNaN(n)?0:n)},checkTimesDifferent:function(e,t){var i=2<arguments.length&&void 0!==arguments[2]&&arguments[2];return e.getHours()!==t.getHours()||e.getMinutes()!==t.getMinutes()||i&&e.getSeconds()!==t.getSeconds()},getDateDiffString:function(e){var t=new Date,i=this.getDateMinutesDiff(e||t,t),s=Math.floor(i/60),n=i%60;return 0<s?s+"hrs "+n+"min":n+"min"},validateDate:function(e,t){var i=(e=e.replace(/-/g,"/")).split("/"),s=0,n=0,o=0;if(null==t||""==t||"mdy"==t.toLowerCase()){if(0==/^\d{1,2}?\/\d{1,2}?\/\d{4}?$/i.test(e))return!1;n=parseInt(i[0],10),s=parseInt(i[1],10),o=parseInt(i[2],10)}else if("dmy"==t.toLowerCase()){if(0==/^\d{1,2}?\/\d{1,2}?\/\d{4}?$/i.test(e))return!1;s=parseInt(i[0],10),n=parseInt(i[1],10),o=parseInt(i[2],10)}else if("ymd"==t.toLowerCase()){if(0==/^\d{4}?\/\d{1,2}?\/\d{1,2}?$/i.test(e))return!1;o=parseInt(i[0],10),n=parseInt(i[1],10),s=parseInt(i[2],10)}if(o<1e3||3e3<o||0==n||12<n)return!1;var a=[31,28,31,30,31,30,31,31,30,31,30,31];return(o%400==0||o%100!=0&&o%4==0)&&(a[1]=29),0<s&&s<=a[n-1]},getDateString:function(e,t,i){var s=t;if(!(null==e||"date"===PJQ.helpers.objectHelpers.refinedType(e)&&isNaN(e.getTime()))){if("string"==typeof e){if(0===e.trim().length)return;e=new Date(e)}var n=["\0","January","February","March","April","May","June","July","August","September","October","November","December"],o=["�","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],a=["�","Sunday","Monday","Tuesday","Wednesday","Thursday","Frid
1ay","Saturday"],r=["�","Sun","Mon","Tue","Wed","Thu","Fri","Sat"],l=i?e.getUTCFullYear():e.getFullYear();s=(s=(s=s.replace(/(^|[^\\])yyyy+/g,"$1"+l)).replace(/(^|[^\\])yy/g,"$1"+l.toString().substr(2,2))).replace(/(^|[^\\])y/g,"$1"+l);var c=(i?e.getUTCMonth():e.getMonth())+1;s=(s=(s=(s=s.replace(/(^|[^\\])MMMM+/g,"$1"+n[0])).replace(/(^|[^\\])MMM/g,"$1"+o[0])).replace(/(^|[^\\])MM/g,"$1"+S(c))).replace(/(^|[^\\])M/g,"$1"+c);var d=i?e.getUTCDate():e.getDate();s=(s=(s=(s=s.replace(/(^|[^\\])dddd+/g,"$1"+a[0])).replace(/(^|[^\\])ddd/g,"$1"+r[0])).replace(/(^|[^\\])dd/g,"$1"+S(d))).replace(/(^|[^\\])d/g,"$1"+d);var p=i?e.getUTCHours():e.getHours(),u=12<p?p-12:0==p?12:p;s=(s=(s=(s=s.replace(/(^|[^\\])HH+/g,"$1"+S(p))).replace(/(^|[^\\])H/g,"$1"+p)).replace(/(^|[^\\])hh+/g,"$1"+S(u))).replace(/(^|[^\\])h/g,"$1"+u);var h=i?e.getUTCMinutes():e.getMinutes();s=(s=s.replace(/(^|[^\\])mm+/g,"$1"+S(h))).replace(/(^|[^\\])m/g,"$1"+h);var m=i?e.getUTCSeconds():e.getSeconds();s=(s=s.replace(/(^|[^\\])ss+/g,"$1"+S(m))).replace(/(^|[^\\])s/g,"$1"+m);var f=i?e.getUTCMilliseconds():e.getMilliseconds();s=s.replace(/(^|[^\\])fff+/g,"$1"+S(f,3)),f=Math.round(f/10),s=s.replace(/(^|[^\\])ff/g,"$1"+S(f)),f=Math.round(f/10);var g=p<12?"AM":"PM";s=(s=(s=s.replace(/(^|[^\\])f/g,"$1"+f)).replace(/(^|[^\\])TT+/g,"$1"+g)).replace(/(^|[^\\])T/g,"$1"+g.charAt(0));var P=g.toLowerCase();s=(s=s.replace(/(^|[^\\])tt+/g,"$1"+P)).replace(/(^|[^\\])t/g,"$1"+P.charAt(0));var v=-e.getTimezoneOffset(),b=i||!v?"Z":0<v?"+":"-";if(!i){var C=(v=Math.abs(v))%60;b+=S(Math.floor(v/60))+":"+S(C)}s=s.replace(/(^|[^\\])K/g,"$1"+b);var y=(i?e.getUTCDay():e.getDay())+1;return s=(s=(s=(s=(s=s.replace(new RegExp(a[0],"g"),a[y])).replace(new RegExp(r[0],"g"),r[y])).replace(new RegExp(n[0],"g"),n[c])).replace(new RegExp(o[0],"g"),o[c])).replace(/\\(.)/g,"$1")}function S(e,t){var i=e+"";for(t=t||2;i.length<t;)i="0"+i;return i}}},PJQ.helpers.timerHelpers={createCountdownTimer:function(e,t,i){if(e){var s=PJQ.helpers.dateHelpers.getTimeRemaining(t);if(this.createTimerElement(e,t),0<s.totalMillis)var n=setInterval(_.bind(function(){0<(s=PJQ.helpers.dateHelpers.getTimeRemaining(t)).totalMillis?this.createTimerElement(e,t):(clearInterval(n),i&&i(e))},this),1e3)}return interval},createElapsedTimer:function(e,t){if(e){PJQ.helpers.dateHelpers.getTimeElapsed(t);this.createTimerElement(e,t);setInterval(_.bind(function(){PJQ.helpers.dateHelpers.getTimeElapsed(t),this.createTimerElement(e,t)},this),1e3)}return interval},createTimerElement:function(e,t){e.html(PJQ.helpers.dateHelpers.getCountdownString(t))}},PJQ.helpers.validators={validatePhone:function(e){return 10<=e.replace(/-/g,"").replace("(","").replace(")","").replace(" ","").length||"na"===e.replace("/","").toLowerCase()},validateZip:function(e){return/(^\d{5}$)|(^\d{5}-\d{4}$)/.test(e)||/^[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d$/.test(e)},validateEmail:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=null,s=new RegExp("^[A-Z0-9._%'-]+\\+?[A-Z0-9]{0,20}@[A-Z0-9.-]+\\.[A-Z]{2,20}$","i");return t?-1!==e.indexOf(";")?_.every(e.split(";"),function(e){return!(!(e=e.replace(" ",""))||!s.test(e))||!(i="INVALID")}):-1!==e.indexOf(",")?_.every(e.split(","),function(e){return!(!(e=e.replace(" ",""))||!s.test(e))||!(i="INVALID")}):s.test(e)||(i="INVALID"):-1!==e.indexOf(";")||-1!==e.indexOf(",")?i="MULTIPLE":s.test(e)||(i="INVALID"),{success:null===i,error:i}}},PJQ.helpers.formatHelpers={getOrdinalSuffix:function(e){var t=e%10,i=e%100;return 1===t&&11!==i?e+"st":2===t&&12!==i?e+"nd":3===t&&13!==i?e+"rd":e+"th"},upperCaseFirstLetterEachWord:function(e){return e.replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})},upperCaseFirstLetter:function(e){return e.charAt(0).toUpperCase()+e.slice(1)},lowerCaseFirstLetter:function(e){return e.charAt(0).toLowerCase()+e.slice(1)},formatPhoneNumber:function(e,t){var i=(""+e).replace(/\D/g,"").match(/^(\d{3})(\d{3})(\d{4})$/),s=i?"("+i[1]+") "+i[2]+"-"+i[3]:null;return t&&(s='<a class="phone-link" href="tel:'+s+'">'+s+"</a>"),s},numbersOnly:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1];return 2<arguments.length&&void 0!==arguments[2]&&arguments[2]?null!=e?e.toString().replace(new RegExp("[^0-9-]","g"),""):"":t?null!=e?e.toString().replace(new RegExp("[^0-9.]","g"),""):"":null!=e?e.toString().replace(new RegExp("[^0-9]","g"),""):""},alphanumericOnly:function(e){return null!=e?e.toString().replace(new RegExp("[^a-z0-9]","gi"),""):""},formatPercent:function(e){var t="0";return null!=e&&(t=this.numbersOnly(e,!0),isNaN(parseInt(t))&&(t="0")),t+"%"}
1,formatDecimal:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:2;return(null==e||isNaN(e))&&(e=0),e.toFixed(t)},formatZip:function(e){return e=this.alphanumericOnly(e),6===_.size(e)?e.substr(0,3).toUpperCase()+"-"+e.substr(3,6).toUpperCase():e},numberToWords:function(e){if(0===e)return"zero";for(var t=["one","two","three","four","five","six","seven","eight","nine"],i=["ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"],s=["eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"],n=["","thousand","million","billion"],o="",a=0;0<e;){var r=e%1e3;if(e=Math.floor(e/1e3),0!==r){var l="";100<=r&&(l+=t[Math.floor(r/100)-1]+" hundred"),r%100<10?l+=(l.length&&r%100!=0?" ":"")+t[r%100-1]:r%100<20?l+=(l.length?" ":"")+s[r%100-11]:(l+=(l.length?" ":"")+i[Math.floor(r%100/10)-1],r%10!=0&&(l+="-"+t[r%10-1])),o=l+(l.length?" "+n[a]+" ":"")+o,a++}}return o.trim()},minutesToHHMM:function(e){var t=Math.floor(e/60),i=e%60;return(t<10?"0":"")+t+":"+(i<10?"0":"")+i},minutesFromHHMM:function(e){if(null==e||0===_.size(e))return 0;var t=e.split(":");return 60*parseInt(t[0],10)+parseInt(t[1],10)},formatCurrency:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:2,i=!(2<arguments.length&&void 0!==arguments[2])||arguments[2];return(null==e||isNaN(e))&&(e=0),(i?"$":"")+(e/100).toFixed(t).toString().replace(PJQ.constants.regex.CURRENCY_NO_SYMBOL,"$1,")},getCentsDisplay:function(e){return e%100<10?"0"+(e%100).toString():(e%100).toString()},getDollarsDisplay:function(e){return Math.floor(e/100).toString()},getTotalCents:function(e,t){return"string"==typeof e?e=parseInt(e):"number"!=typeof e&&(e=0),e*=100,"string"==typeof t?t=parseInt(t):"number"!=typeof t&&(t=0),e<0&&(t*=-1),e+t},convertNLtoBR:function(e){return"string"==typeof e?e.replace(/(?:\r\n|\r|\n)/g,"<br />"):e}},PJQ.helpers.inputHelpers={getMoneyInputValue:function(e){var t=e.find(".input-dollars-full");0===_.size(t)&&e.hasClass("input-dollars-full")?t=e:e.hasClass("input-decimal")&&(t=e);var i=0;if(0<_.size(t)){var s=t.val().toString().split(".");s.length<2?s[1]="00":1===s[1].trim().length?s[1]=s[1]+"0":0===s[1].trim().length&&(s[1]="00"),i=parseInt(PJQ.helpers.formatHelpers.numbersOnly(s[0]+s[1],!0,!0))}else{var n=e.find(".input-dollars"),o=e.find(".input-cents"),a=0<_.size(n)?n.val():"0",r="00";if(0<_.size(o)){if(0===_.size(n.val())&&0===_.size(o.val()))return null;r=o.val(),_.size(r)<2&&(r=(1===_.size(r)?"0":"00")+r.toString())}else if(0===_.size(n.val()))return null;i=parseFloat(PJQ.helpers.formatHelpers.numbersOnly(a,!1,!0)+PJQ.helpers.formatHelpers.numbersOnly(r))}return isNaN(i)?0:i},getNumberInputValue:function(e){var t=parseInt(PJQ.helpers.formatHelpers.numbersOnly(e.val(),!1,!0));return isNaN(t)?null:t},getPercentInputValue:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=e.val().replace("%","");if(""===i)return i;var s=i.toString().split(".");return s.length<2?s[1]="00":1===s[1].trim().length?s[1]=s[1]+"0":0===s[1].trim().length&&(s[1]="00"),t?parseInt(PJQ.helpers.formatHelpers.numbersOnly(s[0]+s[1]))/100:parseInt(PJQ.helpers.formatHelpers.numbersOnly(s[0]+s[1]))},getPhoneInputValue:function(e){return PJQ.helpers.formatHelpers.numbersOnly(e.val())},getElementNodeType:function(e){return e.prop("nodeName").toLowerCase()},attachNumericInputMinMax:function(t,i,s,n){t.on("change",function(){var e=t.val();i&&e<i?e=i:s&&s<e&&(e=s),t.val(e),"function"==typeof n&&n(e)})},inputMaxLength:function(e,t){-1!==$.inArray(e.keyCode,[46,8,9,27,13,110])||190==e.keyCode&&allowPeriods||65==e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||67==e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||88==e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||35<=e.keyCode&&e.keyCode<=39||$(e.currentTarget).val().length>=(isNaN(t)?1:t)&&e.preventDefault()},numbersOnly:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=2<arguments.length&&void 0!==arguments[2]&&arguments[2];if("keyup"===e.type){var s=$(e.target);s.val(PJQ.helpers.formatHelpers.numbersOnly(s.val()))}else{if(-1!==$.inArray(e.keyCode,[46,8,9,27,13,110])||(190===e.keyCode||110===e.ke
1yCode)&&t||(109===e.keyCode||189===e.keyCode)&&i||65===e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||67===e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||88===e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||86===e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||35<=e.keyCode&&e.keyCode<=39)return;(e.shiftKey||e.keyCode<48||57<e.keyCode)&&(e.keyCode<96||105<e.keyCode)&&e.preventDefault()}},numbersAndSingleDecimalOnly:function(e){return this.numbersOnly(e,!0)},allowZip:function(e,t){t=null!=t&&"ca"===t.toLowerCase()?"ca":"us",-1!==$.inArray(e.keyCode,[46,8,9,27,13,110])||190==e.keyCode&&allowPeriods||65==e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||67==e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||88==e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||35<=e.keyCode&&e.keyCode<=39||("us"===t&&(e.shiftKey||e.keyCode<48||57<e.keyCode)&&(e.keyCode<96||105<e.keyCode)&&e.preventDefault(),$(e.currentTarget).val().replace("-","").length>=("ca"===t?7:5)&&e.preventDefault())},setInputError:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(!(null==e||e.length<=0)){var s=this.getElementNodeType(e);if("input"===s||"textarea"===s)t?e.removeClass("p-field-error"):0!=i.isHighlightInput&&e.addClass("p-field-error");else if("select"===s){var n=e.siblings(".dropdown-toggle").eq(0);0<n.length&&(t?n.removeClass("p-field-error"):n.addClass("p-field-error"))}else if(e.hasClass("bootstrap-select")){var o=e.find(".dropdown-toggle");0<o.length&&(t?o.removeClass("p-field-error"):o.addClass("p-field-error"))}var a,r=e.data("errSrc");if(0<_.size(r)&&($('div[data-err="'+r+'"]').remove(),e.removeData("errSrc")),0<_.size(i.errorText))a="select"===s?e.closest(".btn-group"):e.closest(".input-group"),0===_.size(a)?(a=e.closest(".form-group").find("label"),0<_.size(a)&&a.append($("<span>",{class:"fs-14 text-danger ml-1 wd-100 font-weight-light ml-2"}).html(i.errorText))):(r=_.uniqueId(),e.data("errSrc",r),a.append($("<div>",{class:"fs-14 text-danger ml-1 wd-100 font-weight-light","data-err":r}).html(i.errorText))),_.size(a)}},inputMaskPhone:function(e){e.inputmask("(999) 999-9999",{placeholder:""})},inputMaskZip:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"us";e.inputmask(t&&"ca"==t.toLowerCase()?"A9A-9A9":"99999",{placeholder:""})},inputMaskCurrency:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]&&arguments[2];e.inputmask({alias:"currency",prefix:i?"$":"",digits:t,placeholder:" ",clearMaskOnLostFocus:!0,rightAlign:!1,allowMinus:!0})},inputMaskHours:function(e){e.inputmask("99:59",{mask:"99:59",placeholder:"00:00",definitions:{9:{validator:"[0-9]",cardinality:1},5:{validator:"[0-5]",cardinality:1}},insertMode:!1,showMaskOnHover:!1,positionCaretOnClick:"select"}).off("focus.tei").on("focus.tei",function(){this.setSelectionRange(0,1)}).on("input",function(){2===this.selectionStart&&this.setSelectionRange(3,4)})},inputMaskPercent:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]&&arguments[2];e.inputmask({alias:"currency",suffix:i?"%":"",digits:t,placeholder:" ",clearMaskOnLostFocus:!0,rightAlign:!1,allowMinus:!0})},inputMaskCreditCard:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;e.inputmask("9999 9999 9999 9999",{alias:"cc",digits:t,placeholder:"",rightAlign:!1})},inputMaskDecimal:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;e.inputmask({alias:"currency",prefix:"",digits:t,placeholder:" ",clearMaskOnLostFocus:!0,rightAlign:!1})},inputMaskInteger:function(e){e.inputmask({alias:"currency",prefix:"",digits:0,placeholder:" ",clearMaskOnLostFocus:!0,rightAlign:!1})}},PJQ.helpers.bidForms={lineItemTypes:[{name:"Sum",abbreviation:"Sum"},{name:"Each",abbreviation:"Ea."},{name:"Square Feet",abbreviation:"Sq.Ft."},{name:"Linear Feet",abbreviation:"Ln.Ft."},{name:"Cubic Feet",abbreviation:"Cu.Ft."},{name:"Square Yards",abbreviation:"Sq.Yd."},{name:"Linear Yards",abbreviation:"Ln.Yd."},{name:"Cubic Yards",abbreviation:"Cu.Yd."},{name:"Acres",abbreviation:"Acres"},{name:"Hours",abbreviation:"Hrs"},{name:"Days",abbreviation:"Days"},{name:"Pounds",abbreviation:"Lbs."},{name:"Tons",abbreviation:"Tons"}],lineItemQuestionTypes:["Yes/No","Text","Textarea","Numeric","Date","Date/Time"],alternateTypes:[{name:"Sum",abbreviation:"Sum"},{name:"Each",abbreviation:"Ea."},{name:"Square Feet",abbreviation:"Sq.Ft."},{name:"Linear Feet",abbreviation:"Ln.Ft."},{name:"Cubic Feet",abbreviation:"Cu.Ft."},{name:"Square Yards",abbreviation:"Sq.Yd."},{name:"Linear Yards",abbreviation:"Ln.Yd."},{name:"Cubic Yards",abbreviation:"Cu.Yd."},{name:"Acres",abbreviation:"Acres"},{name:"Hours",abbreviation:"Hrs"},{name:"Days",abbreviation:"Days"},{name:"Pounds",abbreviation:"Lbs."},{name:"Tons",abbreviation:"Tons"}],alternateQuestionTypes:["Yes/No","Text","Textarea","Numeric","Single Choice","Multiple Choice","Date","Date/Time"],acknowledgementTypes:["Yes/No","Text","Textarea","Money","Numeric","Single Choice","Multiple Choice","Date","Date/Time"],bondingTypes:["Yes/No","Text","Textarea","Money","Numeric","Single Choice","Multiple Choice","Date","Date/Time"],certificationTypes:["Yes/No","Text","Textarea","Money","Numeric","Single Choice","Multiple Choice","Date","Date/Time"],laborRateTypes:["Yes/No","Text","Textarea","Money","Numeric","Single Choice","Multiple Choice","Date","Date/Time"]},PJQ.helpers.guid=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})},PJQ.helpers.stringHelpers={format:function(e){var i=Array.prototype.slice.call(arguments,1
1);return e.replace(/{(\d+)}/g,function(e,t){return void 0!==i[t]?i[t]:e})},getLowercaseChars:function(e){return e.match(/[a-z]/g)},getUppercaseChars:function(e){return e.match(/[A-Z]/g)},getNumericChars:function(e){return e.match(/[\d]/g)},getSpecialChars:function(e){return e.match(/[^a-zA-Z\d]/g)},findMatches:function(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[],s=e.exec(t);return s&&i.push({full:s[0],group:s[1]})&&this.findMatches(e,t,i),i}},PJQ.helpers.objectHelpers={checkNested:function(e,t){for(var i=arguments.length,s=new Array(2<i?i-2:0),n=2;n<i;n++)s[n-2]=arguments[n];return void 0!==e&&null!=e&&(!(0!==_.size(s)||!e.hasOwnProperty(t))||this.checkNested.apply(this,[e[t]].concat(s)))},getNestedValue:function(e,t){return null==t||null==e?null:t.split(".").reduce(function(e,t){return e&&e[t]},e)},convertObjectCamelcase:function(n){var o=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof n?n.substring(0,1).toLowerCase()+n.substring(1):n instanceof Array?_.map(n,function(e){return"object"===_typeof(e)&&(e=this.convertObjectCamelcase(e)),e},this):(_.each(n,function(e,t){if(n.hasOwnProperty(t)){var i=this.refinedType(e),s=t.substring(0,1).toLowerCase()+t.substring(1);o[s]="object"===i||"array"===i?this.convertObjectCamelcase(e):e}},this),o)},refinedType:function(e,t){if("object"===_typeof(e)){if("[object Array]"===Object.prototype.toString.call(e))return"array";if(e instanceof Date)return"date";if(t){if(this.isBackboneModel(e))return"backboneModel";if(this.isBackboneCollection(e))return"backboneCollection"}}return _typeof(e)},isBackboneModel:function(e){return e instanceof Backbone.Model},isBackboneCollection:function(e){return e instanceof Backbone.Collection},findDistinct:function(e,i){var s=[],t=this.isBackboneCollection(e),n=t||this.isBackboneModel(e[0]);return _.each(t?e.models:e,function(t){null==_.find(s,function(e){return n?e.get(i)===t.get(i):e[i]===t[i]})&&s.push(t)}),s}},PJQ.helpers.urlHelpers={buildApiUrl:function(e){var t,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{isPascal:!1,includeSessionId:!1,includeAccessKey:!1,includeAccessToken:!1,service:null};switch(i.service){case PJQ.constants.services.ORIGIN:t=window.location.origin;break;case PJQ.constants.services.FILES:t=PJQ.app.options.fileApiUrl;break;case PJQ.constants.services.APIv2:t=PJQ.app.options.apiV2Url;break;default:t=PJQ.app.options.apiUrl}return i.isPascal&&(t+="/pascal"),t+=null==e?"":e,i.includeSessionId&&(t=this.appendSessionId(t)),i.includeAccessToken&&(t=this.appendAccessToken(t)),i.includeAccessKey&&0<_.size(PJQ.app.session.get("accessKey"))&&(t=this.appendAccessKey(t)),t},buildAPIURL:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=2<arguments.length&&void 0!==arguments[2]&&arguments[2],s=3<arguments.length&&void 0!==arguments[3]&&arguments[3],n=4<arguments.length&&void 0!==arguments[4]&&arguments[4],o=(s?PJQ.app.options.fileApiUrl:PJQ.app.options.apiUrl)+(t?"/pascal":"")+(null==e?"":e);return i&&(o=this.appendSessionId(o)),PJQ.app.options.isDebug&&(o=this.appendDebug(o)),n&&0<_.size(PJQ.app.session.get("accessKey"))&&(o=this.appendAccessKey(o)),o},appendAccessKey:function(e){return e+(-1===e.indexOf("?")?"?":"&")+"accessKey="+PJQ.app.session.get("accessKey")},appendDebug:function(e){return e+(-1===e.indexOf("?")?"?":"&")+"debug=true"},appendSessionId:function(e){return e+(-1===e.indexOf("?")?"?":"&")+"sessionId="+PJQ.app.session.get("sessionId")},appendAccessToken:function(e){var t=PJQ.app.TokenManager.getAccessToken();return null!=PJQ.app.TokenManager&&0<_.size(t)?e+(-1===e.indexOf("?")?"?":"&")+"access_token="+t:e},buildDomainURL:function(e,t){return t?PJQ.app.options.defaultPortalUrl:location.origin+(null==e?"":e)},generateEndpoint:function(e,t){var s="";_.each(e,function(e){null!=e.endpoint&&0<e.endpoint.length&&(s+="/"+e.endpoint,s+=null!=e.value?"/"+e.value.toString():"")});var n=!1;return _.each(t,function(e){if(null!=e.parameter&&0<e.parameter.length&&(!1!==e.includeIfEmpty||0<_.size(e.value)||"number"==typeof e.value||"boolean"==typeof e.value)&&null!=e.value){var t,i=PJQ.helpers.objectHelpers.refinedType(e.value);t="array"===i?e.value.join(","):"date"===i?e.value.toISOString():e.value.toString(),0<_.size(t)&&(s+=(n?"&":"?")+e.parameter+"="+encodeURIComponent(t),n=!0)}}),s},buildQueryParamRegex:function(e){return"[?&]"+e+"=([^&#]*)"},getQueryParam:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=2<arguments.length&&void 0!==arguments[2]&&arguments[2],s=t?window.location.hash:window.location.search;
1if(0<_.size(e)&&0<_.size(s)){var n=null;return(n=i?s.match(new RegExp(this.buildQueryParamRegex(e),"i")):s.toLowerCase().match(new RegExp(this.buildQueryParamRegex(e.toLowerCase()))))&&n[1].replace(/\//g,"")}return null},removeQueryParam:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=t?window.location.hash:window.location.search;if(0<_.size(e)&&0<_.size(i)){var s=new RegExp("[?&]".concat(e,"=([^&#]*)"),"i"),n=i.replace(s,"");if(t)window.location.hash=n;else{var o=window.location.pathname+n+window.location.hash;history.replaceState(null,"",o)}}},queryStringToObject:function(e){return e.split("&").reduce(function(e,t){var i=_slicedToArray(t.split("="),2),s=i[0],n=i[1];return e[s]=isNaN(+n)?n:+n,e},{})},pushState:function(e){null!=e&&null!=e.url&&("string"==typeof e.title&&(document.title=e.pageTitle),window.history.pushState({},document.title,e.url))},cleanRouteParams:function(){-1!=window.location.href.indexOf("#")&&window.history.replaceState(null,null,window.location.pathname+"#"+window.location.href.split("#")[1])},isURL:function(e){var t;try{t=new URL(e)}catch(e){return!1}return"http:"===t.protocol||"https:"===t.protocol}},PJQ.helpers.apiHelpers={isDebug:!1,getHeaders:function(e){var t={PortalId:PJQ.app.session.get("portalId"),Debug:PJQ.helpers.apiHelpers.isDebug},i=PJQ.app.TokenManager.getAccessToken();switch(0<_.size(i)&&(t.Authorization="Bearer "+i),e){case PJQ.constants.services.APIv2:break;default:var s=PJQ.app.session.get("sessionId");null!=s&&(t.SessionId=s),PJQ.app.session.contact&&0<PJQ.app.session.contact.id?t.ContactId=PJQ.app.session.contact.id:"undefined"!=typeof bbContactId&&0<bbContactId&&(t.ContactId=bbContactId),PJQ.app.session.project&&0<PJQ.app.session.project.id?t.ProjectId=PJQ.app.session.project.id:"undefined"!=typeof bbProjectId&&0<bbProjectId&&(t.ProjectId=bbProjectId);var n=PJQ.app.session.get("accessKey");null!=n&&(t.AccessKey=n);var o=PJQ.app.session.get("projectKey");null!=o&&(t.ProjectKey=o);var a=PJQ.app.session.get("contactGuid");null!=a&&(t.ContactGuid=a),null!=PJQ.app.session.systemPermissions&&(t.Perm=PJQ.app.session.systemPermissions.get("key")),null!=PJQ.app.session.project&&null!=PJQ.app.session.project.permissions&&(t.ProjectPerm=PJQ.app.session.project.permissions.get("key")),0<PJQ.app.session.get("masterUserId")&&(t.MasterUserId=PJQ.app.session.get("masterUserId"))}return t},addHeaders:function(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,s=PJQ.helpers.apiHelpers.getHeaders(t);if(null!=i)for(var n in i)this.addHeader(e,n,s[n]);for(var o in s)this.addHeader(e,o,s[o])},addHeader:function(e,t,i){null!=i&&e.setRequestHeader(t,i)}},PJQ.helpers.cookieHelpers={getCookie:function(e){for(var t=e+"=",i=document.cookie.split(";"),s=0;s<i.length;s++){for(var n=i[s];" "===n.charAt(0);)n=n.substring(1,n.length);if(0===n.indexOf(t))return n.substring(t.length,n.length)}return null},setCookie:function(e,t,i){var s="";if(0<=i){var n=new Date;0<i?n.setTime(n.getTime()+i*PJQ.constants.time.millis.ONE_DAY):n.setTime(n.getTime()+3650*PJQ.constants.time.millis.ONE_DAY),s="; expires="+n.toUTCString()}document.cookie=e+"="+(t||"")+s+"; path=/"},removeCookie:function(e){document.cookie=e+"= ; expires = Thu, 01 Jan 1970 00:00:00 GMT"}},PJQ.helpers.googleMapsHelpers={polyDefaults:{fillColor:"501400C8",isFill:!0},generatePolyStyle:function(e){return"<Style><PolyStyle><color>"+(e=_.defaults(e||{},this.polyDefaults)).fillColor+"</color><fill>"+(e.isFill?"1":"0")+"</fill></PolyStyle></Style>"}},PJQ.helpers.paymentHelpers={validateCreditCard:function(e){if(0===_.size(e))return!1;for(var t=0,i=!1,s=(e=e.replace(/\D/g,"")).length-1;0<=s;s--){var n=e.charAt(s),o=parseInt(n,10);i&&9<(o*=2)&&(o-=9),t+=o,i=!i}return t%10==0},getCardIssuer:function(e){var t="unknown";if(0===_.size(e))return t;var i=new RegExp("^(?:2131|1800|35)[0-9]{0,}$"),s=new RegExp("^3[47][0-9]{0,}$"),n=new RegExp("^3(?:0[0-59]{1}|[689])[0-9]{0,}$"),o=new RegExp("^4[0-9]{0,}$"),a=new RegExp("^(5[1-5]|222[1-9]|22[3-9]|2[3-6]|27[01]|2720)[0-9]{0,}$"),r=new RegExp("^(5[06789]|6)[0-9]{0,}$"),l=new RegExp("^(6011|65|64[4-9]|62212[6-9]|6221[3-9]|622[2-8]|6229[01]|62292[0-5])[0-9]{0,}$");return(e=e.replace(/\D/g,"")).match(i)?t="jcb":e.match(s)?t="amex":e.match(n)?t="diners_club":e.match(o)?t="visa":e.match(a)?t="mastercard":e.match(l)?t="discover":e.match(r)&&(t="5"===e[0]?"mastercard":"maestro"),t},getCardIssuerIconFAClass:function(e){var t;switch(e.toLowerCase()){case"jcb":t="fa-cc-jcb";break;case"amex":t="fa-cc-amex";break;case"diners_club":t="fa-cc-diners-club";break;case"visa":t="fa-cc-visa";break;case"mastercard":t="fa-cc-mastercard";break;case"maestro":t="fa-cc-maestro";break;case"discover":t="fa-cc-discover";break;default:return""}return"fab "+t}},PJQ.helpers.colorHelpers={getHexFromRGB:function(e){if(null==e)return null;-1!==e.indexOf("rgba")&&(e=e.replace("rgba","rgb"));var t=e.split(","),i=parseInt(t[0].substring(4)),s=parseInt(t[1]),n=parseInt(t[2]);return"#"+PJQ.helpers.colorHelpers.componentToHex(i)+PJQ.helpers.colorHelpers.componentToHex(s)+PJQ.helpers.colorHelpers.componentToHex(n)},componentToHex:function(e){var t=e.toString(16);return 1===t.length?"0"+t:t},getRGBFromHex:function(e){-1===_.indexOf(e,"#")&&(e="#"+e);e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,i,s){return t+t+i+i+s+s});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{R:parseInt(t[1],16),G:parseInt(t[2],16),B:parseInt(t[3],16)}:null}
1,idealLinkColorForBackground:function(e){var t=e.replace("#","");return 128<=(299*parseInt(t.substr(0,2),16)+587*parseInt(t.substr(2,2),16)+114*parseInt(t.substr(4,2),16))/1e3?"#333":"#fff"}},PJQ.helpers.elementHelpers={addInvisibleElement:function(e){var t=$("body"),i=".invis-outer",s=t.find(i);0===_.size(s)&&(s=$("<div></div>",{class:i,style:"position:absolute;visibility:hidden;top:0;bottom:0;left:0;right:0;"}),t.append(s)),s.append(e)},isElementInView:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;null!=t&&null!=i||(i=(t=$(window).scrollTop())+$(window).height());var s=e.offset().top;return s+e.height()<=i&&t<=s}},PJQ.helpers.imageHelpers={rotateByExif:function(t,i){this.getExifOrientation(t,function(e){switch(t.removeClass("transform-rotate-180 transform-rotate-90 transform-rotate-n-90"),e){case 3:t.addClass("transform-rotate-180");break;case 6:t.addClass("transform-rotate-90");break;case 8:t.addClass("transform-rotate-n-90")}i()})},rotateElement:function(e,t){switch(e.removeClass("transform-rotate-180 transform-rotate-90 transform-rotate-n-90"),t){case 90:e.addClass("transform-rotate-90");break;case 180:e.addClass("transform-rotate-180");break;case 270:case-90:e.addClass("transform-rotate-n-90")}},getExifOrientation:function(e,t){if(0<_.size(e)){var i=e.data("exif");null!=i?t(EXIF.getTag(i,"Orientation")):EXIF.getData(e[0],function(){i=this,e.data("exif",i),t(EXIF.getTag(i,"Orientation"))})}else t(null)}},PJQ.helpers.mathHelpers={roundAwayFromZero:function(e){var t=Math.abs(e),i=t%1==.5?Math.ceil(t):Math.round(t);return e<0?-i:i},getRandomNumber:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1;return Math.floor(Math.random()*Math.floor(e))},clamp:function(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}},PJQ.helpers.trigHelpers={checkRectCollision:function(e,t,i,s){return t.x>=i&&e.x<=i&&t.y>=s&&e.y<=s},distance:function(e,t,i,s){var n=i-e,o=s-t;return Math.sqrt(n*n+o*o)}},PJQ.helpers.projectHelpers={accessKeyNavigate:function(i,s){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"accessKeys",value:i}])}).get().done(_.bind(function(e){if(null!=e.url)-1!==e.url.indexOf("Default.aspx")?window.location=e.url:-1!==e.url.indexOf("#")?PJQ.app.router.navigate(e.url.substring(1),{trigger:!0}):-1!==e.url.indexOf("/")&&(window.location=e.url.substring(1));else if(0<e.projectId){var t=window.location.origin;window.location=t+(-1!==t.indexOf("?")?"&":"?")+"accessKey="+i+"#projects/"+e.projectId.toString()}else s(e.message?e.message:PJQ.Errors.auth.NOT_FOUND)},this)).fail(_.bind(function(e,t,i){s(e.responseJSON&&e.responseJSON.message?e.responseJSON.message:PJQ.Errors.auth.NOT_FOUND),new PJQ.logging.Debug(PJQ.logging.LoggingActions.AUTH_SIGN_IN,{error:t,result:i})},this))}},PJQ.helpers.sortHelpers={regexAlpha:/[^a-zA-Z]/g,regexNum:/[^0-9]/g,sortAlphaNum:function(e,t){return e.localeCompare(t,"en",{numeric:!0})},sortAlphaNumeric:function(e,t){var i=e.replace(PJQ.helpers.sortHelpers.regexAlpha,""),s=t.replace(PJQ.helpers.sortHelpers.regexAlpha,"");if(i!==s)return s<i?1:-1;var n=parseInt(e.replace(PJQ.helpers.sortHelpers.regexNum,""),10),o=parseInt(t.replace(PJQ.helpers.sortHelpers.regexNum,""),10);return n===o?0:o<n?1:-1},commonOrder:["g","t","d","s","a","r","m","p","e"],sortCommonPageNumbers:function(e,t){var i=/^[a-z]+$/i,s=i.test(e[0]),n=i.test(t[0]);if(s&&n){for(var o="",a=0;a<e.length&&i.test(e[a]);a++)o+=e[a].toLowerCase();for(var r="",l=0;l<t.length&&i.test(t[l]);l++)r+=t[l].toLowerCase();if(o===r)return this.sortAlphaNumeric(e,t);for(var c=-1,d=-1,p=0;p<this.commonOrder.length;p++)o===this.commonOrder[p]&&(c=p),r===this.commonOrder[p]&&(d=p);return-1!==d&&d<c?1:-1!==c&&c<d?-1:this.sortAlphaNumeric(e,t)}return!s&&n?1:s&&!n?-1:s||n?void 0:this.sortAlphaNumeric(e,t)}},PJQ.helpers.browserHelpers={getChromeVersion:function(){var e=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);return e?parseInt(e[2],10):null}},PJQ.helpers.canvasHelpers={loadFont:function(t,i){document.fonts.load(t).then(function(e){i(t)})},drawRoundRect:function(e,t,i,s,n,o,a,r){if(void 0===r&&(r=!0),void 0===o&&(o=5),"number"==typeof o)o={tl:o,tr:o,br:o,bl:o};else{var l={tl:0,tr:0,br:0,bl:0};for(var c in l)o[c]=o[c]||l[c]}
1e.beginPath(),e.moveTo(t+o.tl,i),e.lineTo(t+s-o.tr,i),e.quadraticCurveTo(t+s,i,t+s,i+o.tr),e.lineTo(t+s,i+n-o.br),e.quadraticCurveTo(t+s,i+n,t+s-o.br,i+n),e.lineTo(t+o.bl,i+n),e.quadraticCurveTo(t,i+n,t,i+n-o.bl),e.lineTo(t,i+o.tl),e.quadraticCurveTo(t,i,t+o.tl,i),e.closePath(),a&&e.fill(),r&&e.stroke()}},PJQ.helpers.localStorageHelpers={buildKey:function(t,e){try{var i=_.chain(e||[]).compact().map(function(e){return(""+e).replace(/[^a-zA-Z0-9\-]/g,"")}).value();return 0<i.length?t+"_"+i.join("_"):t}catch(e){return t}},get:function(e,t){try{return localStorage.getItem(this.buildKey(e,t))}catch(e){return null}},set:function(e,t,i){try{return localStorage.setItem(this.buildKey(e,t),i),!0}catch(e){return!1}},remove:function(e,t){try{return localStorage.removeItem(this.buildKey(e,t)),!0}catch(e){return!1}},getJSON:function(e,t){try{var i=localStorage.getItem(this.buildKey(e,t));return i?JSON.parse(i):null}catch(e){return null}},setJSON:function(e,t,i){try{return localStorage.setItem(this.buildKey(e,t),JSON.stringify(i)),!0}catch(e){return!1}}},PJQ.constants={customerService:{getPhone:function(){return PJQ.helpers.formatHelpers.formatPhoneNumber("8772199777")},getEmail:function(){return PJQ.app.options.isPanteraApp?"[email protected]":"[email protected]"}},services:{ORIGIN:"ORIGIN",API:"API",FILES:"FILES",APIv2:"APIv2"},panteraPortalId:4,publicUserId:39,publicLogoURL:"https://app.panteratools.com/images/pantera_app_logo.png",countries:["us","ca"],internationalCountries:[{name:"Afghanistan",states:["Badakhshan","Badghis","Baghlan","Balkh","Bamyan","Daykundi","Farah","Faryab","Ghazni","Ghōr","Helmand","Herat","Jowzjan","Kabul","Kandahar","Kapisa","Khost","Kunar","Kunduz Province","Laghman","Logar","Nangarhar","Nimruz","Nuristan","Paktia","Paktika","Panjshir","Parwan","Samangan","Sar-e Pol","Takhar","Urozgan","Zabul"]},{name:"Aland Islands",states:["Brändö","Eckerö","Finström","Föglö","Geta","Hammarland","Jomala","Kökar","Kumlinge","Lemland","Lumparland","Mariehamn","Saltvik","Sottunga","Sund","VÃ¥rdö"]},{name:"Albania",states:["Berat County","Berat District","Bulqizë District","Delvinë District","Devoll District","Dibër County","Dibër District","Durrës County","Durrës District","Elbasan County","Fier County","Fier District","Gjirokastër County","Gjirokastër District","Gramsh District","Has District","Kavajë District","Kolonjë District","Korçë County","Korçë District","Krujë District","Kuçovë District","Kukës County","Kukës District","Kurbin District","Lezhë County","Lezhë District","Librazhd District","Lushnjë District","Malësi e Madhe District","Mallakastër District","Mat District","Mirditë District","Peqin District","Përmet District","Pogradec District","Pukë District","Sarandë District","Shkodër County","Shkodër District","Skrapar District","Tepelenë District","Tirana County","Tirana District","Tropojë District","Vlorë County","Vlorë District"]},{name:"Algeria",states:["Adrar","Aïn Defla","Aïn Témouchent","Algiers","Annaba","Batna","Béchar","Béjaïa","Béni Abbès","Biskra","Blida","Bordj Baji Mokhtar","Bordj Bou Arréridj","Bouïra","Boumerdès","Chlef","Constantine","Djanet","Djelfa","El Bayadh","El M'ghair","El Menia","El Oued","El Tarf","Ghardaïa","Guelma","Illizi","In Guezzam","In Salah","Jijel","Khenchela","Laghouat","M'Sila","Mascara","Médéa","Mila","Mostaganem","Naama","Oran","Ouargla","Ouled Djellal","Oum El Bouaghi","Relizane","Saïda","Sétif","Sidi Bel Abbès","Skikda","Souk Ahras","Tamanghasset","Tébessa","Tiaret","Timimoun","Tindouf","Tipasa","Tissemsilt","Tizi Ouzou","Tlemcen","Touggourt"]},{name:"American Samoa",states:[]},{name:"Andorra",states:["Andorra la Vella","Canillo","Encamp","Escaldes-Engordany","La Massana","Ordino","Sant Julià de Lòria"]},{name:"Angola",states:["Bengo Province","Benguela Province","Bié Province","Cabinda Province","Cuando Cubango Province","Cuanza Norte Province","Cuanza Sul","Cunene Province","Huambo Province","Huíla Province","Luanda Province","Lunda Norte Province","Lunda Sul Province","Malanje Province","Moxico Province","Uíge Province","Zaire Province"]},{name:"Anguilla",states:["Blowing Point","East End","George Hill","Island Harbour","North Hill","North Side","Sandy Ground","S
1andy Hill","South Hill","Stoney Ground","The Farrington","The Quarter","The Valley","West End"]},{name:"Antarctica",states:[]},{name:"Antigua and Barbuda",states:["Barbuda","Redonda","Saint George Parish","Saint John Parish","Saint Mary Parish","Saint Paul Parish","Saint Peter Parish","Saint Philip Parish"]},{name:"Argentina",states:["Buenos Aires","Catamarca","Chaco","Chubut","Ciudad Autónoma de Buenos Aires","Córdoba","Corrientes","Entre Ríos","Formosa","Jujuy","La Pampa","La Rioja","Mendoza","Misiones","Neuquén","Río Negro","Salta","San Juan","San Luis","Santa Cruz","Santa Fe","Santiago del Estero","Tierra del Fuego","Tucumán"]},{name:"Armenia",states:["Aragatsotn Region","Ararat Province","Armavir Region","Gegharkunik Province","Kotayk Region","Lori Region","Shirak Region","Syunik Province","Tavush Region","Vayots Dzor Region","Yerevan"]},{name:"Aruba",states:["Noord","Oranjestad East","Oranjestad West","Paradera","San Nicolaas Noord","San Nicolaas Zuid","Santa Cruz","Savaneta"]},{name:"Australia",states:["Australian Capital Territory","New South Wales","Northern Territory","Queensland","South Australia","Tasmania","Victoria","Western Australia"]},{name:"Austria",states:["Burgenland","Carinthia","Lower Austria","Salzburg","Styria","Tyrol","Upper Austria","Vienna","Vorarlberg"]},{name:"Azerbaijan",states:["Absheron District","Agdam District","Agdash District","Aghjabadi District","Agstafa District","Agsu District","Astara District","Babek District","Baku","Balakan District","Barda District","Beylagan District","Bilasuvar District","Dashkasan District","Fizuli District","Ganja","Gədəbəy","Gobustan District","Goranboy District","Goychay","Goygol District","Hajigabul District","Imishli District","Ismailli District","Jabrayil District","Jalilabad District","Julfa District","Kalbajar District","Kangarli District","Khachmaz District","Khizi District","Khojali District","Kurdamir District","Lachin District","Lankaran","Lankaran District","Lerik District","Martuni","Masally District","Mingachevir","Nakhchivan Autonomous Republic","Neftchala District","Oghuz District","Ordubad District","Qabala District","Qakh District","Qazakh District","Quba District","Qubadli District","Qusar District","Saatly District","Sabirabad District","Sadarak District","Salyan District","Samukh District","Shabran District","Shahbuz District","Shaki","Shaki District","Shamakhi District","Shamkir District","Sharur District","Shirvan","Shusha District","Siazan District","Sumqayit","Tartar District","Tovuz District","Ujar District","Yardymli District","Yevlakh","Yevlakh District","Zangilan District","Zaqatala District","Zardab District"]},{name:"Bahrain",states:["Capital","Central","Muharraq","Northern","Southern"]},{name:"Bangladesh",states:["Barisal ","Chittagong ","Dhaka ","Khulna ","Mymensingh ","Rajshahi ","Rangpur ","Sylhet "]},{name:"Barbados",states:["Christ Church","Saint Andrew","Saint George","Saint James","Saint John","Saint Joseph","Saint Lucy","Saint Michael","Saint Peter","Saint Philip","Saint Thomas"]},{name:"Belarus",states:["Brest Region","Gomel Region","Grodno Region","Minsk","Minsk Region","Mogilev Region","Vitebsk Region"]},{name:"Belgium",states:["Antwerp","Brussels-Capital Region","East Flanders","Flanders","Flemish Brabant","Hainaut","Liège","Limburg","Luxembourg","Namur","Wallonia","Walloon Brabant","West Flanders"]},{name:"Belize",states:["Belize District","Cayo District","Corozal District","Orange Walk District","Stann Creek District","Toledo District"]},{name:"Benin",states:["Alibori Department","Atakora Department","Atlantique Department","Borgou Department","Collines Department","Donga Department","Kouffo Department","Littoral Department","Mono Department","Ouémé Department","Plateau Department","Zou Department"]},{name:"Bermuda",states:["Devonshire","Hamilton","Paget","Pembroke","Saint George's","Sandys","Smith's","Southampton","Warwick"]},{name:"Bhutan",states:["Bumthang ","Chukha ","Dagana ","Gasa ","Haa ","Lhuntse ","Mongar ","Paro ","Pemagatshel ","Punakha ","Samdrup Jongkhar ","Samtse ","Sarpang ","Thimphu ","Trashi Yangtse\t","Trashigang ","Trongsa ","Tsirang ","Wangdue Phodrang ","Zhemgang "]},{name:"Bolivia",states:["Beni Department","Chuquisaca Department","Cochabamba Department","La Paz Department","Oruro Department","Pando Department","Potosí Department","Santa Cruz Department","Tarija Department"]},{name:"Bonaire, Sint Eustatius and Saba",states:["Bonaire","Saba","Sint Eustatius"]},{name:"Bosnia and Herzegovina",states:["Bosnian Podrinje Canton","Brčko District","Canton 10","Central Bosnia Canton","Federation of Bosnia and Herzegovina","Herzegovina-Neretva Canton","Posavina Canton","Republika Srpska","Sarajevo Canton","Tuzla Canton","Una-Sana Canton","West Herzegovina Canton","Zenica-Doboj Canton"]},{name:"Botswana",states:["Central District","Ghanzi District","Kgalagadi District","Kgatleng District","Kweneng District","Ngamiland","North-East District","North-West District","South-East District","Southern District"]},{name:"Bouvet Island",states:[]},{name:"Brazil",states:["Acre","Alagoas","Amapá","Amazonas","Bahia","Ceará","Distrito Federal","Espírito Santo","Goiás","Maranhão","Mato Grosso","Mato Grosso do Sul","Minas Gerais","Pará","Paraíba","Paraná","Pernambuco","Piauí","Rio de Janeiro","Rio Grande do Norte","Rio Grande do Sul","Rondônia","Roraima","Santa Catarina","São Paulo","Sergipe","Tocantins"]},{name:"British Indian Ocean Territory",states:[]},{name:"Brunei",states:["Belait District","Brunei-Muara District","Temburong District","Tutong District"]},{name:"Bulgaria",states:["Blagoevgrad Province","Burgas Province","Dobrich Province","Gabrovo Province","Haskovo Province","Kardzhali Province","Kyustendil Province","Lovech Province","Montana Province","Pazardzhik Province","Pernik Province","Pleven Province","Plovdiv Province","Razgrad Province","Ruse Province","Shumen","Silistra Province","Sliven Province","Smolyan Province","Sofia City Province","Sofia Province","Stara Zagora Province","Targovishte Province","Varna Province","Veliko Tarnovo Province","Vidin Province","Vratsa Province","Yambol Province"]},{name:"Burkina Faso",states:["Balé Province","Bam Province","Banwa Province","Bazèga Province","Boucle du Mouhoun Region","Bougouriba Province","Boulgou","Cascades Region","Centre","Centre-Est Region","Centre-Nord Region","Centre-Ouest Region","Centre-Sud Region","Comoé Province","Est Region","Ganzourgou Province","Gnagna Province","Gourma Province","Hauts-Bassins Region","Houet Province","Ioba Province","Kadiogo Province","Kénédougou Province","Komondjari Province","Kompienga Province","Kossi Province","Koulpélogo Province","Kouritenga Province","Kourwéogo Province","Léraba Province","Loroum Province","Mouhoun","Nahouri Province","N
1amentenga Province","Nayala Province","Nord Region, Burkina Faso","Noumbiel Province","Oubritenga Province","Oudalan Province","Passoré Province","Plateau-Central Region","Poni Province","Sahel Region","Sanguié Province","Sanmatenga Province","Séno Province","Sissili Province","Soum Province","Sourou Province","Sud-Ouest Region","Tapoa Province","Tuy Province","Yagha Province","Yatenga Province","Ziro Province","Zondoma Province","Zoundwéogo Province"]},{name:"Burundi",states:["Bubanza Province","Bujumbura Mairie Province","Bujumbura Rural Province","Bururi Province","Cankuzo Province","Cibitoke Province","Gitega Province","Karuzi Province","Kayanza Province","Kirundo Province","Makamba Province","Muramvya Province","Muyinga Province","Mwaro Province","Ngozi Province","Rumonge Province","Rutana Province","Ruyigi Province"]},{name:"Cambodia",states:["Banteay Meanchey","Battambang","Kampong Cham","Kampong Chhnang","Kampong Speu","Kampong Thom","Kampot","Kandal","Kep","Koh Kong","Kratie","Mondulkiri","Oddar Meanchey","Pailin","Phnom Penh","Preah Vihear","Prey Veng","Pursat","Ratanakiri","Siem Reap","Sihanoukville","Stung Treng","Svay Rieng","Takeo"]},{name:"Cameroon",states:["Adamawa","Centre","East","Far North","Littoral","North","Northwest","South","Southwest","West"]},{name:"Cape Verde",states:["Barlavento Islands","Boa Vista","Brava","Maio Municipality","Mosteiros","Paul","Porto Novo","Praia","Ribeira Brava Municipality","Ribeira Grande","Ribeira Grande de Santiago","Sal","Santa Catarina","Santa Catarina do Fogo","Santa Cruz","São Domingos","São Filipe","São Lourenço dos Órgãos","São Miguel","São Vicente","Sotavento Islands","Tarrafal","Tarrafal de São Nicolau"]},{name:"Cayman Islands",states:["Cayman Brac","Grand Cayman","Little Cayman"]},{name:"Central African Republic",states:["Bamingui-Bangoran Prefecture","Bangui","Basse-Kotto Prefecture","Haut-Mbomou Prefecture","Haute-Kotto Prefecture","Kémo Prefecture","Lobaye Prefecture","Mambéré-Kadéï","Mbomou Prefecture","Nana-Grébizi Economic Prefecture","Nana-Mambéré Prefecture","Ombella-M'Poko Prefecture","Ouaka Prefecture","Ouham Prefecture","Ouham-Pendé Prefecture","Sangha-Mbaéré","Vakaga Prefecture"]},{name:"Chad",states:["Bahr el Gazel","Batha","Borkou","Chari-Baguirmi","Ennedi-Est","Ennedi-Ouest","Guéra","Hadjer-Lamis","Kanem","Lac","Logone Occidental","Logone Oriental","Mandoul","Mayo-Kebbi Est","Mayo-Kebbi Ouest","Moyen-Chari","N'Djamena","Ouaddaï","Salamat","Sila","Tandjilé","Tibesti","Wadi Fira"]},{name:"Chile",states:["Aisén del General Carlos Ibañez del Campo","Antofagasta","Arica y Parinacota","Atacama","Biobío","Coquimbo","La Araucanía","Libertador General Bernardo O'Higgins","Los Lagos","Los Ríos","Magallanes y de la Antártica Chilena","Maule","Ñuble","Región Metropolitana de Santiago","Tarapacá","Valparaíso"]},{name:"China",states:["Anhui","Beijing","Chongqing","Fujian","Gansu","Guangdong","Guangxi Zhuang","Guizhou","Hainan","Hebei","Heilongjiang","Henan","Hong Kong SAR","Hubei","Hunan","Inner Mongolia","Jiangsu","Jiangxi","Jilin","Liaoning","Macau SAR","Ningxia Huizu","Qinghai","Shaanxi","Shandong","Shanghai","Shanxi","Sichuan","Taiwan","Tianjin","Xinjiang","Xizang","Yunnan","Zhejiang"]},{name:"Christmas Island",states:[]},{name:"Cocos (Keeling) Islands",states:[]},{name:"Colombia",states:["Amazonas","Antioquia","Arauca","Archipiélago de San Andrés, Providencia y Santa Catalina","Atlántico","Bogotá D.C.","Bolívar","Boyacá","Caldas","Caquetá","Casanare","Cauca","Cesar","Chocó","Córdoba","Cundinamarca","Guainía","Guaviare","Huila","La Guajira","Magdalena","Meta","Nariño","Norte de Santander","Putumayo","Quindío","Risaralda","Santander","Sucre","Tolima","Valle del Cauca","Vaupés","Vichada"]},{name:"Comoros",states:["Anjouan","Grande Comore","Mohéli"]},{name:"Congo",states:["Bouenza Department","Brazzaville","Cuvette Department","Cuvette-Ouest Department","Kouilou Department","Lékoumou Department","Likouala Department","Niari Department","Plateaux Department","Pointe-Noire","Pool Department","Sangha Department"]},{name:"Cook Islands",states:[]},{name:"Costa Rica",states:["Alajuela Province","Guanacaste Province","Heredia Province","Limón Province","Provincia de Cartago","Puntarenas Province","San José Province"]}
1,{name:"Cote D'Ivoire (Ivory Coast)",states:["Abidjan","Agnéby","Bafing Region","Bas-Sassandra District","Bas-Sassandra Region","Comoé District","Denguélé District","Denguélé Region","Dix-Huit Montagnes","Fromager","Gôh-Djiboua District","Haut-Sassandra","Lacs District","Lacs Region","Lagunes District","Lagunes region","Marahoué Region","Montagnes District","Moyen-Cavally","Moyen-Comoé","N'zi-Comoé","Sassandra-Marahoué District","Savanes Region","Sud-Bandama","Sud-Comoé","Vallée du Bandama District","Vallée du Bandama Region","Woroba District","Worodougou","Yamoussoukro","Zanzan Region"]},{name:"Croatia",states:["Bjelovar-Bilogora","Brod-Posavina","Dubrovnik-Neretva","Istria","Karlovac","Koprivnica-Križevci","Krapina-Zagorje","Lika-Senj","Međimurje","Osijek-Baranja","Požega-Slavonia","Primorje-Gorski Kotar","Šibenik-Knin","Sisak-Moslavina","Split-Dalmatia","Varaždin","Virovitica-Podravina","Vukovar-Syrmia","Zadar","Zagreb","Zagreb"]},{name:"Cuba",states:["Artemisa Province","Camagüey Province","Ciego de Ávila Province","Cienfuegos Province","Granma Province","Guantánamo Province","Havana Province","Holguín Province","Isla de la Juventud","Las Tunas Province","Matanzas Province","Mayabeque Province","Pinar del Río Province","Sancti Spíritus Province","Santiago de Cuba Province","Villa Clara Province"]},{name:"Curaçao",states:[]},{name:"Cyprus",states:["Famagusta District (Mağusa)","Kyrenia District (Keryneia)","Larnaca District (Larnaka)","Limassol District (Leymasun)","Nicosia District (Lefkoşa)","Paphos District (Pafos)"]},{name:"Czech Republic",states:["Benešov","Beroun","Blansko","Břeclav","Brno-město","Brno-venkov","Bruntál","Česká Lípa","České Budějovice","Český Krumlov","Cheb","Chomutov","Chrudim","Děčín","Domažlice","Frýdek-Místek","Havlíčkův Brod","Hodonín","Hradec Králové","Jablonec nad Nisou","Jeseník","Jičín","Jihlava","Jihočeský kraj","Jihomoravský kraj","Jindřichův Hradec","Karlovarský kraj","Karlovy Vary","Karviná","Kladno","Klatovy","Kolín","Kraj Vysočina","Královéhradecký kraj","Kroměříž","Kutná Hora","Liberec","Liberecký kraj","Litoměřice","Louny","Mělník","Mladá Boleslav","Moravskoslezský kraj","Most","Náchod","Nový Jičín","Nymburk","Olomouc","Olomoucký kraj","Opava","Ostrava-město","Pardubice","Pardubický kraj","Pelhřimov","Písek","Plzeň-jih","Plzeň-město","Plzeň-sever","Plzeňský kraj","Prachatice","Praha-východ","Praha-západ","Praha, Hlavní město","Přerov","Příbram","Prostějov","Rakovník","Rokycany","Rychnov nad Kněžnou","Semily","Sokolov","Strakonice","Středočeský kraj","Šumperk","Svitavy","Tábor","Tachov","Teplice","Třebíč","Trutnov","Uherské Hradiště","Ústecký kraj","Ústí nad Labem","Ústí nad Orlicí","Vsetín","Vyškov","Žďár nad Sázavou","Zlín","Zlínský kraj","Znojmo"]},{name:"Democratic Republic of the Congo",states:["Bas-Uélé","Équateur","Haut-Katanga","Haut-Lomami","Haut-Uélé","Ituri","Kasaï","Kasaï Central","Kasaï Oriental","Kinshasa","Kongo Central","Kwango","Kwilu","Lomami","Lualaba","Mai-Ndombe","Maniema","Mongala","Nord-Kivu","Nord-Ubangi","Sankuru","Sud-Kivu","Sud-Ubangi","Tanganyika","Tshopo","Tshuapa"]},{name:"Denmark",states:["Capital Region of Denmark","Central Denmark Region","North Denmark Region","Region of Southern Denmark","Region Zealand"]},{name:"Djibouti",states:["Ali Sabieh Region","Arta Region","Dikhil Region","Djibouti","Obock Region","Tadjourah Region"]},{name:"Dominica",states:["Saint Andrew Parish","Saint David Parish","Saint George Parish","Saint John Parish","Saint Joseph Parish","Saint Luke Parish","Saint Mark Parish","Saint Patrick Parish","Saint Paul Parish","Saint Peter Parish"]},{name:"Dominican Republic",states:["Azua Province","Baoruco Province","Barahona Province","Dajabón Province","Distrito Nacional","Duarte Province","El Seibo Province","Espaillat Province","Hato Mayor Province","Hermanas Mirabal Province","Independencia","La Altagracia Province","La Romana Province","La Vega Province","María Trinidad Sánchez Province","Monseñor Nouel Province","Monte Cristi Province","Monte Plata Province","Pedernales Province","Peravia Province","Puerto Plata Province","Samaná Province","San Cristóbal Province","San José de Ocoa Province","San Juan Province","San Pedro de Macorís","Sánchez Ramírez Province","Santiago Province","Santiago Rodríguez Province","Santo Domingo Province","Valverde Province"]},{name:"Ecuador",states:["Azuay","Bolívar","Cañar","Carchi","Chimborazo","Cotopaxi","El Oro","Esmeraldas","Galápagos","Guayas","Imbabura","Loja","Los Ríos","Manabí","Morona-Santiago","Napo","Orellana","Pastaza","Pichincha","S
1anta Elena","Santo Domingo de los Tsáchilas","Sucumbíos","Tungurahua","Zamora Chinchipe"]},{name:"Egypt",states:["Alexandria","Aswan","Asyut","Beheira","Beni Suef","Cairo","Dakahlia","Damietta","Faiyum","Gharbia","Giza","Ismailia","Kafr el-Sheikh","Luxor","Matrouh","Minya","Monufia","New Valley","North Sinai","Port Said","Qalyubia","Qena","Red Sea","Sharqia","Sohag","South Sinai","Suez"]},{name:"El Salvador",states:["Ahuachapán Department","Cabañas Department","Chalatenango Department","Cuscatlán Department","La Libertad Department","La Paz Department","La Unión Department","Morazán Department","San Miguel Department","San Salvador Department","San Vicente Department","Santa Ana Department","Sonsonate Department","Usulután Department"]},{name:"Equatorial Guinea",states:["Annobón Province","Bioko Norte Province","Bioko Sur Province","Centro Sur Province","Insular Region","Kié-Ntem Province","Litoral Province","Río Muni","Wele-Nzas Province"]},{name:"Eritrea",states:["Anseba Region","Debub Region","Gash-Barka Region","Maekel Region","Northern Red Sea Region","Southern Red Sea Region"]},{name:"Estonia",states:["Harju County","Hiiu County","Ida-Viru County","Järva County","Jõgeva County","Lääne County","Lääne-Viru County","Pärnu County","Põlva County","Rapla County","Saare County","Tartu County","Valga County","Viljandi County","Võru County"]},{name:"Eswatini",states:["Hhohho District","Lubombo District","Manzini District","Shiselweni District"]},{name:"Ethiopia",states:["Addis Ababa","Afar Region","Amhara Region","Benishangul-Gumuz Region","Dire Dawa","Gambela Region","Harari Region","Oromia Region","Somali Region","Southern Nations, Nationalities, and Peoples' Region","Tigray Region"]},{name:"Falkland Islands",states:[]},{name:"Faroe Islands",states:["Eysturoy","Northern Isles","Sandoy","Streymoy","Suðuroy","Vágar"]},{name:"Fiji Islands",states:["Ba","Bua","Cakaudrove","Central Division","Eastern Division","Kadavu","Lau","Lomaiviti","Macuata","Nadroga-Navosa","Naitasiri","Namosi","Northern Division","Ra","Rewa","Rotuma","Serua","Tailevu","Western Division"]},{name:"Finland",states:["Åland Islands","Central Finland","Central Ostrobothnia","Finland Proper","Kainuu","Kymenlaakso","Lapland","North Karelia","Northern Ostrobothnia","Northern Savonia","Ostrobothnia","Päijänne Tavastia","Pirkanmaa","Satakunta","South Karelia","Southern Ostrobothnia","Southern Savonia","Tavastia Proper","Uusimaa"]},{name:"France",states:["Ain","Aisne","Allier","Alpes-de-Haute-Provence","Alpes-Maritimes","Alsace","Ardèche","Ardennes","Ariège","Aube","Aude","Auvergne-Rhône-Alpes","Aveyron","Bas-Rhin","Bouches-du-Rhône","Bourgogne-Franche-Comté","Bretagne","Calvados","Cantal","Centre-Val de Loire","Charente","Charente-Maritime","Cher","Clipperton","Corrèze","Corse","Corse-du-Sud","Côte-d'Or","Côtes-d'Armor","Creuse","Deux-Sèvres","Dordogne","Doubs","Drôme","Essonne","Eure","Eure-et-Loir","Finistère","French Guiana","French Polynesia","French Southern and Antarctic Lands","Gard","Gers","Gironde","Grand-Est","Guadeloupe","Haut-Rhin","Haute-Corse","Haute-Garonne","Haute-Loire","Haute-Marne","Haute-Saône","Haute-Savoie","Haute-Vienne","Hautes-Alpes","Hautes-Pyrénées","Hauts-de-France","Hauts-de-Seine","Hérault","Île-de-France","Ille-et-Vilaine","Indre","Indre-et-Loire","Isère","Jura","La Réunion","Landes","Loir-et-Cher","Loire","Loire-Atlantique","Loiret","Lot","Lot-et-Garonne","Lozère","Maine-et-Loire","Manche","Marne","Martinique","Mayenne","Mayotte","Métropole de Lyon","Meurthe-et-Moselle","Meuse","Morbihan","Moselle","Nièvre","Nord","Normandie","Nouvelle-Aquitaine","Occitanie","Oise","Orne","Paris","Pas-de-Calais","Pays-de-la-Loire","Provence-Alpes-Côte-d’Azur","Puy-de-Dôme","Pyrénées-Atlantiques","Pyrénées-Orientales","Rhône","Saint Pierre and Miquelon","Saint-Barthélemy","Saint-Martin","Saône-et-Loire","Sarthe","Savoie","Seine-et-Marne","Seine-Maritime","Seine-Saint-Denis","Somme","Tarn","Tarn-et-Garonne","Territoire de Belfort","Val-d'Oise","Val-de-Marne","Var","Vaucluse","Vendée","Vienne","Vosges","Wallis and Futuna","Yonne","Yvelines"]},{name:"French Guiana",states:[]},{name:"French Polynesia",states:[]},{name:"French Southern Territories",states:[]},{name:"Gabon",states:["Estuaire Province","Haut-Ogooué Province","Moyen-Ogooué Province","Ngounié Province","Nyanga Province","Ogooué-Ivindo Province","Ogooué-Lolo Province","Ogooué-Maritime Province","Woleu-Ntem Province"]},{name:"Georgia",states:["Abkhazia","Adjara","Guria","Imereti","Kakheti","Khelvachauri Municipality","Kvemo Kartli","Mtskheta-Mtianeti","Racha-Lechkhumi and Kvemo Svaneti","S
1amegrelo-Zemo Svaneti","Samtskhe-Javakheti","Senaki Municipality","Shida Kartli","Tbilisi"]},{name:"Germany",states:["Baden-Württemberg","Bavaria","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Lower Saxony","Mecklenburg-Vorpommern","North Rhine-Westphalia","Rhineland-Palatinate","Saarland","Saxony","Saxony-Anhalt","Schleswig-Holstein","Thuringia"]},{name:"Ghana",states:["Ahafo","Ashanti","Bono","Bono East","Central","Eastern","Greater Accra","North East","Northern","Oti","Savannah","Upper East","Upper West","Volta","Western","Western North"]},{name:"Gibraltar",states:[]},{name:"Greece",states:["Achaea Regional Unit","Aetolia-Acarnania Regional Unit","Arcadia Prefecture","Argolis Regional Unit","Attica Region","Boeotia Regional Unit","Central Greece Region","Central Macedonia","Chania Regional Unit","Corfu Prefecture","Corinthia Regional Unit","Crete Region","Drama Regional Unit","East Attica Regional Unit","East Macedonia and Thrace","Epirus Region","Euboea","Grevena Prefecture","Imathia Regional Unit","Ioannina Regional Unit","Ionian Islands Region","Karditsa Regional Unit","Kastoria Regional Unit","Kefalonia Prefecture","Kilkis Regional Unit","Kozani Prefecture","Laconia","Larissa Prefecture","Lefkada Regional Unit","Pella Regional Unit","Peloponnese Region","Phthiotis Prefecture","Preveza Prefecture","Serres Prefecture","South Aegean","Thessaloniki Regional Unit","West Greece Region","West Macedonia Region"]},{name:"Greenland",states:[]},{name:"Grenada",states:["Carriacou and Petite Martinique","Saint Andrew Parish","Saint David Parish","Saint George Parish","Saint John Parish","Saint Mark Parish","Saint Patrick Parish"]},{name:"Guadeloupe",states:[]},{name:"Guam",states:["Agana Heights","Asan-Maina","Barrigada","Chalan Pago-Ordot","Dededo","Hågat","Hagåtña","Inarajan (Inalåhan)","Mangilao","Merizo (Malesso)","Mongmong-Toto-Maite","Piti","Santa Rita (Sånta Rita-Sumai)","Sinajana","Talofofo (Talo'fo'fo)","Tamuning","Umatac (Humåtak)","Yigo","Yona"]},{name:"Guatemala",states:["Alta Verapaz ","Baja Verapaz ","Chimaltenango ","Chiquimula ","El Progreso ","Escuintla ","Guatemala ","Huehuetenango ","Izabal ","Jalapa ","Jutiapa ","Petén ","Quetzaltenango ","Quiché ","Retalhuleu ","Sacatepéquez ","San Marcos ","Santa Rosa ","Sololá ","Suchitepéquez ","Totonicapán ","Zacapa"]},{name:"Guernsey and Alderney",states:[]},{name:"Guinea",states:["Beyla Prefecture","Boffa Prefecture","Boké Prefecture","Boké Region","Conakry","Coyah Prefecture","Dabola Prefecture","Dalaba Prefecture","Dinguiraye Prefecture","Dubréka Prefecture","Faranah Prefecture","Forécariah Prefecture","Fria Prefecture","Gaoual Prefecture","Guéckédou Prefecture","Kankan Prefecture","Kankan Region","Kérouané Prefecture","Kindia Prefecture","Kindia Region","Kissidougou Prefecture","Koubia Prefecture","Koundara Prefecture","Kouroussa Prefecture","Labé Prefecture","Labé Region","Lélouma Prefecture","Lola Prefecture","Macenta Prefecture","Mali Prefecture","Mamou Prefecture","Mamou Region","Mandiana Prefecture","Nzérékoré Prefecture","Nzérékoré Region","Pita Prefecture","Siguiri Prefecture","Télimélé Prefecture","Tougué Prefecture","Yomou Prefecture"]},{name:"Guinea-Bissau",states:["Bafatá","Biombo Region","Bolama Region","Cacheu Region","Gabú Region","Leste Province","Norte Province","Oio Region","Quinara Region","Sul Province","Tombali Region"]},{name:"Guyana",states:["Barima-Waini","Cuyuni-Mazaruni","Demerara-Mahaica","East Berbice-Corentyne","Essequibo Islands-West Demerara","Mahaica-Berbice","Pomeroon-Supenaam","Potaro-Siparuni","Upper Demerara-Berbice","Upper Takutu-Upper Essequibo"]},{name:"Haiti",states:["Artibonite","Centre","Grand'Anse","Nippes","Nord","Nord-Est","Nord-Ouest","Ouest","Sud","Sud-Est"]},{name:"Heard Island and McDonald Islands",states:[]},{name:"Honduras",states:["Atlántida Department","Bay Islands Department","Choluteca Department","Colón Department","Comayagua Department","Copán Department","Cortés Department","El Paraíso Department","Francisco Morazán Department","Gracias a Dios Department","Intibucá Department","La Paz Department","Lempira Department","Ocotepeque Department","Olancho Department","Santa Bárbara Department","Valle Department","Yoro Department"]},{name:"Hong Kong S.A.R.",states:["Central and Western","Eastern","Islands","Kowloon City","Kwai Tsing","Kwun Tong","North","Sai Kung","Sha Tin","Sham Shui Po","Southern","Tai Po","Tsuen Wan","Tuen Mun","Wan Chai","Wong Tai Sin","Yau Tsim Mong","Yuen Long"]},{name:"Hungary",states:["Bács-Kiskun","Baranya","Békés","Békéscsaba","Borsod-Abaúj-Zemplén","Budapest","Csongrád County","Debrecen","Dunaújváros","Eger","Érd","Fejér County","Győr","Győr-Moson-Sopron County","Hajdú-Bihar County","Heves County","Hódmezővásárhely","Jász-Nagykun-Szolnok County","Kaposvár","Kecskemét","Komárom-Esztergom","Miskolc","Nagykanizsa","Nógrád County","Nyíregyháza","Pécs","Pest County","Salgótarján","Somogy County","Sopron","Szabolcs-Szatmár-Bereg County","Szeged","Székesfehérvár","Szekszárd","Szolnok","Szombathely","Tatab
1ánya","Tolna County","Vas County","Veszprém","Veszprém County","Zala County","Zalaegerszeg"]},{name:"Iceland",states:["Capital Region","Eastern Region","Northeastern Region","Northwestern Region","Southern Peninsula Region","Southern Region","Western Region","Westfjords"]},{name:"India",states:["Andaman and Nicobar Islands","Andhra Pradesh","Arunachal Pradesh","Assam","Bihar","Chandigarh","Chhattisgarh","Dadra and Nagar Haveli and Daman and Diu","Delhi","Goa","Gujarat","Haryana","Himachal Pradesh","Jammu and Kashmir","Jharkhand","Karnataka","Kerala","Ladakh","Lakshadweep","Madhya Pradesh","Maharashtra","Manipur","Meghalaya","Mizoram","Nagaland","Odisha","Puducherry","Punjab","Rajasthan","Sikkim","Tamil Nadu","Telangana","Tripura","Uttar Pradesh","Uttarakhand","West Bengal"]},{name:"Indonesia",states:["Aceh","Bali","Banten","Bengkulu","DI Yogyakarta","DKI Jakarta","Gorontalo","Jambi","Jawa Barat","Jawa Tengah","Jawa Timur","Kalimantan Barat","Kalimantan Selatan","Kalimantan Tengah","Kalimantan Timur","Kalimantan Utara","Kepulauan Bangka Belitung","Kepulauan Riau","Lampung","Maluku","Maluku Utara","Nusa Tenggara Barat","Nusa Tenggara Timur","Papua","Papua Barat","Papua Barat Daya","Papua Pegunungan","Papua Selatan","Papua Tengah","Riau","Sulawesi Barat","Sulawesi Selatan","Sulawesi Tengah","Sulawesi Tenggara","Sulawesi Utara","Sumatera Barat","Sumatera Selatan","Sumatera Utara"]},{name:"Iran",states:["Alborz","Ardabil","Bushehr","Chaharmahal and Bakhtiari","East Azerbaijan","Fars","Gilan","Golestan","Hamadan","Hormozgan","Ilam","Isfahan","Kerman","Kermanshah","Khuzestan","Kohgiluyeh and Boyer-Ahmad","Kurdistan","Lorestan","Markazi","Mazandaran","North Khorasan","Qazvin","Qom","Razavi Khorasan","Semnan","Sistan and Baluchestan","South Khorasan","Tehran","West Azarbaijan","Yazd","Zanjan"]},{name:"Iraq",states:["Al Anbar","Al Muthanna","Al-Qādisiyyah","Babylon","Baghdad","Basra","Dhi Qar","Diyala","Dohuk","Erbil","Karbala","Kirkuk","Maysan","Najaf","Nineveh","Saladin","Sulaymaniyah","Wasit"]},{name:"Ireland",states:["Carlow","Cavan","Clare","Connacht","Cork","Donegal","Dublin","Galway","Kerry","Kildare","Kilkenny","Laois","Leinster","Limerick","Longford","Louth","Mayo","Meath","Monaghan","Munster","Offaly","Roscommon","Sligo","Tipperary","Ulster","Waterford","Westmeath","Wexford","Wicklow"]},{name:"Israel",states:["Central District","Haifa District","Jerusalem District","Northern District","Southern District","Tel Aviv District"]},{name:"Italy",states:["Abruzzo","Agrigento","Alessandria","Ancona","Aosta Valley","Apulia","Ascoli Piceno","Asti","Avellino","Barletta-Andria-Trani","Basilicata","Belluno","Benevento","Bergamo","Biella","Brescia","Brindisi","Calabria","Caltanissetta","Campania","Campobasso","Caserta","Catanzaro","Chieti","Como","Cosenza","Cremona","Crotone","Cuneo","Emilia-Romagna","Enna","Fermo","Ferrara","Foggia","Forlì-Cesena","Friuli–Venezia Giulia","Frosinone","Gorizia","Grosseto","Imperia","Isernia","L'Aquila","La Spezia","Latina","Lazio","Lecce","Lecco","Liguria","Livorno","Lodi","Lombardy","Lucca","Macerata","Mantua","Marche","Massa and Carrara","Matera","Medio Campidano","Modena","Molise","Monza and Brianza","Novara","Nuoro","Oristano","Padua","Palermo","Parma","Pavia","Perugia","Pesaro and Urbino","Pescara","Piacenza","Piedmont","Pisa","Pistoia","Pordenone","Potenza","Prato","Ragusa","Ravenna","Reggio Emilia","Rieti","Rimini","Rovigo","Salerno","Sardinia","Sassari","Savona","Sicily","Siena","Siracusa","Sondrio","South Sardinia","Taranto","Teramo","Terni","Trapani","Trentino-South Tyrol","Treviso","Trieste","Tuscany","Udine","Umbria","Varese","Veneto","Verbano-Cusio-Ossola","Vercelli","Verona","Vibo Valentia","Vicenza","Viterbo"]},{name:"Jamaica",states:["Clarendon Parish","Hanover Parish","Kingston Parish","Manchester Parish","Portland Parish","Saint Andrew","Saint Ann Parish","Saint Catherine Parish","Saint Elizabeth Parish","Saint James Parish","Saint Mary Parish","Saint Thomas Parish","Trelawny Parish","Westmoreland Parish"]},{name:"Japan",states:["Aichi Prefecture","Akita Prefecture","Aomori Prefecture","Chiba Prefecture","Ehime Prefecture","Fukui Prefecture","Fukuoka Prefecture","Fukushima Prefecture","Gifu Prefe
1cture","Gunma Prefecture","Hiroshima Prefecture","Hokkaidō Prefecture","Hyōgo Prefecture","Ibaraki Prefecture","Ishikawa Prefecture","Iwate Prefecture","Kagawa Prefecture","Kagoshima Prefecture","Kanagawa Prefecture","Kōchi Prefecture","Kumamoto Prefecture","Kyōto Prefecture","Mie Prefecture","Miyagi Prefecture","Miyazaki Prefecture","Nagano Prefecture","Nagasaki Prefecture","Nara Prefecture","Niigata Prefecture","Ōita Prefecture","Okayama Prefecture","Okinawa Prefecture","Ōsaka Prefecture","Saga Prefecture","Saitama Prefecture","Shiga Prefecture","Shimane Prefecture","Shizuoka Prefecture","Tochigi Prefecture","Tokushima Prefecture","Tokyo","Tottori Prefecture","Toyama Prefecture","Wakayama Prefecture","Yamagata Prefecture","Yamaguchi Prefecture","Yamanashi Prefecture"]},{name:"Jersey",states:["Grouville","St Brelade","St Clement","St Helier","St John","St Lawrence","St Martin","St Mary","St Ouen","St Peter","St Saviour","Trinity"]},{name:"Jordan",states:["Ajloun","Amman","Aqaba","Balqa","Irbid","Jerash","Karak","Ma'an","Madaba","Mafraq","Tafilah","Zarqa"]},{name:"Kazakhstan",states:["Akmola Region","Aktobe Region","Almaty","Almaty Region","Atyrau Region","Baikonur","East Kazakhstan Region","Jambyl Region","Karaganda Region","Kostanay Region","Kyzylorda Region","Mangystau Region","North Kazakhstan Region","Nur-Sultan","Pavlodar Region","Turkestan Region","West Kazakhstan Province"]},{name:"Kenya",states:["Baringo","Bomet","Bungoma","Busia","Elgeyo-Marakwet","Embu","Garissa","Homa Bay","Isiolo","Kajiado","Kakamega","Kericho","Kiambu","Kilifi","Kirinyaga","Kisii","Kisumu","Kitui","Kwale","Laikipia","Lamu","Machakos","Makueni","Mandera","Marsabit","Meru","Migori","Mombasa","Murang'a","Nairobi City","Nakuru","Nandi","Narok","Nyamira","Nyandarua","Nyeri","Samburu","Siaya","Taita–Taveta","Tana River","Tharaka-Nithi","Trans Nzoia","Turkana","Uasin Gishu","Vihiga","Wajir","West Pokot"]},{name:"Kiribati",states:["Gilbert Islands","Line Islands","Phoenix Islands"]},{name:"Kosovo",states:["Đakovica District (Gjakove)","Gjilan District","Kosovska Mitrovica District","Peć District","Pristina (Priştine)","Prizren District","UroÅ¡evac District (Ferizaj)"]},{name:"Kuwait",states:["Al Ahmadi","Al Farwaniyah","Al Jahra","Capital","Hawalli","Mubarak Al-Kabeer"]},{name:"Kyrgyzstan",states:["Batken Region","Bishkek","Chuy Region","Issyk-Kul Region","Jalal-Abad Region","Naryn Region","Osh","Osh Region","Talas Region"]},{name:"Laos",states:["Attapeu Province","Bokeo Province","Bolikhamsai Province","Champasak Province","Houaphanh Province","Khammouane Province","Luang Namtha Province","Luang Prabang Province","Oudomxay Province","Phongsaly Province","Sainyabuli Province","Salavan Province","Savannakhet Province","Sekong Province","Vientiane Prefecture","Vientiane Province","Xaisomboun","Xaisomboun Province","Xiangkhouang Province"]},{name:"Latvia",states:["Aglona Municipality","Aizkraukle Municipality","Aizpute Municipality","AknÄ«ste Municipality","Aloja Municipality","Alsunga Municipality","AlÅ«ksne Municipality","Amata Municipality","Ape Municipality","Auce Municipality","BabÄ«te Municipality","Baldone Municipality","Baltinava Municipality","Balvi Municipality","Bauska Municipality","BeverÄ«na Municipality","Brocēni Municipality","Burtnieki Municipality","Carnikava Municipality","Cēsis Municipality","Cesvaine Municipality","Cibla Municipality","Dagda Municipality","Daugavpils","Daugavpils Municipality","Dobele Municipality","Dundaga Municipality","Durbe Municipality","Engure Municipality","Ērgļi Municipality","Garkalne Municipality","Grobiņa Municipality","Gulbene Municipality","Iecava Municipality","Ikšķile Municipality","IlÅ«kste Municipality","Inčukalns Municipality","Jaunjelgava Municipality","Jaunpiebalga Municipality","Jaunpils Municipality","Jēkabpils","Jēkabpils Municipality","Jelgava","Jelgava Municipality","JÅ«rmala","Kandava Municipality","Kārsava Municipality","Ķegums Municipality","Ķekava Municipality","Kocēni Municipality","Koknese Municipality","Krāslava Municipality","Krimulda Municipality","Krustpils Municipality","KuldÄ«ga Municipality","Lielvārde Municipality","Liepāja","LÄ«gatne Municipality","Limbaži Municipality","LÄ«vāni Municipality","Lubāna Municipality","Ludza Municipality","Madona Municipality","Mālpils Municipality","Mārupe Municipality","Mazsalaca Municipality","Mērsrags Municipality","Naukšēni Municipality","Nereta Municipality","NÄ«ca Municipality","Ogre Municipality","Olaine Municipality","Ozolnieki Municipality","PÄ
1rgauja Municipality","Pāvilosta Municipality","Pļaviņas Municipality","Preiļi Municipality","Priekule Municipality","Priekuļi Municipality","Rauna Municipality","Rēzekne","Rēzekne Municipality","Riebiņi Municipality","Riga","Roja Municipality","Ropaži Municipality","Rucava Municipality","Rugāji Municipality","RÅ«jiena Municipality","Rundāle Municipality","Sala Municipality","SalacgrÄ«va Municipality","Salaspils Municipality","Saldus Municipality","Saulkrasti Municipality","Sēja Municipality","Sigulda Municipality","SkrÄ«veri Municipality","Skrunda Municipality","Smiltene Municipality","Stopiņi Municipality","Strenči Municipality","Talsi Municipality","Tērvete Municipality","Tukums Municipality","Vaiņode Municipality","Valka Municipality","Valmiera","Varakļāni Municipality","Vārkava Municipality","Vecpiebalga Municipality","Vecumnieki Municipality","Ventspils","Ventspils Municipality","ViesÄ«te Municipality","Viļaka Municipality","Viļāni Municipality","Zilupe Municipality"]},{name:"Lebanon",states:["Akkar","Baalbek-Hermel","Beirut","Beqaa","Mount Lebanon","Nabatieh","North","South"]},{name:"Lesotho",states:["Berea District","Butha-Buthe District","Leribe District","Mafeteng District","Maseru District","Mohale's Hoek District","Mokhotlong District","Qacha's Nek District","Quthing District","Thaba-Tseka District"]},{name:"Liberia",states:["Bomi County","Bong County","Gbarpolu County","Grand Bassa County","Grand Cape Mount County","Grand Gedeh County","Grand Kru County","Lofa County","Margibi County","Maryland County","Montserrado County","Nimba","River Cess County","River Gee County","Sinoe County"]},{name:"Libya",states:["Al Wahat District","Benghazi","Derna District","Ghat District","Jabal al Akhdar","Jabal al Gharbi District","Jafara","Jufra","Kufra District","Marj District","Misrata District","Murqub","Murzuq District","Nalut District","Nuqat al Khams","Sabha District","Sirte District","Tripoli District","Wadi al Hayaa District","Wadi al Shatii District","Zawiya District"]},{name:"Liechtenstein",states:["Balzers","Eschen","Gamprin","Mauren","Planken","Ruggell","Schaan","Schellenberg","Triesen","Triesenberg","Vaduz"]},{name:"Lithuania",states:["Akmenė District Municipality","Alytus City Municipality","Alytus County","Alytus District Municipality","BirÅ¡tonas Municipality","Biržai District Municipality","Druskininkai municipality","Elektrėnai municipality","Ignalina District Municipality","Jonava District Municipality","JoniÅ¡kis District Municipality","Jurbarkas District Municipality","KaiÅ¡iadorys District Municipality","Kalvarija municipality","Kaunas City Municipality","Kaunas County","Kaunas District Municipality","Kazlų RÅ«da municipality","Kėdainiai District Municipality","Kelmė District Municipality","Klaipeda City Municipality","Klaipėda County","Klaipėda District Municipality","Kretinga District Municipality","KupiÅ¡kis District Municipality","Lazdijai District Municipality","Marijampolė County","Marijampolė Municipality","Mažeikiai District Municipality","Molėtai District Municipality","Neringa Municipality","Pagėgiai municipality","Pakruojis District Municipality","Palanga City Municipality","Panevėžys City Municipality","Panevėžys County","Panevėžys District Municipality","Pasvalys District Municipality","Plungė District Municipality","Prienai District Municipality","RadviliÅ¡kis District Municipality","Raseiniai District Municipality","Rietavas municipality","RokiÅ¡kis District Municipality","Å akiai District Municipality","Å alčininkai District Municipality","Å iauliai City Municipality","Å iauliai County","Å iauliai District Municipality","Å ilalė District Municipality","Å ilutė District Municipality","Å irvintos District Municipality","Skuodas District Municipality","Å venčionys District Municipality","Tauragė County","Tauragė District Municipality","TelÅ¡iai County","TelÅ¡iai District Municipality","Trakai District Municipality","Ukmergė District Municipality","Utena County","Utena District Municipality","Varėna District Municipality","VilkaviÅ¡kis District Municipality","Vilnius City Municipality","Vilnius County","Vilnius District Municipality","Visaginas Municipality","Zarasai District Municipality"]},{name:"Luxembourg",states:["Canton of Capellen","Canton of Clervaux","Canton of Diekirch","Canton of Echternach","Canton of Esch-sur-Alzette","Canton of Grevenmacher","Canton of Luxembourg","Canton of Mersch","Canton of Redange","Canton of Remich","Canton of Vianden","Canton of Wiltz","Diekirch District","Grevenmacher District","Luxembourg District"]},{name:"Macau S.A.R.",states:[]},{name:"Madagascar",states:["Antananarivo Province","Antsiranana Province","Fianarantsoa Province","Mahajanga Province","Toamasina Province","Toliara Province"]},{name:"Malawi",states:["Balaka District","Blantyre District","Central Region","Chikwawa District","Chiradzulu District","Chitipa district","Dedza District","Dowa District","Karonga District","Kasungu District","Likoma District","Lilongwe District","Machinga District","Mangochi District","Mchinji District","Mulanje District","Mwanza District","Mzimba District","Nkhata Bay District","Nkhotakota District","Northern Region","Nsanje District","Ntcheu District","Ntchisi District","Phalombe District","Rumphi District","Salima District","Southern Region","Thyolo District","Zomba District"]},{name:"Malaysia",states:["Johor","Kedah","Kelantan","Kuala Lumpur","Labuan","Malacca","Negeri Sembilan","Pahang","Penang","Perak","Perlis","Putrajaya","Sabah","Sarawak","Selangor","Terengganu"]},{name:"Maldives",states:["Addu Atoll","Alif Alif Atoll","Alif Dhaal Atoll","Central Province","Dhaalu Atoll","Faafu Atoll","Gaafu Alif Atoll","Gaafu Dhaalu Atoll","Gnaviyani Atoll","Haa Alif Atoll","Haa Dhaalu Atoll","Kaafu Atoll","Laamu Atoll","Lhaviyani Atoll","Malé","Meemu Atoll","Noonu Atoll","North Central Province","North Province","Raa Atoll","Shaviyani Atoll","South Central Province","South Province","Thaa Atoll","Upper South Province","Vaavu Atoll"]},{name:"Mali",states:["Bamako","Gao Region","Kayes Region","Kidal Region","Koulikoro Region","Ménaka Region","Mopti Region","Ségou Region","Sikasso Region","Taoudénit Region","Tombouctou Region"]},{name:"Malta",states:["Attard","Balzan","Birgu","Birkirkara","BirżebbuÄ¡a","Cospicua","Dingli","Fgura","Floriana","Fontana","Għajnsielem","Għarb","Għargħur","Għasri","Għaxaq","Gudja","Gżira","Ħamrun","Iklin","Kalkara","Kerċem","Kirkop","Lija","Luqa","Marsa","Marsaskala","Marsaxlokk","Mdina","Mellieħa","MÄ¡arr","Mosta","Mqabba","Msida","Mtarfa","Munxar","Nadur","Naxxar","Paola","Pembroke","Pietà","Qala","Qormi","Qrendi","Rabat","San Ä wann","San Lawrenz","Sannat","Santa Luċija","Santa Venera","Senglea","Siġġiewi","Sliema","St. Julian's","St. Paul's Bay","Swieqi","Ta' Xbiex","Tarxien","Valletta","Victoria","Xagħra","Xewkija","Xgħajra","Å»abbar","Å»ebbuÄ¡ Gozo","Å»ebbuÄ¡ Malta","Å»ejtun","Å»urrieq"]}
1,{name:"Man (Isle of)",states:["Ayre","Garff","Glenfaba","Michael","Middle","Rushen"]},{name:"Marshall Islands",states:["Ralik Chain","Ratak Chain"]},{name:"Martinique",states:[]},{name:"Mauritania",states:["Adrar","Assaba","Brakna","Dakhlet Nouadhibou","Gorgol","Guidimaka","Hodh Ech Chargui","Hodh El Gharbi","Inchiri","Nouakchott-Nord","Nouakchott-Ouest","Nouakchott-Sud","Tagant","Tiris Zemmour","Trarza"]},{name:"Mauritius",states:["Agalega Islands","Black River","Flacq","Grand Port","Moka","Pamplemousses","Plaines Wilhems","Port Louis","Rivière du Rempart","Rodrigues Island","Saint Brandon Islands","Savanne"]},{name:"Mayotte",states:[]},{name:"Mexico",states:["Aguascalientes","Baja California","Baja California Sur","Campeche","Chiapas","Chihuahua","Ciudad de México","Coahuila de Zaragoza","Colima","Durango","Estado de México","Guanajuato","Guerrero","Hidalgo","Jalisco","Michoacán de Ocampo","Morelos","Nayarit","Nuevo León","Oaxaca","Puebla","Querétaro","Quintana Roo","San Luis Potosí","Sinaloa","Sonora","Tabasco","Tamaulipas","Tlaxcala","Veracruz de Ignacio de la Llave","Yucatán","Zacatecas"]},{name:"Micronesia",states:["Chuuk State","Kosrae State","Pohnpei State","Yap State"]},{name:"Moldova",states:["Anenii Noi District","Bălți Municipality","Basarabeasca District","Bender Municipality","Briceni District","Cahul District","Călărași District","Cantemir District","Căușeni District","Chișinău Municipality","Cimișlia District","Criuleni District","Dondușeni District","Drochia District","Dubăsari District","Edineț District","Fălești District","Florești District","Gagauzia","Glodeni District","Hîncești District","Ialoveni District","Nisporeni District","Ocnița District","Orhei District","Rezina District","Rîșcani District","Sîngerei District","Șoldănești District","Soroca District","Ștefan Vodă District","Strășeni District","Taraclia District","Telenești District","Transnistria autonomous territorial unit","Ungheni District"]},{name:"Monaco",states:["La Colle","La Condamine","Moneghetti"]},{name:"Mongolia",states:["Arkhangai Province","Bayan-Ölgii Province","Bayankhongor Province","Bulgan Province","Darkhan-Uul Province","Dornod Province","Dornogovi Province","Dundgovi Province","Govi-Altai Province","Govisümber Province","Khentii Province","Khovd Province","Khövsgöl Province","Ömnögovi Province","Orkhon Province","Övörkhangai Province","Selenge Province","Sükhbaatar Province","Töv Province","Uvs Province","Zavkhan Province"]},{name:"Montenegro",states:["Andrijevica Municipality","Bar Municipality","Berane Municipality","Bijelo Polje Municipality","Budva Municipality","Danilovgrad Municipality","Gusinje Municipality","Kolašin Municipality","Kotor Municipality","Mojkovac Municipality","Nikšić Municipality","Old Royal Capital Cetinje","Petnjica Municipality","Plav Municipality","Pljevlja Municipality","Plužine Municipality","Podgorica Municipality","Rožaje Municipality","Šavnik Municipality","Tivat Municipality","Ulcinj Municipality","Žabljak Municipality"]},{name:"Montserrat",states:[]},{name:"Morocco",states:["Agadir-Ida-Ou-Tanane","Al Haouz","Al Hoceïma","Aousserd (EH)","Assa-Zag (EH-partial)","Azilal","Béni Mellal","Béni Mellal-Khénifra","Benslimane","Berkane","Berrechid","Boujdour (EH)","Boulemane","Casablanca","Casablanca-Settat","Chefchaouen","Chichaoua","Chtouka-Ait Baha","Dakhla-Oued Ed-Dahab (EH)","Drâa-Tafilalet","Driouch","El Hajeb","El Jadida","El Kelâa des Sraghna","Errachidia","Es-Semara (EH-partial)","Essaouira","Fahs-Anjra","Fès","Fès-Meknès","Figuig","Fquih Ben Salah","Guelmim","Guelmim-Oued Noun (EH-partial)","Guercif","Ifrane","Inezgane-Ait Melloul","Jerada","Kénitra","Khémisset","Khénifra","Khouribga","L'Oriental","Laâyoune (EH)","Laâyoune-Sakia El Hamra (EH-partial)","Larache","M’diq-Fnideq","Marrakech","Marrakesh-Safi","Médiouna","Meknès","Midelt","Mohammadia","Moulay Yacoub","Nador","Nouaceur","Ouarzazate","Oued Ed-Dahab (EH)","Ouezzane","Oujda-Angad","Rabat","Rabat-Salé-Kénitra","Rehamna","S
1afi","Salé","Sefrou","Settat","Sidi Bennour","Sidi Ifni","Sidi Kacem","Sidi Slimane","Skhirate-Témara","Souss-Massa","Tan-Tan (EH-partial)","Tanger-Assilah","Tanger-Tétouan-Al Hoceïma","Taounate","Taourirt","Tarfaya (EH-partial)","Taroudannt","Tata","Taza","Tétouan","Tinghir","Tiznit","Youssoufia","Zagora"]},{name:"Mozambique",states:["Cabo Delgado Province","Gaza Province","Inhambane Province","Manica Province","Maputo","Maputo Province","Nampula Province","Niassa Province","Sofala Province","Tete Province","Zambezia Province"]},{name:"Myanmar",states:["Ayeyarwady Region","Bago","Chin State","Kachin State","Kayah State","Kayin State","Magway Region","Mandalay Region","Mon State","Naypyidaw Union Territory","Rakhine State","Sagaing Region","Shan State","Tanintharyi Region","Yangon Region"]},{name:"Namibia",states:["Erongo Region","Hardap Region","Karas Region","Kavango East Region","Kavango West Region","Khomas Region","Kunene Region","Ohangwena Region","Omaheke Region","Omusati Region","Oshana Region","Oshikoto Region","Otjozondjupa Region","Zambezi Region"]},{name:"Nauru",states:["Aiwo District","Anabar District","Anetan District","Anibare District","Baiti District","Boe District","Buada District","Denigomodu District","Ewa District","Ijuw District","Meneng District","Nibok District","Uaboe District","Yaren District"]},{name:"Nepal",states:["Bagmati","Gandaki","Karnali","Koshi","Lumbini","Madhesh","Sudurpashchim"]},{name:"Netherlands",states:["Bonaire","Drenthe","Flevoland","Friesland","Gelderland","Groningen","Limburg","North Brabant","North Holland","Overijssel","Saba","Sint Eustatius","South Holland","Utrecht","Zeeland"]},{name:"New Caledonia",states:["Loyalty Islands Province","North Province","South Province"]},{name:"New Zealand",states:["Auckland Region","Bay of Plenty Region","Canterbury Region","Chatham Islands","Gisborne District","Hawke's Bay Region","Manawatu-Wanganui Region","Marlborough Region","Nelson Region","Northland Region","Otago Region","Southland Region","Taranaki Region","Tasman District","Waikato Region","Wellington Region","West Coast Region"]},{name:"Nicaragua",states:["Boaco","Carazo","Chinandega","Chontales","Estelí","Granada","Jinotega","León","Madriz","Managua","Masaya","Matagalpa","North Caribbean Coast","Nueva Segovia","Río San Juan","Rivas","South Caribbean Coast"]},{name:"Niger",states:["Agadez Region","Diffa Region","Dosso Region","Maradi Region","Tahoua Region","Tillabéri Region","Zinder Region"]},{name:"Nigeria",states:["Abia","Abuja Federal Capital Territory","Adamawa","Akwa Ibom","Anambra","Bauchi","Bayelsa","Benue","Borno","Cross River","Delta","Ebonyi","Edo","Ekiti","Enugu","Gombe","Imo","Jigawa","Kaduna","Kano","Katsina","Kebbi","Kogi","Kwara","Lagos","Nasarawa","Niger","Ogun","Ondo","Osun","Oyo","Plateau","Rivers","Sokoto","Taraba","Yobe","Zamfara"]},{name:"Niue",states:[]},{name:"Norfolk Island",states:[]},{name:"North Korea",states:["Chagang Province","Kangwon Province","North Hamgyong Province","North Hwanghae Province","North Pyongan Province","Pyongyang","Rason","Ryanggang Province","South Hamgyong Province","South Hwanghae Province","South Pyongan Province"]},{name:"North Macedonia",states:["Aerodrom Municipality","Aračinovo Municipality","Berovo Municipality","Bitola Municipality","Bogdanci Municipality","Bogovinje Municipality","Bosilovo Municipality","Brvenica Municipality","Butel Municipality","Čair Municipality","Čaška Municipality","Centar Municipality","Centar Župa Municipality","Češinovo-Obleševo Municipality","Čučer-Sandevo Municipality","Debarca Municipality","Delčevo Municipality","Demir Hisar Municipality","Demir Kapija Municipality","Dojran Municipality","Dolneni Municipality","Drugovo Municipality","Gazi Baba Municipality","Gevgelija Municipality","Gjorče Petrov Municipality","Gostivar Municipality","Gradsko Municipality","Greater Skopje","Ilinden Municipality","Jegunovce Municipality","Karbinci","Karpoš Municipality","Kavadarci Municipality","Kičevo Municipality","Kisela Voda Municipality","Kočani Municipality","Konče Municipality","Kratovo Municipality","Kriva Palanka Municipality","Krivogaštani Municipality","Kruševo Municipality","Kumanovo Municipality","Lipkovo Municipality","Lozovo Municipality","Makedonska Kamenica Municipality","Makedonski Brod Municipality","Mavrovo and Rostuša Municipality","Mogila Municipality","Negotino Municipality","Novaci Municipality","Novo Selo Municipality","Ohrid Municipality","Oslomej Municipality","Pehčevo Municipality","Petrovec Municipality","Plasnica Municipality","Prilep Municipality","Probištip Municipality","Radoviš Municipality","Rankovce Municipality","Resen Municipality","Rosoman Municipality","Saraj Municipality","Sopište Municipality","Staro Nagoričane Municipality","Štip Municipality","Struga Municipality","Strumica Municipality","Studeničani Municipality","Šuto Orizari Municipality","Sveti Nikole Municipality","Tearce Municipality","Tetovo Municipality","Valandovo Municipality","Vasilevo Municipality","Veles Municipality","Vevčani Municipality","Vinica Municipality","Vraneštica Municipality","Vrapčište Municipality","Zajas Municipality","Zelenikovo Municipality","Želino Municipality","Zrnovci Municipality"]},{name:"Northern Mariana Islands",states:[]},{name:"Norway",states:["Agder","Innlandet","Jan Mayen","Møre og Romsdal","Nordland","Oslo","Rogaland","Svalbard","Troms og Finnmark","Trøndelag","Vestfold og Telemark","Vestland","Viken"]},{name:"Oman",states:["Ad Dakhiliyah","Ad Dhahirah","Al Batinah North","Al Batinah Region","Al Batinah South","Al Buraimi","Al Wusta","Ash Sharqiyah North","Ash Sharqiyah Region","Ash Sharqiyah South","Dhofar","Musandam","Muscat"]},{name:"Pakistan",states:["Azad Kashmir","Balochistan","Federally Administered Tribal Areas","Gilgit-
1Baltistan","Islamabad Capital Territory","Khyber Pakhtunkhwa","Punjab","Sindh"]},{name:"Palau",states:["Aimeliik","Airai","Angaur","Hatohobei","Kayangel","Koror","Melekeok","Ngaraard","Ngarchelong","Ngardmau","Ngatpang","Ngchesar","Ngeremlengui","Ngiwal","Peleliu","Sonsorol"]},{name:"Palestinian Territory Occupied",states:["Bethlehem","Deir El Balah","Gaza","Hebron","Jenin","Jericho ","Jerusalem (Quds)","Khan Yunis","Nablus","North Gaza","Qalqilya","Rafah","Ramallah","Salfit","Tubas","Tulkarm"]},{name:"Panama",states:["Bocas del Toro Province","Chiriquí Province","Coclé Province","Colón Province","Darién Province","Emberá-Wounaan Comarca","Guna Yala","Herrera Province","Los Santos Province","Ngöbe-Buglé Comarca","Panamá Oeste Province","Panamá Province","Veraguas Province"]},{name:"Papua New Guinea",states:["Bougainville","Central Province","Chimbu Province","East New Britain","East Sepik","Eastern Highlands Province","Enga Province","Gulf","Hela","Jiwaka Province","Madang Province","Manus Province","Milne Bay Province","Morobe Province","New Ireland Province","Oro Province","Port Moresby","Sandaun Province","Southern Highlands Province","West New Britain Province","Western Highlands Province","Western Province"]},{name:"Paraguay",states:["Alto Paraguay Department","Alto Paraná Department","Amambay Department","Asuncion","Boquerón Department","Caaguazú","Caazapá","Canindeyú","Central Department","Concepción Department","Cordillera Department","Guairá Department","Itapúa","Misiones Department","Ñeembucú Department","Paraguarí Department","Presidente Hayes Department","San Pedro Department"]},{name:"Peru",states:["Amazonas","Áncash","Apurímac","Arequipa","Ayacucho","Cajamarca","Callao","Cusco","Huancavelica","Huanuco","Ica","Junín","La Libertad","Lambayeque","Lima","Loreto","Madre de Dios","Moquegua","Pasco","Piura","Puno","San Martín","Tacna","Tumbes","Ucayali"]},{name:"Philippines",states:["Abra","Agusan del Norte","Agusan del Sur","Aklan","Albay","Antique","Apayao","Aurora","Autonomous Region in Muslim Mindanao","Basilan","Bataan","Batanes","Batangas","Benguet","Bicol","Biliran","Bohol","Bukidnon","Bulacan","Cagayan","Cagayan Valley","Calabarzon","Camarines Norte","Camarines Sur","Camiguin","Capiz","Caraga","Catanduanes","Cavite","Cebu","Central Luzon","Central Visayas","Compostela Valley","Cordillera Administrative","Cotabato","Davao","Davao del Norte","Davao del Sur","Davao Occidental","Davao Oriental","Dinagat Islands","Eastern Samar","Eastern Visayas","Guimaras","Ifugao","Ilocos","Ilocos Norte","Ilocos Sur","Iloilo","Isabela","Kalinga","La Union","Laguna","Lanao del Norte","Lanao del Sur","Leyte","Maguindanao","Marinduque","Masbate","Metro Manila","Mimaropa","Misamis Occidental","Misamis Oriental","Mountain Province","Negros Occidental","Negros Oriental","Northern Mindanao","Northern Samar","Nueva Ecija","Nueva Vizcaya","Occidental Mindoro","Oriental Mindoro","Palawan","Pampanga","Pangasinan","Quezon","Quirino","Rizal","Romblon","Sarangani","Siquijor","Soccsksargen","Sorsogon","South Cotabato","Southern Leyte","Sultan Kudarat","Sulu","Surigao del Norte","Surigao del Sur","Tarlac","Tawi-Tawi","Western Samar","Western Visayas","Zambales","Zamboanga del Norte","Zamboanga del Sur","Zamboanga Peninsula","Zamboanga Sibugay"]},{name:"Pitcairn Island",states:[]},{name:"Poland",states:["Greater Poland","Holy Cross","Kuyavia-Pomerania","Lesser Poland","Lower Silesia","Lublin","Lubusz","Łódź","Mazovia","Podlaskie","Pomerania","Silesia","Subcarpathia","Upper Silesia","Warmia-Masuria","West Pomerania"]},{name:"Portugal",states:["Açores","Aveiro","Beja","Braga","Bragança","Castelo Branco","Coimbra","Évora","Faro","Guarda","Leiria","Lisbon","Madeira","Portalegre","Porto","Santarém","Setúbal","Viana do Castelo","Vila Real","Viseu"]},{name:"Puerto Rico",states:["Adjuntas","Aguada","Aguadilla","Aguas Buenas","Aibonito","Añasco","Arecibo","Arecibo","Arroyo","Barceloneta","Barranquitas","Bayamon","Bayamón","Cabo Rojo","Caguas","Caguas","Camuy","Canóvanas","Carolina","Carolina","Cataño","Cayey","Ceiba","Ciales","Cidra","Coamo","Comerío","Corozal","Culebra","Dorado","Fajardo","Florida","Guánica","Guayama","Guayanilla","Guaynabo","Guaynabo","Gurabo","Hatillo","Hormigueros","Humacao","Isabela","Jayuya","Juana Díaz","Juncos","Lajas","Lares","Las Marías","Las Piedras","Loíza","Luquillo","Manatí","Maricao","Maunabo","Mayagüez","Mayagüez","Moca","Morovis","Naguabo","Naranjito","Orocovis","Patillas","Peñuelas","Ponce","Ponce","Quebradillas","Rincón","Río Grande","Sabana Grande","Salinas","San Germán","San Juan","San Juan","San Lorenzo","San Sebastián","Santa Isabel","Toa Alta","Toa Baja","Toa Baja","Trujillo Alto","Trujillo Alto","Utuado","Vega Alta","Vega Baja","Vieques","Villalba","Yabucoa","Yauco"]},{name:"Qatar",states:["Al Daayen","Al Khor","Al Rayyan Municipality","Al Wakrah","Al-Shahaniya","Doha","Madinat ash Shamal","Umm Salal Municipality"]},{name:"Reunion",states:[]},{name:"Romania",states:["Alba","Arad County","Arges","Bacău County","Bihor County","Bistrița-Năsăud County","Botoșani County","Braila","Brașov County","Bucharest","Buzău County","Călărași County","Caraș-Severin County","Cluj County","Constanța County","Covasna County","Dâmbovița County","Dolj County","Galați County","Giurgiu County","Gorj County","Harghita County","Hunedoara County","Ialomița County","Iași County","Ilfov County","Maramureș County","Mehedinți County","Mureș County","Neamț County","Olt County","Prahova County","Sălaj County","Satu Mare County","Sibiu County","Suceava County","Teleorman County","Timiș County","Tulcea County","Vâlcea County","Vaslui County","Vrancea County"]},{name:"Russia",states:["Altai Krai","Altai Republic","Amur Oblast","Arkhangelsk","Astrakhan Oblast","Belgorod Oblast","Bryansk Oblast","Chechen Republic","Chelyabinsk Oblast","Chukotka Autonomous Okrug","Chuvash Republic","Irkut
1sk","Ivanovo Oblast","Jewish Autonomous Oblast","Kabardino-Balkar Republic","Kaliningrad","Kaluga Oblast","Kamchatka Krai","Karachay-Cherkess Republic","Kemerovo Oblast","Khabarovsk Krai","Khanty-Mansi Autonomous Okrug","Kirov Oblast","Komi Republic","Kostroma Oblast","Krasnodar Krai","Krasnoyarsk Krai","Kurgan Oblast","Kursk Oblast","Leningrad Oblast","Lipetsk Oblast","Magadan Oblast","Mari El Republic","Moscow","Moscow Oblast","Murmansk Oblast","Nenets Autonomous Okrug","Nizhny Novgorod Oblast","Novgorod Oblast","Novosibirsk","Omsk Oblast","Orenburg Oblast","Oryol Oblast","Penza Oblast","Perm Krai","Primorsky Krai","Pskov Oblast","Republic of Adygea","Republic of Bashkortostan","Republic of Buryatia","Republic of Dagestan","Republic of Ingushetia","Republic of Kalmykia","Republic of Karelia","Republic of Khakassia","Republic of Mordovia","Republic of North Ossetia-Alania","Republic of Tatarstan","Rostov Oblast","Ryazan Oblast","Saint Petersburg","Sakha Republic","Sakhalin","Samara Oblast","Saratov Oblast","Smolensk Oblast","Stavropol Krai","Sverdlovsk","Tambov Oblast","Tomsk Oblast","Tula Oblast","Tuva Republic","Tver Oblast","Tyumen Oblast","Udmurt Republic","Ulyanovsk Oblast","Vladimir Oblast","Volgograd Oblast","Vologda Oblast","Voronezh Oblast","Yamalo-Nenets Autonomous Okrug","Yaroslavl Oblast","Zabaykalsky Krai"]},{name:"Rwanda",states:["Eastern Province","Kigali district","Northern Province","Southern Province","Western Province"]},{name:"Saint Helena",states:[]},{name:"Saint Kitts and Nevis",states:["Christ Church Nichola Town Parish","Nevis","Saint Anne Sandy Point Parish","Saint George Gingerland Parish","Saint James Windward Parish","Saint John Capisterre Parish","Saint John Figtree Parish","Saint Kitts","Saint Mary Cayon Parish","Saint Paul Capisterre Parish","Saint Paul Charlestown Parish","Saint Peter Basseterre Parish","Saint Thomas Lowland Parish","Saint Thomas Middle Island Parish","Trinity Palmetto Point Parish"]},{name:"Saint Lucia",states:["Anse la Raye Quarter","Canaries","Castries Quarter","Choiseul Quarter","Dauphin Quarter","Dennery Quarter","Gros Islet Quarter","Laborie Quarter","Micoud Quarter","Praslin Quarter","Soufrière Quarter","Vieux Fort Quarter"]},{name:"Saint Pierre and Miquelon",states:[]},{name:"Saint Vincent and the Grenadines",states:["Charlotte Parish","Grenadines Parish","Saint Andrew Parish","Saint David Parish","Saint George Parish","Saint Patrick Parish"]},{name:"Saint-Barthelemy",states:[]},{name:"Saint-Martin (French part)",states:[]},{name:"Samoa",states:["A'ana","Aiga-i-le-Tai","Atua","Fa'asaleleaga","Gaga'emauga","Gaga'ifomauga","Palauli","Satupa'itea","Tuamasaga","Va'a-o-Fonoti","Vaisigano"]},{name:"San Marino",states:["Acquaviva","Borgo Maggiore","Chiesanuova","Domagnano","Faetano","Fiorentino","Montegiardino","San Marino","Serravalle"]},{name:"Sao Tome and Principe",states:["Príncipe Province","São Tomé Province"]},{name:"Saudi Arabia",states:["'Asir","Al Bahah","Al Jawf","Al Madinah","Al-Qassim","Eastern Province","Ha'il","Jizan","Makkah","Najran","Northern Borders","Riyadh","Tabuk"]},{name:"Senegal",states:["Dakar","Diourbel Region","Fatick","Kaffrine","Kaolack","Kédougou","Kolda","Louga","Matam","Saint-Louis","Sédhiou","Tambacounda Region","Thiès Region","Ziguinchor"]},{name:"Serbia",states:["Belgrade","Bor District","Braničevo District","Central Banat District","Jablanica District","Kolubara District","Mačva District","Moravica District","Nišava District","North Bačka District","North Banat District","Pčinja District","Pirot District","Podunavlje District","Pomoravlje District","Rasina District","Raška District","South Bačka District","South Banat District","Srem District","Šumadija District","Toplica District","Vojvodina","West Bačka District","Zaječar District","Zlatibor District"]},{name:"Seychelles",states:["Anse Boileau","Anse Royale","Anse-aux-Pins","Au Cap","Baie Lazare","Baie Sainte Anne","Beau Vallon","Bel Air","Bel Ombre","Cascade","Glacis","Grand'Anse Mahé","Grand'Anse Praslin","La Digue","La Rivière Anglaise","Les Mamelles","Mont Buxton","Mont Fleuri","Plaisance","Pointe La Rue","Port Glaud","Roche Caiman","Saint Louis","Takamaka"]},{name:"Sierra Leone",states:["Eastern Province","Northern Province","Southern Province","Western Area"]},{name:"Singapore",states:["Central Singapore","North East","North West","S
1outh East","South West"]},{name:"Sint Maarten (Dutch part)",states:[]},{name:"Slovakia",states:["Banská Bystrica Region","Bratislava Region","Košice Region","Nitra Region","Prešov Region","Trenčín Region","Trnava Region","Žilina Region"]},{name:"Slovenia",states:["Ajdovščina Municipality","Ankaran Municipality","Beltinci Municipality","Benedikt Municipality","Bistrica ob Sotli Municipality","Bled Municipality","Bloke Municipality","Bohinj Municipality","Borovnica Municipality","Bovec Municipality","Braslovče Municipality","Brda Municipality","Brežice Municipality","Brezovica Municipality","Cankova Municipality","Cerklje na Gorenjskem Municipality","Cerknica Municipality","Cerkno Municipality","Cerkvenjak Municipality","City Municipality of Celje","City Municipality of Novo Mesto","Črenšovci Municipality","Črna na Koroškem Municipality","Črnomelj Municipality","Destrnik Municipality","Divača Municipality","Dobje Municipality","Dobrepolje Municipality","Dobrna Municipality","Dobrova–Polhov Gradec Municipality","Dobrovnik Municipality","Dol pri Ljubljani Municipality","Dolenjske Toplice Municipality","Domžale Municipality","Dornava Municipality","Dravograd Municipality","Duplek Municipality","Gorenja Vas–Poljane Municipality","Gorišnica Municipality","Gorje Municipality","Gornja Radgona Municipality","Gornji Grad Municipality","Gornji Petrovci Municipality","Grad Municipality","Grosuplje Municipality","Hajdina Municipality","Hoče–Slivnica Municipality","Hodoš Municipality","Horjul Municipality","Hrastnik Municipality","Hrpelje–Kozina Municipality","Idrija Municipality","Ig Municipality","Ivančna Gorica Municipality","Izola Municipality","Jesenice Municipality","Jezersko Municipality","Juršinci Municipality","Kamnik Municipality","Kanal ob Soči Municipality","Kidričevo Municipality","Kobarid Municipality","Kobilje Municipality","Kočevje Municipality","Komen Municipality","Komenda Municipality","Koper City Municipality","Kostanjevica na Krki Municipality","Kostel Municipality","Kozje Municipality","Kranj City Municipality","Kranjska Gora Municipality","Križevci Municipality","Kungota","Kuzma Municipality","Laško Municipality","Lenart Municipality","Lendava Municipality","Litija Municipality","Ljubljana City Municipality","Ljubno Municipality","Ljutomer Municipality","Log–Dragomer Municipality","Logatec Municipality","Loška Dolina Municipality","Loški Potok Municipality","Lovrenc na Pohorju Municipality","Luče Municipality","Lukovica Municipality","Majšperk Municipality","Makole Municipality","Maribor City Municipality","Markovci Municipality","Medvode Municipality","Mengeš Municipality","Metlika Municipality","Mežica Municipality","Miklavž na Dravskem Polju Municipality","Miren–Kostanjevica Municipality","Mirna Municipality","Mirna Peč Municipality","Mislinja Municipality","Mokronog–Trebelno Municipality","Moravče Municipality","Moravske Toplice Municipality","Mozirje Municipality","Municipality of Apače","Municipality of Cirkulane","Municipality of Ilirska Bistrica","Municipality of Krško","Municipality of Škofljica","Murska Sobota City Municipality","Muta Municipality","Naklo Municipality","Nazarje Municipality","Nova Gorica City Municipality","Odranci Municipality","Oplotnica","Ormož Municipality","Osilnica Municipality","Pesnica Municipality","Piran Municipality","Pivka Municipality","Podčetrtek Municipality","Podlehnik Municipality","Podvelka Municipality","Poljčane Municipality","Polzela Municipality","Postojna Municipality","Prebold Municipality","Preddvor Municipality","Prevalje Municipality","Ptuj City Municipality","Puconci Municipality","Rače–Fram Municipality","Radeče Municipality","Radenci Municipality","Radlje ob Dravi Municipality","Radovljica Municipality","Ravne na Koroškem Municipality","Razkrižje Municipality","Rečica ob Savinji Municipality","Renče–Vogrsko Municipality","Ribnica Municipality","Ribnica na Pohorju Municipality","Rogaška Slatina Municipality","Rogašovci Municipality","Rogatec Municipality","Ruše Municipality","Šalovci Municipality","Selnica ob Dravi Municipality","Semič Municipality","Šempeter–Vrtojba Municipality","Šenčur Municipality","Šentilj Municipality","Šentjernej Municipality","Šentjur Municipality","Šentrupert Municipality","Sevnica Municipality","Sežana Municipality","Šk
1ocjan Municipality","Škofja Loka Municipality","Slovenj Gradec City Municipality","Slovenska Bistrica Municipality","Slovenske Konjice Municipality","Šmarje pri Jelšah Municipality","Šmarješke Toplice Municipality","Šmartno ob Paki Municipality","Šmartno pri Litiji Municipality","Sodražica Municipality","Solčava Municipality","Šoštanj Municipality","Središče ob Dravi","Starše Municipality","Štore Municipality","Straža Municipality","Sveta Ana Municipality","Sveta Trojica v Slovenskih Goricah Municipality","Sveti Andraž v Slovenskih Goricah Municipality","Sveti Jurij ob Ščavnici Municipality","Sveti Jurij v Slovenskih Goricah Municipality","Sveti Tomaž Municipality","Tabor Municipality","Tišina Municipality","Tolmin Municipality","Trbovlje Municipality","Trebnje Municipality","Trnovska Vas Municipality","Tržič Municipality","Trzin Municipality","Turnišče Municipality","Velika Polana Municipality","Velike Lašče Municipality","Veržej Municipality","Videm Municipality","Vipava Municipality","Vitanje Municipality","Vodice Municipality","Vojnik Municipality","Vransko Municipality","Vrhnika Municipality","Vuzenica Municipality","Zagorje ob Savi Municipality","Žalec Municipality","Zavrč Municipality","Železniki Municipality","Žetale Municipality","Žiri Municipality","Žirovnica Municipality","Zreče Municipality","Žužemberk Municipality"]},{name:"Solomon Islands",states:["Central Province","Choiseul Province","Guadalcanal Province","Honiara","Isabel Province","Makira-Ulawa Province","Malaita Province","Rennell and Bellona Province","Temotu Province","Western Province"]},{name:"Somalia",states:["Awdal Region","Bakool","Banaadir","Bari","Bay","Galguduud","Gedo","Hiran","Lower Juba","Lower Shebelle","Middle Juba","Middle Shebelle","Mudug","Nugal","Sanaag Region","Togdheer Region"]},{name:"South Africa",states:["Eastern Cape","Free State","Gauteng","KwaZulu-Natal","Limpopo","Mpumalanga","North West","Northern Cape","Western Cape"]},{name:"South Georgia",states:[]},{name:"South Korea",states:["Busan","Daegu","Daejeon","Gangwon Province","Gwangju","Gyeonggi Province","Incheon","Jeju","North Chungcheong Province","North Gyeongsang Province","North Jeolla Province","Sejong City","Seoul","South Chungcheong Province","South Gyeongsang Province","South Jeolla Province","Ulsan"]},{name:"South Sudan",states:["Central Equatoria","Eastern Equatoria","Jonglei State","Lakes","Northern Bahr el Ghazal","Unity","Upper Nile","Warrap","Western Bahr el Ghazal","Western Equatoria"]},{name:"Spain",states:["A Coruña","Albacete","Alicante","Almeria","Araba","Asturias","Ávila","Badajoz","Barcelona","Bizkaia","Burgos","Caceres","Cádiz","Canarias","Cantabria","Castellón","Ceuta","Ciudad Real","Córdoba","Cuenca","Gipuzkoa","Girona","Granada","Guadalajara","Huelva","Huesca","Islas Baleares","Jaén","La Rioja","Las Palmas","León","Lleida","Lugo","Madrid","Málaga","Melilla","Murcia","Navarra","Ourense","Palencia","Pontevedra","Salamanca","Santa Cruz de Tenerife","Segovia","Sevilla","Soria","Tarragona","Teruel","Toledo","Valencia","Valladolid","Zamora","Zaragoza"]},{name:"Sri Lanka",states:["Ampara District","Anuradhapura District","Badulla District","Batticaloa District","Central Province","Colombo District","Eastern Province","Galle District","Gampaha District","Hambantota District","Jaffna District","Kalutara District","Kandy District","Kegalle District","Kilinochchi District","Mannar District","Matale District","Matara District","Monaragala District","Mullaitivu District","North Central Province","North Western Province","Northern Province","Nuwara Eliya District","Polonnaruwa District","Puttalam District","Ratnapura district","Sabaragamuwa Province","Southern Province","Trincomalee District","Uva Province","Vavuniya District","Western Province"]},{name:"Sudan",states:["Al Jazirah","Al Qadarif","Blue Nile","Central Darfur","East Darfur","Kassala","Khartoum","North Darfur","North Kordofan","Northern","Red Sea","River Nile","Sennar","South Darfur","South Kordofan","West Darfur","West Kordofan","White Nile"]},{name:"Suriname",states:["Brokopondo District","Commewijne District","Coronie District","Marowijne District","Nickerie District","Para District","Paramaribo District","Saramacca District","Sipaliwini District","Wanica District"]},{name:"Svalbard and Jan Mayen Islands",states:[]},{name:"Sweden",states:["Blekinge County","Dalarna County","Gävleborg County","Gotland County","Halland County","Jämtland County","Jönköping County","Kalmar County","Kronoberg County","Norrbotten County","Örebro County","Östergötland County","Skåne County","Södermanland County","Stockholm County","Uppsala County","Värmland County","Västerbotten County","Västernorrland County","Västmanland County","Västra Götaland County"]},{name:"Switzerland",states:["Aargau","Appenzell Ausserrhoden","Appenzell Innerrhoden","Basel-Land","Basel-Stadt","Bern","Fribourg","Geneva","Glarus","Graubünden","Jura","Lucerne","Neuchâtel","Nidwalden","Obwalden","Schaffhausen","Schwyz","Solothurn","St. Gallen","Thurgau","Ticino","Uri","Valais","Vaud","Zug","Züric
1h"]},{name:"Syria",states:["Al-Hasakah","Al-Raqqah","Aleppo","As-Suwayda","Damascus","Daraa","Deir ez-Zor","Hama","Homs","Idlib","Latakia","Quneitra","Rif Dimashq","Tartus"]},{name:"Taiwan",states:["Changhua","Chiayi","Chiayi","Hsinchu","Hsinchu","Hualien","Kaohsiung","Keelung","Kinmen","Lienchiang","Miaoli","Nantou","New Taipei","Penghu","Pingtung","Taichung","Tainan","Taipei","Taitung","Taoyuan","Yilan","Yunlin"]},{name:"Tajikistan",states:["districts of Republican Subordination","Gorno-Badakhshan Autonomous Province","Khatlon Province","Sughd Province"]},{name:"Tanzania",states:["Arusha","Dar es Salaam","Dodoma","Geita","Iringa","Kagera","Katavi","Kigoma","Kilimanjaro","Lindi","Manyara","Mara","Mbeya","Morogoro","Mtwara","Mwanza","Njombe","Pemba North","Pemba South","Pwani","Rukwa","Ruvuma","Shinyanga","Simiyu","Singida","Songwe","Tabora","Tanga","Zanzibar North","Zanzibar South","Zanzibar West"]},{name:"Thailand",states:["Amnat Charoen","Ang Thong","Bangkok","Bueng Kan","Buri Ram","Chachoengsao","Chai Nat","Chaiyaphum","Chanthaburi","Chiang Mai","Chiang Rai","Chon Buri","Chumphon","Kalasin","Kamphaeng Phet","Kanchanaburi","Khon Kaen","Krabi","Lampang","Lamphun","Loei","Lop Buri","Mae Hong Son","Maha Sarakham","Mukdahan","Nakhon Nayok","Nakhon Pathom","Nakhon Phanom","Nakhon Ratchasima","Nakhon Sawan","Nakhon Si Thammarat","Nan","Narathiwat","Nong Bua Lam Phu","Nong Khai","Nonthaburi","Pathum Thani","Pattani","Pattaya","Phangnga","Phatthalung","Phayao","Phetchabun","Phetchaburi","Phichit","Phitsanulok","Phra Nakhon Si Ayutthaya","Phrae","Phuket","Prachin Buri","Prachuap Khiri Khan","Ranong","Ratchaburi","Rayong","Roi Et","Sa Kaeo","Sakon Nakhon","Samut Prakan","Samut Sakhon","Samut Songkhram","Saraburi","Satun","Si Sa Ket","Sing Buri","Songkhla","Sukhothai","Suphan Buri","Surat Thani","Surin","Tak","Trang","Trat","Ubon Ratchathani","Udon Thani","Uthai Thani","Uttaradit","Yala","Yasothon"]},{name:"The Bahamas",states:["Acklins","Acklins and Crooked Islands","Berry Islands","Bimini","Black Point","Cat Island","Central Abaco","Central Andros","Central Eleuthera","Crooked Island","East Grand Bahama","Exuma","Freeport","Fresh Creek","Governor's Harbour","Grand Cay","Green Turtle Cay","Harbour Island","High Rock","Hope Town","Inagua","Kemps Bay","Long Island","Mangrove Cay","Marsh Harbour","Mayaguana District","New Providence","Nichollstown and Berry Islands","North Abaco","North Andros","North Eleuthera","Ragged Island","Rock Sound","Rum Cay District","San Salvador and Rum Cay","San Salvador Island","Sandy Point","South Abaco","South Andros","South Eleuthera","Spanish Wells","West Grand Bahama"]},{name:"The Gambia ",states:["Banjul","Central River Division","Lower River Division","North Bank Division","Upper River Division","West Coast Division"]},{name:"Timor-Leste",states:["Aileu municipality","Ainaro Municipality","Baucau Municipality","Bobonaro Municipality","Cova Lima Municipality","Dili municipality","Ermera District","Lautém Municipality","Liquiçá Municipality","Manatuto District","Manufahi Municipality","Viqueque Municipality"]},{name:"Togo",states:["Centrale Region","Kara Region","Maritime","Plateaux Region","Savanes Region"]},{name:"Tokelau",states:[]},{name:"Tonga",states:["Haʻapai","ʻEua","Niuas","Tongatapu","Vavaʻu"]},{name:"Trinidad and Tobago",states:["Arima","Chaguanas","Couva-Tabaquite-Talparo Regional Corporation","Diego Martin Regional Corporation","Eastern Tobago","Penal-Debe Regional Corporation","Point Fortin","Port of Spain","Princes Town Regional Corporation","Rio Claro-Mayaro Regional Corporation","San Fernando","San Juan-Laventille Regional Corporation","Sangre Grande Regional Corporation","Siparia Regional Corporation","Tunapuna-Piarco Regional Corporation","Western Tobago"]},{name:"Tunisia",states:["Ariana","Béja","Ben Arous","Bizerte","Gabès","Gafsa","Jendouba","Kairouan","Kasserine","Kebili","Kef","Mahdia","Manouba","Medenine","Monastir","Nabeul","Sfax","Sidi Bouzid","Siliana","Sousse","Tataouine","Tozeur","Tunis","Zaghouan"]},{name:"Turkey",states:["Adana","Adıyaman","Afyonkarahisar","Ağrı","Aksaray","Amasya","Ankara","Antalya","Ardahan","Artvin","Aydın","Balıkesir","Bartın","Batman","Bayburt","Bilecik","Bingöl","Bitlis","Bolu","Burdur","Bursa","Çanakkale","Çankırı","Çorum","Denizli","Diyarbakır","Düzce","Edirne","Elazığ","Erzincan","Erzurum","Eskişehir","Gaziantep","Giresun","Gümüşhane","Hakkâri","Hatay","Iğdır","Isparta","İstanbul","İzmir","Kahramanmaraş","Karabük","Karaman","Kars","Kastamonu","Kayseri","Kilis","Kırıkkale","Kırklareli","Kırşehir","Kocaeli","Konya","Kütahya","Malatya","Manisa","Mardin","Mersin","Muğla","Muş","Nevşehir","Niğde","Ordu","Osmaniye","Rize","Sakarya","Samsun","Şanlıurfa","Siirt","Sinop","Sivas","Şırnak","Tekirdağ","Tokat","Trabzon","Tunceli","Uşak","Van","Yalova","Yozgat","Zonguldak"]},{name:"Turkmenistan",states:["Ahal Region","Ashgabat","Balkan Region","Daşoguz Region","Lebap Region","Mary Region"]},{name:"Turks and Caicos Islands",states:[]},{name:"Tuvalu",states:["Funafuti","Nanumanga","Nanumea","Niutao Island Council","Nui","Nukufetau","Nukulaelae","Vaitupu"]},{name:"Uganda",states:["Abim District","Adjumani District","Agago District","Alebtong District","Amolatar District","Amudat District","Amuria District","Amuru District","Apac District","Arua District","Budaka District","Bududa District","Bugiri District","Buhweju District","Buikwe District","Bukedea District","Bukomansimbi District","Bukwo District","Bulambuli District","Buliisa District","Bundibugyo District","Bunyangabu District","Bushenyi District","Busia District","Butaleja District","Butambala District","Butebo District","Buvuma District","Buyende District","Central Region","Dokolo District","Eastern Region","Gomba District","Gulu District","Ibanda District","Iganga District","Isingiro District","Jinja District","Kaabong District","Kabale District","Kabarole District","Kaberamaido District","Kagadi District","Kakumiro District","Kalangala District","Kaliro District","Kalungu District","Kampala District","Kamuli District","Kamwenge District","Kanungu District","Kapchorwa District","Kasese District","Katakwi District","Kayunga District","Kibaale District","Kiboga District","Kibuku District","Kiruhura District","Kiryandongo District","Kisoro District","Kitgum District","Koboko District","Kole District","Kotido District","Kumi District","Kween District","Kyankwanzi District","Kyegegwa District","Kyenjojo District","Kyotera District","Lamwo District","Lira District","Luuka District","Luwero District","Lwengo District","Lyantonde District","Manafwa District","Maracha District","Masaka District","Masindi District","Mayuge District","Mbale District","Mbarara District","Mitooma District","Mityana District","Moroto District","Moyo District","Mpigi District","Mubende District","Mukono District","Nakapiripirit District","Nakaseke District","Nakasongola District","Namayingo District","Namisindwa District","Namutumba District","Napak District","Nebbi District","Ngora District","Northern Region","Ntoroko District","Ntungamo District","Nwoya District","Omoro District","Otuke District","Oyam District","Pader District","Pakwach District","Pallisa District","Rakai District","Rubanda District","Rubirizi District","Rukiga District","Rukungiri District","Sembabule District","Serere District","Sheema District","Sironko District","Soroti District","Tororo District","Wakiso District","Western Region","Yumbe District","Zombo District"]},{name:"Ukraine",states:["Autonomous Republic of Crimea","Cherkaska oblast","Chernihivska oblast","Chernivetska oblast","Dnipropetrovska oblast","Donetska oblast","Ivano-Frankivska oblast","Kharkivska oblast","Khersonska oblast","Khmelnytska oblast","Kirovohradska oblast","Kyiv","Kyivska oblast","Luhanska oblast","Lvivska oblast","Mykolaivska oblast","Odeska oblast","Poltavska oblast","Rivnenska oblast","Sevastopol","Sumska oblast","Ternopilska oblast","Vinnytska oblast","Volynska oblast","Zakarpatska Oblast","Zaporizka oblast","Zhytomyrska oblast"]},{name:"United Arab Emirates",states:["Abu Dhabi Emirate","Ajman Emirate","Dubai","Fujairah","Ras al-Khaimah","Sharjah Emirate","Umm al-Quwain"]},{name:"United Kingdom",states:["Aberdeen","Aberdeenshire","Angus","Antrim","Antrim and Newtownabbey","Ards","Ards and North Down","Argyll and Bute","Armagh City and District Council","Armagh, Banbridge and Craigavon","Ascension Island","Ballymena Borough","Ballymoney","Banbridge","Barnsley","Bath and North East Somerset","Bedford","Belfast district","Birmingham","Blackburn with Darwen","Blackpool","Blaenau Gwent County Borough","Bolton","Bournemouth","Bracknell Forest","Bradford","Bridgend County Borough","Brighton and Hove","Buckinghamshire","Bury","Caerphilly County Borough","Calderdale","Cambridgeshire","Carmarthenshire","Carrickfergus Borough Council","Castlereagh","Causeway Coast and Glens","Central Bedfordshire","Ceredigion","Cheshire East","Cheshire West and Chester","City and County of Cardiff","City and County of Swansea","City of Bristol","City of Derby","City of Kingston upon Hull","City of Leicester","City of London","City of Nottingham","City of Peterborough","City of Plymouth","City of Portsmouth","City of Southampton","City of Stoke-on-Trent","City of Sunderland","City of Westminster","City of Wolverhampton","City of York","Clackmannanshire","Coleraine Borough Council","Conwy County Borough","Co
1okstown District Council","Cornwall","County Durham","Coventry","Craigavon Borough Council","Cumbria","Darlington","Denbighshire","Derbyshire","Derry City and Strabane","Derry City Council","Devon","Doncaster","Dorset","Down District Council","Dudley","Dumfries and Galloway","Dundee","Dungannon and South Tyrone Borough Council","East Ayrshire","East Dunbartonshire","East Lothian","East Renfrewshire","East Riding of Yorkshire","East Sussex","Edinburgh","England","Essex","Falkirk","Fermanagh and Omagh","Fermanagh District Council","Fife","Flintshire","Gateshead","Glasgow","Gloucestershire","Gwynedd","Halton","Hampshire","Hartlepool","Herefordshire","Hertfordshire","Highland","Inverclyde","Isle of Wight","Isles of Scilly","Kent","Kirklees","Knowsley","Lancashire","Larne Borough Council","Leeds","Leicestershire","Limavady Borough Council","Lincolnshire","Lisburn and Castlereagh","Lisburn City Council","Liverpool","London Borough of Barking and Dagenham","London Borough of Barnet","London Borough of Bexley","London Borough of Brent","London Borough of Bromley","London Borough of Camden","London Borough of Croydon","London Borough of Ealing","London Borough of Enfield","London Borough of Hackney","London Borough of Hammersmith and Fulham","London Borough of Haringey","London Borough of Harrow","London Borough of Havering","London Borough of Hillingdon","London Borough of Hounslow","London Borough of Islington","London Borough of Lambeth","London Borough of Lewisham","London Borough of Merton","London Borough of Newham","London Borough of Redbridge","London Borough of Richmond upon Thames","London Borough of Southwark","London Borough of Sutton","London Borough of Tower Hamlets","London Borough of Waltham Forest","London Borough of Wandsworth","Magherafelt District Council","Manchester","Medway","Merthyr Tydfil County Borough","Metropolitan Borough of Wigan","Mid and East Antrim","Mid Ulster","Middlesbrough","Midlothian","Milton Keynes","Monmouthshire","Moray","Moyle District Council","Neath Port Talbot County Borough","Newcastle upon Tyne","Newport","Newry and Mourne District Council","Newry, Mourne and Down","Newtownabbey Borough Council","Norfolk","North Ayrshire","North Down Borough Council","North East Lincolnshire","North Lanarkshire","North Lincolnshire","North Somerset","North Tyneside","North Yorkshire","Northamptonshire","Northern Ireland","Northumberland","Nottinghamshire","Oldham","Omagh District Council","Orkney Islands","Outer Hebrides","Oxfordshire","Pembrokeshire","Perth and Kinross","Poole","Powys","Reading","Redcar and Cleveland","Renfrewshire","Rhondda Cynon Taf","Rochdale","Rotherham","Royal Borough of Greenwich","Royal Borough of Kensington and Chelsea","Royal Borough of Kingston upon Thames","Rutland","Saint Helena","Salford","Sandwell","Scotland","Scottish Borders","Sefton","Sheffield","Shetland Islands","Shropshire","Slough","Solihull","Somerset","South Ayrshire","South Gloucestershire","South Lanarkshire","South Tyneside","Southend-on-Sea","St Helens","Staffordshire","Stirling","Stockport","Stockton-on-Tees","Strabane District Council","Suffolk","Surrey","Swindon","Tameside","Telford and Wrekin","Thurrock","Torbay","Torfaen","Trafford","United Kingdom","Vale of Glamorgan","Wakefield","Wales","Walsall","Warrington","Warwickshire","West Berkshire","West Dunbartonshire","West Lothian","West Sussex","Wiltshire","Windsor and Maidenhead","Wirral","Wokingham","Worcestershire","Wrexham County Borough"]},{name:"United States Minor Outlying Islands",states:["Baker Island","Howland Island","Jarvis Island","Johnston Atoll","Kingman Reef","Midway Islands","Navassa Island","Palmyra Atoll","Wake Island"]},{name:"Uruguay",states:["Artigas","Canelones","Cerro Largo","Colonia","Durazno","Flores","Florida","Lavalleja","Maldonado","Montevideo","Paysandú","Río Negro","Rivera","Rocha","Salto","San José","Soriano","Tacuarembó","Treinta y Tres"]},{name:"Uzbekistan",states:["Andijan Region","Bukhara Region","Fergana Region","Jizzakh Region","Karakalpakstan","Namangan Region","Navoiy Region","Qashqadaryo Region","Samarqand Region","Sirdaryo Region","Surxondaryo Region","Tashkent","Tashkent Region","Xorazm Region"]},{name:"Vanuatu",states:["Malampa","Penama","Sanma","Shefa","Tafea","Torba"]},{name:"Vatican City State (Holy See)",states:[]},{name:"Venezuela",states:["Amazonas","Anzoátegui","Apure","Aragua","Barinas","Bolívar","Carabobo","Cojedes","Delta Amacuro","Distrito Capital","Falcón","Federal Dependencies of Venezuela","Guárico","La Guaira","
1Lara","Mérida","Miranda","Monagas","Nueva Esparta","Portuguesa","Sucre","Táchira","Trujillo","Yaracuy","Zulia"]},{name:"Vietnam",states:["An Giang","Bà Rịa-Vũng Tàu","Bắc Giang","Bắc Kạn","Bạc Liêu","Bắc Ninh","Bến Tre","Bình Dương","Bình Định","Bình Phước","Bình Thuận","Cà Mau","Cần Thơ","Cao Bằng","Đà Nẵng","Đắk Lắk","Đắk Nông","Điện Biên","Đồng Nai","Đồng Tháp","Gia Lai","Hà Giang","Hà Nam","Hà Nội","Hà Tĩnh","Hải Dương","Hải Phòng","Hậu Giang","Hồ Chí Minh","Hòa Bình","Hưng Yên","Khánh Hòa","Kiên Giang","Kon Tum","Lai Châu","Lâm Đồng","Lạng Sơn","Lào Cai","Long An","Nam Định","Nghệ An","Ninh Bình","Ninh Thuận","Phú Thọ","Phú Yên","Quảng Bình","Quảng Nam","Quảng Ngãi","Quảng Ninh","Quảng Trị","Sóc Trăng","Sơn La","Tây Ninh","Thái Bình","Thái Nguyên","Thanh Hóa","Thừa Thiên-Huế","Tiền Giang","Trà Vinh","Tuyên Quang","Vĩnh Long","Vĩnh Phúc","Yên Bái"]},{name:"Virgin Islands (British)",states:[]},{name:"Virgin Islands (US)",states:["Saint Croix","Saint John","Saint Thomas"]},{name:"Wallis and Futuna Islands",states:[]},{name:"Western Sahara",states:[]},{name:"Yemen",states:["'Adan","'Amran","Abyan","Al Bayda'","Al Hudaydah","Al Jawf","Al Mahrah","Al Mahwit","Amanat Al Asimah","Dhamar","Hadhramaut","Hajjah","Ibb","Lahij","Ma'rib","Raymah","Saada","Sana'a","Shabwah","Socotra","Ta'izz"]},{name:"Zambia",states:["Central Province","Copperbelt Province","Eastern Province","Luapula Province","Lusaka Province","Muchinga Province","Northern Province","Northwestern Province","Southern Province","Western Province"]},{name:"Zimbabwe",states:["Bulawayo Province","Harare Province","Manicaland","Mashonaland Central Province","Mashonaland East Province","Mashonaland West Province","Masvingo Province","Matabeleland North Province","Matabeleland South Province","Midlands Province"]}],states:{us:[{name:"Alabama",abbreviation:"AL"},{name:"Alaska",abbreviation:"AK"},{name:"Arkansas",abbreviation:"AR"},{name:"American Samoa",abbreviation:"AS"},{name:"Arizona",abbreviation:"AZ"},{name:"California",abbreviation:"CA"},{name:"Colorado",abbreviation:"CO"},{name:"Connecticut",abbreviation:"CT"},{name:"District Of Columbia",abbreviation:"DC"},{name:"Delaware",abbreviation:"DE"},{name:"Florida",abbreviation:"FL"},{name:"Federated States Of Micronesia",abbreviation:"FM"},{name:"Georgia",abbreviation:"GA"},{name:"Guam",abbreviation:"GU"},{name:"Hawaii",abbreviation:"HI"},{name:"Iowa",abbreviation:"IA"},{name:"Idaho",abbreviation:"ID"},{name:"Illinois",abbreviation:"IL"},{name:"Indiana",abbreviation:"IN"},{name:"Kansas",abbreviation:"KS"},{name:"Kentucky",abbreviation:"KY"},{name:"Louisiana",abbreviation:"LA"},{name:"Massachusetts",abbreviation:"MA"},{name:"Maryland",abbreviation:"MD"},{name:"Maine",abbreviation:"ME"},{name:"Marshall Islands",abbreviation:"MH"},{name:"Michigan",abbreviation:"MI"},{name:"Minnesota",abbreviation:"MN"},{name:"Missouri",abbreviation:"MO"},{name:"Mississippi",abbreviation:"MS"},{name:"Montana",abbreviation:"MT"},{name:"North Carolina",abbreviation:"NC"},{name:"North Dakota",abbreviation:"ND"},{name:"Nebraska",abbreviation:"NE"},{name:"New Hampshire",abbreviation:"NH"},{name:"New Jersey",abbreviation:"NJ"},{name:"New Mexico",abbreviation:"NM"},{name:"Nevada",abbreviation:"NV"},{name:"New York",abbreviation:"NY"},{name:"Northern Mariana Islands",abbreviation:"MP"},{name:"Ohio",abbreviation:"OH"},{name:"Oklahoma",abbreviation:"OK"},{name:"Oregon",abbreviation:"OR"},{name:"Pennsylvania",abbreviation:"PA"},{name:"Puerto Rico",abbreviation:"PR"},{name:"Palau",abbreviation:"PW"},{name:"Rhode Island",abbreviation:"RI"},{name:"South Carolina",abbreviation:"SC"},{name:"South Dakota",abbreviation:"SD"},{name:"Tennessee",abbreviation:"TN"},{name:"Texas",abbreviation:"TX"},{name:"Utah",abbreviation:"UT"},{name:"Virginia",abbreviation:"VA"},{name:"Virgin Islands",abbreviation:"VI"},{name:"Vermont",abbreviation:"VT"},{name:"Washington",abbreviation:"WA"},{name:"Wisconsin",abbreviation:"WI"},{name:"West Virginia",abbreviation:"WV"},{name:"Wyoming",abbreviation:"WY"}],ca:[{name:"Alberta",abbreviation:"AB"},{name:"British Columbia",abbreviation:"BC"},{name:"Manitoba",abbreviation:"MB"},{name:"New Brunswick",abbreviation:"NB"},{name:"Newfoundland and Labrador",abbreviation:"NL"},{name:"Northwest Territories",abbreviation:"NT"},{name:"Nova Scotia",abbreviation:"NS"},{name:"Nunavut",abbreviation:"NU"},{name:"Ontario",abbreviation:"ON"},{name:"Prince Edward Island",abbreviation:"PE"},{name:"Quebec",abbreviation:"QC"},{name:"Saskatchewan",abbreviation:"SK"},{name:"Yukon Territory",abbreviation:"YT"}]},statusCodes:{GONE:410}},PJQ.constants.colors={BLUE:"#007bff",INDIGO:"#6610f2",PURPLE:"#6f42c1",PINK:"#e83e8c",RED:"#dc3545",ORANGE:"#fd7e14",YELLOW:"#ffc107",GREEN:"#4CAF50",TEAL:"#20c997",CYAN:"#17a2b8",WHITE:"#fff",GRAY:"#6c757d",DARK:"#343a40",BLACK:"#000000"},PJQ.constants.navigation={categories:{FIELD_TOOLS:1,BIDDING:2,JOB_COSTING:3},categoryNames:{1:"Field Tools",2:"Bidding",3:"Job Costing"}},PJQ.constants.bidFormHelpers={lineItemTypes:[{name:"Sum",abbreviation:"Sum"},{name:"Each",abbreviation:"Ea."},{name:"Square Feet",abbreviation:"Sq.Ft."},{name:"Linear Feet",abbreviation:"Ln.Ft."},{name:"Cubic Feet",abbreviation:"Cu.Ft."},{name:"Square Yards",abbreviation:"Sq.Yd."},{name:"Linear Yards",abbreviation:"Ln.Yd."},{name:"Cubic Yards",abbreviation:"Cu.Yd."},{name:"Acres",abbreviation:"Acres"},{name:"Hours",abbreviation:"Hrs"},{name:"Days",abbreviation:"Days"},{name:"Pounds",abbreviation:"Lbs."},{name:"Tons",abbreviation:"Tons"}],acknowledgementTypes:["Yes/No","Text","Money","Numeric","Single Choice","Multiple Choice","Date","Date/Time"],bondingTypes:["Yes/No","Text","Money","Numeric","Single Choice","Multiple Choice","Date","Date/Time"],certificationTypes:["Yes/No","Text","Money","Numeric","Single Choice","Multiple Choice","Date","Date/Time"],laborRateTypes:["Yes/No","Text","Money","Numeric","Single Choice","Multiple Choice","Date","Date/Time"],proposalLevelColors:["bddcff","ffc7c7","f8e286","afecb1","e2cdff"]},PJQ.constants.primeContracts={primeContractStatus:{DRAFT:1,OUT_FOR_BID:2,OUT_FOR_SIGNATURE:3,APPROVED:4,COMPLETE:5,TERMINATED:6},primeContractStatusNames:{1:"Draft",2:"Out for Bid",3:"Out for Signature",4:"Approved",5:"Complete",6:"Terminated"},changeOrderStatus:{DRAFT:0,NO_CHARGE:1,IN_REVIEW:2,NOT_PRICING:3,PRICING:4,NOT_PROCEEDING:5,PROCEEDING:6,REVISED:7,APPROVED:8,REJECTED:9,VOID:10},primeContractStatusBuckets:{PENDING:{name:"Pending",statuses:[2,3]},PROJECTED:{name:"Projected",statuses:[2,3,4,5]},APPROVED:{name:"Approved",statuses:[4,5]}},changeOrderStatusNames:{0:"Draft",1:"No Charge",2:"In Review",3:"Not Pricing",4:"Pricing",5:"Not Proceeding",6:"Proceeding",7:"Revised",8:"Approved",9:"Rejected",10:"Void"},changeOrderStatusBuckets:{PENDING:{name:"Pending",statuses:[2,4,6,7,9]},PROJECTED:{name:"Projected",statuses:[2,4,6,7,8]},APPROVED:{name:"Approved",statuses:[8]}},view:{PRIME_CONTRACTS:"primecontracts",CHANGE_ORDERS:"changeorders"},filterType:{PRIME_CONTRACT_STATUS_FILTER:"primeContractStatusFilter"},changeOrderFilterType:{STATUS_FILTER:"statusFilter"}},PJQ.constants.financeCoreFields={primeContacts:{primeContract:[{name:"Number",fieldName:"number",isVisible:!0,isRequired:!1},{name:"Default Work Retainage",fieldName:"defaultWorkRetainagePercent",isVisible:!0,isRequired:!1},{name:"Default Material Retainage",fieldName:"defaultMaterialRetainagePercent",isVisible:!0,isRequired:!1},{name:"Terms",fieldName:"termsId",isVisible:!0,isRequired:!1},{name:"Description",fieldName:"description",isVisible:!0,isRequired:!1},{name:"Start Date",fieldName:"startOn",isVisible:!0,isRequired:!1},{name:"Estimated Completion Date",fieldName:"estimatedCompleteOn",isVisible:!0,isRequired:!1},{name:"Substantial Completion Date",fieldName:"substantialCompleteOn",isVisible:!0,isRequired:!1},{name:"Actual Completion Date",fieldName:"actualCompleteOn",isVisible:!0,isRequired:!1}
1,{name:"Contract Date",fieldName:"contractOn",isVisible:!0,isRequired:!1},{name:"Signed Contract Received Date",fieldName:"signedContractOn",isVisible:!0,isRequired:!1},{name:"Letter of Intent Date",fieldName:"letterOfIntentOn",isVisible:!0,isRequired:!1},{name:"Approval Letter Date",fieldName:"approvalLetterOn",isVisible:!0,isRequired:!1},{name:"Issued On Date",fieldName:"issuedOn",isVisible:!0,isRequired:!1},{name:"Execution Date",fieldName:"executedOn",isVisible:!0,isRequired:!1},{name:"Returned Date",fieldName:"returnedOn",isVisible:!0,isRequired:!1},{name:"Contract Termination Date",fieldName:"contractTerminatedOn",isVisible:!0,isRequired:!1},{name:"Inclusions",fieldName:"inclusions",isVisible:!0,isRequired:!1},{name:"Exclusions",fieldName:"exclusions",isVisible:!0,isRequired:!1},{name:"Signed Documents",fieldName:"signedDocumentAttachments",isVisible:!0,isRequired:!1},{name:"Executed Documents",fieldName:"executedDocumentAttachments",isVisible:!0,isRequired:!1},{name:"Attachments",fieldName:"attachments",isVisible:!0,isRequired:!1}],changeOrder:[{name:"Reviewer",fieldName:"reviewer"},{name:"Received From",fieldName:"receivedFromId"},{name:"Number",fieldName:"number"},{name:"Executed",fieldName:"executed"},{name:"Field Change",fieldName:"fieldChange"},{name:"Paid In Full",fieldName:"paidInFull"},{name:"Change Reason",fieldName:"changeReason"},{name:"Invoiced Date",fieldName:"invoicedDate"},{name:"Due Date",fieldName:"dueDate"},{name:"Description",fieldName:"description"},{name:"Attachments",fieldName:"attachments"}]},commitments:{commitment:[{name:"Invoice Contact",fieldName:"invoiceContactId",isVisible:!0,isRequired:!1},{name:"Number",fieldName:"number",isVisible:!0,isRequired:!1},{name:"Title",fieldName:"title",isVisible:!0,isRequired:!1},{name:"Default Work Retainage",fieldName:"defaultWorkRetainagePercent",isVisible:!0,isRequired:!1},{name:"Default Material Retainage",fieldName:"defaultMaterialRetainagePercent",isVisible:!0,isRequired:!1},{name:"Ship To",fieldName:"shipToId",isVisible:!0,isRequired:!1},{name:"Bill To",fieldName:"billToId",isVisible:!0,isRequired:!1},{name:"Terms",fieldName:"termsId",isVisible:!0,isRequired:!1},{name:"Description",fieldName:"description",isVisible:!0,isRequired:!1},{name:"Start Date",fieldName:"startDate",isVisible:!0,isRequired:!1},{name:"Estimated Completion Date",fieldName:"estimatedCompletionDate",isVisible:!0,isRequired:!1},{name:"Actual Completion Date",fieldName:"actualCompletionDate",isVisible:!0,isRequired:!1},{name:"Contract Date",fieldName:"contractDate",isVisible:!0,isRequired:!1},{name:"Signed Contract Received Date",fieldName:"signedContractReceivedDate",isVisible:!0,isRequired:!1},{name:"Letter of Intent Date",fieldName:"letterOfIntentDate",isVisible:!0,isRequired:!1},{name:"Approval Letter Date",fieldName:"approvalLetterDate",isVisible:!0,isRequired:!1},{name:"Issued On Date",fieldName:"issuedOnDate",isVisible:!0,isRequired:!1},{name:"Execution Date",fieldName:"executionDate",isVisible:!0,isRequired:!1},{name:"Returned Date",fieldName:"returnedDate",isVisible:!0,isRequired:!1},{name:"Inclusions",fieldName:"inclusions",isVisible:!0,isRequired:!1},{name:"Exclusions",fieldName:"exclusions",isVisible:!0,isRequired:!1},{name:"Certificate of Insurance",fieldName:"coiAttachments",isVisible:!0,isRequired:!1},{name:"Delivery Date",fieldName:"deliveryDate",isVisible:!0,isRequired:!1},{name:"Payment Terms",fieldName:"paymentTerms",isVisible:!0,isRequired:!1},{name:"Shipping Terms",fieldName:"shipVia",isVisible:!0,isRequired:!1},{name:"W9",fieldName:"w9Attachments",isVisible:!0,isRequired:!1},{name:"Lien Waivers",fieldName:"lienWaiverAttachments",isVisible:!0,isRequired:!1},{name:"Signed Documents",fieldName:"signedDocumentAttachments",isVisible:!0,isRequired:!1},{name:"Affidavits",fieldName:"affidavitAttachments",isVisible:!0,isRequired:!1},{name:"Executed Documents",fieldName:"executedDocumentAttachments",isVisible:!0,isRequired:!1},{name:"Attachments",fieldName:"attachments",isVisible:!0,isRequired:!1}],changeOrder:[{name:"Reviewer",fieldName:"reviewer"},{name:"Received From",fieldName:"receivedFromId"},{name:"Number",fieldName:"number"},{name:"Executed",fieldName:"executed"},{name:"Field Change",fieldName:"fieldChange"},{name:"Paid In Full",fieldName:"paidInFull"}
1,{name:"Change Reason",fieldName:"changeReason"},{name:"Invoiced Date",fieldName:"invoicedDate"},{name:"Due Date",fieldName:"dueDate"},{name:"Description",fieldName:"description"},{name:"Attachments",fieldName:"attachments"}]},invoices:{payableInvoice:[{name:"Invoice #",fieldName:"number"},{name:"Paid",fieldName:"paid"},{name:"Notes",fieldName:"notes"},{name:"Certificate of Insurance",fieldName:"coiAttachments"},{name:"W9",fieldName:"w9Attachments"},{name:"Lien Waivers",fieldName:"lienWaiverAttachments"},{name:"Attachments",fieldName:"attachments"}],receivableInvoice:[{name:"Invoice #",fieldName:"number"},{name:"Paid",fieldName:"paid"},{name:"Notes",fieldName:"notes"},{name:"Attachments",fieldName:"attachments"}]},directCosts:{directCost:[{name:"Vendor",fieldName:"vendor"},{name:"Reported By",fieldName:"reportedBy"},{name:"Type",fieldName:"type"},{name:"Applied On",fieldName:"appliedOn"},{name:"Received On",fieldName:"receivedOn"},{name:"Paid On",fieldName:"paidOn"},{name:"Terms",fieldName:"terms"},{name:"Description",fieldName:"description"},{name:"Attachments",fieldName:"attachments"}]}},PJQ.constants.primeContractChangeOrders={status:{DRAFT:1,NO_CHARGE:2,IN_REVIEW:3,NOT_PRICING:4,PRICING:5,NOT_PROCEEDING:6,PROCEEDING:7,REVISED:8,APPROVED:9,REJECTED:10,VOID:11},statusNames:{1:"Draft",2:"No Charge",3:"In Review",4:"Not Pricing",5:"Pricing",6:"Not Proceeding",7:"Proceeding",8:"Revised",9:"Approved",10:"Rejected",11:"Void"}},PJQ.constants.invoicing={payableInvoiceStatus:{DRAFT:0,REVIEWING:1,REVISE:2,APPROVED:3,COMPLETE:4,VOID:5},payableInvoiceStatusNames:{0:"Draft",1:"Under Review",2:"Revise",3:"Approved",4:"Complete",5:"Void"},inviteStatus:{DECLINED:0,ACCEPTED:1},receivableInvoiceStatus:{DRAFT:0,REVIEWING:1,REVISE:2,APPROVED:3,COMPLETE:4},receivableInvoiceStatusNames:{0:"Draft",1:"Under Review",2:"Revise",3:"Approved",4:"Complete"},filterType:{STATUS_FILTER:"statusFilter"},view:{PAYABLE_INVOICES:"payableinvoices",RECEIVABLE_INVOICES:"receivableinvoices"},paymentMethods:["Credit Card","Check","Electronic"]},PJQ.constants.directcosts={directCostType:{EXPENSE:1,INVOICE:2,PAYROLL:3},directCostTypeNames:{1:"Expense",2:"Invoice",3:"Payroll"},directCostStatus:{DRAFT:1,PENDING:2,REVISE:3,APPROVED:4},directCostStatusNames:{1:"Draft",2:"Pending",3:"Revise",4:"Approved"},filterType:{DIRECT_COST_TYPE_FILTER:"directCostTypeFilter",DIRECT_COST_STATUS_FILTER:"directCostStatusFilter"},view:{DIRECT_COSTS:"directcosts"}},PJQ.constants.projectContacts={bidStatus:{PENDING:"PENDING",DECLINE:"DECLINE",ACCEPT:"ACCEPT",BID_RECEIVED:"BID RECEIVED",AWARDED:"AWARDED"}},PJQ.constants.markup={requiredAst:'<span class="text-danger">*</span>'},PJQ.constants.localStorage={MY_PROJECT_LIST_FILTER:"MY_PROJECT_LIST_FILTER",BID_FORM_PROPOSAL_SORT:"BID_FORM_PROPOSAL_SORT"},PJQ.constants.cookies={ACTION_ITEM_ORDER_COOKIE:"11236b4e-6da4-4576-98f5-981e8a30b385",CLOSE_PREQUAL_HELP_ALERT:"4343fee1-dcf7-487d-bf4d-7ab33976eef8",NOTIFY_CONTACT_GROUPS_REPORTED:"2f1c6d7f-1f6a-4a8e-9bee-aaa4153e1116",NOTIFY_DAILY_REPORTS_PROJECT_START_END:"0a71555e-3244-4e9d-b94c-cbf4234d56d6",PROJECT_INVITES_FAVORITE_FILTER:"PROJECT_INVITES_FAVORITE_FILTER",PROJECT_INVITES_CURRENT_BIDDING_FILTER:"PROJECT_INVITES_CURRENT_BIDDING_FILTER",PROJECT_INVITES_ORDER_COOKIE:"091ca838-72c2-4f0c-a219-90a65159c75e",SCHEDULE_TEMPLATE_DATES_ORIGIN:"f100ed94-6a16-40c9-8ace-7718a2c0ee4b",RFI_PAGE_LENGTH:"3F156499-1584-4152-9BE7-216A933B03A5",SCHEDULE_TASK_LIST_GROUP_BY:"3F156499-1584-4152-9BE7-216A933B03A5",SUBSCRIPTION_FREE_TRIAL:"97ebfdec-ba47-4c21-84a7-1009f4a4cb32",SUBSCRIPTION_EXPIRES_ALERT:"c649a742-859f-4096-b6cf-f9aa57951b43",SUBMITTAL_ORDER_COOKIE:"f78a796d-cfda-4ba1-acf3-1ae2f8c15446",PUNCHLIST_ORDER_COOKIE:"f3e968f2-bcaf-49a1-9cc1-cceae3824ca8",INSPECTIONS_ORDER_COOKIE:"dbf2eec6-e4da-442b-9795-118d0ff99966",INSPECTIONS_GROUP_BY_KEY:"inspections_group_by",PRODUCTION_QUANTITIES_ORDER_COOKIE:"b2f32e3a-c94f-4bd3-b771-e96905bcca6b",NOTIFY_PREQUAL_VIEW_REQUESTED:"cf6adedb-ca86-4477-86bb-4728679b2041",NOTIFY_DRAWING_SHARE_PREVENT_EXPIRE:"65524272-cb10-40ab-a22f-952ce70c451f",ALERT_DRAWING_SHARE_PREVENT_EXPIRE:"65524272-cb10-40ab-a22f-952ce70c451f",ENABLE_CONSECUTIVE_DRAWING_ANNOTATIONS:"ENABLE_CONSECUTIVE_DRAWING_ANNOTATIONS",SC
1HEDULE_GANTT_SORT_COLUMN:"40a8d697-9043-4fbb-ab82-2c74e80a3378",SCHEDULE_GANTT_SORT_DIRECTION:"6c4475a4-8dbc-475d-8517-d8573e5024c0",SCHEDULE_TASK_LIST_ORDER:"b834b7c5-8ddb-49bd-a972-6f57bb4e32e0",PROJECT_CONTACT_LIST_PAGE_LENGTH:"4f97ff02-e73d-437a-abec-d8bef4d4a7dc",COMMITMENT_LIST_COLUMNS_WIDTH:"998db2bb-00e1-4516-859f-47b06c540046",MY_PROJECTS_LIST_COLUMNS_WIDTH:"8efccf80-0aa4-46a0-89cf-2eadca8ca897",PROJECT_INVITES_LIST_COLUMNS_WIDTH:"06b506e3-5006-43a3-a5bd-0bf6e7cb9077",PRODUCTION_QUANTITIES_COLUMNS_WIDTH:"7bd78c30-b8d7-4810-a3f0-c98dea1e52dd"},PJQ.constants.changeRequests={changeRequestStatus:{DRAFT:0,NO_CHARGE:1,IN_REVIEW:2,NOT_PRICING:3,PRICING:4,NOT_PROCEEDING:5,PROCEEDING:6,REVISED:7,APPROVED:8,REJECTED:9,VOID:10},changeRequestStatusNames:{0:"Draft",1:"No Charge",2:"In Review",3:"Not Pricing",4:"Pricing",5:"Not Proceeding",6:"Proceeding",7:"Revised",8:"Approved",9:"Rejected",10:"Void"},scope:{OWNER_CHANGE:0,INTERNAL:1},scopeNames:{0:"Owner Change",1:"Internal"},revenueSource:{REVENUE:0,MANUAL:1},revenueSourceNames:{0:"Revenue",1:"Manual"},filterType:{STATUS_FILTER:"statusFilter",OTHER_FILTER:"other"},view:{CHANGE_REQUESTS:"changerequests"},changeRequestStatusBuckets:{PENDING:{name:"Pending",statuses:[2,4,6,7,9]},PROJECTED:{name:"Projected",statuses:[2,4,6,7,8]},APPROVED:{name:"Approved",statuses:[8]}}},PJQ.constants.rfq={filterType:{STATUS_FILTER:"statusFilter"},rfqStatus:{DRAFT:0,PRICING:1,REVIEWING:2,REVISE:3,APPROVED:4,CLOSED:5},rfqStatusNames:{0:"Draft",1:"Pricing",2:"Reviewing",3:"Revise",4:"Approved",5:"Closed"},view:{RFQ:"rfq"}},PJQ.constants.commitments={commitmentType:{PURCHASE_ORDER:1,SUBCONTRACT:2},commitmentTypeNames:{1:"Purchase Order",2:"Subcontract"},commitmentStatus:{DRAFT:0,PURCHASE_ORDER_PROCESSING:1,SUBCONTRACT_OUT_FOR_BID:2,OUT_FOR_SIGNATURE:3,SUBMITTED:4,PURCHASE_ORDER_PARTIALLY_RECEIVED:5,PURCHASE_ORDER_RECEIVED:6,APPROVED:7,SUBCONTRACT_COMPLETE:8,SUBCONTRACT_TERMINATED:9,SUBCONTRACT_VOID:10,PURCHASE_ORDER_CLOSED:11},commitmentStatusNames:{0:"Draft",1:"Processing",2:"Out for Bid",3:"Out for Signature",4:"Submitted",5:"Partially Received",6:"Received",7:"Approved",8:"Complete",9:"Terminated",10:"Void",11:"Closed"},commitmentStatusBuckets:{PENDING:{name:"Pending",statuses:[1,2,3,4,5,6]},PROJECTED:{name:"Projected",statuses:[1,2,3,4,5,6,7,8,11]},COMMITTED:{name:"Committed",statuses:[7,8,11]}},changeOrderStatus:{DRAFT:0,NO_CHARGE:1,IN_REVIEW:2,NOT_PRICING:3,PRICING:4,NOT_PROCEEDING:5,PROCEEDING:6,REVISED:7,APPROVED:8,REJECTED:9,VOID:10},changeOrderStatusNames:{0:"Draft",1:"No Charge",2:"In Review",3:"Not Pricing",4:"Pricing",5:"Not Proceeding",6:"Proceeding",7:"Revised",8:"Approved",9:"Rejected",10:"Void"},changeOrderStatusBuckets:{PENDING:{name:"Pending",statuses:[2,4,6,7]},PROJECTED:{name:"Projected",statuses:[2,4,6,7,8]},COMMITTED:{name:"Committed",statuses:[8]}},filterType:{TYPE_FILTER:"typeFilter",STATUS_FILTER:"statusFilter"},changeOrderFilterType:{STATUS_FILTER:"statusFilter"},view:{COMMITMENTS:"commitments",CHANGE_ORDERS:"changeorders"},commitmentNumberTokenDateFormat:{MMDDYYYY:0,MM:1,DD:2,YY:3,YYYY:4},commitmentNumberTokenDateFormatNames:["Full Date","Month","Day","Year 2-Digit","Year"],customFieldType:{BOOLEAN:1,CHOICE:2,DATE:3,DATETIME:4,FILE:5,INTEGER:6,MONEY:7,PERCENT:8,TEXT:9,TEXTAREA:10}},PJQ.constants.regex={CURRENCY_NO_SYMBOL:/(\d)(?=(\d\d\d)+(?!\d))/g},PJQ.constants.modules=(_defineProperty(_PJQ$constants$module={APP:"APP",GLOBAL:"GLOBAL",PROFILE_OLD:"PJQPROFILE",PROFILE:"PROFILE",ACTIONITEMS:"ACTIONITEMS",BIDFORMS:"BIDFORMS",PJQADDRESSBOOK:"PJQADDRESSBOOK",ADDRESSBOOK:"ADDRESSBOOK",PUBLICPROJECTS:"PJQPUBLICPROJECTS",PROJECTWALL:"PROJECTWALL",PROJECTWALLADMIN:"PJQPROJECTWALLADMIN",PROJECTWALLSUB:"PJQPROJECTWALLSUB",PROJECTLIST:"PROJECTLIST",REPORTS:"REPORTS",RFI:"RFI",RESOURCES:"RESOURCES",SUBMITTALS:"SUBMITTALS",FIELDREPORTS:"FIELDREPORTS",MARKUPTOOL:"MARKUPTOOL",PUNCHLISTS:"PUNCHLISTS",DAILYREPORTS:"DAILYREPORTS",LOGIN:"PJQLOGIN",ACCESS_KEY_LOGIN:"PJQACCESSKEYLOGIN",PJQSETTINGS:"PJQSETTINGS",SETTINGS:"SETTINGS"},"SUBMITTALS","SUBMITTALS"),_defineProperty(_PJQ$constants$module,"PANTERASCHEDULE","PANTERASCHEDULE"),_defineProperty(_PJQ$constants$module,"DRAWINGS","DRAWINGS"),_defineProperty(_PJQ$constants$module,"BIDFILER","PJQBIDFILER"),_defineProperty(_PJQ$constants$module,"PRINTONDEMAND","PJQPRINTONDEMAND"),_defineProperty(_PJQ$constants$module,"PJQREGISTRATION","PJQREGISTRATION"),_defineProperty(_PJQ$constants$module,"FILES","FILES"),_defineProperty(_PJQ$constants$module,"SCHEDULE","SCHEDULE"),_defineProperty(_PJQ$constants$module,"TIMECARDS","TIMECARDS"),_defineProperty(_PJQ$constants$module,"INVOICES","INVOICES"),_defineProperty(_PJQ$constants$module,"BUDGET","BUDGET"),_defineProperty(_PJQ$constants$module,"COMMITMENTS","COMM
1ITMENTS"),_defineProperty(_PJQ$constants$module,"PRIMECONTRACTS","PRIMECONTRACTS"),_defineProperty(_PJQ$constants$module,"DIRECTCOSTS","DIRECTCOSTS"),_defineProperty(_PJQ$constants$module,"INVOICING","INVOICING"),_defineProperty(_PJQ$constants$module,"MEETINGS","MEETINGS"),_defineProperty(_PJQ$constants$module,"INSPECTIONS","INSPECTIONS"),_PJQ$constants$module),PJQ.constants.errorCodes={DELETED_CONTACT:100},PJQ.constants.auth={minUsernameLength:5,minPasswordLength:5,login:{errorText:{INVALID_PASSWORD:"The username or password you entered was incorrect.",USER_NOT_FOUND:"The username you entered doesn't exist."}}},PJQ.constants.screenings={statuses:{WAITING:1,UNUSED:2,IN_PROCESS:3,INCOMPLETE:4,FEEDBACK_REQUIRED:5,EXPIRED:6,COMPLETE:7,NOT_APPLICABLE:8}},PJQ.constants.contacts={contexts:{PARTICIPANTS:"PARTICIPANTS",CONTACTS:"CONTACTS",PROJECTCONTACTS:"PROJECTCONTACTS",USERS:"USERS",COMPANIES:"COMPANIES"}},PJQ.constants.customFields={fieldTypes:{INT:"INT",PERCENT:"PERCENT",MONEY:"MONEY",CALC:"CALC",PHONE:"PHONE",TEXT:"TEXT",TEXTAREA:"TEXTAREA",BOOL:"BOOL",CHOICE:"CHOICE",GRID:"GRID",GROUPSELECT:"GROUPSELECT",REGIONSELECT:"REGIONSELECT",DOWNLOAD:"DOWNLOAD",UPLOAD:"FILE",DATE:"DATE",DATETIME:"DATETIME",CUSTOMGRID:"CUSTOMGRID",UPLOADV2:"UPLOADV2"}},PJQ.constants.projects={customFields:{fieldTypes:[PJQ.constants.customFields.fieldTypes.INT,PJQ.constants.customFields.fieldTypes.PERCENT,PJQ.constants.customFields.fieldTypes.MONEY,PJQ.constants.customFields.fieldTypes.TEXT,PJQ.constants.customFields.fieldTypes.TEXTAREA,PJQ.constants.customFields.fieldTypes.BOOL,PJQ.constants.customFields.fieldTypes.CHOICE,PJQ.constants.customFields.fieldTypes.DATE,PJQ.constants.customFields.fieldTypes.DATETIME]}},PJQ.constants.ordering={paperSize:{FULL:"FULL SIZE",HALF:"HALF SIZE"},paper:{WHITE:"WHITE BOND",BLUE:"BLUE BOND",GREEN:"GREEN BOND",YELLOW:"YELLOW BOND",PINK:"PINK BOND"},largeBinding:{STAPLED:"STAPLED",LOOSE:"LOOSE",EDGE:"BINDING EDGE",PUNCHBIND:"PUNCH AND BIND"},smallBinding:{STAPLED:"STAPLED",LOOSE:"LOOSE",CHICAGO:"CHICAGO SCREW",GBC:"GBC PLASTIC COMB"},deliveryOptions:{NEXTMORNING:"Next Day (Morning)",NEXTDAY:"Next Day (Standard)",TWODAY:"Two Day",THREEDAY:"Three Day"}},PJQ.constants.general={defaultView:{COMPANY:"View by Company",MESSAGE:"View by Message",RESPONSE:"View by Response",GROUPS:"View by Groups",SCOPE:"View by Scope"},defaultTimeZone:{ALASKAN:"Alaskan",ATLANTIC:"Atlantic",CENTRAL:"Central",EASTERN:"Eastern",HAWAIIAN:"Hawaiian",MOUNTAIN:"Mountain",PACIFIC:"Pacific"}},PJQ.constants.time={millis:{ONE_SECOND:1e3,ONE_MINUTE:6e4,ONE_HOUR:36e5,ONE_DAY:864e5,ONE_MONTH:2592e6,ONE_YEAR:31556952e3}},PJQ.constants.files={modes:{PRINT:"print",ALT_PRINT:"altprint",DOWNLOAD:"download"},zipStatus:{NEW:0,QUEUED:1,IN_PROGRESS:2,CANCELLED:3,FAILED:4,COMPLETE:5,COMPLETE_ASYNC:6},downloadFrameId:"pjqDownload",imageExtensions:["jpg","jpeg","png","bmp","gif"]},PJQ.constants.actionItems={notificationTypeNames:{NEW_ITEM:"Item Created",STATUS_CHANGE:"Status Changed",ASSIGNED:"Assigned",NEWCOMMENT:"Comment Added",DISTRIBUTE:"Distribution"},statuses:{NEW:0,ASSIGNED:4,WORK_COMPLETED:2,NOT_RESOLVED:1,RESOLVED:3},statusNames:{0:"New",1:"Not Resolved",2:"Work Completed",3:"Resolved",4:"Assigned"},statusColors:{0:PJQ.constants.colors.GRAY,1:PJQ.constants.colors.RED,2:PJQ.constants.colors.BLUE,3:PJQ.constants.colors.GREEN,4:PJQ.constants.colors.PURPLE},priorities:{LOW:0,MEDIUM:1,HIGH:2,CRITICAL:3},priorityNames:{0:"Low",1:"Medium",2:"High",3:"Critical"},priorityColors:{0:PJQ.constants.colors.GREEN,1:PJQ.constants.colors.YELLOW,2:PJQ.constants.colors.ORANGE,3:PJQ.constants.colors.RED},view:{ACTIONITEMS:"actionitems"}},PJQ.constants.dailyReports={statuses:{NOT_SUBMITTED:0,SUBMITTED:1,DAY_OFF:2,MISSED:3},statusNames:{0:"Not Submitted",1:"Submitted",2:"Day Off",3:"Missed"},notificationModes:{DEFAULT:1,PER_USER_DAY:2,DISABLED:3},communicationLogs:{types:{PHONE:0,TEXT:1,EMAIL:2,IN_PERSON:3,CONFERENCE_CALL:4,WEB_CONFERENCE:5},typeNames:{0:"Phone Call",1:"Text Message",2:"Email",3:"In Person",4:"Conference Call",5:"Web Conference"}},inspectionLogs:{statuses:{REJECTED:0,APPROVED:1},statusNames:{0:"Rejected",1:"Approved"}}},PJQ.constants.meetings={meetingStatus:{DRAFT:1,SCHEDULED:2,IN_PROGRESS:3,CONCLUDED:4,CANCELLED:5},meetingStatusNames:{1:"Draft",2:"Scheduled",3:"In Progress",4:"Concluded",5:"Cancelled"},meetingAgendaStatus:{OPEN:1,CLOSED:2,HALTED:3},meetingAgendaStatusNames:{1:"Open",2:"Closed",3:"Halted"},meetingAgendaStatusColors:{1:PJQ.constants.colors.GREEN,2:PJQ.constants.colors.RED,3:PJQ.constants.colors.DARK},meetingAgendaPriority:{LOW:1,MEDIUM:2,HIGH:3,URGENT:4},meetingAgendaPriorityNames:{1:"Low",2:"Medium",3:"High",4:"Urgent"},meetingAgendaPriorityColors:{1:PJQ.constants.colors.GREEN,2:PJQ.constants.colors.YELLOW,3:PJQ.constants.colors.RED,4:PJQ.constants.colors.DARK}},PJQ.constants.punchlists={notificationTypeNames:{NEW_ITEM:"Item Created",STATUS_CHANGE:"Status Changed",ASSIGNED:"Assigned",NEWCOMMENT:"Comment Added",DISTRIBUTE:"Distribution"},statuses:{NEW:0,NOT_RESOLVED:1,WORK_COMPLETED:2,RESOLVED:3,ASSIGNED:4},statusNames:{0:"New",1:"Not Resolved",2:"Work Completed",3:"Resolved",4:"Assigned"},statusColors:{0:PJQ.constants.colors.GRAY,1:PJQ.constants.colors.RED,2:PJQ.constants.colors.BLUE,3:PJQ.constants.colors.GREEN,4:PJQ.constants.colors.P
1URPLE},priorities:{LOW:0,MEDIUM:1,HIGH:2,CRITICAL:3},priorityNames:{0:"Low",1:"Medium",2:"High",3:"Critical"},priorityColors:{0:PJQ.constants.colors.GREEN,1:PJQ.constants.colors.YELLOW,2:PJQ.constants.colors.ORANGE,3:PJQ.constants.colors.RED},view:{PUNCHLISTS:"punchlists"}},PJQ.constants.rfi={notificationTypeNames:{NEW_ITEM:"Item Opened",RFIOpen:"Item Opened",RFIUpdateDueDate:"Due Date Updated",RFIAddDocument:"Document Added",RFIAddAssignee:"Assignee Added",RFIAddDistribution:"Dist. Contact Added",RFIAddResponse:"Response Added",RFIClose:"Item Closed",Overdue:"Overdue"},statuses:{DRAFT:0,OPEN:1,CLOSED:2,DISTRIBUTED:3},statusNames:{0:"Draft",1:"Open",2:"Closed",3:"Distributed"},statusColors:{0:PJQ.constants.colors.GRAY,1:PJQ.constants.colors.GREEN,2:PJQ.constants.colors.RED,3:PJQ.constants.colors.PURPLE},view:{RFIS:"rfis"}},PJQ.constants.submittals={notificationTypeNames:{Created:"Created",Attachment:"Attachment",Comment:"Comment",BallInCourt:"Ball In Court","Ball In Court":"Ball In Court",Approved:"Approved","File(s) Uploaded":"File(s) Uploaded",Rejected:"Rejected",Submitted:"Submitted",Assigned:"Assigned",Overdue:"Overdue",Distribute:"Distribution"},errors:{STATUS_NOT_EXISTS:"STATUS_NOT_EXISTS"},approvalModes:{UNORDERED:1,SEQUENTIAL:2},statusTypeColors:{0:PJQ.constants.colors.GRAY,1:PJQ.constants.colors.BLUE,2:PJQ.constants.colors.GREEN,3:PJQ.constants.colors.RED,4:PJQ.constants.colors.DARK},statusTypes:{NEW:0,SUBMITTED:1,APPROVED:2,REJECTED:3,VOID:4},statusTypeNames:{0:"New",1:"Submitted",2:"Approved",3:"Rejected",4:"Void"},view:{SUBMITTALS:"submittals"}},PJQ.constants.schedule={notificationTypeNames:{ASSIGNED:"Assigned",SCHEDULE_CHANGE:"Schedule Changed",REMINDER:"Reminder",COMMENT_ADDED:"Comment Added",ATTACHMENT_ADDED:"Attachment Added",TASK_COMPLETE:"Task Complete",SCHEDULE_UPDATE:"Schedule Update"},dependencyTypes:{START_START:"SS",FINISH_START:"FS"},linkTypes:{0:"FS",1:"SS",2:"FF",3:"SF"},views:{TIMELINE:"TIMELINE",CALENDAR:"CALENDAR",TASK_LIST:"TASK_LIST"},taskList:{groupBy:{DEFAULT:"DEFAULT",MONTH:"MONTH",WEEK:"WEEK",DAY:"DAY",ASSIGNEE:"ASSIGNEE",GROUP:"GROUP"}}},PJQ.constants.proQual={screeningStatuses:{Pending:1,Declined:2,InProcess:3,Incomplete:4,FeedbackRequired:5,Expired:6,Complete:7,NotApplicable:8}},PJQ.modules={},$(function(){PJQ.app.beforeReady()}),PJQ.templating={templates:{}},PJQ.templating.Template=function(){function s(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};_classCallCheck(this,s),this.module=e,this.file=t,this.options=_.defaults(i,{isOldModule:!1})}return _createClass(s,[{key:"getPath",value:function(){var e;return e=PJQ.app.options.isCombinedAssets?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"assets"},{endpoint:"layout",value:this.module},{endpoint:this.file+".tmpl.html?v="+(this.options.isOldModule,PJQ.app.version)}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"assets"},{endpoint:this.options.isOldModule?"modules":"modules2"},{endpoint:this.module},{endpoint:"layout"},{endpoint:this.file+".tmpl.html?v="+(this.options.isOldModule,PJQ.app.version)}]),PJQ.app.options.isK8&&(e=e.toLowerCase()),0<_.size(PJQ.app.options.cdnUrl)?PJQ.app.options.cdnUrl+e:PJQ.helpers.urlHelpers.buildDomainURL(e,!1)}},{key:"fetch",value:function(i){var s=this.getPath();if(PJQ.templating.TemplateRenderer.templates[s]){var e=PJQ.templating.TemplateRenderer.templates[s];return this.parse(e),"function"==typeof i&&i(e),e}$.ajax({url:s,method:"GET",dataType:"html",success:_.bind(function(e){var t={template:_.template(e),markup:e,jsRenderTemplate:"function"==typeof $.templates?$.templates(e):null};this.parse(t),PJQ.templating.TemplateRenderer.templates[s]=t,"function"==typeof i&&i(t)},this)})}},{key:"parse",value:function(e){this.template=e.template,this.markup=e.markup,this.jsRenderTemplate=e.jsRenderTemplate}},{key:"render",value:function(t,i){this.fetch(_.bind(function(e){"function"==typeof i&&(this.options.isJsRender?i($(e.jsRenderTemplate.render(t))):i($(e.template(t||{}))))},this))}}]),s}(),PJQ.templating.TemplateRenderer={templates:{},renderTemplate:function(t,e,i,s,n){var o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:{};this.parseTemplate(e,s,_.bind(function(e){this.render(t,e,i,n,o)},this))},parseTemplate:function(e,t,i,s){var n=$();if(e instanceof $)return n=$(_.template(e.html())(t||{})),"function"==typeof i&&i(n),n;if(!(e instanceof PJQ.templating.Template)){if("string"!=typeof e)return"function"==typeof i&&i(n),n;if(!this.templates[e]){var o="<div>"+$("#"+e).html()+"</div>";this.templates[e]={template:_.template(o),markup:o}}return n=$(this.templates[e].template(t||{})),"function"==typeof i&&i(n),n}if(this.templates[e.getPath()])return e.render(t,i),$(e.fetch().template(t||{}));e.render(t,i)},fetchTemplates:function(e,t){var i=_.size(_.filter(e,function(e){return e instanceof PJQ.templating.Template}));if(0===i)t();else{var s=0,n=function(){++s===i&&t()};_.each(e,function(e){e instanceof PJQ.templating.Template&&e.fetch(n)})}},parseMarkup:function(e,t){return $(_.template("<div>"+e+"</div>")(t||{})).html()},render:function(e,t,i,s,n){n&&n.prepend?i.prepend(t):n&&n.replace?i.replaceWith(t):e?i.append(t):i.html(t),"function"==typeof s&&s(t)}},PJQ.models={},PJQ.models.BaseModel=Backbone.Model.extend({idAttribute:"id",baseOptions:{},defaults:{},options:{},urlRoot:"/",subItems:{},hasEndpoint:function(){return"/"!==this.endpoint()},endpoint:function(e){return"/"},isNew:function(){return null==this.id||0===this.id||Backbone.Model.prototype.isNew.call(this)},restore:function(){this.set(_.defaults(this.initAttributes,this.attributes)),this.dirtyAttributes={},this.isDirty=!1},hasChanged:function(e){return null!=e?Backbone.Model.prototype.hasChanged.call(this,e):this.isDirty||0<_.size(this.dirtyAttributes)||null!=_.find(this.subItems,function(e,t){var i=this[t];return null!=i&&"function"==typeof i.hasChanged&&i.hasChanged()},this)},hasNewAttachments:function(){return null!=this.attachments&&null!=_.find(this.attachments.models,function(e){return e.isNew()})},url:function(e,t){return PJQ.helpers.urlHelpers.buildApiUrl("function"==typeof this.endpoint?this.endpoint(e,t):this.endpoint,{service:this.getService(e)})},getService:function(e){var t;if(this.options.isAPIv2||null!=e&&e.isAPIv2)t=PJQ.constants.services.APIv2;else if(this.hasNewAttachments()||this.options.isFileAPI||null!=e&&e.isFileAPI)t=PJQ.constants.services.FILES;else if(this.options.isOrigin||null!=e&&e.isOrigin)t=PJQ.constants.services.ORIGIN;else{if(!(0<_.size(this.options.service)))return PJQ.constants.services.API;t=this.options.service}return t},beforeConstruct:function(e,t){},constructor:function(e,t){if(!1!==this.beforeConstruct(e,t))return e=this.parse(e,t),this.initAttributes=e,Backbone.Model.prototype.constructor.call(this,e,t)},beforeInit:function(e){},initialize:function(e,t){!1!==this.beforeInit(t)&&(this.fetchedAttributes={},this.dirtyAttributes={},this.isDirty=!1,this.options=_.defaults(t||{},_.defaults(this.defaults?this.defaults:{},this.baseOptions)),this.afterInit())},afterInit:function(){},getChanged:function(e){var t=this.dirtyAttributes[e];return t||null},reset:function(e){this.clear(),(this.initAttributes=e)&&this.set(this.parse(e)),this.isDirty=!1,this.dirtyAttributes={}},set:function(e,t,i){var s={};return"string"==typeof e?s[e]=t:(s=e,i=t),null!=i&&(i.silent||i.isPatch&&null==i.attrs)||(this.isDirty=!0,this.dirtyAttributes=_.extend(this.dirtyAttributes?this.dirtyAttributes:{},s)),Backbone.Model.prototype.set.call(this,s,i)},sync:function(s,n,o){var a=_.clone(o);o.url=this.url(o.urlOptions,s),o.beforeSend=_.bind(function(e){e.url=this.url(o.urlOptions,s),o.timeout&&(e.timeout=o.timeout),PJQ.helpers.apiHelpers.addHeaders(e,this.get
1Service(o))},this);var r=this,l=o.error,t=o.success;return o.error=function(e){var t=arguments,i=function(){if(!1!==o.notify&&new PJQ.ErrorHandler(o.errorHandlerOpts).handle(e,r.toJSON()),"function"==typeof l)return l.call.apply(l,[this].concat(_toConsumableArray(t)))};401===e.status&&!1!==o.canRetry&&r.getService(o)===PJQ.constants.services.APIv2?PJQ.app.TokenManager.refreshAccessToken(_.bind(function(e){0<_.size(e)?r.sync(s,n,_.defaults({canRetry:!1},a)):i()},this)):401===e.status&&r.getService(o)===PJQ.constants.services.API&&"INVALID_SESSION"===e.responseText?PJQ.app.signOutNavigate():i()},!0===o.notify&&("update"===s||"create"===s)&&0<_.size(r.notifyName)&&(o.success=function(e){if(PJQ.notifications.notify.successNotify({message:PJQ.helpers.stringHelpers.format("{0} {1} successfully",r.notifyName,"update"===s?"saved":"created")}),"function"==typeof t)return t.call.apply(t,[this].concat(Array.prototype.slice.call(arguments)))}),Backbone.Model.prototype.sync.call(this,s,n,o)},fetch:function(e){var i=e?e.success:null,t=_.defaults({success:_.bind(function(e,t){this.initAttributes=t,this.dirtyAttributes={},this.isDirty=!1,this.isFetched=!0,this.trigger("fetch"),"function"==typeof i&&i(e,t)},this)},e||{});return Backbone.Model.prototype.fetch.call(this,t)},patch:function(e,t){return e=_.defaults(e||{},this.dirtyAttributes),this.dirtyAttributes={},this.save(e,_.defaults({type:"PATCH",patch:!0},t))},put:function(e,t){return e=_.defaults(e||{},this.dirtyAttributes),this.dirtyAttributes={},this.save(e,_.defaults({type:"PUT"},t))},queuePatch:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:800;this.queueSave(e,_.defaults(t||{},{isPatch:!0}),i)},queueSave:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:800;t=t||{},e&&(this.set(e),t.isPatch&&(this.queueData=_.defaults(this.queueData?this.queueData:{},e))),clearTimeout(this.saveTimeout),this.saveTimeout=setTimeout(_.bind(function(){t.isPatch?this.patch(this.queueData,t):this.save(this.queueData,t),this.queueData=null},this),i)},beforeSave:function(){},save:function(e,t){this.beforeSave();var i=this.getSaveObject(),s=this.getSaveOptions(),n=t&&t.success?_.bind(t.success,this):void 0;return t=_.defaults({success:_.bind(function(e,t,i){this.dirtyAttributes={},this.isDirty=!1,this.afterSave(e,t,i),n&&n(e,t,i)},this)},t),i&&(null!=e?_.defaults(e,i):e=i),s&&(null!=t?_.defaults(t,s):t=s),null!=this.saveTimeout&&clearTimeout(this.saveTimeout),Backbone.Model.prototype.save.call(this,e,t)},afterSave:function(){},getSaveObject:function(){return null},getSaveOptions:function(){return null},formatString:function(o){return _.each(PJQ.helpers.stringHelpers.findMatches(/\[(.*?)]/gm,o),function(e){if(-1!==e.group.toLowerCase().indexOf("fieldlabel")){var t=parseInt(e.group.toLowerCase().replace("fieldlabel",""));if(0<t){var i=this.getCustomFieldLabel(t);o=o.replace(e.full,null!=i?i:"")}}else if(-1!==e.group.toLowerCase().indexOf("fieldvalue")){var s=parseInt(e.group.toLowerCase().replace("fieldvalue",""));if(0<s){var n=this.getCustomFieldValue(s);o=o.replace(e.full,null!=n?n:"")}}},this),o},getCustomFieldLabel:function(t){if(this.customFields){var e=this.customFields.get(t);return null==e&&(e=this.customFields.findWhere({fieldNumber:t})),e?e.get("fieldName"):null}return _.find(this.get("customFields"),function(e){return e.id===t})},getCustomFieldValue:function(t){var e=this.get("customFields")?this.get("customFields"):this.get("customFieldValues"),i=_.find(e,function(e){return e.id===t});return null==i&&(i=_.find(e,function(e){return e.fieldNumber===t})),i?i.value:null},externalId:function(){var e=this.get("externalObject");return null!=e&&"string"==typeof e.externalId?e.externalId:null},erpSyncStatus:function(){var e=this.get("externalObject");return null!=e&&"number"==typeof e.status?e.status:PJQ.constants.integrations.erp.syncStatuses.PENDING},isERPSynced:function(){return 0<_.size(this.externalId())},makeERPUrl:function(e){return null}}),PJQ.collections={},PJQ.collections.BaseCollection=Backbone.Collection.extend({baseOptions:{},defaults:{},options:{},urlRoot:"/",isFetched:!1,url:function(e,t){return PJQ.helpers.urlHelpers.buildApiUrl("function"==typeof this.endpoint?this.endpoint(e,t):this.endpoint,{service:this.getService(e)})},getService:function(e){var t;if(this.options.isOrigin||null!=e&&e.isOrigin)t=PJQ.constants.services.ORIGIN;else if(this.options.isAPIv2||null!=e&&e.isAPIv2)t=PJQ.constants.services.APIv2;else if(this.options.isFileAPI||null!=e&&e.isFileAPI)t=this.options.service;else{if(!(0<_.size(this.options.service)))return PJQ.constants.services.API;t=this.options.service}return t},beforeConstruct:function(e,t){},constructor:function(e,t){if(!1!==this.beforeConstruct(e,t))return e=this.parse(e,t),Backbone.Collection.prototype.constructor.call(this,e,t)},beforeInit:function(e){},initialize:function(e,t){!1!==this.beforeInit(t)&&(this.options=_.defaults(t||{},_.defaults(this.defaults?this.defaults:{},this.baseOptions)),e&&0<e.length&&this.add(e,this.options),this.afterInit())},afterInit:function(){},fetchFirst:function(e){if(!this.isFetched)return this.fetch(e)},get:function(e){if("array"!==PJQ.helpers.objectHelpers.refinedType(e))return Backbone.Collection.prototype.get.call(this,e);var i=[];return _.each(e,_.bind(function(e){var t=Backbone.Collection.prototype.get.call(this,e);t&&i.push(t)},this)),i},fetch:function(e){var i=e?e.success:null,t=_.defaults({success:_.bind(function(e,t){this.isFetched=!0,this.trigger("fetch"),"function"==typeof i&&i(e,t)},this)},e||{});return Backbone.Collection.prototype.fetch.call(this,t)},fetchReset:function(e){this.fetch(_.defaults(e||{},{reset:!0}))},sync:function(s,n,o){var a=_.clone(o);o.url=this.url(o.urlOptions,s),o.beforeSend=_.bind(function(e){e.url=this.url(o.urlOptions,s),o.timeout&&(e.timeout=o.timeout),PJQ.helpers.apiHelpers.addHeaders(e,this.get
1Service(o))},this);var r=this,l=o.error,t=o.success;return o.error=function(e){var t=arguments,i=function(){if(!1!==o.notify&&new PJQ.ErrorHandler(o.errorHandlerOpts).handle(e,r.toJSON()),"function"==typeof l)return l.call.apply(l,[this].concat(_toConsumableArray(t)))};401===e.status&&!1!==o.canRetry&&r.getService(o)===PJQ.constants.services.APIv2?PJQ.app.TokenManager.refreshAccessToken(_.bind(function(e){0<_.size(e)?r.sync(s,n,_.defaults({canRetry:!1},a)):i()},this)):401===e.status&&r.getService(o)===PJQ.constants.services.API&&"INVALID_SESSION"===e.responseText?PJQ.app.signOutNavigate():i()},!0===o.notify&&("update"===s||"create"===s)&&0<_.size(r.notifyName)&&(o.success=function(e){if(PJQ.notifications.notify.successNotify({message:PJQ.helpers.stringHelpers.format("{0} {1} successfully",r.notifyName,"update"===s?"saved":"created")}),"function"==typeof t)return t.call.apply(t,[this].concat(Array.prototype.slice.call(arguments)))}),Backbone.Collection.prototype.sync.call(this,s,n,o)},save:function(e){return this.sync(e&&e.put?"update":"create",this,e)},getChangedModels:function(){var t=[];return _.each(this.models,function(e){(e.hasChanged()||e.isNew())&&t.push(e)}),t}}),PJQ.views={},PJQ.views.BaseView=Backbone.View.extend({opts:{isAppend:!1,template:null,firstRenderAnimation:null,subTemplates:{},hasTooltips:!1,shouldRenderTemplate:!0},baseOptions:{},defaults:{},options:{},defaultEvents:{},events:{},beforeInit:function(e){},initialize:function(e){if(!1!==this.beforeInit(e)){var t=_.defaults(this.baseOptions?this.baseOptions:{},this.opts);t=_.defaults(this.defaults?this.defaults:{},t),this.options=_.defaults(e||{},t),null!=this.defaultEvents&&(this.undelegateEvents(),this.events=_.defaults(this.events?this.events:{},this.defaultEvents),this.delegateEvents(this.events)),this.getTemplates(_.bind(function(){!1!==this.beforeFirstRender()&&this.render()},this))}},getTemplates:function(e){var t=this.options.subTemplates?this.options.subTemplates:{};t.view_base=this.options.template,PJQ.templating.TemplateRenderer.fetchTemplates(t,e)},beforeFirstRender:function(){},renderData:function(){return this.options},beforeRender:function(){},render:function(){if(!(0<arguments.length&&void 0!==arguments[0]&&arguments[0])||this.isFirstRenderDone){if(!1!==this.beforeRender()){var e;if(null!=this.options.template&&0<_.size(this.$el)&&!1!==this.options.shouldRenderTemplate)e="function"==typeof this.renderData?this.renderData():void 0!==this.renderData?this.renderData:{},PJQ.templating.TemplateRenderer.renderTemplate(this.options.isAppend,this.options.template,this.$el,e,_.bind(function(){if(_.bind(this.rightAfterRender,this),this.options.hasTooltips){var e=this.$('[data-toggle="tooltip"]');0<_.size(e)&&e.tooltip()}this.isFirstRenderDone||null==this.options.firstRenderAnimation?this.rightAfterRender():this.$el.animateCSS(this.options.firstRenderAnimation,function(){this.rightAfterRender()},this)},this));else this.rightAfterRender();this.isFirstRenderDone=!0}return this}},rightAfterRender:function(){"function"==typeof this.options.afterRender&&this.options.afterRender(),this.afterRender()},afterRender:function(){},renderSubTemplate:function(e,t,i,s,n){var o;"function"==typeof n?o=n:n&&"function"==typeof n.callback&&(o=n.callback),PJQ.templating.TemplateRenderer.renderTemplate(e,t,i,s||{},o,n)},addElements:function(e){null==this.$addEl&&(this.$addEl=[]),this.$addEl.push(e)},beforeRemove:function(e){"function"==typeof e&&e()},remove:function(t){this.beforeRemove(_.bind(function(e){!1!==e&&(this.stopListening(),this.undelegateEvents(),this.$el.empty(),0<_.size(this.$addEl)&&_.each(this.$addEl,function(e){e.empty()}),"function"==typeof t&&t())},this))},stopPropagation:function(e){e&&(e.stopPropagation(),e.cancelBubble=!0)}}),PJQ.views.BaseModal=PJQ.views.BaseView.extend({baseOptions:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Default"),header:"",body:"",isVerticalCenter:!1,isWrapForm:!1,wrapFormName:null,isShowOkButton:!0,okButtonText:"Ok",okButtonColorClass:"primary",isShowCancelButton:!1,cancelButtonText:"Cancel",cancelButtonColorClass:"secondary",isShowSecondaryButton:!1,secondaryButtonText:"",secondaryButtonColorClass:"light",onSecondary:_.noop,onClose:_.noop,onOk:_.noop,width:null,minWidth:null,maxWidth:null,height:null,minHeight:null,maxHeight:null,fitHeight:!1,isS
1howCloseButton:!1},defaults:{},options:{},defaultEvents:{"hidden.bs.modal":"removeModal","click .modal-ok":"onOk","click .modal-secondary":"onSecondary","click .modal-close":"close"},events:{},beforeFirstRender:function(){this.options=_.defaults(this.options,{uuid:"modal-"+_.uniqueId()}),this.setElement(null),!1!==this.beforeModalCreated()&&(this.createModal(),this.afterModalCreated())},beforeModalCreated:function(){},afterModalCreated:function(){},createModal:function(){if(this.container=$("#modalsContainer"),0===_.size(this.container)&&(this.container=jQuery('<div id="modalsContainer" />'),$("body").append(this.container)),this.modal=$('<div class="modal" role="dialog">'),this.options.isVerticalCenter){var e=$('<div class="modal-vertical-center">');this.modal.append(e),this.setElement(e)}else if(this.options.isWrapForm){var t=$('<form name="'+this.options.wrapFormName+'"/>');this.modal.append(t),this.setElement(this.modal)}else this.setElement(this.modal);this.container.append(this.modal),this.modal.modal({backdrop:0===_.size($(".modal-backdrop.show"))&&"static",keyboard:!1,show:!0}),this.$(".modal-dialog").attr("id",this.options.uuid),this.setZIndex()},getWidth:function(){return{minWidth:this.options.minWidth,maxWidth:this.options.maxWidth,width:this.options.width}},setWidth:function(e){this.modal.find(".modal-dialog").css({"min-width":e.minWidth,"max-width":e.maxWidth,width:e.width})},rightAfterRender:function(){if(null!=this.modal){if(this.setWidth(this.getWidth()),this.options.fitHeight){var e=2*parseInt(this.modal.find(".modal-dialog").css("margin-top").replace("px","")),t=this.modal.find(".modal-header"),i=this.modal.find(".modal-footer"),s=this.modal.find(".modal-overflow"),n=this.modal.find(".modal-body");0<_.size(s)&&(e+=n.outerHeight()-s.outerHeight(),n=s),0<_.size(t)&&(e+=t.outerHeight()),0<_.size(i)&&(e+=i.outerHeight()),n.css({"min-height":window.innerHeight-e+"px","max-height":window.innerHeight-e+"px",overflow:"auto"})}else this.modal.find(".modal-dialog").css({"min-height":this.options.minHeight,"max-height":this.options.maxHeight,height:this.options.height});if(this.options.isShowCloseButton){var o=$("<button>",{class:"btn btn-transparent-dark fs-22 btn-sm p-absolute modal-close",style:"top:-30px;right:-30px;"});o.append('<i class="fal fa-times"></i>'),this.$(".modal-content").append(o)}PJQ.views.BaseView.prototype.rightAfterRender.call(this)}},setZIndex:function(){var e=null==this.modal,t=parseInt($(".iv-image-view").css("z-index")),i=99999;isNaN(t)||(i=t),$("#modalsContainer").find(".modal").each(function(){"none"!==$(this).css("display")&&"auto"!==$(this).css("zIndex").toString()&&parseInt($(this).css("zIndex").toString())>i&&(i=parseInt($(this).css("zIndex").toString()))}),e?$(".modal-backdrop").css("z-index",i-25):($(".modal-backdrop").css("z-index",i+25),this.modal.css("z-index",i+50))},removeModal:function(){null!=this.modal&&(this.modal.modal("hide"),this.modal&&(this.modal.remove(),this.modal=null),this.remove(),0===_.size($(".modal:visible"))?$(".modal-backdrop").remove():(this.setZIndex(),$(document.body).addClass("modal-open")),this.onRemove(),this.undelegateEvents())},close:function(){this.removeModal(),this.onClose()},onRemove:function(){var e;this.options.onRemove&&(arguments?(e=this.options).onRemove.apply(e,arguments):this.options.onRemove(this.model))},onClose:function(){var e;this.options.onClose&&(arguments?(e=this.options).onClose.apply(e,arguments):this.options.onClose(this.model))},onSecondary:function(){var e;this.options.onSecondary&&(arguments?(e=this.options).onSecondary.apply(e,arguments):this.options.onSecondary(this.model))},onOk:function(){var e;this.options.onOk&&(arguments?(e=this.options).onOk.apply(e,arguments):this.options.onOk(this.model))}}),PJQ.routers={},PJQ.routers.BaseRouter=Backbone.Router.extend({routes:{"":"empty"},initialize:function(){_.each(PJQ.app.routes,function(e){this.route(e.route,e.name,e.callback)},this)},empty:function(){if(PJQ.app.module===PJQ.constants.modules.APP)if(null==PJQ.app.session||PJQ.app.session.isLoggedIn()){var e=!1;_.each(_.filter(PJQ.app.routes,function(e){return 0<_.size(e.route)}),function(i){if(!e&&-1!==_.indexOf(i.route,"?")&&"function"==typeof i.callback){var s=[],n=!0;_.each(i.route.replace("?","").split("&"),function(e){if(n){var t=PJQ.helpers.urlHelpers.getQueryParam(e.split("=:")[0],!1,!0===i.retainParameterValueCase);t&&0<_.size(t)?s.push(t):n=!1}}),n&&(i.callback.apply(i,s),e=!0)}}),e||(PJQ.app.session.hasFeature("projects")?this.navigate("projects",{trigger:!0,replace:!0}):PJQ.app.session.get("portalId")!==PJQ.constants.panteraPortalId||null!=PJQ.app.session.user&&"SUB"===PJQ.app.session.user.get("companyType")?this.navigate("projectinvites",{trigger:!0,replace:!0}):this.navigate("settings",{trigger:!0,replace:!0}))}else this.signInNavigate();else{var s=!1;if("object"===_typeof(PJQ.app.oldRoutes)&&_.each(_.filter(PJQ.app.oldRoutes,function(e){return 0<_.size(e.route)}
1),function(i){_.find(i.route.split(" "),function(e){var t=PJQ.helpers.urlHelpers.getQueryParam(e.replace("?",""));t&&0<_.size(t)&&"function"==typeof i.callback&&(i.callback(t),s=!0)})}),!s){var t=_.find(PJQ.app.oldRoutes,function(e){return"default"===e.name});t&&"function"==typeof t.callback?t.callback():0<_.size(PJQ.app.readyEvents)&&_.each(PJQ.app.readyEvents,function(e){"function"==typeof e&&e()})}}},noAuthRoutes:["invoiceguestlink","signin","signup","signuptrial","sharephotos","sharedrawings","sharefiles","scheduleshare","resetpassword","prequal","register"],signInNavigate:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(null!=e&&e.cacheRoute&&(PJQ.app.router.signInCache="#"+this.getCurrentRoute()),$(".skin-header").hide(),PJQ.app.$el.css("top",0),null!=PJQ.app.portal&&0<_.size(PJQ.app.portal.pages)){var t=_.findWhere(PJQ.app.portal.pages,{route:"signin"});if(null!=t)return void this.navigate("p/"+t.route,{trigger:!0,replace:!0})}this.navigate("signin",{trigger:!0,replace:!0})},routeToRoot:function(){PJQ.app.router.navigate("/",{trigger:!0})},execute:function(e,t,i){if("function"==typeof ga&&ga("send","pageview",{page:location.pathname+location.search+location.hash}),PJQ.app.view||(PJQ.app.view=new PJQ.views.AppView(PJQ.app.$el)),PJQ.app.view.photoViewer){var s=PJQ.app.view.photoViewer.options.triggerRoute;if(PJQ.app.view.photoViewer.hide(),s)return void Backbone.Router.prototype.execute.call(this,e,t,i)}var n=PJQ.helpers.urlHelpers.getQueryParam("accessKey");if(0<_.size(n)&&(PJQ.app.session.set("accessKey",n),0<_.size(window.location.hash)&&-1<window.location.hash.indexOf("?"))){var o=window.location.hash.split("?"),a=o[_.size(o)-1].toUpperCase(),r="RESPONSE=";-1<a.indexOf(r)&&PJQ.app.session.set("bidStatus",a.replace(r,""))}var l,c=$(".pt-menu-item");0<_.size(c)&&(l=PJQ.app.session.get("ownsPortal")&&null!=PJQ.app.session.user?PJQ.app.session.user.get("userTypeId"):null!=PJQ.app.session.contact?PJQ.app.session.contact.get("userTypeId"):null,c.each(function(){var e=$
1(this).data("userTypes");0<_.size(e)&&(_.find(e.split(","),function(e){return parseInt(e)===l})?$(this).removeClass("hidden"):$(this).addClass("hidden"))}));var d=PJQ.helpers.urlHelpers.getQueryParam("cg");if(0<_.size(d)&&PJQ.app.session.set("contactGuid",d),0<_.size(window.staticRoute)&&i!==window.staticRoute)this.navigate(window.staticRoute,{trigger:!0,replace:!0});else{var p=-1!==i.indexOf("portal_"),u=$(".skin-header"),h=PJQ.app.$el;if(p&&PJQ.app.session.isLoggedIn())this.navigate("",{trigger:!0,replace:!0});else{if(p||PJQ.app.module!==PJQ.constants.modules.APP||PJQ.app.session.isLoggedIn()||-1!==this.noAuthRoutes.indexOf(i.toLowerCase()))p||"signin"===i||"signup"===i?(h.css("top",0),u.hide(),h.scrollTop(0)):(u.show(),h.css("top",u.height())),PJQ.app.session.isFetched||PJQ.app.session.fetch();else{if("empty"===i&&null!=PJQ.app.portal&&0<_.size(PJQ.app.portal.pages)){var m=_.findWhere(PJQ.app.portal.pages,{isRoot:!0});if(null!=m)return void this.navigate("/p/"+m.route,{trigger:!0,replace:!0})}if(PJQ.app.session.isPanteraPortal()&&(0<_.size(n)||0<_.size(d))&&!(null!=PJQ.app.session.contact&&0<PJQ.app.session.contact.get("userId")))return h.css("top",0),void this.navigate("signup",{trigger:!0,replace:!0});if(0===_.size(n)&&0===_.size(d))return void this.signInNavigate({cacheRoute:!0});u.show()}var f=_.findWhere(PJQ.app.routes,{name:i});null!=f&&("function"==typeof f.title?document.title=f.title():_.size(f.title)&&(document.title=f.title)),Backbone.Router.prototype.execute.call(this,e,t,i)}}},getCurrentRoute:function(){return window.location.hash.replace("#","")}}),PJQ.views.dataTables={},PJQ.views.dataTables.DataTable=PJQ.views.BaseView.extend({baseOptions:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Data-Table-Base"),subTemplates:{header:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Data-Table-Header-Base")},deferRender:!0,isStriped:!1,isNoPadding:!0,isOverflowAuto:!1,isHideSearch:!1,dom:"<'row no-gutters'<'table-outer col-sm-12'tr>><'row no-gutters'<'col-sm-5 mt-1'l><'col-sm-7 mt-2'p>>",headerData:{},getPageCallback:null,onRowClick:null,onRowDoubleClick:null,onRowRemoved:null,onTableDraw:null,minHeightPx:null,paging:!0,pageLength:10,rowId:"cid",groupBy:null,groupByKey:null,disableGroupToggle:null,getGroupHeader:null,collapsedGroups:[],scrollRows:!1,emptyDataGroup:"N/A",onPageSizeChange:null,orderCookie:null,columnWidthCookie:null,pageLengthCookie:null,showPageSelector:!1,enableColumnResize:!1,hasFooter:!1,extraClasses:null,toggleRowClass:".toggle-row",hideColumnHeaders:!1},defaultEvents:{"click .group-start":"toggleGroup","keyup .datatable-search":"search","click .clear-filters":"clearFilters"},isColumnResizable:function(e){return!0},onColumnResizeStart:function(e,t){},onColumnResize:function(e){},onColumnResizeEnd:function(e,t){},beforeFirstRender:function(){this.options=_.extend(this.options,{uuid:_.uniqueId(),dom:this.options.paging?this.options.dom:"<'row no-gutters'<'table-outer col-sm-12'tr>>",language:_.defaults({lengthMenu:"Show _MENU_",processing:"Loading...",paginate:{previous:"Prev",next:"Next"}},this.options.language?this.options.language:{})}),this.options.clearServerCache&&(this.clearServerCache=!0)},beforeRender:function(){var o=this;if(0<_.size(this.options.groupByKey))if(null!=this.options.groupBy)window.localStorage.removeItem(this.options.groupByKey),0<_.size(this.options.groupBy)&&window.localStorage.setItem(this.options.groupByKey,this.options.groupBy);else{var e=window.localStorage.getItem(this.options.groupByKey);0<_.size(e)&&(this.options.groupBy=e)}var a=this.options.getRowGroup||this.getRowGroup,r=this.getGroupBy();null!=r&&(this.options.rowGroup={startRender:_.bind(this.startGroupRender,this),emptyDataGroup:this.options.emptyDataGroup?this.options.emptyDataGroup:"N/A",dataSrc:function(e){var t,i;if("function"==typeof a)return a(e,r);var s=o.getGroupByColumn();if(null==s)return null;var n=PJQ.helpers.objectHelpers.getNestedValue(e,null!==(t=null!==(i=s.column.data)&&void 0!==i?i:s.column.columnData)&&void 0!==t?t:s.column.attribute);return"function"==typeof s.column.group?s.column.group(e,r):"function"==typeof s.column.render?s.column.render(n,"display",e):null!=n?n:""}})},renderData:function(){return{options:this.options}},getContextMenuOptions:function(){return null!=this.options.contextMenuOptions?this.options.contextMenuOptions:null},getSortableOptions:function(){return null!=this.options.sortableOptions?this.options.sortableOptions:null},afterRender:function(){this.renderHeader();var s=this,n=!0;s.$el.off("dblclick"),s.$el.on("touchmove","tbody tr[id]",function(){n=!1}),s.$el.on("click","tbody tr[id]",function(e){var t=s.getRow($(this));t&&n&&s.onRowClick(t)}),s.$el.on("dblclick touchend","tbody tr[id]",function(e){var t=s.getRow($(this)),i=$(e.target);0<_.size(s.options.toggleRowClass)&&i.is(s.options.toggleRowClass)||t&&(e.stopPropagation(),n&&s.onRowDoubleClick(t))}),s.$el.on("draw.dt",function(){s.options.showPageSelector&&s.renderPageSelector(),s.onTableDraw()}),this.renderDataTable();var e=this.getSortableOptions();0<_.size(e)&&this.makeSortable(e);var t=this.getContextMenuOptions();null!=t&&0<_.size(t.actions)&&this.addContextMenu(t)},renderPageSelector:function(){this.$(".page-select-span").remove(),this.$(".dataTables_paginate").prepend('<span class="page-select-span"><select class="page-select wd-80p max-wd-80p"></select></span>'),this.pageSelectPicker=new PJQ.inputs.Selectpicker({el:this.$(".page-select"),isIntChoices:!0,defaultValue:this.dataTable.page(),onChange:_.bind(function(e){this.dataTable.page(e).draw("page")},this)});for(var e="",t=this.dataTable.page.info().pages,i=0;i<t;i++)e+='<option value="'+i+'">Page '+(i+1)+"</option>";this.pageSelectPicker.$el.html(e),this.pageSelectPicker.refresh(),this.dataTable.on("page",_.bind(function(){this.pageSelectPicker.setValue(this.dataTable.page())},this))},onTableDraw:function(){this.options.hideColumnHeaders&&this.$el.find("thead").attr("style","visibility: collapse;"),"function"==typeof this.options.onTableDraw&&this.options.onTableDraw(this.dataTable)},onRowClick:function(e){"function"==typeof this.options.onRowClick&&this.options.onRowClick(e)},onRowDoubleClick:function(e){"function"==typeof this.options.onRowDoubleClick&&this.options.onRowDoubleClick(e)},afterHeaderRender:function(){"function"==typeof this.options.afterHeaderRender&&this.options.afterHeaderRender(this,this.$(".dt-header"))},beforeDataTableRender:function(){},headerData:function(){return"function"==typeof this.options.headerData?this.options.headerData():this.options.headerData},renderHeader:function(){this.options.isHideSearch||this.renderSubTemplate(!1,this.options.subTemplates.header,this.$(".dt-header"),this.headerData(),_.bind(function(){this.delegateEvents(),this.afterHeaderRender()},this))},renderPage:function(){if(null!=this.dataTable){var e=this.dataTable.page();this.options.displayStart=null!=e?e*this.options.pageLength:null}if(this.options.addressBookView&&"company"===this.options.addressBookView.currentView){if(this.options.addressBookView.dataTable){var t=this.options.addressBookView.dataTable.dataTable.page();this.options.addressBookView.dataTable.options.displayStart=null!=t?t*this.options.addressBookView.dataTable.options.pageLength:null,this.options.addressBookView.dataTable.options.addressBookView.dataTable.render()}}else this.render()},disableColumnReorder:function(){null!=this.dataTable&&null!=this.dataTable.colReorder&&"function"==typeof this.dataTable.colReorder.disable&&this.dataTable.colReorder.disable()},enableColumnReorder:function(){null!=this.dataTable&&null!=this.dataTable.colReorder&&"function"==typeof this.dataTable.colReorder.enable&&this.dataTable.colReorder.enable()},renderDataTable:function(){var s=this;if(this.options.childDataTables=[],this.beforeDataTableRender(),this.dataTable&&this.dataTable.destroy(),null!=this.options.getPageCallback&&(this.options=_.extend(this.options,{ajax:_.bind(this.getPage,this),processing:!0,serverSide:!0})),null==this.options.columns&&"function"==typeof this.getColumns&&(this.options.columns=this.getColumns()),this.colNameMap={},_.each(this.options.columns,function(e,t){0<_.size(e.title)&&(this.colNameMap[e.title.toLowerCase()]=t)},this),this.options.scrollRows&&null==this.options.parentDataTable){var t=_.bind(function(){var e=this.$el.outerHeight()-20;return!1!==this.options.paging&&(e-=80),0<_.size(this.$(".dt-header"))&&(e-=this.$(".dt-header").outerHeight()),0!==_.size(this.options.dom)&&-1!==this.options.dom.indexOf('<"top"p<"clear">')||(e-=40),200<e?e:200},this);this.$el.addClass("scroll-rows ht-100 of-x-hidden"),this.options.scrollY=t(),$(window).on("resize."+this.options.uuid,_.bind(function(){var e=t();this.$(".dataTables_scrollBody").css("height",e.toString()+" px")},this))}var i=this.options.rowId;if(this.$dataTable=this.$("#dt_"+this.options.uuid),0===this.options.pageLength&&(this.options.paging=!1),this.$el.off("order.dt"),0<_.size(this.options.orderCookie)){var n=this,e=PJQ.helpers.cookieHelpers.getCookie(n.options.orderCookie);if(0<_.size(e)&&(n.options.order=JSON.parse(e),1<n.options.order.length)){var o=n.options.order[0];_.isArray(o)||(n.options.order=[n.options.order])}n.$el.on("order.dt",_.bind(function(e,t,i){var s=[];_.each(i,function(e){s.push([e.col,e.dir])}
1),PJQ.helpers.cookieHelpers.setCookie(n.options.orderCookie,JSON.stringify(s))},this))}if(this.$el.off("length.dt"),0<_.size(this.options.pageLengthCookie)){var a=this,r=PJQ.helpers.cookieHelpers.getCookie(a.options.pageLengthCookie);0<_.size(r)&&(a.options.pageLength=parseInt(r)),a.$el.on("length.dt",_.bind(function(e,t,i){PJQ.helpers.cookieHelpers.setCookie(a.options.pageLengthCookie,i)},this))}if(this.options.hasFooter)if("function"==typeof this.options.footer)this.$dataTable.append(this.options.footer(this));else{var l="";_.each("function"==typeof this.options.columns?this.options.columns():this.options.columns,function(e){if(!1!==e.visible){var t,i="";"function"==typeof e.renderFooter&&(i=e.renderFooter(s.options.data)),l+="<th>"+(null!==(t=i)&&void 0!==t?t:"")+"</th>"}}),this.$dataTable.append("<tfoot><tr>"+l+"</tr></tfoot>")}var c,d=this,p=this.getFilterData(),u=this.getGroupByColumn();if(null!=u&&(this.options.orderFixed=[[u.index,"asc"]],null!=u.column&&u.column.isArrayGroup&&0<_.size(p)&&(c=u.column.attribute?u.column.attribute:_typeof(u.column.columnData)?u.column.columnData:null,0<_.size(c)))){var h=[];_.each(p,function(s){var e="function"==typeof u.column.columnData?u.column.columnData(s):s[c];1<_.size(e)?_.each(e,function(e){if("function"==typeof s.clone){var t=s.clone();t.set(c,[e]),h.push(t)}else{var i=_.clone(e);i[c]=[e],h.push(i)}}):h.push(s)}),p=h}this.dataTable=this.$dataTable.DataTable(_.defaults({data:p,fixedHeader:{header:this.options.scrollRows&&null==this.options.parentDataTable,footer:this.options.scrollRows&&this.options.hasFooter},initComplete:function(e,t){"function"==typeof d.options.initComplete&&d.options.initComplete.call(this,e,t)},createdRow:_.bind(this.createdRow,this),rowId:function(e){var t=e[i];return"number"==typeof t?t.toString():t}},this.options)),this.applyColumnWidths(),this.options.enableColumnResize&&this.makeColumnsResizeable(),this.$dataTable.on("mouseup",function(){d.options.isResizing=!1}),null!=this.options.getPageCallback&&this.$dataTable.on("length.dt order.dt",_.bind(function(){this.clearServerCache=!0},this));var m=this.$(".dataTables_length");if(0<_.size(m)){m.addClass("fs-14 text-dark");var f=m.find("select");f.addClass("wd-80p mr-2"),new PJQ.inputs.Selectpicker({el:f,isIntChoices:!0,defaultValue:this.options.pageLength,onChange:_.bind(function(e){"function"==typeof this.options.onPageSizeChange&&this.options.onPageSizeChange(e)},this)})}this.$wrapper=this.$("#dt_"+this.options.uuid+"_wrapper"),this.afterSearch(),this.options.isOverflowAuto&&this.$wrapper.find(".row>.col-sm-12").first().addClass("of-x-auto"),0<_.size(this.options.orderFixed)&&_.each(this.options.orderFixed,function(e){this.$dataTable.find('thead > tr > th[data-column-index="'+e[0].toString()+'"]').addClass("hidden-before hidden-after")},this);var g=null!=this.options.settings,P=this.options.settings instanceof Backbone.Model;this.$el.on("order.dt",_.bind(function(e,t,i){if(this.$dataTable.attr("id")===$(e.target).attr("id"))if(e.stopPropagation(),g){var s,n,o=this.options.columns;n=P?(s=this.options.settings.get("orderBy"),this.options.settings.get("orderAscending")):(s=this.options.settings.orderBy,this.options.settings.orderAscending),_.each(o,_.bind(function(e,t){e.columnData===s&&t},this));var a=P?i[i.length-1]:i[0],r=o[a.src],l=null!=r.columnData?r.columnData:r.data,c="asc"===a.dir;s===l&&n===c||(P?(this.options.settings.set("orderBy",l),this.options.settings.set("orderAscending",c),this.options.settings.hasEndpoint()&&this.options.settings.save()):(this.options.settings.orderBy=l,this.options.settings.orderAscending=c),this.orderByChanged())}else this.orderByChanged(i)},this)),null!=this.options.colReorder&&(this.$el.off("column-reorder.dt"),this.$el.on("column-reorder.dt",_.bind(function(e,t,s){if(e.stopPropagation(),s.drop||!1!==this.options.colReorder.realtime){var i,n,o=this.options.columns;if(n="object"===_typeof(this.options.colReorder)?(i=0<this.options.colReorder.fixedColumnsLeft?this.options.colReorder.fixedColumnsLeft:0,0<this.options.colReorder.fixedColumnsRight?this.options.colReorder.fixedColumnsRight:0):i=0,_.each(o,function(e,t){var i=null!=e.sort?e.sort:t;e.sort=s.mapping[i]}),null!=this.options.settings){var a=_.map(_.sortBy(_.filter(o,function(e){var t=e.sort+1;return i<t&&t<=_.size(o)-n}),function(e){return e.sort}),function(e){return e.columnData});P?(this.options.settings.set("columns",a),this.options.settings.save()):this.options.settings.columns=a,this.columnOrderChanged(a)}this.columnOrderChanged(_.sortBy(o,function(e){return e.sort}))}},this))),0<_.size(this.options.toggleRowClass)&&(this.$el.off("click",this.options.toggleRowClass),this.$el.on("click",this.options.toggleRowClass,_.bind(this.childRowToggle,this)),this.$el.off("click",".toggle-all-rows"),this.$el.on("click",".toggle-all-rows",_.bind(this.toggleAllChildRows,this))),this.initializeToggledRows(),this.afterDataTableRender()},makeColumnsResizeable:function(){var l=this,i=l.$dataTable.width();if(null!=this.options.colReorder&&this.options.enableColumnResize){var e=l.dataTable.settings()[0];if(null==e)return;var t=e._colReorder,s=$.fn.dataTable.ColReorder.prototype._fnMouseDown;this.$dataTable.find("thead th").off("mousedown.ColReorder touchstart.ColReorder"),this.$dataTable.find("thead th").on("mousedown.ColReorder touchstart.ColReorder",function(e){e.pageX-$(this).offset().left>$(this).outerWidth()-5?l.options.isResizing=!0:(l.options.isResizing=!1,s.call(t,e,this))})}l.$dataTable.find("thead").first().find("th").resizable({handles:"e",start:function(e,t){l.options.isResizing=!0,l.$dataTable.find("thead th").each(function(){this.addEventListener("click",l.preventBubble,{capture:!0})}),l.$dataTable.on("mouseup.preventBubble",l.preventBubble),l.columnWidths=[],l.$dataTable.find("thead").first().find("th").each(function(){var e=$
1(this).width();l.columnWidths.push(e),$(this).css("width",e+"px")}),l.$dataTable.find("tbody").first().find("tr").each(function(){$(this).find("td").each(function(e){$(this).css("width",l.columnWidths[e]+"px")})}),l.$dataTable.css("width",i+"px")},resize:function(e,t){var i=$(this).index(),s=t.size.width,n=$(this),o=l.$dataTable.find("thead").first().find("th").eq(i+1);if(o.length){var a=n.width()+o.width(),r=a-s;30<r?(n.css("width",s+"px"),o.css("width",r+"px"),l.$dataTable.find("tbody").first().find("tr").each(function(){$(this).find("td").eq(i).css("width",s+"px"),$(this).find("td").eq(i+1).css("width",r+"px")})):(n.css("width",a-30+"px"),o.css("width","30px"),l.$dataTable.find("tbody").first().find("tr").each(function(){$(this).find("td").eq(i).css("width",a-30+"px"),$(this).find("td").eq(i+1).css("width","30px")}))}},stop:function(e,t){l.saveColumnWidths(),l.$dataTable.find("thead th").each(function(){this.removeEventListener("click",l.preventBubble,{capture:!0})}),l.$dataTable.off("mouseup.preventBubble"),l.options.isResizing=!1}})},updateScrollbar:function(e){var t=this.$wrapper,i=this.$dataTable;if(t&&i){var s=0<t.closest("table").length;i.outerWidth()>t.width()&&!s?t.css("overflow-x","auto"):t.css("overflow-x","visible")}},preventBubble:function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()},saveColumnWidths:function(){var t=[],i=this;
1this.$dataTable.find("thead th").each(function(){var e=$(this).width()/i.$dataTable.width()*100;t.push(e)}),PJQ.helpers.cookieHelpers.setCookie(this.options.columnWidthCookie,JSON.stringify(t))},applyColumnWidths:function(){if(null!=this.options.columnWidthCookie){var t=PJQ.helpers.cookieHelpers.getCookie(this.options.columnWidthCookie);t&&(t=JSON.parse(t))&&t.length===this.$dataTable.find("thead th").length&&(this.$dataTable.find("thead th").each(function(e){$(this).css("width",t[e]+"%")}),this.$dataTable.find("tbody tr").each(function(){$(this).find("td").each(function(e){$(this).css("width",t[e]+"%")})}))}},beforeRemove:function(){$(window).off("resize."+this.options.uuid)},pageCache:[],getPage:function(i,s){var n=1,e=i.length;if(null!=i.start)n=i.start/e+1;else if(null!=this.dataTable){var t=this.dataTable.page.info();n=t.page+1}if(this.clearServerCache&&(this.clearServerCache=!1,this.pageCache=[]),null==this.pageCache[n-1]){var o=[];_.each(i.order,function(e){var t=i.columns[e.column].data;0<_.size(t)&&-1!==t.indexOf("attributes.")&&(t=t=t.substr(t.indexOf(".")+1)),o.push({name:t,direction:e.dir})});var a=this.pageCache;this.options.getPageCallback(n,e,o,_.bind(function(e,t){1===n&&(this.totalRows=t),a[n-1]={recordsTotal:this.totalRows,recordsFiltered:this.totalRows,data:e},s(a[n-1])}),this)}else s(this.pageCache[n-1])},afterDataTableRender:function(){"function"==typeof this.options.afterDataTableRender&&this.options.afterDataTableRender(this.dataTable)},getColumns:function(){return this.options.columns},orderByChanged:function(){var e;"function"==typeof this.options.orderByChanged&&(e=this.options).orderByChanged.apply(e,arguments)},columnOrderChanged:function(){var e;"function"==typeof this.options.columnOrderChanged&&(e=this.options).columnOrderChanged.apply(e,arguments)},createdRow:function(e,t){"function"==typeof this.options.createdRow&&this.options.createdRow(e,t)},getRow:function(e){if(this.dataTable){if("object"===_typeof(e)&&e[0]){var t=$(e);0<t.length&&(e=t)}return e instanceof $?(e.is("tr")||(e=e.closest("tr")),e="#"+e.attr("id")):"number"!=typeof e&&"string"!=typeof e||(e="#"+e.toString()),this.dataTable.row(e)}return null},addRow:function(e){null!=this.dataTable&&("array"===PJQ.helpers.objectHelpers.refinedType(e)?this.dataTable.rows.add(e).draw(!1):this.dataTable.row.add(e).draw(!1))},refreshRow:function(e){"function"!=typeof e.remove&&(e=this.getRow(e)),this.dataTable.row(e).invalidate().draw()},resetData:function(e){this.options.data=e,this.dataTable.clear(),this.dataTable.rows.add(this.getFilterData()),this.search()},removeRow:function(e){var t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];"function"!=typeof e.remove&&(e=this.getRow(e)),e.remove(),t&&this.refresh(),"function"==typeof this.options.onRowRemoved&&this.options.onRowRemoved(e)},removeAllRows:function(){null!=this.dataTable&&this.dataTable.clear()},getFilterData:function(){return"function"==typeof this.options.getFilterData?this.options.getFilterData(this,this.options.data):this.options.data},getFilter:function(e){if(null==this.filters)return null;var t=this.filters[e];return t||null},setFilter:function(e,t){null==this.filters&&(this.filters={}),this.filters[e]=t,this.filter()},filter:function(){null!=this.dataTable&&(null!=this.options.getPageCallback?(this.clearServerCache=!0,this.dataTable.draw()):(this.dataTable.clear(),this.filteredData=this.getFilterData(),this.dataTable.rows.add(this.filteredData),this.search()))},clearFilters:function(){this.filters=null,this.renderHeader(),this.filter()},getFilteredRowData:function(){var e=this.dataTable.rows({filter:"applied"}).data(),t=[];return _.each(e,function(e){t.push(e)}),t},toggleGroup:function(e){var t=$(e.currentTarget).data("name");this.options.collapsedGroups[t]=!this.options.collapsedGroups[t],this.dataTable.draw()},getGroupByColumnIndex:function(t){var e=_.findIndex(this.options.columns,function(e){return e.attribute===t||e.columnData===t});return-1===e?null:e},getGroupByColumn:function(){var e=this.getGroupByColumnIndex(this.getGroupBy());return col=null!=e?this.options.columns[e]:null,col?{column:col,index:e}:null},getGroupBy:function(){return void 0!==this.options.groupBy?this.options.groupBy:null},setGroupBy:function(e){this.options.groupBy=e,0<_.size(this.options.groupByKey)&&(window.localStorage.removeItem(this.Key_Access_Token),0<_.size(e)&&window.localStorage.setItem(this.options.groupByKey,e)),this.render()},startGroupRender:function(e,t){if(null!=t){var i=!!this.options.collapsedGroups[t];e.nodes().each(function(e){e.style.display=i?"none":""});var s="";if(!0!==this.options.disableGroupToggle){var n=i?"fa-plus-square":"fa-minus-square";s='<span data-name="'.concat(t,'" class="fal ml-2 mr-2 fa-lg fa-fw toggler ').concat(n,'" style="width:auto;"></span>')}return $("<tr/>").append('<td colspan="'+e.columns()[0].length+'"><div class="d-flex wd-100 align-items-center">
1'+s+'<div class="wd-100" style="display:inherit;">'+this.getGroupHeader(t,e)+"</div></div></td>").attr("data-name",t).toggleClass("collapsed",i)}},getGroupHeader:function(e,t){return"function"==typeof this.options.getGroupHeader?this.options.getGroupHeader(e,t):'<span class="fs-15 font-weight-bold text-dark p-1">'+e+" ("+t.count()+")</span>"},refresh:function(){var e=0<arguments.length&&void 0!==arguments[0]&&arguments[0];null!=this.dataTable&&(this.dataTable.rows().invalidate(e),this.adjust(e),this.onTableDraw())},adjust:function(){var e=0<arguments.length&&void 0!==arguments[0]&&arguments[0];this.dataTable.columns.adjust().draw(e)},getSearchText:function(){var e=this.$(".datatable-search");return 0<e.length?e.val():""},search:function(e){if(e=this.getSearchText(),null!=this.options.getPageCallback)this.lastSearchText!==e&&(null!=this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout(_.bind(function(){this.clearServerCache=!0,this.dataTable.search(e).draw(),this.afterSearch()},this),500));else{var t=!1;if(-1!==e.indexOf(":")){var i=e.split(":");if(1<_.size(i)){var s=i[0],n=i[1],o=this.colNameMap[s.toLowerCase()];null!=o&&(t=!0,this.dataTable.search("").column(o).search(n).draw())}}t||(this.dataTable.columns().search(""),this.dataTable.search(e).draw()),0===_.size(e)&&0===_.size(this.filteredData)&&0<_.size(this.options.data)&&this.$(".dataTables_empty").html(this.options.language.zeroRecords),this.initializeToggledRows(),this.afterSearch()}this.lastSearchText=e},afterSearch:function(){},addContextMenu:function(e){this.options.contextMenuOptions=e,this.contextMenu=new PJQ.menus.ContextMenu(_.defaults(this.options.contextMenuOptions,{el:this.$wrapper,selector:"tr[id]:not(.child-row)",isHideNoActions:!0,isWrapInFixedContainer:!0,fetchElementData:_.bind(function(e){return this.getRow(e)},this),onOpen:_.bind(function(e){$(e.node()).addClass("context-row")},this),onClose:_.bind(function(){this.$(".context-row").removeClass("context-row")},this)}))},makeSortable:function(u){var e=this.dataTable.data();if(0!==_.size(e)){var h=this;this.options.sortableOptions=u,this.options.sortableOptions.isNestedTable?new PJQ.Sortable(h.$el,_.defaults(this.options.sortableOptions,{data:e[0].collection,dataAttribute:"sortOrder",items:"tbody tr:not(.child-row-footer)",connectWith:"tbody tr:not(.child-row-footer)",start:function(e,t){$(this).sortable("refreshPositions")},change:function(e,t){var i=t.placeholder,s=i.prev(),n=i.next(),o=t.helper;if(o.hasClass("child-row")){var a=o.data("level");if(!n.hasClass("child-row")&&!n.hasClass("child-row-footer")||n.data("level")!==a)return void i.hide()}else if(null!=s.data("parentId")&&0!==s.length)return void i.hide();i.show()},stop:function(e,t){var i,s=t.item,n=s.data("level"),o=s.prev();if(null!=n){var a=s.next();if(!a.hasClass("child-row")&&!a.hasClass("child-row-footer")||a.data("level")!==n)return void $(this).sortable("cancel");if(1===n||null==n)for(;o.length;){if(!o.data("level")){i=o.attr("id");break}o=o.prev()}else for(;o.length;){if(o.data("level")===n-1){i=o.attr("id");break}o=o.prev()}if(!i)return void $(this).sortable("cancel");s.attr("data-parent-id",i).data("parent-id",i);var r,l,c=h.$dataTable.find("tbody tr").filter(function(){return $(this).data("parent-id")===i&&!$(this).hasClass("child-row-footer")}).index(s)+1;if(_.each(u.data,function(e){e.cid===s.attr("id")&&(r=e),e.cid===i&&(l=e)}),null==r||null==l||c<=0)return void $(this).sortable("cancel");h.onNestedRowSorted(r,c,l)}else{if(null!=o.data("parentId")&&0!==o.length)return void $(this).sortable("cancel");var d=h.$dataTable.find("tbody tr").filter(function(){return!$(this).data("parent-id")}).index(s)+1,p=_.find(u.data,function(e){return e.cid===s.attr("id")});if(null==p||d<=0)return void $(this).sortable("cancel");h.onNestedRowSorted(p,d,null)}}})):new PJQ.Sortable(h.$("table"),_.defaults(this.options.sortableOptions,{containment:"document",data:e[0].collection,dataAttribute:"sortOrder",items:".even, .odd",connectWith:".even, .odd",start:_.bind(function(e,t){var i=h.$("thead")[0].firstChild;_.each(t.item[0].children,function(e,t){$(i.children[t])[0]&&(e.width=$(i.children[t])[0].style.width)})}),stop:_.bind(function(e,t){var s=t.item[0].id,n=u.data.get(s),o=h.dataTable.page.info();h.$("tr").filter(".odd, .even").each(function(e,t){var i=o.page*o.length+(e+1);$(t)[0].id===s&&h.onRowSorted(n,i)})},this)}))}},onNestedRowSorted:function(e,t,i){"function"==typeof this.options.onNestedRowSorted&&this.options.onNestedRowSorted(e,t,i)},onRowSorted:function(e,t){null!=e&&0!==_.size(this.options.sortableOptions.dataAttribute)&&(e.set(this.options.sortableOptions.dataAttribute,t),!1!==this.options.sortableOptions.shouldSave&&e.save(null,{success:_.bind(function(){null!=this.collection&&this.collection.fetch({success:_.bind(function(){this.render()},this)})},this)}))},toggleAllChildRows:function(e){var t=this,i=0===_.size(this.expandedRowIds);this.dataTable.rows().every(function(){t.toggleChildRow(this,i)}),this.renderToggleAllIcon()}
1,renderToggleAllIcon:function(){var e=$(".toggle-all-rows");0!==e.length&&(0<_.size(this.expandedRowIds)?e.removeClass("fa-plus-circle").addClass("fa-minus-circle"):e.removeClass("fa-minus-circle").addClass("fa-plus-circle"))},childRowToggle:function(e,t){var i=t?$(t.selector.rows).find(this.options.toggleRowClass):$(e.currentTarget),s=(i.data("id"),i.closest("tr")),n=this.getRow(s);this.toggleChildRow(n)},toggleChildRow:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,i=2<arguments.length&&void 0!==arguments[2]&&arguments[2];null==this.expandedRowIds&&(this.expandedRowIds=[]);var s=$(e.node()),n=e.data(),o=n[this.options.rowId],a=s.find(this.options.toggleRowClass),r=s.data("level");if(!0!==t&&(e.child.isShown()||s.hasClass("shown")||this.expandedRowIds.includes(o))){null!=this.options.childDataTables&&(this.options.childDataTables=_.filter(this.options.childDataTables,_.bind(function(e){return e.options.parentId!==o},this))),e.child.hide(),s.removeClass("shown"),this.expandedRowIds=this.expandedRowIds.filter(function(e){return e!==o}),a.removeClass("fa-minus-circle").addClass("fa-plus-circle");var l=n[this.options.rowId];if(0<_.size(l)){var c=this.$('tr.child-row[data-parent-id="'+l+'"], tr.child-row-footer[data-parent-id="'+l+'"], tr.child-row-header[data-parent-id="'+l+'"]');0<_.size(c)&&c.remove()}}else!1!==t&&(a.removeClass("fa-plus-circle").addClass("fa-minus-circle"),this.renderChildRows(e,o,r?r+1:1),s.addClass("shown"),this.expandedRowIds.push(o));i||this.onChildRowToggle(e),this.renderToggleAllIcon()},onChildRowToggle:function(e){"function"==typeof this.options.onChildRowToggle&&this.options.onChildRowToggle(e)},initializeToggledRows:function(){var n=null==this.expandedRowIds&&this.options.expandAll;if(0!==_.size(this.expandedRowIds)||n){var o=this;this.dataTable.rows().every(function(e,t,i){var s=this.data()[o.options.rowId];(n||_.contains(o.expandedRowIds,s))&&o.toggleChildRow(this,!0,!0)})}},getChildHeader:function(e){return"function"==typeof this.options.getChildHeader?this.options.getChildHeader(e):""},getChildFooter:function(e){return"function"==typeof this.options.getChildFooter?this.options.getChildFooter(e):""},renderChildRows:function(c,d){var p=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1;null==this.childRows&&(this.childRows={}),this.childRows[p]||(this.childRows[p]={});var u=this.getRowChildData(c);if(null!=u){var e=_.bind(function(){var t=this,i=this.getRowChildColumns({level:p});if(null!=i){var s="",e=this.getChildHeader(c);if(0<_.size(e)){var n=this.dataTable.columns(":visible").count();s+='<tr><td style="border-top: none;" colspan="'.concat(n,'"><table class="wd-100 table dataTable no-footer"><tr class="child-row-header" data-level="').concat(p,'" data-parent-id="').concat(d,'">').concat(e,"</tr>")}u.forEach(function(e){s+=t.renderChildRow(d,e,p,i)});var o=this.getChildFooter(c);return 0<_.size(o)&&(s+='<tr class="child-row-footer" data-level="'.concat(p,'" data-parent-id="').concat(d,'">').concat(o,"</tr>")),0<_.size(e)&&(s+="</table></td></tr>"),void $(c.node()).after(s)}var a="subgrid-"+d.toString(),r=$('<div data-id="'+d+'" />',{class:a+" p-2"});c.child(r).show();var l=this.getRowChildTable({el:r,data:PJQ.helpers.objectHelpers.isBackboneCollection(u)?u.models:u,isHideSearch:!0,parentId:d,parentData:c.data()});this.options.childDataTables=_.filter(this.options.childDataTables,_.bind(function(e){return e.options.parentId!==d},this)),this.options.childDataTables.push(l)},this);PJQ.helpers.objectHelpers.isBackboneModel(u)?u.fetch({success:_.bind(function(){e()},this)}):e()}},renderChildRow:function(e,s,t){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,n=4<arguments.length&&void 0!==arguments[4]&&arguments[4];null==i&&(i=this.getRowChildColumns({level:t}));var o='<tr data-parent-id="'.concat(e,'" data-level="').concat(t,'" data-row-id="').concat(s.cid,'" id="').concat(s.cid,'" class="child-row">');if(i.forEach(function(e,t){var i="function"==typeof e.render?e.render(null,null,s):"";o+='<td style="width:'.concat(e.width||"auto",'">').concat(i,"</td>")}),o+="</tr>",n){var a=this.$('tr.child-row[data-row-id="'+s[this.options.rowId]+'"]');0<a.length&&a.replaceWith(o)}return o},renderChildColumn:function(e,t,i){var s=this.getRowChildColumns({level:i})[e];if(null!=s){var n="function"==typeof s.render?s.render(null,null,t):"",o=this.$('tr.child-row[data-row-id="'+t[this.options.rowId]+'"]');if(0!==o.length){var a=o.find("td:nth-child("+(e+1).toString()+")");0!==a.length&&a.replaceWith('<td style="width:'.concat(s.width||"auto",'">').concat(n,"</td>"))}}},getRowChildColumns:function(e){return"function"==typeof this.options.getRowChildColumns?this.options.getRowChildColumns(e):null},getRowChildTable:function(e){return"function"==typeof this.options.getRowChildTable?this.options.getRowChildTable(e):null},getRowChildData:function(e){return"function"==typeof this.options.getRowChildData?this.options.getRowChildData(e):{}},copyPhone:function(e){var t="h_input_"+_.uniqueId(),i=$("<input>",{value:$(e.currentTarget).data("phone"),style:"position: absolute;
1left:-2000px;top:-2000px",id:t});this.$el.append(i),i[0].select(),document.execCommand("copy"),i.remove(),PJQ.notifications.notify.successNotify({message:"Number copied to clipboard."})},copyEmail:function(e){var t="h_input_"+_.uniqueId(),i=$("<input>",{value:$(e.currentTarget).data("email"),style:"position: absolute;left:-2000px;top:-2000px",id:t});this.$el.append(i),i[0].select(),document.execCommand("copy"),i.remove(),PJQ.notifications.notify.successNotify({message:"Email copied to clipboard."})}}),PJQ.models.customFields={},PJQ.collections.customFields={},PJQ.views.customFields={},PJQ.helpers.customFieldHelpers={getDisplayValue:function(e,t){var s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,i=3<arguments.length&&void 0!==arguments[3]&&arguments[3];if(null==e||null==t||"CHOICE"===e&&0===_.size(s))return"";var n=e.toUpperCase(),o=PJQ.helpers.objectHelpers.refinedType(t),a="";switch(n){case PJQ.constants.customFields.fieldTypes.TEXT:"string"===o?a=t:"number"===o&&(a=o.toString());break;case PJQ.constants.customFields.fieldTypes.CHOICE:var r=function(e){if(null==e)return"";var t;if("number"==typeof e)t=e;else if("string"==typeof e){if(0===_.size(e))return"";if(t=parseInt(e),isNaN(t))return""}var i=s.get(t);if(null!=i){if(0<_.size(i.get("value")))return i.get("value");if(0<_.size(i.get("name")))return i.get("name")}return""};if(i){var l;l="array"===o?t:"string"===o?t.split("|"):[];var c=[];_.each(l,function(e){var t=r(e);0<_.size(t)&&c.push(t)}),a=c.join(", ")}else{var d;a=null==(d="number"===o?t:"string"===o?parseInt(t):null)?"":r(d)}break;case PJQ.constants.customFields.fieldTypes.BOOL:var p;if("boolean"===o)p=t;else if("string"===o){if(0===_.size(t))return"";var u=t.toLowerCase();p="true"===u||"yes"===u}else p="number"===o?1===t:null;a=null==p?"":p?"Yes":"No";break;case PJQ.constants.customFields.fieldTypes.INT:case PJQ.constants.customFields.fieldTypes.MONEY:case PJQ.constants.customFields.fieldTypes.PERCENT:var h;null==(h="number"===o?t:"string"===o?parseInt(t):null)||isNaN(h)?a="":n===PJQ.constants.customFields.fieldTypes.INT?a=h.toString():n===PJQ.constants.customFields.fieldTypes.MONEY?a=PJQ.helpers.formatHelpers.formatCurrency(h):n===PJQ.constants.customFields.fieldTypes.PERCENT&&(a=h.toString()+"%");break;case PJQ.constants.customFields.fieldTypes.DATE:case PJQ.constants.customFields.fieldTypes.DATETIME:var m;m="date"===o?t:"string"===o?new Date(t):null;var f,g=n===PJQ.constants.customFields.fieldTypes.DATETIME;f=g?PJQ.helpers.dateHelpers.dateFormats.DATE_TIME:PJQ.helpers.dateHelpers.dateFormats.DATE,a=null==m?"":PJQ.helpers.dateHelpers.getDateString(m,f,!g);break;default:a=t}return a}},PJQ.models.customFields.CustomField=PJQ.models.BaseModel.extend({idAttribute:"id",collectionClass:function(){return PJQ.collections.customFields.CustomFieldChoices},newChoiceCollection:function(e){return new(this.collectionClass())(e)},parse:function(e){return null!=e&&null!=e.choices?null!=this.choices?this.choices.reset(e.choices):(this.choices=this.newChoiceCollection(e.choices),this.choices.on("update",_.bind(function(){this.isDirty=!0},this))):(this.choices=this.newChoiceCollection(),this.choices.on("update",_.bind(function(){this.isDirty=!0},this))),e},beforeSave:function(){this.set("choices",this.choices.getChangedModels())}}),PJQ.models.customFields.CustomFieldChoice=PJQ.models.BaseModel.extend({idAttribute:"id"}),PJQ.collections.customFields.CustomFields=PJQ.collections.BaseCollection.extend({model:PJQ.models.customFields.CustomField}),PJQ.collections.customFields.CustomFieldChoices=PJQ.collections.BaseCollection.extend({model:PJQ.models.customFields.CustomFieldChoice}),PJQ.views.customFields.CustomFieldsForm=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Custom-Fields-Form"),subTemplates:{field:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Custom-Fields-Form-Field"),fieldInput:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Custom-Fields-Form-Field-Input")},isEdit:null,canEdit:!0},beforeFirstRender:function(){var o=this;null!=this.options.isEdit&&(this.options.canEdit=this.options.isEdit),this.changedValues=[],null==this.options.fieldValues&&(this.options.fieldValues=[]),!1!==this.options.applyDefaults&&_.each(this.collection.models,function(t,e){var i,s=null!==(i=t.get("defaultValue"))&&void 0!==i?i:"";t.get("fieldType")!==PJQ.constants.customFields.fieldTypes.CHOICE&&t.get("fieldType")!==PJQ.constants.customFields.fieldTypes.INT||(s=parseInt(s),isNaN(s)&&(s=null));var n=_.find(o.options.fieldValues,function(e){return e.id===t.get("id")});null!=(s=null!=s?s:null)&&(null==n?o.options.fieldValues.push({f
1ieldNumber:t.get("fieldNumber"),fieldTypeId:t.get("fieldTypeId"),fieldType:t.get("fieldType"),isMultiple:t.get("isMultiple"),value:s,id:t.get("id")}):null==n.value&&(n.value=s))})},afterRender:function(){_.each(_.sortBy(this.collection.models,function(e){return null!=e.get("sortOrder")?e.get("sortOrder"):e.id}),function(e){if(13!==e.get("fieldTypeId")){if((e instanceof PJQ.models.contacts.ContactCustomField||e instanceof PJQ.models.contacts.CompanyCustomField)&&!1===e.get("isVisibleInRSVP")&&!this.options.isAdmin)return!1;var t=this.$(".custom-field-outer-"+e.id.toString()),i=PJQ.templating.TemplateRenderer.parseTemplate(this.options.subTemplates.field,{model:e,fieldValues:this.options.fieldValues,subTemplates:this.options.subTemplates,canEdit:this.options.canEdit,isAdmin:this.options.isAdmin});if(0<_.size(t)){var s=t.data("classes");t.replaceWith(i),0<_.size(s)&&i.removeClass("col-sm-12 col-md-6 col-6 col-12").addClass(s)}else this.$(".custom-fields").append(i)}},this),this.attachFormEvents()},attachFormEvents:function(){var r=this;this.customFieldControls=[],this.$(".custom-field.input-text[data-p-bind],.custom-field.input-dollars-full[data-p-bind],.custom-field.input-numeric[data-p-bind],.custom-field.input-percent[data-p-bind],.custom-field.input-phone[data-p-bind],.custom-field.input-textarea[data-p-bind]").each(function(){var e=$
1(this),t=e.data("pBind"),i=e.data("mask");0<_.size(i)?e.inputmask(i,{placeholder:""}):e.hasClass("input-dollars-full")?PJQ.helpers.inputHelpers.inputMaskCurrency(e,2):e.hasClass("input-numeric")?PJQ.helpers.inputHelpers.inputMaskInteger(e):e.hasClass("input-percent")?PJQ.helpers.inputHelpers.inputMaskPercent(e,2,!0):e.hasClass("input-phone")&&PJQ.helpers.inputHelpers.inputMaskPhone(e),r.customFieldControls.push({id:t,input:e})}),this.$(".custom-field.input-select[data-p-bind],.custom-field.input-bool[data-p-bind]").each(function(){var t=$(this),i=t.data("pBind"),e=new PJQ.inputs.Selectpicker({el:t,isIntChoices:!t.hasClass("input-bool")&&!t.hasClass("input-state"),onChange:function(e){t.hasClass("input-bool")&&(e="true"===e.toLowerCase()),r.fieldChanged(i,e)}});r.customFieldControls.push({id:i,input:e})}),this.$(".custom-field.input-date[data-p-bind],.custom-field.input-date-time").each(function(){var e=$(this),t=e.data("fieldId"),i=e.hasClass("input-date-time"),s=new PJQ.inputs.Datepicker({el:e,isUTC:!1,datepickerOptions:{format:i?void 0:PJQ.helpers.dateHelpers.dateFormats.DATE.toUpperCase()},onChange:function(e){i||(e=PJQ.helpers.dateHelpers.getDateString(e,PJQ.helpers.dateHelpers.dateFormats.DATE)),r.fieldChanged(t,e)}});r.customFieldControls.push({id:t,input:s})}),this.$(".custom-field.input-contact[data-p-bind]").each(function(){var e=$
1(this),t=e.data("pBind"),i=_.find(r.options.fieldValues,function(e){return e.id===t}).value,s=e.data("multipleChoice");s?i=new PJQ.collections.contacts.Contacts(i).models:null!=i&&(i=new PJQ.models.contacts.Contact(i));var n=new PJQ.views.contacts.ContactsSelectInput({el:e,context:PJQ.constants.contacts.contexts.CONTACTS,selectedContact:i,isSingleChoice:!s,isReadOnly:!r.options.canEdit,emptyNotice:"No Contact Selected",onChange:function(e){r.fieldChanged(t,e)}});r.customFieldControls.push({id:t,input:n})}),this.$(".custom-field.input-html[data-p-bind]").each(function(){var e=$(this),t=e.data("pBind"),i=_.find(r.options.fieldValues,function(e){return e.id===t});new PJQ.inputs.HTMLEditor({el:e,editorHeight:600,defaultValue:0<_.size(i.value)?i.value.replace(/(?:\r\n|\r|\n)/g,"<br>"):i.value,onChange:function(e){e!==i.value&&r.fieldChanged(t,e)}})}),this.$(".custom-field.file-upload-field").each(function(){var i,s=function(n,o,e){var t;PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.SORT_USER_ATTACHMENTS)&&(t=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.SORT_USER_ATTACHMENTS));var i=new PJQ.views.files.FileUploaderGrid({el:n,canUpload:r.options.canEdit,canDelete:r.options.canEdit,collection:o,endpoint:e,sortBy:t?t.sortBy:null,sortDirection:t?t.sortBy?"asc":"desc":null,onSuccess:function(e){var t=[e.guid];null!=o&&_.each(o.models,function(e){0<_.size(e.get("guid"))&&t.push(e.get("guid"))}),r.fieldChanged(n.data("pBind"),_.uniq(t).join("|"))},onDelete:function(t,e){var i=[],s=[];null!=o&&(_.each(o.models,function(e){0<_.size(e.get("guid"))&&t.get("guid")!==e.get("guid")?i.push(e.get("guid")):s.push(e)}),o.remove(s)),r.fieldChanged(n.data("pBind"),_.uniq(i).join("|")),e()}});r.customFieldControls.push({id:a,input:i})};r.options.model instanceof PJQ.models.users.User&&(i=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"attachments"}]));var n=$(this),a=n.data("pBind"),e=_.find(r.options.fieldValues,function(e){return e.id===a});e&&0<_.size(e.value)?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files"},{endpoint:"details"}]),data:{guids:e.value?"string"==typeof e.value?e.value.split("|"):e.value:null}}).post().done(_.bind(function(e){var t=new PJQ.collections.files.Files(e);s(n,t,i)},this)):s(n,new PJQ.collections.files.Files,i)}),new PJQ.Binder(this.$el,null,{watchElements:["input.custom-field","textarea.custom-field"],onChange:_.bind(function(e,t,i){e.hasClass("input-date-time")||e.hasClass("input-date")||this.fieldChanged(parseInt(t),i)},this)})},renderField:function(e){var t=this.$('.alert[data-field-id="'+e.id.toString()+'"]');if(0<_.size(t)){var i=t.closest(".input-outer"),s=_.findWhere(this.options.fieldValues,{id:e.id});i.children(":not(label)").remove(),this.renderSubTemplate(!0,this.options.subTemplates.fieldInput,i,{model:e,fieldValue:null!=s?s.value:null,canEdit:void 0===e.get("isChangeableInRSVP")?this.options.canEdit:this.options.canEdit&&e.get("isChangeableInRSVP")||this.options.canEdit&&this.options.isAdmin})}},setValue:function(t,e){this.fieldChanged(t,e,!1);var i=this.collection.get(t),s=_.find(this.customFieldControls,function(e){return e.id===t});if(null!=s)switch(i.get("fieldType").toLowerCase()){case"choice":s.input.setValue(e);break;case"money":s.input.val(e/100);break;case"text":case"int":case"percent":case"phone":case"textarea":s.input.val(e);break;case"date":case"datetime":var n;n="date"===PJQ.helpers.objectHelpers.refinedType(e)?e:0<_.size(e)?new Date(e):null,s.input.setValue(n)}else this.renderField(i)},fieldChanged:function(e,t){var i=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],s=_.findWhere(this.options.fieldValues,{id:e}),n=this.collection.get(e);"CHOICE"!==n.get("fieldType")||n.get("isMultipleChoice")||(t=parseInt(t)),null==s?(s={id:e,fieldNumber:n.get("fieldNumber"),value:t},this.options.fieldValues.push(s)):s.value=t;var o=_.findWhere(this.changedValues,{id:e});null!=o?o.value=t:this.changedValues.push(s),"function"==typeof this.options.onChange&&i&&this.options.onChange(e,t)},getValues:function(){return this.options.fieldValues},getChanged:function(){return this.changedValues},validate:function(){var n=!0;return _.each(this.collection.models,_.bind(function(s){!this.options.isAdmin&&!s.get("isRequired")||this.options.isAdmin&&null!=s.get("isRequiredAdmin")&&!s.get("isRequiredAdmin")||this.options.isAdmin&&!s.get("isRequired")&&null==s.get("isRequiredAdmin")||!this.options.isAdmin&&s.get("isAdminEdit")||_.each(this.customFieldControls,_.bind(function(e){var t=e.id,i=e.input;if(t===s.id)switch(s.get("fieldType").toLowerCase()){case"text":case"int":case"percent":case"phone":case"textarea":PJQ.helpers.inputHelpers.setInputError(i,!0),0===i.val().trim().length&&(PJQ.helpers.inputHelpers.setInputError(i,!1),n=!1);break;case"money":PJQ.helpers.inputHelpers.setInputError(i,!0),0!==i.val().trim().length&&0!==parseInt(i.val().trim())||(PJQ.helpers.inputHelpers.setInputError(i,!1),n=!1);break;
1case"bool":i.hideError(),0===_.size(i.getValue())&&(i.showError(),n=!1);break;case"date":case"datetime":i.hideError(),void 0!==i.getValue()&&null!=i.getValue()||(i.showError(),n=!1);break;case"choice":i.hideError(),(i.options.isMultiple?0!==_.size(i.getValue()):i.getValue()&&0!==i.getValue().length)||(i.showError(),n=!1);break;case"contact":i.validate()||(n=!1);break;case"upload":i.clearError(),i.options.collection&&0!=i.options.collection.length||(i.showError("File Upload Required"),n=!1)}},this))},this)),n}}),PJQ.views.customFields.CustomFieldsSearchForm=PJQ.views.customFields.CustomFieldsForm.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Custom-Fields-Form"),subTemplates:{field:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Custom-Fields-Search-Form-Field"),fieldInput:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Custom-Fields-Search-Form-Field-Input")},applyDefaults:!1},afterRender:function(){_.each(this.collection.models,function(e){var t=PJQ.templating.TemplateRenderer.parseTemplate(this.options.subTemplates.field,{model:e,fieldValues:this.options.fieldValues,subTemplates:this.options.subTemplates});this.$(".custom-fields").append(t)},this),this.attachFormEvents()},attachFormEvents:function(){var a=this;this.customFieldControls=[],this.$(".custom-field.input-text[data-p-bind],.custom-field.input-dollars-full[data-p-bind],.custom-field.input-numeric[data-p-bind],.custom-field.input-phone[data-p-bind],.custom-field.input-textarea[data-p-bind]").each(function(){var e=$
1(this),t=e.data("pBind"),i=e.data("valueIndex"),s=e.data("mask");0<_.size(s)?e.inputmask(s,{placeholder:""}):e.hasClass("input-dollars-full")?PJQ.helpers.inputHelpers.inputMaskCurrency(e,2):e.hasClass("input-numeric")?PJQ.helpers.inputHelpers.inputMaskInteger(e):e.hasClass("input-phone")&&PJQ.helpers.inputHelpers.inputMaskPhone(e),a.customFieldControls.push({id:t,input:e,index:i})}),this.$(".custom-field.input-percent[data-p-bind]").each(function(){var e=$(this),t=e.data("pBind"),i=e.data("valueIndex");a.customFieldControls.push({id:t,input:e,index:i})}),this.$(".custom-field.input-select[data-p-bind],.custom-field.input-bool[data-p-bind]").each(function(){var t=$(this),i=t.data("pBind"),s=t.data("valueIndex"),e=new PJQ.inputs.Selectpicker({el:t,isIntChoices:!t.hasClass("input-bool")&&!t.hasClass("input-state"),onChange:function(e){t.hasClass("input-bool")&&(e="true"===e.toLowerCase()),a.fieldChanged(i,s,e)}});a.customFieldControls.push({id:i,input:e,index:s})}),this.$(".custom-field.input-date[data-p-bind],.custom-field.input-date-time[data-p-bind]").each(function(){var e=$
1(this),t=e.data("pBind"),i=e.data("valueIndex"),s=e.hasClass("input-date-time"),n=new PJQ.inputs.Datepicker({el:e,isUTC:!1,datepickerOptions:{format:s?void 0:PJQ.helpers.dateHelpers.dateFormats.DATE.toUpperCase()},onChange:function(e){e=s?e?e.toISOString():null:e?PJQ.helpers.dateHelpers.getDateString(e,PJQ.helpers.dateHelpers.dateFormats.DATE):null,a.fieldChanged(t,i,e)}});a.customFieldControls.push({id:t,input:n,index:i})}),this.$(".custom-field.input-contact[data-p-bind]").each(function(){var e=$(this),t=e.data("pBind"),i=e.data("valueIndex"),s=_.find(a.options.fieldValues,function(e){return e.id===t}).value,n=e.data("multipleChoice");n?s=new PJQ.collections.contacts.Contacts(s).models:null!=s&&(s=new PJQ.models.contacts.Contact(s));var o=new PJQ.views.contacts.ContactsSelectInput({el:e,context:PJQ.constants.contacts.contexts.CONTACTS,selectedContact:s,isSingleChoice:!n,canEdit:a.options.canEdit,emptyNotice:"No Contact Selected",onChange:function(e){a.fieldChanged(t,i,e)}});a.customFieldControls.push([t,i,o]),a.customFieldControls.push({id:t,input:o,index:i})}),new PJQ.Binder(this.$el,null,{watchElements:["input.custom-field","textarea.custom-field"],onChange:_.bind(function(e,t,i){if(!(e.hasClass("input-percent")||e.hasClass("input-date-time")||e.hasClass("input-date"))){var s=parseInt($(e).data("valueIndex"));this.fieldChanged(parseInt(t),s,i)}},this)})},fieldChanged:function(t,e,i){var s=_.findWhere(this.options.fieldValues,{id:t});if(null==s){var n=this.collection.get(t);s={id:t,fieldNumber:n.get("fieldNumber"),value:1===e?i:null,value2:2===e?i:null},this.options.fieldValues.push(s)}else 1===e?s.value=i:s.value2=i;var o=_.findWhere(this.changedValues,{id:t});null!=o?(o.value=1===e?i:o.value,o.value2=2===e?i:o.value2):this.changedValues.push(s),s.value||s.value2||(this.options.fieldValues=_.filter(this.options.fieldValues,function(e){return e.id!==t}),this.changedValues=_.filter(this.changedValues,function(e){return e.id!==t})),"function"==typeof this.options.onChange&&this.options.onChange(t,i)},clearFieldValues:function(){this.options.fieldValues=[],this.changedValues=[],this.render()},setValues:function(e){this.options.fieldValues=e,this.changedValues=[],this.render()},validateSearch:function(){var a=!0;return _.each(this.collection.models,_.bind(function(o){_.each(this.customFieldControls,_.bind(function(e){var t=e.id,i=e.index,s=e.input,n=null;if(1===i&&t===o.id)switch(o.get("fieldType").toLowerCase()){case"bool":case"choice":case"contact":case"percent":case"phone":case"text":case"textarea":break;case"int":case"money":n=_.filter(this.customFieldControls,function(e){return e.id===o.id&&2===e.index})[0].input,PJQ.helpers.inputHelpers.setInputError(s,!0),PJQ.helpers.inputHelpers.setInputError(n,!0),0===_.size(s.val())&&0<_.size(n.val())&&(a=!1,PJQ.helpers.inputHelpers.setInputError(s,!1)),0===_.size(n.val())&&0<_.size(s.val())&&(a=!1,PJQ.helpers.inputHelpers.setInputError(n,!1)),0<_.size(s.val())&&0<_.size(n.val())&&parseInt(s.val())>parseInt(n.val())&&(a=!1,PJQ.helpers.inputHelpers.setInputError(s,!1),PJQ.helpers.inputHelpers.setInputError(n,!1));break;case"date":case"datetime":n=_.filter(this.customFieldControls,function(e){return e.id===o.id&&2===e.index})[0].input,PJQ.helpers.inputHelpers.setInputError(s.$el,!0),PJQ.helpers.inputHelpers.setInputError(n.$el,!0),!s.getValue()&&n.getValue()&&(a=!1,PJQ.helpers.inputHelpers.setInputError(s.$el,!1)),!n.getValue()&&s.getValue()&&(a=!1,PJQ.helpers.inputHelpers.setInputError(n.$el,!1)),s.getValue()&&n.getValue()&&s.getValue()>n.getValue()&&(a=!1,PJQ.helpers.inputHelpers.setInputError(s.$el,!1),PJQ.helpers.inputHelpers.setInputError(n.$el,!1))}},this))},this)),a}}),PJQ.views.customFields.CustomFieldChoicesEditor=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Custom-Field-Choices-Editor"),choices:[],onCancel:_.noop,onSave:_.noop},events:{"click .add-custom-field-choice-button":"addChoice","click .delete-custom-field-choice-button":"deleteChoice","change .custom-field-choice-value":"choiceChanged","click .custom-field-choices-cancel":"cancel","click .custom-field-choices-save":"save"},beforeRender:function(){_.each(this.collection.models,function(e){e.oldAttributes=_.clone(e.attributes)}),this.renderData={models:_.filter(this.collection.models,function(e){return!e.get("isDeleted")})}},afterRender:function(){this.$(".custom-field-choices-table").DataTable({ordering:!1}),this.$(".custom-field-choices-table").sortable({items:"tr",connectWith:"tr",update:_.bind(this.setSortOrder,this)})},setSortOrder:function(){var i=this;this.$(".custom-field-choices-table").find("tbody>tr[data-cid]").each(function(e){var t=$(this).data("cid");i.collection.get({cid:t}).set("sortOrder",e+1)})},addChoice:function(){this.collection.add(new PJQ.models.customFields.CustomFieldChoice({value:"",sortOrder:this.collection.models.length+1})),this.render()},choiceChanged:function(e){var t=$(e.currentTarget).closest("tr").data("cid");this.collection.get({cid:t}).set("value",$(e.currentTarget).val())},deleteChoice:function(e){var t=$(e.currentTarget).closest("tr").data("cid"),i=this.collection.get({cid:t});i.isNew()?this.collection.remove(i):i.set("isDeleted",!0),this.render()},cancel:function(){_.each(this.collection.models,function(e){e.attributes=_.clone(e.oldAttributes),e.oldAttributes=null}),this.options.onCancel(this.collection)},save:function(){this.options.onSave(this.collection)}}),PJQ.views.templates={},PJQ.views.templates.TemplateManagement=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Template-Management"),templateType:null},events:{"click .btn-add-template":"addTemplate","click .btn-edit-template":"editClicked","click .btn-delete-template":"deleteClicked"},beforeFirstRender:function(){this.options.collection?this.collection=this.options.collection:this.collection=new PJQ.collections.schedule.Templates,this.listenTo(this.collection,"fetch",this.render),this.collection.fetch()},renderData:function(){return{collection:this.collection,templateType:this.options.templateType}},afterRender:function(){null!=this.collection&&this.collection.isFetched&&(this.dataTable=new PJQ.views.dataTables.DataTable({el:this.$(".templates-table"),isHideSearch:!0,data:this.collection.models,rowId:"cid",order:[0,"asc"],pageLength:20,language:{zeroRecords:'Click "Add" to create a new Template'},onRowDoubleClick:_.bind(function(e){this.editTemplate(e.data())},this),contextMenuOptions:{actions:[{name:"Edit",onClick:_.bind(function(e){this.editTemplate(e.data())},this)},{name:"Delete",isDanger:!0,onClick:_.bind(function(e){this.deleteTemplate(e)},this)}]},columns:[{data:"attributes.name",title:"Name"},{data:"",title:"",orderable:!1,searchable:!1,render:_.bind(function(){return'<div class="text-align-right show-on-row-hover"><button type="button" class="btn btn-info btn-edit-template wd-30p mr-1"><i class="fal fa-pencil"></i><button type="button" class="btn btn-danger btn-delete-template wd-30p"><i class="fal fa-trash-alt"></i></button></button></div>'},this),width:"80px"}]}
1))},addTemplate:function(){},editClicked:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr")).data();this.editTemplate(i)},editTemplate:function(e){},deleteClicked:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr"));this.deleteTemplate(i)},deleteTemplate:function(e){var t=e.data();new PJQ.views.modals.DeleteCancel({header:"Confirm Deletion",body:"Are you sure you want to delete this template?",onDelete:_.bind(function(){this.collection.remove(t),t.destroy(),this.dataTable.removeRow(e)},this)})}}),PJQ.views.templates.NewTemplateModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-New-Template"),minWidth:"500px",onSave:_.noop,isSubmittal:!1},events:{"keyup .input-template-name":"templateNameChanged","click .btn-save":"save"},beforeModalCreated:function(){this.options.model||(this.model=new PJQ.models.schedule.Template)},beforeRender:function(){this.renderData={model:this.model}},afterRender:function(){this.$(".input-template-name").focus()},templateNameChanged:function(e){var t=0<_.size(this.$(".input-template-name").val());this.$(".btn-save").prop("disabled",!t),t&&13===e.keyCode&&this.save()},save:function(){var e=this.$(".input-template-name").val();0!==_.size(e)&&(new PJQ.Loader(this.$(".modal-content")),this.model.save({name:e},{success:_.bind(function(){this.removeModal(),"function"==typeof this.options.onSave&&this.options.onSave(this.model)},this)}))}}),PJQ.ajax={},PJQ.ajax.Request=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,t),this.setOptions(e)}return _createClass(t,[{key:"setOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.options=_.defaults(t,{method:"GET",dataType:"json",contentType:"application/json",service:PJQ.constants.services.API,beforeSend:_.bind(function(e){PJQ.helpers.apiHelpers.addHeaders(e,this.getService(),t.headers)},this),isPascal:!1,isApi2:!1,isAPIv2:!1,isOrigin:!1,canAuthRetry:!0})}},{key:"getService",value:function(){return this.options.isOrigin?PJQ.constants.services.ORIGIN:this.options.isAPIv2?PJQ.constants.services.APIv2:this.options.service}},{key:"exec",value:function(e){e&&(this.options.method=e.toUpperCase());var t=this.getService();this.options.endpoint&&(this.options.url=PJQ.helpers.urlHelpers.buildApiUrl(this.options.endpoint,{isPascal:this.options.isPascal,service:t})),"PUT"!==this.options.method&&"POST"!==this.options.method&&"PATCH"!==this.options.method||null!=this.options.data||(this.options.data={}),this.options.data&&(this.options.data=JSON.stringify(this.options.data));var i={_success:null,success:function(e){return this._success=e,this},_done:null,done:function(e){return this._done=e,this},_fail:null,fail:function(e){return this._fail=e,this}};return $.ajax(this.options).done(function(){"function"==typeof i._done?i._done.apply(i,arguments):"function"==typeof i._success&&i._success.apply(i,arguments)}).fail(_.bind(function(e){t===PJQ.constants.services.APIv2&&401===e.status&&this.options.canAuthRetry?PJQ.app.TokenManager.refreshAccessToken(_.bind(function(e){0<_.size(e)?$.ajax(this.options).done(function(){"function"==typeof i._done&&i._done.apply(i,arguments)}).fail(_.bind(function(e){"function"==typeof i._fail&&i._fail.apply(i,arguments)},this)):"function"==typeof i._fail&&i._fail.apply(i,arguments)},this)):"function"==typeof i._fail&&i._fail.apply(i,arguments)},this)),i}},{key:"get",value:function(){return this.exec("get")}},{key:"post",value:function(){return this.exec("post")}},{key:"patch",value:function(){return this.exec("patch")}},{key:"put",value:function(){return this.exec("put")}},{key:"delete",value:function(){return this.exec("delete")}}]),t}(),PJQ.Alert=function(){function i(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,i),this.options=_.defaults(t,{type:"primary",extraClasses:[],text:"",isPrepend:!1,isAppend:!1,isBefore:!1,isShowClose:!1,cookie:null,cookieExpirationDays:null,style:null,animation:null,timeout:null}),null==this.options.cookie||PJQ.helpers.cookieHelpers.getCookie(this.options.cookie),this.createElement(e)}return _createClass(i,[{key:"createElement",value:function(e){this.options.isS
1howClose=this.options.isShowClose||null!=this.options.cookie,this.$outer=e,this.$el=$("<div>",{class:this.options.extraClasses.join(" ")+" alert alert-"+this.options.type+(null!=this.options.animation?" hidden":""),style:null!=this.options.style?this.options.style:""}).html(this.options.text),this.options.isShowClose&&(this.$el.append($('<button type="button" class="close alert-item-close text-dark p-1 mr-2 fs-24" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>')),this.$el.find(".alert-item-close").on("click",_.bind(this.alertClosed,this))),this.options.isAppend?this.$outer.append(this.$el):this.options.isPrepend?this.$outer.prepend(this.$el):this.options.isBefore?this.$outer.before(this.$el):this.$outer.html(this.$el),null!=this.options.animation&&0<_.size(this.options.animation.in)?this.$el.animateCSS(this.options.animation.in,function(){0<this.options.timeout&&this.startDestroyTimeout()},this):0<this.options.timeout&&this.startDestroyTimeout()}},{key:"startDestroyTimeout",value:function(){setTimeout(_.bind(function(){this.destroy()},this),this.options.timeout)}},{key:"destroy",value:function(){null!=this.options.animation&&0<_.size(this.options.animation.out)?this.$el.animateCSS(this.options.animation.out,function(){this.$el.remove()},this):this.$el.remove()}},{key:"alertClosed",value:function(){null!=this.options.cookie&&PJQ.helpers.cookieHelpers.setCookie(this.options.cookie,!0,this.options.cookieExpirationDays)}}]),i}(),$.fn.extend({animateCSS:function(e,t,i){var s=e;if("object"===_typeof(e)&&(s=e.animation),"function"!=typeof t&&(t=_.noop),t=_.bind(t,i||this),void 0!==e.css)if(null!=e.css.height&&"auto"===e.css.height.toLowerCase()){var n=this.outerHeight();e.css.height=this.css("height","auto").outerHeight(),this.height(n).animate(e.css,{complete:_.bind(function(){this.css("height","auto"),t()},this)})}else this.animate(e.css,e.duration?e.duration:400,t);else{var o=s.toLowerCase();if("slideup"===o||"slidedown"===o||"fadein"===o||"fadeout"===o)switch(this.hasClass("hidden")&&this.css({display:"none"}).removeClass("hidden"),this.hasClass("invisible")&&this.css({opacity:0}).removeClass("invisible"),o){case"slideup":this.slideUp(e.duration?e.duration:400,t);break;case"slidedown":this.slideDown(e.duration?e.duration:400,t);break;case"fadein":this.fadeTo(e.duration?e.duration:400,1,t);break;case"fadeout":this.fadeTo(e.duration?e.duration:400,0,t)}else{var a=function(e){var t={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"mozAnimationEnd",WebkitAnimation:"webkitAnimationEnd"};for(var i in t)if(void 0!==e.style[i])return t[i]}(document.createElement("div"));-1!==s.toLowerCase().indexOf("in")&&this.hasClass("hidden")?this.removeClass("hidden"):-1!==s.toLowerCase().indexOf("in")&&this.hasClass("invisible")&&(this.css("opacity",0),this.removeClass("invisible")),this.addClass("animated "+s).on(a,function(e){e.target===this&&($(this).off(a),-1!==s.toLowerCase().indexOf("out")&&$(this).addClass("hidden"),$(this).removeClass("animated "+s),t())})}}return this}}),PJQ.app={version:"undefined"!=typeof bbVersion?bbVersion:_.uniqueId(),module:"undefined"!=typeof bbModule?bbModule:null,options:{cdnUrl:"undefined"!=typeof cdnUrl?cdnUrl:null,apiUrl:"undefined"!=typeof bbApiUrl?bbApiUrl:"https://api.tm.panteratools.com",apiV2Url:"undefined"!=typeof bbApiV2Url?bbApiV2Url:"https://api-v2.panteratools.com",fileApiUrl:"undefined"!=typeof bbFileApiUrl?bbFileApiUrl:"https://api.panteratools.com",defaultPortalUrl:"undefined"!=typeof bbPanteraUrl?bbPanteraUrl:"https://app.panteratools.com",uploadUrl:"undefined"!=typeof bbUploadUrl?bbUploadUrl:null,isCombinedAssets:"undefined"!=typeof bbCombinedAssets?bbCombinedAssets:null,isK8:"undefined"!=typeof isK8?isK8:null,isV2Zips:!1},portal:null,groups:[],readyEvents:[],oldRoutes:[],routes:[{title:"Sign In",route:"signin",name:"signin",callback:function(){PJQ.app.session.isLoggedIn()?PJQ.app.router.navigate("",{trigger:!0}):new PJQ.views.auth.AppSignIn({el:PJQ.app.$el})}},{title:"Sign Up",route:"signup",name:"signup",callback:function(){if(PJQ.app.session.isLoggedIn()){var t=PJQ.app.router.navigate("",{trigger:!0}),e=PJQ.app.session.get("accessKey");0<_.size(e)?PJQ.helpers.projectHelpers.accessKeyNavigate(e,_.bind(function(e){null!=e&&t()},this)):t()}else new PJQ.views.auth.AppSignUp({el:PJQ.app.$el})}},{title:"Sign Up - Free Trial",route:"signup/trial/:subscription",name:"signuptrial",callback:function(e){var t,i=PJQ.helpers.urlHelpers.getQueryParam("affiliateId");t=0<_.size(e)?PJQ.constants.subscriptions.types[e.toUpperCase()]:null,PJQ.app.session.isLoggedIn()?(!PJQ.app.session.get("onAccount")&&t>PJQ.constants.subscriptions.types.FREE&&PJQ.app.session.subscription.id<=PJQ.constants.subscriptions.types.FREE&&PJQ.app.session.updateTrial(t,_.bind(function(e){null==e||null==e.subscription?PJQ.notifications.notify.errorNotify({message:"Encountered an error starting your free trial.  Please contact customer service."}):PJQ.notifications.notify.successNotify({message:"Free trial started"})},this),_.bind(function(){PJQ.notifications.notify.errorNotify({message:"Encountered an error starting your free trial.  Please contact customer service."})},this)),PJQ.app.router.navigate("",{trigger:!0})):new PJQ.views.auth.AppSignUp({el:PJQ.app.$el,subscriptionId:t,affiliateId:i})}},{title:"Documents",route:"documents",name:"documents",callback:function(){PJQ.app.initNavigator({activeItem:"documents"})}}],scrollTo:function(e,t){PJQ.app.$el.find(".nav-content").animate({scrollTop:t,scrollLeft:e},1)},signOutNavigate:function(){PJQ.app.options.isK8?window.location.href="/signout":window.location.href="/Signout.aspx"},renderPortalPage:function(e){var t;$(".skin-header").hide(),PJQ.app.$el.css("top",0),t=PJQ.app.options.isK8?"/static/"+e+".html":"/portals/"+PJQ.app.session.get("portalId").toString()+"/"+e+".html",$.ajax({url:t+"?"+PJQ.app.version,method:"GET",dataType:"html",success:_.bind(function(e){PJQ.templating.TemplateRenderer.renderTemplate(!1,$(e),PJQ.app.$el,null,function(e){0<_.size(PJQ.app.portal.menuItems)&&PJQ.templating.TemplateRenderer.renderTemplate(!1,new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Portal-Menu"),$(".portal-menu"),{menuItems:PJQ.app.portal.menuItems}
1),$(e).find("div.module").each(function(){var e=$(this).data("type").split("."),t=PJQ.views;_.each(e,function(e){t=t[e]}),"function"==typeof t&&new t({el:$(this),masterUserId:$(this).data("masterUserId")})})})},this)})},addOldRoutes:function(e){this.oldRoutes=_.union(e,this.oldRoutes)},addRoutes:function(e){"array"!==PJQ.helpers.objectHelpers.refinedType(e)&&(e=[e]),this.routes=_.union(e,this.routes)},configureSentry:function(){},configureTokenManager:function(){this.TokenManager=new PJQ.TokenManager({accessToken:window.accessToken,refreshToken:window.refreshToken,expiresOn:0<_.size(window.accessTokenExpiresOn)?new Date(window.accessTokenExpiresOn):null,enabled:!0})},beforeReady:function(){this.configureSentry(),this.configureTokenManager(),window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.userLogin&&"function"==typeof window.webkit.messageHandlers.userLogin.postMessage?window.webkit.messageHandlers.userLogin.postMessage({sessionId:bbSessionId}):window.Android&&"function"==typeof window.Android.userLogin&&window.Android.userLogin(bbSessionId);var e=$("head");if(e.append('<link href="https://fonts.cdnfonts.com/css/nevis" rel="stylesheet">'),e.append('<script src="https://export.dhtmlx.com/gantt/api.js"><\/script>'),PJQ.app.options.isK8?this.$el=$(".app-container"):this.$el=$("#pjq-main"),PJQ.helpers.domReadyHelper(),null!=PJQ.app.portal&&0<_.size(PJQ.app.portal.pages)){_.each(PJQ.app.portal.pages,_.bind(function(e){PJQ.app.routes.push({title:e.title,route:"p/"+e.route,name:"portal_"+e.name,callback:_.bind(function(){this.renderPortalPage(e.name)},this)})},this));var t=!1,i=window.location.hash.replace("#","");0===_.size(i)?t=null!=_.findWhere(PJQ.app.portal.pages,{isRoot:!0}):-1!==i.indexOf("p/")&&(t=null!=_.findWhere(PJQ.app.portal.pages,{route:i.replace("p/","")})),this.getSession(!t)}else this.getSession();window.captureOutboundLink=function(e,t){ga("send","event",0<_.size(e)?e:"outbound","click",t,{transport:"beacon",hitCallback:function(){}})},this.attachEvents()}
1,attachEvents:function(){var e=$("body");e.on("click",".watch-contact-edit",function(e){if(PJQ.app.session.hasPermission("contacts.canView")){var t,i=$(e.currentTarget),s=i.closest(".select-contact-container"),n=i.data("contactId");t=null!=PJQ.app.session.project?new PJQ.models.projectContacts.ProjectContact({id:n,projectId:PJQ.app.session.project.id}):new PJQ.models.contacts.Contact({id:n}),new PJQ.views.contacts.BaseEditContactModal({model:t,project:PJQ.app.session.project,onSave:function(){s.find(".company-name").text(t.get("companyName")),s.find(".contact-name").text(t.get("contactName"))}})}}),e.on("click",".clipboard-input",_.bind(function(e){var t=$(e.currentTarget),i=t.prev("input");0===i.length&&(i=t.next("input")),0<i.length&&(navigator.clipboard.writeText(i.val()),i[0].select(),PJQ.notifications.notify.successNotify({message:"Text copied to clipboard"}))},this)),e.on("click",".btn-change-sub",_.bind(function(e){new PJQ.views.subscriptions.EditSubscriptionModal({preventTrial:$(e.currentTarget).hasClass("no-trial"),onSave:_.bind(function(e){PJQ.app.session.get("onAccount")||PJQ.helpers.tours.initTour()},this)})},this)),e.on("click",".dropdown-menu a.dropdown-toggle",function(e){return $(this).next().hasClass("show")||$(this).parents(".dropdown-menu").first().find(".show").removeClass("show"),$(this).next(".dropdown-menu").toggleClass("show"),$(this).closest(".dropdown-menu.show").add($(this).closest(".btn-group.show")).on("hidden.bs.dropdown",function(e){$(this).find(".dropdown-submenu .dropdown-menu").removeClass("show")}),!1})},lazyLoad:function(){return null==this.LazyLoad&&"function"==typeof LazyLoad&&(this.LazyLoad=new LazyLoad),this.LazyLoad},getSession:function(){var e=!(0<arguments.length&&void 0!==arguments[0])||arguments[0],i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,t=PJQ.helpers.urlHelpers.getQueryParam("accessKey"),s=PJQ.helpers.urlHelpers.getQueryParam("cg"),n="undefined"!=typeof bbAccessKey?bbAccessKey:null;this.session=new PJQ.models.sessions.Session({sessionId:"undefined"!=typeof bbSessionId?bbSessionId:null,masterUserId:"undefined"!=typeof bbMasterUserId?bbMasterUserId:null,userId:"undefined"!=typeof bbUserId?bbUserId:null,portalId:"undefined"!=typeof bbPortalId?bbPortalId:null,contactGuid:0<_.size(s)?s:null,accessKey:0<_.size(t)?t:n}),e||0<this.session.get("userId")?this.session.fetch({cache:!1,success:_.bind(_.bind(function(){if(!PJQ.app.options.isK8&&-1!==this.session.get("masterUserId")||null==this.session.user||(this.session.set("masterUserId",this.session.user.get("masterUserId")),this.session.set("userId",this.session.user.get("userId"))),this.session.isLoggedIn()){if(0<_.size(PJQ.helpers.urlHelpers.getQueryParam("paysimple"))){var e=this.session.user.get("companyId");if(0<e)return new PJQ.views.paysimple.SignUpOpenedModal,void window.open("https://payments.paysimple.com/SignUp/Start?rid=459&externalId="+e.toString(),"_blank")}var t=PJQ.app.TokenManager.getAccessToken(),i=PJQ.app.TokenManager.getRefreshToken();if(this.session.get("ownsPortal")&&(0<_.size(t)||0<_.size(i)))return void this.session.fetchERPIntegration(_.bind(function(e){this.ready()},this))}this.ready()},this),this),error:_.bind(function(e,t){null!=t&&0===t.status?i<3&&(i++,this.getSession(!0,i)):this.ready()},this)}):this.ready()},initNavigator:function(t){null!=PJQ.app.session.project?PJQ.app.session.project.fetchProjectCustomFields(_.bind(function(e){PJQ.app.session.project.get("masterUserId")!==PJQ.app.session.get("masterUserId")&&(PJQ.app.session.project.customFields=new PJQ.collections.projects.ProjectCustomFields(_.filter(e.models,function(e){if(e.get("isVisibleInRSVP"))return e})),PJQ.app.session.project.customFields.isFetched=!0),null!=PJQ.app.navigator&&PJQ.app.navigator.remove(),$("a.nav-item").off(),PJQ.app.navigator=new PJQ.views.nav.AppNavigator(_.defaults(t||{},{el:PJQ.app.$el}))},this)):(null!=PJQ.app.navigator&&PJQ.app.navigator.remove(),PJQ.app.navigator=new PJQ.views.nav.AppNavigator(_.defaults(t||{},{el:PJQ.app.$el})))},attachReadyEvent:function(e){this.readyEvents.push(e)},ready:function(){null==PJQ.modules.pjqProjectWall||this.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_NEW_PROJECT_WALL)||(PJQ.app.module===PJQ.constants.modules.PROJECTWALLADMIN&&PJQ.app.addOldRoutes(PJQ.modules.pjqProjectWall.oldRoutes),PJQ.app.addRoutes(PJQ.modules.pjqProjectWall.routes)),this.router=new PJQ.routers.BaseRouter,Backbone.history.start()||this.router.empty()}},PJQ.views.AppView=function(){function t(e){_classCallCheck(this,t),this.$el=e}return _createClass(t,[{key:"renderView",value:function(e,t){this.removeActiveView();var i=$("<div>");return this.$el.append(i),(this.$el=i).addClass("p-3 ht-100"),this.view=new e(_.defaults(t||{},{el:this.$el})),this.view}},{key:"renderProfile",value:function(e,t){if(this.view&&this.view instanceof PJQ.views.profile.CompanyProfile&&this.view.model.id===e)this.view.activateTab(t);else{this.view instanceof PJQ.views.profile.CompanyProfile||this.removeActiveView();var i=this,s=new PJQ.models.profile.CompanyProfile({profileKey:e});s.fetch({success:function(){this.view&&this.view instanceof PJQ.views.profile.CompanyProfile&&this.view.model.id===s.id?this.view.activateTab(t):(i.removeActiveView(),i.renderView(PJQ.views.profile.CompanyProfile,{el:i.$el,model:s,activateTab:t}))}})}}},{key:"renderScreeningDashboard",value:function(){if(this.view&&this.view instanceof PJQ.views.screenings.ScreeningDashboard);else{this.removeActiveView();var e=this,t=new PJQ.collections.screenings.ScreeningClients(null,{contact:PJQ.app.session.contact,masterUserId:PJQ.app.session.preferences.hasPref("portalOwner")?PJQ.app.session.preferences.getPref("portalOwner"):PJQ.app.session.get("masterUserId")});t.fetch({success:function(){e.renderView(PJQ.views.screenings.ScreeningDashboard,{collection:t})},error:function(e,t){new PJQ.logging.Debug(PJQ.logging.LoggingActions.PJQPROFILE_GET_SCREENINGS,{model:e,result:t})}})}}},{key:"renderPhotoViewer",value:function(e){this.photoViewer=new PJQ.views.photos.PhotoViewer(_.extend(e,{onClose:_.bind(function(){this.photoViewer&&(this.photoViewer=null)},this)}))}},{key:"removeActiveView",value:function(){this.view&&(this.view.remove(),this.view=null)}}]),t}(),PJQ.models.auth={},PJQ.collections.auth={},PJQ.views.auth={},PJQ.views.auth.SignIn=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Sign-In")},events:{"keydown .input-username,.input-password":"loginChanged","click .btn-sign-in":"signInClicked","click .btn-forgot-password":"forgotPassword"},renderData:function(){return{username:this.username,options:this.options}},loginChanged:function(e){if(13===e.which)return e.preventDefault(),null!=PJQ.app.TokenManager&&PJQ.app.TokenManager.enabled?this.signInToken():this.signIn(),!1},signInClicked:function(){null!=PJQ.app.TokenManager&&PJQ.app.TokenManager.enabled?this.signInToken():this.signIn()},signInToken:function(){this.errorAlert&&this.errorAlert.destroy();var o=this.$(".btn-sign-in");if(o.prop("disabled",!0),0<this.$(".input-username").length&&!this.isUsernameSSO&&(this.username=this.$(".input-username").val()),this.options.isSSO&&!1!==this.isUsernameSSO)new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"saml"}],[{parameter:"username",value:this.username}])}).get().done(_.bind(function(e){e.enabled?window.location.href=e.signOnUrl:(this.isUsernameSSO=!1,this.render())},this)).fail(_.bind(function(){this.renderError(PJQ.Errors.auth.CUSTOMER_SERVICE)},this));else{var e=this.$(".input-password").val();if(0===_.size(this.username)||0===_.size(e))return;PJQ.app.TokenManager.getTokensForUser(this.username,e,_.bind(function(e,t){if(e){var i=PJQ.app.session.get("accessKey");if(0<_.size(i))PJQ.app.session.fetch({success:function(){PJQ.helpers.projectHelpers.accessKeyNavigate(i,_.bind(function(e){null!=e&&this.renderError(e)},this))}});else{var s="/";PJQ.app.module===PJQ.constants.modules.APP?(0<_.size(PJQ.app.router.signInCache)&&(s+=PJQ.app.router.signInCache,PJQ.app.router.signInCache=null,window.location.replace(s)),window.location.reload()):window.location=s}}else{var n;if(o.prop("disabled",!1),"EXPIRED"===t||"EXPIRED_PASSWORD"===t)new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"resetpassword",value:data.passwordResetGuid}])}).get().done(function(e){new PJQ.views.auth.ResetPasswordModal({request:e,isExpired:!0,isContinueToSignIn:!1})}).fail(_.bind(function(){this.renderError(PJQ.Errors.auth.CUSTOMER_SERVICE)},this));else n=0<_.size(t)&&("LOCKED"===t.toUpperCase()||"LOCKED_USER"===t.toUpperCase())&&0<t.lockoutMinutes?"Your account has been locked for "+t.lockoutMinutes.toString()+" minutes due to too many failed attempts":0<_.size(t)?PJQ.Errors.auth[t.toUpperCase()]:PJQ.Errors.auth.CUSTOMER_SERVICE,this.options.isSSO?(this.username=null,this.isUsernameSSO=null,this.initError=n,this.render()):this.renderError(n)}},this))}},signIn:function(){this.errorAlert&&this.errorAlert.destroy();var n=this.$(".btn-sign-in");if(n.prop("disabled",!0),0===_.size(this.username)&&(this.username=this.$(".input-username").val()),this.options.isSSO&&!1!==this.isUsernameSSO)new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"saml"}],[{parameter:"username",value:this.username}])}).get().done(_.bind(function(e){e.enabled?window.location.href=e.signOnUrl:(this.isUsernameSSO=!1,this.render())},this)).fail(_.bind(function(){this.renderError(PJQ.Errors.auth.CUSTOMER_SERVICE)},this));else{var e=this.$(".input-password").val();if(0===_.size(this.username)||0===_.size(e))return;new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"signin"}]),data:{username:this.username,password:e}}).post().done(_.bind(function(e){if(e.success){var t=this.$(".input-remember").prop("checked");
1PJQ.helpers.cookieHelpers.setCookie(".DOTNETNUKE",e.cookie,t?0:null),PJQ.helpers.cookieHelpers.setCookie("SessionId",e.sessionId);var i=_.bind(function(){var e=PJQ.app.session.get("accessKey");if(0<_.size(e))PJQ.app.session.fetch({success:function(){PJQ.helpers.projectHelpers.accessKeyNavigate(e,_.bind(function(e){null!=e&&this.renderError(e)},this))}});else{var t="/";PJQ.app.module===PJQ.constants.modules.APP?(0<_.size(PJQ.app.router.signInCache)&&(t+=PJQ.app.router.signInCache,PJQ.app.router.signInCache=null,window.location.replace(t)),window.location.reload()):window.location=t}},this);i()}else{var s;if(n.prop("disabled",!1),"EXPIRED"===e.error)new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"resetpassword",value:e.passwordResetGuid}])}).get().done(function(e){new PJQ.views.auth.ResetPasswordModal({request:e,isExpired:!0,isContinueToSignIn:!1})}).fail(_.bind(function(){this.renderError(PJQ.Errors.auth.CUSTOMER_SERVICE)},this));else s="LOCKED"===e.error?-1===e.lockoutMinutes?"Your account has been locked due to too many failed attempts":0<e.lockoutMinutes?"Your account has been locked for "+e.lockoutMinutes.toString()+" minutes due to too many failed attempts":PJQ.Errors.auth[e.error]:PJQ.Errors.auth[e.error],this.options.isSSO?(this.username=null,this.isUsernameSSO=null,this.initError=s,this.render()):(this.username=null,this.renderError(s))}},this)).fail(_.bind(function(e,t,i){this.username=null,this.renderError(PJQ.Errors.auth.UNHANDLED),new PJQ.logging.Debug(PJQ.logging.LoggingActions.AUTH_SIGN_IN,{error:t,result:i})},this))}},forgotPassword:function(){new PJQ.views.auth.RequestResetPasswordModal},renderError:function(e){this.$(".btn-sign-in").prop("disabled",!1),this.errorAlert=new PJQ.Alert(this.$(".error-container"),{type:"danger",text:e})}}),PJQ.views.auth.AccessKeySignIn=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Sign-In-Access-Key")},events:{"keydown .input-access-key":"accessKeyChanged","paste .input-access-key":"accessKeyPasted","click .btn-access-key-sign-in":"signIn"},accessKeyPasted:function(i){var s=this;if("undefined"!=typeof navigator&&i.originalEvent.clipboardData&&i.originalEvent.clipboardData.getData)navigator.permissions.query({name:"clipboard-read"}).then(function(e){if("granted"===e.state){i.preventDefault();var t=i.originalEvent.clipboardData.getData("text/plain");setTimeout(_.bind(function(){this.$(".input-access-key").val(t.replace(/\s|\t/g,""))},s),100)}else setTimeout(_.bind(function(){this.$(".input-access-key").val(this.$(".input-access-key").val().replace(/\s|\t/g,""))},s),100)});else if(window.clipboardData&&window.clipboardData.getData){i.preventDefault();var e=window.clipboardData.getData("Text");setTimeout(_.bind(function(){this.$(".input-access-key").val(e.replace(/\s|\t/g,""))},this),100)}},accessKeyChanged:function(e){if(13===e.which)return null!=PJQ.app.TokenManager&&PJQ.app.TokenManager.enabled?this.signInToken():this.signIn(),e.preventDefault(),!1},signIn:function(){this.errorAlert&&this.errorAlert.destroy();var e=this.$(".input-access-key").val();10===_.size(e)?(this.$(".btn-sign-in").prop("disabled",!0),PJQ.app.module===PJQ.constants.modules.APP?PJQ.helpers.projectHelpers.accessKeyNavigate(e,_.bind(function(e){null!=e&&this.renderError(e),this.$(".btn-sign-in").prop("disabled",!1)},this)):new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"v1"},{endpoint:"accessKeys",value:e}])}).get().done(_.bind(function(e){-1!==e.indexOf("Default.aspx")?window.location=e:-1!==e.indexOf("/")?window.location=e.substring(1):this.renderError(PJQ.Errors.auth.NOT_FOUND)},this)).fail(_.bind(function(e,t,i){this.renderError(PJQ.Errors.auth.UNHANDLED),this.$(".btn-sign-in").prop("disabled",!1),new PJQ.logging.Debug(PJQ.logging.LoggingActions.AUTH_SIGN_IN,{error:t,result:i})},this))):this.renderError(PJQ.Errors.auth.KEY_LENGTH)},renderError:function(e){this.$(".btn-sign-in").prop("disabled",!1),this.errorAlert=new PJQ.Alert(this.$(".error-container-access-key"),{type:"danger",text:e})}}),PJQ.views.auth.AuthModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-auth"),isVerticalCenter:!0},events:{},afterRender:function(){new PJQ.views.auth.Auth(_.defaults(_.omit(this.options,"template"),{el:this.$(".modal-body"),model:this.model}))}}),PJQ.views.auth.Auth=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"auth"),defaultSignUpUsername:"",routeToRoot:!1},modes:{SIGN_IN:"SIGN_IN",SIGN_UP:"SIGN_UP",RESET_PASSWORD:"RESET_PASSWORD",RESET_PASSWORD_SUCCESS:"RESET_PASSWORD_SUCCESS"},events:{"click .auth-nav-sign-in":"renderSignIn","keyup .auth-sign-in-username":"signInUsernameChanged","keyup .auth-sign-in-password":"signInPasswordChanged","click .auth-sign-in":"signIn","click .auth-nav-sign-up":"renderSignUp","keyup .input-sign-up-username":"signUpUsernameChanged","keyup .input-sign-up-password":"signUpPasswordChanged","click .btn-sign-up":"signUp","click .auth-nav-reset-password":"renderResetPassword","keyup .auth-reset-password-username":"resetUsernameChanged","click .auth-reset-password":"resetPassword"},beforeFirstRender:function(){var e=PJQ.helpers.urlHelpers.getQueryParam("err",!0);0<_.size(e)&&(this.initError=PJQ.Errors.auth[e.toUpperCase()]),this.model=new PJQ.models.users.User;var t=PJQ.app.session.contact;null!=t&&this.model.set({companyName:t.get("companyName"),contactName:t.get("contactName"),email:t.get("email")})},beforeRender:function(){null==this.options.mode&&(this.options.mode=this.modes.SIGN_IN)},renderData:function(){return{model:this.model,options:this.options,modes:this.modes}},afterRender:function(){null!=this.initError&&(this.renderSignInError(this.initError),this.initError=null),new PJQ.Binder(this.$(".auth-sign-up"),this.model,{watchElements:["input"]})},renderSignIn:function(){this.options.mode=this.modes.SIGN_IN,this.render()}
1,signInUsernameChanged:function(e){13===e.keyCode&&this.$(".auth-sign-in-password").focus()},signInPasswordChanged:function(e){13===e.keyCode&&(null!=PJQ.app.TokenManager&&PJQ.app.TokenManager.enabled?this.signInToken():this.signIn())},renderSignInError:function(e){this.signInAlert=new PJQ.Alert(this.$(".sign-in-error-container"),{type:"danger",text:e}),this.$(".auth-sign-in").prop("disabled",!1).text("Sign In")},signIn:function(){var e=this.$(".auth-sign-in-username").val(),t=this.$(".auth-sign-in-password").val();0!==_.size(e)&&0!==_.size(t)&&(this.$(".auth-sign-in").prop("disabled",!0).text("Signing In..."),this.signInAlert&&this.signInAlert.destroy(),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"signin"}]),data:{username:e,password:t}}).post().done(_.bind(function(e){e.success?(PJQ.helpers.cookieHelpers.setCookie(".DOTNETNUKE",e.cookie),PJQ.helpers.cookieHelpers.setCookie("SessionId",e.sessionId),this.options.routeToRoot?window.location.href="/":location.reload()):this.renderSignInError(PJQ.Errors.auth[e.error])},this)).fail(_.bind(function(e,t,i){this.renderSignInError(PJQ.Errors.auth.UNHANDLED),new PJQ.logging.Debug(PJQ.logging.LoggingActions.AUTH_SIGN_IN,{error:t,result:i})},this)))},renderSignUp:function(){this.options.mode=this.modes.SIGN_UP,this.render()},signUpUsernameChanged:function(e){this.validateSignUpInfo(),13===e.keyCode&&this.$(".input-sign-up-password").focus()},signUpPasswordChanged:function(e){this.validateSignUpInfo(),13===e.keyCode&&this.signUp()},validateSignUpInfo:function(){var e=_.size(this.$(".input-sign-up-username").val()),t=_.size(this.$(".input-sign-up-password").val());this.$(".btn-sign-up").prop("disabled",0===e||0===t)},signUp:function(){var e=this.$(".input-sign-up-username").val(),t=this.$(".input-sign-up-password").val();0!==_.size(e)&&0!==_.size(t)&&(this.$(".btn-sign-up").prop("disabled",!0).text("Signing Up..."),this.signUpAlert&&this.signUpAlert.destroy(),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"signup"}]),data:{companyName:this.model.get("companyName"),contactName:this.model.get("contactName"),email:this.model.get("email"),username:e,password:t}}).post().done(_.bind(function(e){e.success?(PJQ.helpers.cookieHelpers.setCookie(".DOTNETNUKE",e.cookie),PJQ.helpers.cookieHelpers.setCookie("SessionId",e.sessionId),this.options.routeToRoot?window.location.href="/":location.reload()):this.renderSignUpError(PJQ.Errors.auth[e.error])},this)).fail(_.bind(function(e,t,i){this.renderSignUpError(PJQ.Errors.auth.CUSTOMER_SERVICE),new PJQ.logging.Debug(PJQ.logging.LoggingActions.AUTH_SIGN_UP,{error:t,result:i})},this)))},renderSignUpError:function(e){this.signUpAlert=new PJQ.Alert(this.$(".sign-up-error-container"),{type:"danger",text:e}),this.$(".btn-sign-up").prop("disabled",!1).text("Sign Up")},renderResetPassword:function(){this.options.mode=this.modes.RESET_PASSWORD,this.render()},resetUsernameChanged:function(e){this.validateResetPasswordInfo(),13===e.keyCode&&this.resetPassword()},validateResetPasswordInfo:function(){var e=_.size(this.$(".auth-reset-password-username").val());this.$(".auth-reset-password").prop("disabled",0===e)},resetPassword:function(){var e=this.$(".auth-reset-password-username").val();0!==_.size(e)&&(this.$(".auth-reset-password").prop("disabled",!0).text("Trying..."),this.resetPasswordAlert&&this.resetPasswordAlert.destroy(),PJQ.helpers.users.sendPasswordReset(e,_.bind(function(e){e.success?this.renderResetPasswordSuccess():this.renderResetPasswordError(e.error)},this)))},renderResetPasswordSuccess:function(){this.options.mode=this.modes.RESET_PASSWORD_SUCCESS,this.render()},renderResetPasswordError:function(e){this.resetPasswordAlert=new PJQ.Alert(this.$(".reset-password-error-container"),{type:"danger",text:e}),this.$(".auth-reset-password").prop("disabled",!1).text("Reset Password")}}),PJQ.views.auth.ResetPasswordModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Reset-Password"),isVerticalCenter:!0,isExpired:!1,isContinueToSignIn:!0},events:{"click .auth-nav-sign-in":"navSignIn"}
1,beforeRender:function(){this.options.isShowCloseButton=this.options.isExpired,this.renderData={options:this.options,error:this.options.error?PJQ.Errors.auth[this.options.error]?PJQ.Errors.auth[this.options.error]:PJQ.Errors.auth.CUSTOMER_SERVICE:null}},afterRender:function(){null!=this.options.request&&new PJQ.views.auth.ResetPassword({el:this.$(".reset-password-view"),request:this.options.request,onReset:_.bind(function(){this.options.request=null,this.options.success=!0,this.render()},this)})},navSignIn:function(){this.removeModal(),PJQ.app.router.signInNavigate()}}),PJQ.views.auth.ResetPassword=PJQ.views.BaseView.extend({baseOptions:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Reset-Password"),subTemplates:{passwordRequirements:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Password-Requirements")},isRequirementsGrid:!0},events:{"keyup .input-reset-password":"passwordChanged","click .btn-reset-password":"resetPassword"},beforeRender:function(){this.renderData={options:this.options,passwordRequirements:this.options.request?this.options.request.passwordRequirements:null,error:this.options.error?PJQ.Errors.auth[this.options.error]?PJQ.Errors.auth[this.options.error]:PJQ.Errors.auth.CUSTOMER_SERVICE:null}},afterRender:function(){this.renderPasswordRequirements(),this.$(".input-reset-password")[0].focus(),null!=this.options.request&&this.checkPasswordRequirements()},renderPasswordRequirements:function(){this.renderSubTemplate(!1,this.options.subTemplates.passwordRequirements,this.$(".password-requirements"),{isGrid:this.options.isRequirementsGrid,passwordRequirements:this.options.request?this.options.request.passwordRequirements:null})},checkPasswordRequirements:function(){var e=this.options.request.passwordRequirements,t=this.$(".input-reset-password").val(),i=!0,s=this.$(".password-req-length-max");if(38<_.size(t)?(i=!1,s.addClass("op-6")):s.removeClass("op-6"),!e.allowRepeatChars){var n=this.$(".password-req-no-repeat"),o=t.split("");0===_.size(o)||o.some(function(e,t,i){return i.lastIndexOf(e)!==t})?(i=!1,n.addClass("op-6")):n.removeClass("op-6")}if(0<e.minLength){var a=this.$(".password-req-length");_.size(t)<e.minLength?(i=!1,a.addClass("op-6")):a.removeClass("op-6")}if(0<e.lowercaseCount){var r=this.$(".password-req-lowercase");_.size(PJQ.helpers.stringHelpers.getLowercaseChars(t))<e.lowercaseCount?(i=!1,r.addClass("op-6")):r.removeClass("op-6")}if(0<e.uppercaseCount){var l=this.$(".password-req-uppercase");_.size(PJQ.helpers.stringHelpers.getUppercaseChars(t))<e.uppercaseCount?(i=!1,l.addClass("op-6")):l.removeClass("op-6")}if(0<e.numericCount){var c=this.$(".password-req-numeric");_.size(PJQ.helpers.stringHelpers.getNumericChars(t))<e.numericCount?(i=!1,c.addClass("op-6")):c.removeClass("op-6")}if(0<e.specialCharCount){var d=this.$(".password-req-special-char");_.size(PJQ.helpers.stringHelpers.getSpecialChars(t))<e.specialCharCount?(i=!1,d.addClass("op-6")):d.removeClass("op-6")}this.isValid=i},passwordChanged:function(e){this.checkPasswordRequirements(),this.$(".btn-reset-password").prop("disabled",!this.isValid),13===e.keyCode&&this.isValid&&this.resetPassword()},resetPassword:function(){null!=this.errorAlert&&this.errorAlert.destroy(),this.isValid&&(this.$(".btn-reset-password").prop("disabled",!0).text("Trying..."),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"resetpassword",value:this.options.request.guid}]),data:{password:this.$(".input-reset-password").val()}}).post().success(_.bind(function(e){e.success?(this.options.success=!0,this.options.request=null,this.onReset()):(this.$(".btn-reset-password").prop("disabled",!1).text("Change Password"),"ALREADY_USED"===e.error?this.renderError("You cannot use your last "+this.options.request.passwordRequirements.historyPreventCount.toString()+" passwords."):this.renderError(PJQ.Errors.auth[e.error]))},this)).fail(_.bind(function(){this.options.success=!1,this.render()},this)))},onReset:function(){"function"==typeof this.options.onReset?this.options.onReset():this.render()},renderError:function(e){this.errorAlert=new PJQ.Alert(this.$(".error-container"),{type:"danger",text:e})}}),PJQ.views.auth.RequestResetPasswordModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Request-Reset-Password"),isVerticalCenter:!0,isShowCloseButton:!0},events:{"keyup .input-reset-password-username":"usernameChanged","click .btn-reset-password":"resetPassword"},beforeRender:function(){this.renderData={success:this.success}},afterRender:function(){var e=this.$(".input-reset-password-username");0<_.size(e)&&e[0].focus()},usernameChanged:function(e){this.$(".btn-reset-password").prop("disabled",0===_.size(this.$(".input-reset-password-username").val())),13===e.keyCode&&this.resetPassword()},resetPassword:function(){var e=this.$(".input-reset-password-username").val();0!==_.size(e)&&(this.$(".btn-reset-password").prop("disabled",!0).text("Trying..."),this.resetPasswordAlert&&this.resetPasswordAlert.destroy(),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"requestpasswordreset"}],[{parameter:"masterUserId",value:PJQ.app.session.preferences.hasPref("portalOwner")?PJQ.app.session.preferences.getPref("portalOwner"):PJQ.app.session.get("masterUserId")},{parameter:"username",value:e}])}).post().done(_.bind(function(e){e.success?(this.success=!0,this.render()):this.renderError(PJQ.Errors.auth[e.error])},this)).fail(_.bind(function(e,t,i){this.renderError(PJQ.Errors.auth.CUSTOMER_SERVICE),new PJQ.logging.Debug(PJQ.logging.LoggingActions.AUTH_RESET_PASSWORD,{error:t,result:i})},this)))},renderError:function(e){this.resetPasswordAlert=new PJQ.Alert(this.$(".reset-password-error-container"),{type:"danger",text:e}),this.$(".btn-reset-password").prop("disabled",!1).text("Reset Password")}}),PJQ.views.auth.AppSignIn=PJQ.views.auth.SignIn.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"App-Sign-In")},events:{"keydown .input-username,.input-password":"loginChanged","click .btn-sign-in":"signInClicked","click .btn-sign-up-nav":"signUpNavigate","click .btn-forgot-password":"forgotPassword"},beforeFirstRender:function(){var e=PJQ.helpers.urlHelpers.getQueryParam("err",!0);0<_.size(e)&&(this.initError=PJQ.Errors.auth[e.toUpperCase()]),PJQ.helpers.setVie
1wport("width=device-width, initial-scale=1, minimum-scale=1"),this.options.isSSO=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_SSO_ENABLED)},afterRender:function(){null!=this.initError&&(this.renderError(this.initError),this.initError=null),this.options.isSSO&&0<_.size(this.username)?this.$(".input-password")[0].focus():this.$(".input-username")[0].focus(),this.accessKeySignIn=new PJQ.views.auth.AccessKeySignIn({el:this.$(".access-key-sign-in"),template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"App-Sign-In-Access-Key")}),PJQ.app.session.isPanteraPortal()&&this.initFeatureAds()},signUpNavigate:function(){PJQ.app.session.isPanteraPortal()?window.location.href="https://app.panteratools.com/Default.aspx?tabid=10205":PJQ.app.router.navigate("signup",{trigger:!0})},initFeatureAds:function(){var e=PJQ.helpers.auth.features();if(0<_.size(e)){var t=e[Math.floor(Math.random()*_.size(e))];this.renderSubTemplate(!1,t,this.$(".app-sign-in-features"),{},_.bind(function(){"app-sign-in-carousel"===t.file&&this.$(".carousel").carousel({interval:4300,ride:"carousel"})},this))}}}),PJQ.views.auth.AppSignUp=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"App-Sign-Up"),subscriptionId:null,affiliateId:null},events:{"click .btn-sign-up":"signUp","click .btn-sign-in-nav":"signInNavigate","keydown .input-password-signup":"checkReady","keydown .input-username-signup":"checkReady"},beforeFirstRender:function(){PJQ.helpers.setViewport("width=device-width, initial-scale=1, minimum-scale=1"),this.model=new PJQ.models.users.User;var e=PJQ.app.session.contact;null!=e&&this.model.set({companyName:e.get("companyName"),contactName:e.get("contactName"),zip:e.get("zip"),email:e.get("email"),phone:e.get("phone")}),0<_.size(PJQ.helpers.urlHelpers.getQueryParam("bb"))&&this.model.set("isBlueBook",!0);var t=PJQ.app.session.preferences.getPref("portalOwner");return PJQ.app.session.fetchUserGroups(t||39,_.bind(function(e){this.groups=e,this.render()},this)),!1},renderData:function(){return{model:this.model,groups:this.groups,subscriptionId:1<this.options.subscriptionId?this.options.subscriptionId:null}},afterRender:function(){null==this.options.affiliateId&&(this.options.affiliateId=PJQ.helpers.urlHelpers.getQueryParam("affiliateId")),new PJQ.Binder(this.$el,this.model,{watchElements:["input"],afterChange:_.bind(function(e,t,i){},this)}),PJQ.helpers.inputHelpers.inputMaskPhone(this.$(".input-phone")),4===PJQ.app.session.get("portalId")&&new PJQ.inputs.Selectpicker({el:this.$(".select-company-type"),noneSelectedText:"Select Type",mobile:null!=PJQ.helpers.mobile.getDevice(),onChange:_.bind(function(e){this.model.set("companyType",e),"SUB"===e?this.$(".groups-outer").removeClass("hidden"):this.$(".groups-outer").addClass("hidden")},this)}),new PJQ.inputs.Selectpicker({el:this.$(".select-groups"),noneSelectedText:"Select Trades",liveSearch:!0,isIntChoices:!0,isMultiple:!0,header:'<div class="text-align-right"><button type="button" class="btn close position-relative text-dark op-10 fs-17 pt-2 mt-1 mb-1 mr-1">Done</button></div>',mobile:null!=PJQ.helpers.mobile.getDevice(),onChange:_.bind(function(e){this.model.set("groups",e)},this),defaultValue:_.map(this.model.get("groups"),function(e){return e.groupId})}),this.statePicker=new PJQ.inputs.Selectpicker({el:this.$(".input-country"),noneSelectedText:"Select Value",defaultValue:"us",onChange:_.bind(function(e){this.model.set("country",e.toUpperCase()),this.model.set("zip",""),this.countryChanged()},this)}),this.countryChanged(),PJQ.app.session.isPanteraPortal()&&this.initFeatureAds()},initFeatureAds:function(){var e=PJQ.helpers.auth.features();if(0<_.size(e)){var t=e[Math.floor(Math.random()*_.size(e))];this.renderSubTemplate(!1,t,this.$(".app-sign-in-features"),{})}},validateField:function(){var e=!0,t=0!==_.size(this.model.get("companyName")),i=0!==_.size(this.model.get("contactName")),s=0!==_.size(this.model.get("username")),n=0!==_.size(this.model.get("password")),o=5<=_.size(this.model.get("zip")),a=10<=_.size(this.model.get("phone")),r=0!==_.size(this.model.get("email")),l=0!==_.size(this.model.get("companyType")),c=0!==_.size(this.model.get("groups"));return PJQ.helpers.inputHelpers.setInputError(this.$(".input-company-name"),t),PJQ.helpers.inputHelpers.setInputError(this.$(".input-contact-name"),i),PJQ.helpers.inputHelpers.setInputError(this.$(".input-phone"),a),PJQ.helpers.inputHelpers.setInputError(this.$(".input-email"),r),PJQ.helpers.inputHelpers.setInputError(this.$(".input-zip"),o),PJQ.helpers.inputHelpers.setInputError(this.$(".input-username-signup"),s),PJQ.helpers.inputHelpers.setInputError(this.$(".input-password-signup"),n),t&&i&&s&&n&&a&&r&&o||(this.renderError("Required fields missing data or incorrectly formatted."),e=!1),4===PJQ.app.session.get("portalId")&&(l||(this.renderError("Required fields missing data"),e=!1),PJQ.helpers.inputHelpers.setInputError(this.$(".select-company-type"),l),"SUB"===this.model.get("companyType")&&(c||(this.renderError("Required fields missing data"),e=!1),PJQ.helpers.inputHelpers.setInputError(this.$(".select-groups"),c))),e},countryChanged:function(){this.model.get("country")||this.model.set("country","US");var e=0<_.size(this.statePicker.getValue())?this.statePicker.getValue().toLowerCase():"us";PJQ.helpers.inputHelpers.inputMaskZip(this.$(".input-zip"),e)},signInNavigate:function(){PJQ.app.router.signInNavigate()},checkReady:function(e){13===e.keyCode&&this.signUp()},renderError:function(e){this.$(".btn-sign-up").prop("disabled",!1),this.errorAlert=new PJQ.Alert(this.$(".error-container"),{type:"danger",text:e})},signUp:function(){if(this.errorAlert&&this.errorAlert.destroy(),this.validateField()){this.$(".btn-sign-up").prop("disabled",!0);var e=[];null!=this.options.subscriptionId&&e.push({parameter:"subscriptionId",value:this.options.subscriptionId}),null!=this.options.affiliateId&&e.push({parameter:"affiliateId",value:this.options.affiliateId}),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"signup"}],e),data:this.model}).post().done(_.bind(function(e){if(e.success)if(PJQ.app.session.set("sessionId",e.
1sessionId),PJQ.helpers.cookieHelpers.setCookie(".DOTNETNUKE",e.cookie),PJQ.helpers.cookieHelpers.setCookie("SessionId",e.sessionId),PJQ.app.module===PJQ.constants.modules.APP){var t=PJQ.app.session.get("accessKey");0<_.size(t)?PJQ.app.session.fetch({success:function(){PJQ.helpers.projectHelpers.accessKeyNavigate(t,_.bind(function(e){null!=e&&this.renderError(e)},this))}}):0<_.size(this.options.affiliateId)?window.location="/#settings/billing":window.location.reload()}else window.location="/";else this.renderError(PJQ.Errors.auth[e.error])},this)).fail(_.bind(function(e,t,i){this.renderError(PJQ.Errors.auth.UNHANDLED),new PJQ.logging.Debug(PJQ.logging.LoggingActions.AUTH_SIGN_UP,{error:t,result:i})},this))}}}),PJQ.views.auth.AppResetPassword=PJQ.views.auth.ResetPassword.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"App-Reset-Password"),isRequirementsGrid:!1}}),PJQ.helpers.auth={features:function(){return[new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"app-sign-in-carousel")]},validateSessionContact:function(){if(null!=PJQ.app.session.contact&&PJQ.app.session.contact.get("isDeleted"))return PJQ.app.$el.addClass("hidden"),new PJQ.views.modals.ErrorModal({header:"Inactive Link",body:"This link is no longer active.",errorCode:PJQ.constants.errorCodes.DELETED_CONTACT}),!0}},PJQ.models.bidPackages={},PJQ.models.bidPackages.Template=PJQ.models.BaseModel.extend({idAttribute:"templateId",notifyName:"Template",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"bidpackages"},{endpoint:"templates",value:this.id}],0<this.get("projectId")?[{parameter:"projectId",value:this.get("projectId")}]:null)},parse:function(e){return e&&(null!=e.bidPackages?this.bidPackages=new PJQ.collections.bidPackages.BidPackages(e.bidPackages):this.bidPackages=null),e}}),PJQ.models.bidPackages.BidPackage=PJQ.models.BaseModel.extend({idAttribute:"bidPackageId",notifyName:"Bid Package",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"bidpackages",value:this.get("bidPackageId")}])},parse:function(e){return e&&(this.groups=new PJQ.collections.groups.Groups(e.groups),this.attachments=new PJQ.collections.bidPackages.Attachments(e.attachments)),e},isNew:function(){return this.id<=0},addAttachments:function(e,t,i,s){this.attachments.reset(),null!=e&&_.each(_.uniq(e),function(e){this.attachments.add({entryId:e})},this),null!=t&&_.each(_.uniq(t),function(e){this.attachments.add({drawingId:e})},this),null!=i&&_.each(_.uniq(i),function(e){this.attachments.add({drawingTagName:e})},this),this.patch({attachments:this.attachments.toJSON()},{success:_.bind(function(){"function"==typeof s&&s(this.attachments)},this),error:_.bind(function(){"function"==typeof s&&s(null)},this)})},beforeSave:function(){this.set("groups",this.groups.toJSON()),this.set("attachments",this.attachments.toJSON())}}),PJQ.models.bidPackages.Attachment=PJQ.models.BaseModel.extend({}),PJQ.collections.bidPackages={},PJQ.collections.bidPackages.BidPackages=PJQ.collections.BaseCollection.extend({model:PJQ.models.bidPackages.BidPackage,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:0<this.options.projectId?this.options.projectId:null},{endpoint:"bidpackages"}])}}),PJQ.collections.bidPackages.Attachments=PJQ.collections.BaseCollection.extend({model:PJQ.models.bidPackages.Attachment}),PJQ.collections.bidPackages.Templates=PJQ.collections.BaseCollection.extend({model:PJQ.models.bidPackages.Template,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"bidpackages"},{endpoint:"templates"}])}}),PJQ.views.bidPackages={},PJQ.views.bidPackages.TemplateManagement=PJQ.views.templates.TemplateManagement.extend({beforeFirstRender:function(){this.collection=new PJQ.collections.bidPackages.Templates,this.listenTo(this.collection,"fetch",this.render),this.collection.fetch()},addTemplate:function(){new PJQ.views.templates.NewTemplateModal({model:new PJQ.models.bidPackages.Template,onSave:_.bind(function(e){this.collection.add(e),this.dataTable.refresh(),this.editTemplate(e)},this)})},editTemplate:function(e){new PJQ.views.bidPackages.EditTemplateModal({model:e,onClose:_.bind(function(){this.dataTable.refresh()},this),onDelete:_.bind(function(e){if(0<e.id){var t=this.dataTable.getRow(e.cid);this.collection.remove(e),e.destroy(),this.dataTable.removeRow(t)}},this)})}}),PJQ.views.bidPackages.EditTemplateModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Edit-Bid-Package-Template"),maxWidth:"60%",fitHeight:!0,onClose:null},events:{"change .cb-is-default":"defaultChanged","click .btn-close":"close","click .btn-delete":"deleteTemplate"},defaultChanged:function(){this.model.patch({isDefault:this.$(".cb-is-default").prop("checked")})},beforeModalCreated:function(){this.model||(this.model=new PJQ.models.bidPackages.Template({templateId:this.options.templateId})),this.listenTo(this.model,"fetch",this.render),this.model.fetch()},renderData:function(){return{model:this.model}},afterRender:function(){this.model.isFetched&&new PJQ.inputs.TextEditorInput({el:this.$(".edit-template-name"),label:"Name",value:this.model.get("name"),onSave:_.bind(function(e){this.model.patch({name:e})},this)}),new PJQ.views.bidPackages.BidPackagesView({el:this.$(".manage-template"),model:this.model,collection:this.model.bidPackages,templateId:this.model.get("templateId")})},close:function(){"function"==typeof this.options.onClose&&this.options.onClose(this.model)}
1,deleteTemplate:function(){new PJQ.views.modals.DeleteCancel({header:"Confirm Deletion",body:"Are you sure you want to delete this template?",onDelete:_.bind(function(){"function"==typeof this.options.onDelete&&this.options.onDelete(this.model),this.removeModal()},this)})}}),PJQ.views.bidPackages.ManageBidPackagesModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Manage-Bid-Packages"),maxWidth:"60%",fitHeight:!0,onClose:null},events:{"click .btn-close":"close"},renderData:function(){return{projectName:this.options.project?this.options.project.get("projectName"):""}},afterRender:function(){new PJQ.views.bidPackages.BidPackagesView({el:this.$(".manage-bid-packages"),projectId:this.options.project?this.options.project.get("projectId"):null,project:this.options.project?this.options.project:null})},close:function(){"function"==typeof this.options.onClose&&this.options.onClose({changed:!0})}}),PJQ.views.bidPackages.BidPackagesView=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Bid-Packages")},events:{"click .add-bid-package":"addBidPackageClicked","click .btn-import-template":"importTemplate","click .btn-save-a-template":"saveAsTemplate","click .btn-delete-bid-package":"deleteBidPackageClicked","click .btn-edit-bid-package":"editBidPackageClicked"},beforeFirstRender:function(){this.collection?(this.listenTo(this.collection,"fetch",this.render),this.render()):this.options.projectId?(this.collection=new PJQ.collections.bidPackages.BidPackages(null,{projectId:this.options.projectId}),this.collection.fetch({success:_.bind(function(){this.render(),this.listenTo(this.collection,"fetch",this.render)},this)})):this.collection=new PJQ.collections.bidPackages.BidPackages},afterRender:function(){this.dataTable=new PJQ.views.dataTables.DataTable({el:this.$(".bid-package-table"),data:_.sortBy(this.collection.models,function(e){return e.get("sortOrder")}),rowId:"cid",order:[0,"asc"],sortableOptions:{data:this.collection,containment:".bid-package-table"},bSort:!1,scrollRows:!0,paging:!1,onRowDoubleClick:_.bind(function(e){this.editBidPackage(e.data())},this),language:{zeroRecords:'Click "Add New Bid Package" to create a new Bid Package'},contextMenuOptions:{actions:[{name:"Edit",onClick:_.bind(function(e){this.editBidPackage(e.data())},this)},{name:"Delete",isDanger:!0,onClick:_.bind(function(e){this.deleteBidPackage(e)},this)}]},columns:[{data:"attributes.sortOrder",title:"",searchable:!1,orderable:!1,visible:!1,render:_.bind(function(e,t,i){var s="";return null!=e&&(s='<div><i class="fas fa-sort"></i></div>'),s},this)},{title:"Name",data:"attributes.name"},{title:"Groups",data:"attributes.groups",render:function(e,t,i){if(i.groups&&0<_.size(i.groups.models)){var s=[];return _.each(i.groups.models,function(e){s.push(e.get("groupName"))}),s.join(", ")}return""}},{data:"",title:"",orderable:!1,searchable:!1,render:_.bind(function(){return'<div class="text-align-right show-on-row-hover"><button type="button" class="btn btn-info btn-edit-bid-package wd-30p mr-1"><i class="fal fa-pencil"></i><button type="button" class="btn btn-danger btn-delete-bid-package wd-30p"><i class="fal fa-trash-alt"></i></button></button></div>'},this),width:"80px"}]})},addBidPackageClicked:function(){var e=new PJQ.models.bidPackages.BidPackage({bidPackageId:null,name:"",groups:null,projectId:this.options.projectId,templateId:this.options.templateId});this.editBidPackage(e)},importTemplate:function(){new PJQ.views.bidPackages.ImportTemplateModal({project:this.options.project,onImport:_.bind(function(e){this.collection=e,this.render()},this)})},saveAsTemplate:function(){new PJQ.views.bidPackages.BidPackageTemplateCreatorModal({collection:this.collection,project:this.options.project})},editBidPackage:function(e){new PJQ.views.bidPackages.EditBidPackageModal({model:e,onSave:_.bind(function(e,t){t&&(this.collection.add(e),this.dataTable.addRow(e)),this.dataTable.refresh()},this),onClose:_.bind(function(e){e.hasChanged()&&e.fetch({success:_.bind(function(){this.dataTable.refresh()},this)})},this),onDelete:_.bind(function(e){var t=this.dataTable.getRow(e.cid);this.deleteBidPackage(t)},this)})},editBidPackageClicked:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr")).data();this.editBidPackage(i)},deleteBidPackageClicked:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr"));this.deleteBidPackage(i)},deleteBidPackage:function(e){var t=e.data();
1new PJQ.views.modals.DeleteCancel({header:"Confirm Deletion",body:"Are you sure you want to delete this Bid Package?",onDelete:_.bind(function(){this.collection.remove(t),t.destroy(),this.dataTable.removeRow(e)},this)})}}),PJQ.views.bidPackages.EditBidPackageModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Edit-Bid-Package"),maxWidth:"50%",onClose:null},events:{"click .btn-close":"close","click .btn-delete":"deleteBidPackage","click .btn-save":"save"},renderData:function(){return{model:this.model}},afterRender:function(){new PJQ.Binder(this.$el,this.model,{watchElements:["input","textarea"]});var e=PJQ.app.session.get("masterUserId"),t=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS);null==this.model.groups&&(this.model.groups=new PJQ.collections.groups.Groups([],{groupLevels:t})),new PJQ.views.groups.GroupsSelectInput({el:this.$(".bid-package-groups"),isShowAddButton:!1,groupLevels:t,groupUserId:e,isReadOnly:!1,addButton:this.$(".btn-edit-groups"),selectedGroups:this.model.groups.models,onAfterSave:_.bind(function(e){this.model.groups.reset(e),this.model.isDirty=!0},this)})},close:function(){"function"==typeof this.options.onClose&&this.options.onClose(this.model),this.removeModal()},save:function(){if(this.model.hasChanged()||this.model.isNew()){var e=!1;this.model.isNew()&&(e=!0),this.model.save(null,{notify:!0,success:_.bind(function(){this.options.onSave&&this.options.onSave(this.model,e),this.removeModal()},this)})}else this.removeModal()},deleteBidPackage:function(){"function"==typeof this.options.onDelete&&this.options.onDelete(this.model),this.removeModal()}}),PJQ.views.bidPackages.ImportTemplateModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-import-bid-package-template"),maxWidth:500,onImport:null},events:{"click .btn-import":"save"},beforeModalCreated:function(){PJQ.app.session.fetchBidPackageTemplates(_.bind(function(e){this.templates=e,this.render()},this))},renderData:function(){return{templates:this.templates}},afterRender:function(){null!=this.templates&&this.templates.isFetched&&(this.templatePicker=new PJQ.inputs.Selectpicker({el:this.$(".select-template"),onChange:_.bind(function(e){this.selectedTemplate=this.templates.get(e)},this),isIntChoices:!0,noneSelectedText:"Select Template"}))},save:function(){var e=!0;null==this.selectedTemplate?(this.templatePicker.showError(),e=!1):this.templatePicker.hideError(),e&&new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"bidpackages"},{endpoint:"import",value:this.selectedTemplate.id}])}).get().done(_.bind(function(e){if("function"==typeof this.options.onImport){var t=new PJQ.collections.bidPackages.BidPackages(e);t.isFetched=!0,this.options.onImport(t)}this.removeModal(),PJQ.notifications.notify.successNotify({message:"Bid Package Template Imported"})},this))}}),PJQ.views.bidPackages.BidPackageTemplateCreatorModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-create-bid-package-template"),width:"30%"},events:{"click .btn-save":"save"},beforeModalCreated:function(){this.model=new PJQ.models.bidPackages.Template({projectId:this.options.project.id}),PJQ.app.session.fetchBidPackageTemplates(_.bind(function(e){this.templates=e,this.render()},this))},renderData:function(){return{templates:this.templates,bidPackages:this.collection}},afterRender:function(){null!=this.templates&&this.templates.isFetched&&(new PJQ.inputs.Selectpicker({el:this.$(".select-bid-package"),isMultiple:!0,noneSelectedText:"Select Bid Package",onChange:_.bind(function(e){},this)}),new PJQ.inputs.AutocompleteInput({el:this.$(".input-template-name"),source:_.map(this.templates.models,function(e){return e.get("name")})}))},save:function(){var e=this.$(".input-template-name"),t=e.val();if(0!==_.size(t.trim())){PJQ.helpers.inputHelpers.setInputError(e,!0);var i=this.templates.findWhere({name:t}),s=_.bind(function(){this.model.set({name:t}),this.model.save(null,{success:_.bind(function(){this.removeModal(),PJQ.notifications.notify.successNotify({message:"Bid Package Template Created"})},this)})},this);null!=i?new PJQ.views.modals.YesNo({header:"Overwrite Template",body:"A template already exists with this name.  Would you like to overwrite it?",onYes:_.b
1ind(function(){this.model.set("templateId",i.id),s()},this)}):s()}else PJQ.helpers.inputHelpers.setInputError(e)}}),PJQ.views.bidPackages.SelectBidPackagesModal=PJQ.views.BaseModal.extend({defaults:{isSingleChoice:!1,template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Bid-Packages-Select"),alertText:null,onSave:null},events:{"click .bid-packages-select-save":"onSave"},renderData:function(){return{options:this.options}},afterRender:function(){this.bidPackageSelector=new PJQ.views.bidPackages.BidPackageSelector({el:this.$(".bid-packages-selector"),isEnableSelectedFilter:!1,onBidPackageSelected:_.bind(this.checkBidPackagesSelected,this),project:this.options.project})},checkBidPackagesSelected:function(e){this.$(".bid-packages-select-save").prop("disabled",0===_.size(e.new)&&0===_.size(_.difference(_.map(e.original,function(e){return e.id}),_.map(e.selected,function(e){return e.id})))),this.onSave()},onSave:function(){"function"==typeof this.options.onSave&&this.options.onSave(this.bidPackageSelector.getData()),this.removeModal()}}),PJQ.views.bidPackages.BidPackageSelector=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Bid-Package-Selector-Container"),subTemplates:{selector:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Bid-Package-Selector")},bidPackages:null,includeBidPackageIds:null,selectedBidPackageIds:null,disabledBidPackageIds:null,selectedBidPackages:null,onBidPackagesLoaded:null,onBidPackageSelected:null,isAdmin:!1,isEnableSelectAll:!1,isDisableSelected:!1,isHideDisabled:!1,isExpandSelected:!0,canEdit:!0,onSelect:_.noop,isSingleChoice:!1,headerButtons:null,isIncludeGroups:!1,onSelected:_.noop},events:{"keyup .bid-package-search":"renderBidPackages","click .btn-header-action":"headerAction","click .bid-package-all-select":"selectAll","click .bid-package-expand":"expandParentClick","click .bid-package-select":"selectBidPackage","click .group-select":"selectGroup"},afterRender:function(){this.selectedGroupIds=[],this.selectedBidPackageIds=[],null==this.options.bidPackages?this.getBidPackages():this.afterSync()},getBidPackages:function(){null!=this.collection?this.collection.fetch({success:_.bind(function(){this.afterSync()},this)}):this.options.project?(this.collection=new PJQ.collections.bidPackages.BidPackages(null,{projectId:this.options.project.id}),this.collection.fetch({success:_.bind(function(){this.afterSync()},this)})):(this.collection=new PJQ.collections.bidPackages.BidPackages,this.afterSync())},afterSync:function(){this.options.isBidPackagesLoaded=!0,this.loadBidPackages()},loadBidPackages:function(){this.removed||(this.renderBidPackages(),"function"==typeof this.options.onBidPackagesLoaded&&this.options.onBidPackagesLoaded())},renderBidPackages:function(){var t=this.$(".bid-package-search").val().toLowerCase(),i=[];0<_.size(t)?_.each(this.collection.models,_.bind(function(e){-1<e.get("name").toLowerCase().indexOf(t)&&i.push(e)},this)):(this.$(".bid-package-clear-filters").prop("disabled",!0),i=this.collection.models);var e={models:i,options:this.options};this.renderSubTemplate(!1,this.options.subTemplates.selector,this.$(".bid-packages-container"),e,_.bind(function(){this.options.isHideDisabled&&this.$(".bid-package-select:disabled").closest(".bid-package-select-container").hide(),this.isRendered=!0},this))},showError:function(e){this.hideError(),this.errorAlert=new PJQ.Alert(this.$el,{type:"danger",extraClasses:["mt-1, mb-1"],text:e,isPrepend:!0})},hideError:function(){this.errorAlert&&this.errorAlert.destroy()},reload:function(e){this.getBidPackages()},getParentChildContainer:function(e){return e.closest(".pretty").siblings(".group-child-container")},expandParentClick:function(e){this.expandParent($(e.currentTarget).siblings(".group-child-container"))},expandParent:function(e){var t=e.siblings("i.bid-package-expand");e.hasClass("hidden")?(e.removeClass("hidden"),t.removeClass("fa-chevron-down text-primary"),t.addClass("fa-chevron-up text-muted")):(e.addClass("hidden"),t.removeClass("fa-chevron-up text-muted"),t.addClass("fa-chevron-down text-primary"))},getData:function(){var t=[],i=[];return _.each(this.collection.models,function(e){e.get("isSelected")&&i.push(e.get("bidPackageId")),_.each(e.groups.models,function(e){e.get("isSelected")&&t.push(e.get("groupId"))},this)},this),"function"==typeof this.options.onSelected&&this.options.onSelected(t,i),{groupIds:t,bidPackageIds:i}},selectBidPackage:function(e){var t=this.getParentChildContainer($(e.currentTarget)),i=$(e.currentTarget).is(":checked"),s=$(e.currentTarget).data("bid-package-id"),n=this.collection.get(s);t.find(".bid-package-select"),t.find(".group-select").prop("checked",i),n.set("isSelected",i),_.each(n.groups.models,function(e){e.set("isSelected",i)},this),i&&t.hasClass("hidden")&&this.expandParent(t),this.$(".bid-package-all-select").prop("checked",!(0<this.$(".group-select:not(:checked)").length)),this.getData()},selectAll:function(){var e=this.$(".group-select"),t=this.$(".bid-package-select");this.$(".bid-package-all-select").prop("checked")?(_.each(this.collection.models,function(e){e.set("isSelected",!0),_.each(e.groups.models,function(e){e.set("isSelected",!0)},this)},this),e.prop("checked",!0),t.prop("checked",!0)):(_.each(this.collection.models,function(e){e.set("isSelected",!1),_.each(e.groups.models,function(e){e.set("isSelected",!1)},this)},this),e.prop("checked",!1),t.prop("checked",!1)),this.getData()},selectGroup:function(e){var t=$(e.currentTarget),i=t.data("group-id"),s=t.data("bid-package"),n=this.collection.get(s),o=!0,a=_.find(n.groups.models,function(e){return e.get("groupId")===i}),r=$(e.currentTarget).is(":checked"),l=this.$(".bid-packages-container").find('[data-bid-package-id="'+s+'"]');a.set("isSelected",r),r&&!n.get("isSelected")&&(n.set("isSelected",!0),l.prop("checked",r)),r||(_.each(n.groups.models,function(e){e.get("isSelected")&&(o=!1)}),o&&(l.prop("checked",r),n.set("isSelected",!1))),this.$(".bid-package-all-select").prop("checked",!(0<this.$(".group-select:not(:checked)").length)),this.getData()}}),PJQ.views.bidPackages.BidPackageRadiusModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Bid-Package-Radius"),alertText:null,onSave:null,maxWidth:"400px",defaultRadius:50},events:{"click .add-participants":"addParticipants","keyup .add-participants-radius":"radiusChanged"},beforeModalCreated:function(){var e=(null!=this.options.project?this.options.project.preferences:PJQ.app.session.preferences).getPref(PJQ.constants.preferenceTypes.ADD_PARTICIPANTS_BID_PACKAGE_RADIUS);null!=e&&0<e&&(this.options.defaultRadius=e)},renderData:function(){return{options:this.options}},afterRender:function(){this.directoryFilterSelectPicker=new PJQ.inputs.Selectpicker({el:this.$(".directory-filter"),isIntChoices:!0,isMultiple:!0,mustSelectValue:!0,defaultValue:[1,2]}),this.radiusSlider=new PJQ.Slider(this.$(".add-participants-radius-slider"),{ticks:[1,50,100,150,200,250,300],ticks_labels:[1,50,100,150,200,250,300],value:this.options.defaultRadius,onChange:_.bind(function(e){this.setRadius(e.newValue)},this)})},radiusChanged:function(){this.setRadius(parseInt(this.$(".add-participants-radius").val()))},setRadius:function(e){isNaN(e)||e<1?e=1:300<e&&(e=300),this.radiusSlider.setValue(e),0<this.$(".add-participants-radius").val().length&&this.$(".add-participants-radius").val(e)},addParticipants:function(){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"participants",value:"bidPackages"}],[{parameter:"radius",value:this.radiusSlider.getValue()},{parameter:"directoryFilter",value:2===_.size(this.directoryFilterSelectPicker.getValue())?0:this.directoryFilterSelectPicker.getValue()[0]}])}).post().done(_.bind(function(e){"function"==typeof this.options.onSave&&this.options.onSave(e),0<_.size(e)?PJQ.notifications.notify.successNotify({message:"Participants successfully added"}):PJQ.notifications.notify.successNotify({message:"No participants were added"}),this.removeModal()},this)).fail(_.bind(function(){PJQ.notifications.notify.errorNotify({message:"Encountered an error adding participants.  Please contact customer service."})},this))}}),PJQ.models.billing={},PJQ.models.billing.BillingInfo=PJQ.models.BaseModel.extend({endpoint:"/billing",getCardholderName:function(){var e=this.get("firstName");return 0<_.size(this.get("lastName"))&&(e=" "+this.get("lastName")),e},save:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"billing"}]),data:this.toJSON()}).put().done(_.bind(function(e){null!=e&&null!=e.subscription||(this.set({cardNumber:null,cardExpirationMonth:null,cardExpirationYear:null}),"function"==typeof t.error&&t.error(e)),null!=e.billingInfo&&this.parse(e.billingInfo),PJQ.app.session.subscriptionChanged(e.subscription),"function"==typeof t.success&&t.success(e)},this)).fail(_.bind(function(e){this.set({cardNumber:null,cardExpirationMonth:null,cardExpirationYear:null}),"function"==typeof t.error&&t.error(e)},this))},parse:function(e){if(!e)return e;this.attributes=e}}),PJQ.Binder=function(){function n(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};_classCallCheck(this,n),this.options=_.defaults(i,{attribute:"data-p-bind",watchElements:["input","textarea"],setDefaultValues:!1,events:"keyup change dp.change",delegate:!1,onChange:null,afterChange:null,useDecimalPercentFields:!1,canEdit:null,dataTable:null,idAttribute:"cid",modelSelectorAttribute:"cid",modelSelector:"tr",validators:{}}),this.$outer=e;var s=PJQ.helpers.objectHelpers.refinedType(t,!0);"backboneCollection"===s?(this.isArray=!0,this.obj=t.models):"array"===s?(this.isArray=!0,this.obj=t):"backboneModel"!==s&&"object"!==s||(this.isBackboneObj="backboneModel"===s,this.obj=t),this.bindElements()}return _createClass(n,[{key:"remove",value:function(){var t=this;if(!0===this.options.delegate)this.$outer.off(this.options.events);else{var i=this;_.each(this.options.watchElements,function(e){t.$outer.find(e+"["+t.options.attribute+"]").each(function(){$(this).off(i.options.events)})})}}},{key:"bindElements",value:function(){var t=this;if(this.requiredAttributes=[],this.renderInputs(),!0===this.options.delegate)this.$outer.on(this.options.events,this.options.watchElements.join(", "),function(e){t.handleChange($(e.target))});else{var i=this;_.each(this.options.watchElements,function(e){t.$outer.find(e+"["+t.options.attribute+"]").each(function(){null!=i.options.canEdit&&$(this).prop("disabled",!i.options.canEdit),i.bindElement($(this)),i.options.setDefaultValues&&null!=i.obj&&!i.isArray&&i.setElementValue($(this))})})}}},{key:"bindElement",value:function(i){var s=this.getElementAttribute(i);if(null!=s&&0<s.length){i.prop("required")&&!_.contains(this.requiredAttributes,s)&&this.requiredAttributes.push(s);var n=this;switch(this.getElementType(i)){case"text":i.on(this.options.events,function(){n.onChange(i,s,i.val())});break;case"decimal":i.on(this.options.events,function(){var e=parseFloat(i.val());e="number"==typeof e?100*e:0,n.onChange(i,s,e)});break;case"number":i.on(this.options.events,function(){n.onChange(i,s,PJQ.helpers.inputHelpers.getNumberInputValue(i))});break;case"percent":i.on(this.options.events,function(){n.onChange(i,s,PJQ.helpers.inputHelpers.getPercentInputValue(i,!0===n.options.useDecimalPercentFields))});break;case"phone":i.on(this.options.events,function(){n.onChange(i,s,PJQ.helpers.inputHelpers.getPhoneInputValue(i))});break;case"money":i.on(this.options.events,function(){n.onChange(i,s,PJQ.helpers.inputHelpers.getMoneyInputValue(i.parent()))});break;case"date":break;case"select":i.on(this.options.events,function(){var e=i.data("selectpickerview"),t=null!=e?e.getValue():i.val();n.onChange(i,s,t)});break;case"bool":i.on(this.options.events,function(){var e=!0===i.data("pBindOpposite"),t=i.prop("checked");n.onChange(i,s,e?!t:t)})}}}},{key:"renderInputs",value:function(){var n=this;this.inputs={selectPickers:{},datePickers:{},buttonGroups:{},groupPickers:{},locationPickers:{},contactSelectors:{},fileUploaders:{},all:{}},this.attributeListeners={},null!=this.options.inputs&&_.each(this.options.inputs,function(t,i){"function"!=typeof t.onChange&&"function"!=typeof t.afterChange||(n.attributeListeners[i]={onChange:t.onChange,afterChange:t.afterChange});var e=n.getAttributeElement(i);if(0===e.length)return!1;var s=function(e){null!=t.selectPicker?n.renderSelectPicker(e,i,t.selectPicker):null!=t.datePicker?n.renderDatePicker(e,i,t.datePicker):null!=t.groupPicker?n.renderGroupPicker(e,i,t.groupPicker):null!=t.locationPicker?n.renderLocationPicker(e,i,t.locationPicker):null!=t.contactSelector?n.renderContactSelector(e,i,t.contactSelector):null!=t.fileUploader?n.renderFileUploader(e,i,t.fileUploader):null!=t.buttonGroup&&n.renderButtonGroup(e,i,t.buttonGroup)};1<e.length?e.each(function(){s($(this))}):(s(e),!t.required&&!e.prop("required")||_.contains(n.requiredAttributes,i)||n.requiredAttributes.push(i))})}},{key:"getInputObj",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,i=e;return null!=t&&(i=e+"_"+t),this.inputs.all[i]}},{key:"getInput",value:function(e){var t,i,s=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;
1return null!==(t=null===(i=this.getInputObj(e,s))||void 0===i?void 0:i.input)&&void 0!==t?t:null}},{key:"renderGroupPicker",value:function(t,i,e){var s,n,o=this,a=this.obj;if(this.isArray&&(a=this.getArrayObjectForElement(t)),null!=a){var r=null;r="function"==typeof a.get?a.get(i):a[i];var l=null==e?void 0:e.onChange;this.inputs.all[i]=this.inputs.groupPickers[i]={input:new PJQ.inputs.GroupPicker(_.defaults({el:t,project:this.options.project,canEdit:null!=e.canEdit?e.canEdit:null===(s=this.options.canEdit)||void 0===s||s,defaultValue:null!==(n=e.defaultValue)&&void 0!==n?n:r,onChange:function(e){o.onChange(t,i,e),"function"==typeof l&&l(e)}},e))}}}},{key:"renderLocationPicker",value:function(t,i,e){var s,n,o=this;if(null!=this.options.project||null!=e.project){var a=this.obj;if(this.isArray&&(a=this.getArrayObjectForElement(t)),null!=a){var r=null;r="function"==typeof a.get?a.get(i):a[i];var l=null==e?void 0:e.onChange;this.inputs.all[i]=this.inputs.locationPickers[i]={input:new PJQ.inputs.ProjectLocationPicker(_.defaults({el:t,project:this.options.project,canEdit:null!=e.canEdit?e.canEdit:null===(s=this.options.canEdit)||void 0===s||s,defaultValue:null!==(n=e.defaultValue)&&void 0!==n?n:r,onChange:function(e){o.onChange(t,i,e),"function"==typeof l&&l(e)}},e))}}}}},{key:"renderContactSelector",value:function(t,i,e){var s,n,o,a,r=this,l=this.obj;if(this.isArray&&(l=this.getArrayObjectForElement(t)),null!=l){var c=l[i],d=PJQ.helpers.objectHelpers.refinedType(c,!0),p=null;null==c?c="function"==typeof l.get?l.get(i):l[i]:"backboneCollection"===d&&(p=c);var u=null==e?void 0:e.onChange;this.inputs.all[i]=this.inputs.contactSelectors[i]={input:new PJQ.views.contacts.ContactsSelectInput(_.defaults({el:t,project:this.options.project,canEdit:null!=e.canEdit?e.canEdit:null===(s=this.options.canEdit)||void 0===s||s,selectedContact:null!==(n=null!==(o=e.selectedContact)&&void 0!==o?o:null===(a=p)||void 0===a?void 0:a.models)&&void 0!==n?n:c,onChange:function(e){r.isBackboneObj&&l.set("isDirty",!0),r.onChange(t,i,e),"function"==typeof u&&u(e)}},e)),setValue:function(e){null!=p?p.reset(e):l[i]=e,r.isBackboneObj&&(l.isDirty=!0)}}}}},{key:"renderSelectPicker",value:function(t,i,e){var s,n,o=arguments,a=this,r=this.obj;if(this.isArray&&(r=this.getArrayObjectForElement(t)),null!=r){var l=null;l="function"==typeof r.get?r.get(i):r[i];var c=null==e?void 0:e.onChange;this.inputs.all[i]=this.inputs.selectPickers[i]={input:new PJQ.inputs.Selectpicker(_.defaults({el:t,canEdit:null!=e.canEdit?e.canEdit:null===(s=this.options.canEdit)||void 0===s||s,defaultValue:null!==(n=e.defaultValue)&&void 0!==n?n:l,onChange:function(e){a.onChange(t,i,e),"function"==typeof c&&c.apply(void 0,_toConsumableArray(o))}},e))}}}},{key:"renderDatePicker",value:function(t,i,e){var s,n,o,a=this,r=this.obj;if(this.isArray&&(r=this.getArrayObjectForElement(t)),null!=r){var l=null;l="function"==typeof r.get?r.get(i):r[i];var c=null===(s=e)||void 0===s?void 0:s.onChange;null==(e=_.defaults({el:t,canEdit:null!=e.canEdit?e.canEdit:null===(n=this.options.canEdit)||void 0===n||n,onChange:function(e){a.onChange(t,i,e),"function"==typeof c&&c(e)}},e)).datepickerOptions&&(e.datepickerOptions={format:PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE});var d=null!==(o=e.datepickerOptions.defaultValue)&&void 0!==o?o:l;e.datepickerOptions.defaultDate="function"==typeof d?d(r):d,this.inputs.all[i]=this.inputs.datePickers[i]={input:new PJQ.inputs.Datepicker(e)}}}},{key:"renderButtonGroup",value:function(t,i,e){var s,n,o=this,a=this.obj;if(this.isArray&&(a=this.getArrayObjectForElement(t)),null!=a){var r=null;r="function"==typeof a.get?a.get(i):a[i];var l=null==e?void 0:e.onChange;this.inputs.all[i]=this.inputs.buttonGroups[i]={input:new PJQ.inputs.ButtonGroup(_.defaults({el:t,defaultValue:null!==(s=e.defaultValue)&&void 0!==s?s:r,buttons:"function"==typeof e.buttons?e.buttons(a):e.buttons,canEdit:null!=e.canEdit?e.canEdit:null===(n=this.options.canEdit)||void 0===n||n,onChange:function(e){o.onChange(t,i,e),"function"==typeof l&&l(e)}},e))}}}},{key:"renderFileUploader",value:function(e,t,i){var s,n,o=this.obj;if(this.isArray&&(o=this.getArrayObjectForElement(e)),null!=o){var a=o[t],r=PJQ.helpers.objectHelpers.refinedType(a,!0),l=null;null==a?a="function"==typeof o.get?o.get(t):o[t]:"backboneCollection"===r&&(l=a);var c=i.onSuccess,d=i.onDelete;this.inputs.all[t]=this.inputs.fileUploaders[t]={input:new PJQ.views.files.FileUploaderGrid(_.defaults({el:e,collection:l,canUpload:null!=i.canUpload?i.canU
1pload:null===(s=this.options.canEdit)||void 0===s||s,canDelete:null!=i.canDelete?i.canDelete:null===(n=this.options.canEdit)||void 0===n||n,onSuccess:this.isBackboneObj?function(){o.isDirty=!0,"function"==typeof c&&c(a)}:null,onDelete:function(e,t){0<e.id?e.set("delete",!0):e.destroy(),o.isDirty=!0,"function"==typeof d&&d(a),t()}},i))}}}},{key:"getAttributeElement",value:function(e){return this.$outer.find("["+this.options.attribute+'="'+e+'"]')}},{key:"getArrayObjectForElement",value:function(e){var t=e.closest(0<_.size(this.options.modelSelector)?this.options.modelSelector:"tr").attr(this.options.modelSelectorAttribute);return _.size(t)<=0?null:_.find(this.obj,function(e){return e[this.options.idAttribute]===t},this)}},{key:"setValue",value:function(e,t,i){var s=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,n=!(4<arguments.length&&void 0!==arguments[4])||arguments[4];if(0!==_.size(e)){var o=this.getInputObj(e);if(this.isArray){if(!i){if(0===_.size(s))return;i=this.getArrayObjectForElement(s)}if(null==i)return;"function"==typeof i.set?i.set(e,t):i[e]=t}else null!=o&&"function"==typeof o.setValue?o.setValue(t):this.isBackboneObj?this.obj.set(e,t):this.obj[e]=t;n&&(0===_.size(s)&&(s=this.getAttributeElement(e)),null!=o||0<_.size(s)&&this.setElementValue(s))}}},{key:"setElementValue",value:function(e){var t=this.obj;if(this.isArray&&(t=this.getArrayObjectForElement(e)),null!=t){var i=null,s=this.getElementAttribute(e);if(i="function"==typeof t.get?t.get(s):t[s],"bool"===this.getElementType(e))i=!0===e.data("pBindOpposite")?!1===i:i;if(null!=i)switch(this.getElementType(e)){case"text":case"number":e.val(i);break;case"percent":e.val(PJQ.helpers.formatHelpers.formatPercent(!0===this.options.useDecimalPercentFields?i:i/100));break;case"bool":e.prop("checked",i);break;case"phone":e.val(PJQ.helpers.formatHelpers.formatPhoneNumber(i));break;case"decimal":case"select":break;case"date":case"datetime":case"time":break;case"money":e.val(PJQ.helpers.formatHelpers.formatCurrency(i,2))}}}},{key:"handleChange",value:function(e){var t=this.getElementAttribute(e),i=this;if(0<_.size(t))switch(this.getElementType(e)){case"text":i.onChange(e,t,e.val());break;case"decimal":i.onChange(e,t,PJQ.helpers.inputHelpers.getMoneyInputValue(e)/100);break;case"number":i.onChange(e,t,PJQ.helpers.inputHelpers.getNumberInputValue(e));break;case"percent":i.onChange(e,t,PJQ.helpers.inputHelpers.getPercentInputValue(e,!0===i.options.useDecimalPercentFields));break;case"phone":i.onChange(e,t,PJQ.helpers.inputHelpers.getPhoneInputValue(e));break;case"money":i.onChange(e,t,PJQ.helpers.inputHelpers.getMoneyInputValue(e.parent()));break;case"hours":case"time":break;case"date":case"datetime":break;case"select":var s=e.data("selectpicker"),n=null!=s?s.getValue():e.val();i.onChange(e,t,n);break;case"bool":var o=!0===e.data("pBindOpposite"),a=e.prop("checked");i.onChange(e,t,o?!a:a)}}},{key:"getElementAttribute",value:function(e){return e.attr(this.options.attribute)}},{key:"getElementType",value:function(e){return e.is("input")?e.hasClass("input-dollars-full")||e.hasClass("input-dollars")||e.hasClass("input-cents")?"money":e.hasClass("input-phone")?"phone":e.hasClass("input-percent")?"percent":e.hasClass("input-numeric")?"number":e.hasClass("input-decimal")?"decimal":e.hasClass("input-time")?"time":e.hasClass("input-hours")?"hours":"checkbox"===e.attr("type")?"bool":null!=e.data("DateTimePicker")||e.hasClass("input-date")?"date":"text":e.is("textarea")?"text":e.is("select")?"select":void 0}},{key:"onChange",value:function(e,t,i){if(0<t.length){var s=this.attributeListeners[t],n=this.obj;this.isArray&&(n=this.getArrayObjectForElement(e)),"function"==typeof(null==s?void 0:s.onChange)?s.onChange(e,t,i,n):"function"==typeof this.options.onChange?this.options.onChange(e,t,i,n):this.setValue(t,i,n,e,!1),"function"==typeof this.options.afterChange&&this.options.afterChange(e,t,i,n),"function"==typeof(null==s?void 0:s.afterChange)&&s.afterChange(e,i,n)}}},{key:"getValidator",value:function(e){var t,i,s=null!=this.options.inputs?this.options.inputs[e]:null,n=null;null!=s?null==(n=s.validator)&&(n={func:null!==(i=s.validate)&&void 0!==i?i:null}):null!=this.options.validators&&(n=this.options.validators[e]);return null!==(t=n)&&void 0!==t?t:null}},{key:"validate",value:function(){var p=this,u=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{showInputErrors:!0},h=this,m={isValid:!0,validAttributes:[],invalidAttributes:[],errors:[]};return this.isArray||_.each(this.requiredAttributes,function(e){var t=p.getValidator(e),i=p.isBackboneObj?p.obj.get(e):h.obj[e],s=!0,n=null;if("function"==typeof(null==t?void 0:t.func)){var o,a,r=t.func(i,p.obj);if("boolean"==typeof r)s=r;else s=null!==(o=null==r?void 0:r.isValid)&&void 0!==o&&o;if(0<_.size(null==r?void 0:r.errors))(a=m.errors).push.apply(a,_toConsumableArray(r.errors))}else{var l;n=h.getAttributeElement(e);l=null==t?void 0:t.rules;switch(h.getElementType(n)){case"text":case"phone":s=0<_.size(i);break;case"select":var c=n.data("selectpickerview");if(c&&null!=i){var d=_.isArray(i);s=null!=_.find(c.options.choices,function(e){return d?_.contains(i,e.id):e.id===i})}else s="number"==typeof i||0<_.size(i);break;default:s=null!=i}}s?m.validAttributes.push(e):m.invalidAttributes.push(e),!1!==u.showInputErrors&&(null==n&&(n=h.getAttributeElement(e)),PJQ.helpers.inputHelpers.setInputError(n,s))}),m.isValid=0===_.size(m.invalidAttributes),m}}]),n}(),PJQ.app.module===PJQ.constants.modules.APP&&(PJQ.modules.calendar={routes:[{route:"calendar",name:"calendar",callback:function(){PJQ.app.initNavigator({activeItem:"calendar"})}}]},PJQ.app.addRoutes(PJQ.modules.calendar.routes)),PJQ.views.calendars={},PJQ.views.calendars.MiniCalendar=PJQ.views.BaseView.extend({defaults:{datepickerOptions:{inline:!0,defaultDate:new Date,format:PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE,isDaysOnly:!0,icons:{time:"fal fa-clock",date:"fal fa-calendar-alt",up:"fal fa-chevron-up",down:"fal fa-chevron-down",previous:"fal fa-chevron-left",next:"fal fa-chevron-right",today:"fal fa-crosshairs",clear:"fal fa-trash",close:"fal fa-times"}},onChange:_.noop,dateRangeChanged:_.noop},events:{"dp.change":"onChange","dp.update":"onUpdate"},beforeInit:function(e){this.$el.addClass("mini-calendar"),null!=e.datepickerOptions&&(this.options.datepickerOptions=_.defaults(e.datepickerOptions?e.datepickerOptions:{},this.defaults.datepickerOptions))},afterRender:function(){"date"===PJQ.helpers.objectHelpers.refinedType(this.options.datepickerOptions.defaultDate)&&(this.lastSelectedDate=this.options.datepickerOptions.defaultDate),this.$el.datetimepicker(this.options.datepickerOptions),this.onUpdate()},onChange:function(e){this.onUpdate(),null!=this.lastSelectedDate&&0===PJQ.helpers.dateHelpers.getDateDaysDiff(e.date._d,this.lastSelectedDate)||(e.date._d.setHours(0,0,0,0),this.lastSelectedDate=e.date._d,this.options.onChange(void 0===e.date._d?null:e.date._d),this.renderStatusMarkers())},updateStatusMarker:function(t){null!=this.statusDates?this.statusDates=_.filter(this.statusDates,function(e){return 0!==PJQ.helpers.dateHelpers.getDateDaysDiff(t.date,e.date)}):this.statusDates=[],this.statusDates.push(t),this.renderStatusMarker(t)},renderStatusMarkers:function(e){null!=e&&(this.statusDates=e),_.each(this.statusDates,function(e){this.renderStatusMarker(e)},this)},renderStatusMarker:function(e){var t=PJQ.helpers.dateHelpers.getDateString(e.date,"MM/dd
1/yyyy"),i=this.$('.day[data-day="'+t+'"]');i.hasClass("active")&&i.css("background-color",e.color),null!=e.textColor&&i.css("color",e.textColor);var s=i.find(".status-marker");if(0<_.size(s)&&s.remove(),null!=e.color){var n="";null!=e.textColor&&(n="color: "+e.textColor+";");var o=$("<span>",{class:"status-marker",style:"background-color: "+e.color+";"+n});o.on("click",function(e){e.stopPropagation(),$(e.currentTarget).closest("td").trigger("click")}),i.append(o)}},onUpdate:function(){var e=this.getCurrentDateRange(),t=function(e){return PJQ.helpers.dateHelpers.getDateString(e,"MM/dd/yyyy")};null==e||null!=this.lastDateRange&&t(e.start)===t(this.lastDateRange.start)&&t(e.end)===t(this.lastDateRange.end)||(this.lastDateRange=e,this.options.dateRangeChanged(e))},getCurrentDateRange:function(){var e=this.$(".datepicker-days").find("td.day").first(),t=this.$(".datepicker-days").find("td.day").last();return 0===_.size(e)||0===_.size(t)?null:{start:new Date(e.data("day")),end:new Date(t.data("day"))}},setDate:function(e){this.lastSelectedDate=e,this.$el.data("DateTimePicker").date(e),this.renderStatusMarkers(),this.onUpdate()}}),PJQ.views.calendars.FullCalendar=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Calendar-Base"),subTemplates:{taskTooltip:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Task-Tooltip")},canEdit:!0,canDelete:!0,onTaskEdit:null,onTaskDelete:null,fetchTasks:null},events:{"click .btn-edit-task":"editTaskClicked","click .btn-delete-task":"deleteTaskClicked","click .btn-close-tooltip":"closeEventTooltip","contextmenu .fc-day-grid-event":"eventRightClicked"},afterRender:function(){this.initCalendar()},initCalendar:function(){var i=function(e){return _.map(e,function(e){return _.defaults({extendedProps:{model:e.model?e.model:e,progress:null!=e.get("progress")?e.get("progress"):e},title:e.get("isMilestone")?'<span class="far fa-flag mr-1"></span>'+e.get("title"):e.get("title")},e.attributes)})};this.calendar=new FullCalendar.Calendar(this.$(".calendar-outer")[0],_.defaults(this.options,{height:"parent",plugins:["dayGrid","bootstrap"],themeSystem:"bootstrap",defaultView:"dayGridMonth",timezone:"local",header:{left:"",center:"title",right:"today prev,next"},events:"function"==typeof this.options.fetchTasks?_.bind(function(e,t){this.options.fetchTasks(e,_.bind(function(e){this.collection=e,t(i(this.collection.models))},this))},this):i(this.collection.models),eventRender:_.bind(this.eventRender,this)})),this.calendar.render()},eventRightClicked:function(e){$(e.currentTarget).trigger("click"),e.preventDefault()},eventRender:function(e){this.addEventTooltip(e);var t=$(e.el);t.addClass("schedule-event"),null!=e.event.id&&(t.attr("data-id",e.event.id),t.attr("title",e.event.title),"function"==typeof this.options.onTaskEdit&&t.bind("dblclick",_.bind(function(){this.options.onTaskEdit(this.getTask(e.event.id))},this)))},addEventTooltip:function(e){this.tooltip=new PJQ.Tooltip($(e.el),{template:this.options.subTemplates.taskTooltip,container:this.$el,trigger:"click",renderData:_.bind(function(){return{model:e.event.extendedProps.model,schedule:this.options.schedule}},this)})},getTask:function(e){var t=this.collection.get(e);return t.model?t.model:t},editTaskClicked:function(e){var t=$(e.currentTarget).closest(".task-popup").data("taskId");this.editTask(this.getTask(t))},editTask:function(e){"function"==typeof this.options.onTaskEdit&&this.options.onTaskEdit(e)},deleteTaskClicked:function(e){var t=$(e.currentTarget).closest(".task-popup").data("taskId");this.deleteTask(this.getTask(t))},deleteTask:function(e){"function"==typeof this.options.onTaskDelete&&this.options.onTaskDelete(e)},closeEventTooltip:function(){null!=this.tooltip&&(this.tooltip.remove(),this.tooltip=null)}}),PJQ.views.calendars.SystemCalendar=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"System-Calendar")},events:{"click .btn-add-task":"addTaskClicked","click .btn-add-milestone":"addMilestoneClicked","click .btn-export":"exportCalendar","click .btn-calendar-settings":"editSettings"},beforeFirstRender:function(){PJQ.app.session.fetchProjectCustomFields(null,_.bind(function(e){this.projectCustomFields=e,PJQ.app.session.fetchScheduleStatuses(_.bind(function(e){this.taskStatuses=e,PJQ.app.session.fetchCalendarSettings(_.bind(function(e){this.settings=e,this.render()},this))},this))},this))},renderData:function(){return{settings:this.settings}},afterRender:function(){null!=this.settings&&(this.calendar=new PJQ.views.calendars.FullCalendar({el:this.$(".system-calendar"),fetchTasks:_.bind(this.fetchTasks,this),onTaskEdit:_.bind(function(e){this.editTask(e)},this),onTaskDelete:_.bind(function(e){this.deleteTaskClicked(e)},this),canDelete:!1}))},fetchTasks:function(e,i){var t=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"calendar"}],[{parameter:"start",value:PJQ.helpers.dateHelpers.getDateString(new Date(e.start),"yyyy-MM-dd")},{parameter:"finish",value:PJQ.helpers.dateHelpers.getDateString(new Date(e.end),"yyyy-MM-dd")},{parameter:"bidsDue",value:this.settings.get("bidsDueFilter")}
1,{parameter:"startFinish",value:this.settings.get("startFinishFilter")},{parameter:"tasks",value:this.settings.get("scheduleTasksFilter")},{parameter:"cfProjects",value:this.settings.get("customFieldProjectsFilter")},{parameter:"cfFilter",value:this.settings.get("customFieldIdsFilter")},{parameter:"cfDisplay",value:this.settings.get("customFieldIdsDisplay")},{parameter:"statusFilter",value:this.settings.get("projectStatusFilter")}]);new PJQ.ajax.Request({endpoint:t}).get().done(_.bind(function(e){this.collection=new PJQ.collections.calendars.CalendarTasks;var t=new PJQ.collections.schedule.Tasks(e.tasks);_.each(t.models,function(e){var t=this.taskStatuses.get(e.get("statusId"));null==t&&(t=this.taskStatuses.getDefault()),e.status=t;var i=e.getCalendarTask(),s=0<e.get("userId")?e.get("name"):e.get("name")+" - "+e.get("projectName");i.set("title",s),this.collection.add(i)},this),_.each(e.events,function(n){var o=n.name+" - "+n.projectName;0<_.size(this.settings.get("customFieldIdsDisplay"))&&_.each(this.settings.get("customFieldIdsDisplay"),function(t){var e=_.find(n.customFields,function(e){return e.id===t});if(null!=e){var i=this.projectCustomFields.get(t);if(null!=i){var s="";"DATE"===i.get("fieldType")?s=0<_.size(e.value)?PJQ.helpers.dateHelpers.getDateString(new Date(e.value),"MM-dd-yyyy",!0):"Not set":"DATETIME"===i.get("fieldType")?s=0<_.size(e.value)?PJQ.helpers.dateHelpers.getDateString(new Date(e.value),"MM-dd-yyyy hh:mm:ss"):"Not set":0<_.size(e.value)&&(s=e.value),o+="<br /><strong>"+i.get("fieldName")+"</strong>: "+s}}},this);var e=PJQ.helpers.dateHelpers.parseDateString(n.finish?n.finish:n.start,!n.isAllDay),t=new PJQ.models.calendars.CalendarTask({id:-_.uniqueId(),name:n.name,projectId:n.projectId,projectName:n.projectName,title:o,start:PJQ.helpers.dateHelpers.parseDateString(n.start,!n.isAllDay),finish:n.finish?e:null,end:e,allDay:n.isAllDay,isAllDay:n.isAllDay,backgroundColor:null!=n.color?n.color+" !important":"#5E35B1 !important",borderColor:null!=n.color?n.color+" !important":"#5E35B1 !important"});this.collection.add(t)},this),i(this.collection)},this))},addTaskClicked:function(){var e=new PJQ.models.schedule.Task({name:"",duration:1,start:null,finish:null,weekendWork:!1,isAllDay:!0,isMilestone:!1,percentComplete:0,notes:"",status:this.taskStatuses.getDefault()});this.editTask(e)},addMilestoneClicked:function(){var e=new PJQ.models.schedule.Task({name:"",duration:1,start:null,finish:null,weekendWork:!1,isAllDay:!0,isMilestone:!0,percentComplete:0,notes:"",status:this.taskStatuses.getDefault()});this.editTask(e)}
1,editTask:function(e){0<e.id||e.isNew()?null!=this.model||e.isNew()||null==e.get("projectId")?e.isNew()?new PJQ.views.schedule.EditTaskModal({schedule:this.model,model:e,statuses:this.taskStatuses,onSave:_.bind(function(e){this.render()},this),onDelete:_.bind(function(){this.deleteTask(e)},this)}):e.fetch({success:_.bind(function(){new PJQ.views.schedule.EditTaskModal({schedule:this.model,model:e,statuses:this.taskStatuses,onSave:_.bind(function(){this.render()},this),onDelete:_.bind(function(){this.deleteTask(e)},this)})},this)}):PJQ.app.router.navigate("projects/"+e.get("projectId").toString()+"/schedule/"+e.id.toString(),{trigger:!0}):PJQ.app.router.navigate("projects/"+e.get("projectId").toString(),{trigger:!0})},deleteTaskClicked:function(e){new PJQ.views.modals.DeleteCancel({header:"Confirm Deletion",body:"Are you sure you want to delete this task?",onDelete:_.bind(function(){this.deleteTask(e)},this)})},deleteTask:function(e){this.collection.remove(e),e.destroy({success:_.bind(function(){this.render()},this)})},exportCalendar:function(){var e=new PJQ.Loader(this.$(".btn-export"),{type:"button",loadingText:"Exporting"});new PJQ.models.reporting.Report({name:"system-calendar",fileName:"Calendar"}).generate({html:this.calendar.$el.find(".calendar-outer").outerHTML()},function(){e.remove()})},editSettings:function(){new PJQ.views.calendars.CalendarSettingsModal({model:this.settings,onSave:_.bind(function(){this.render()},this)})}}),PJQ.views.calendars.CalendarSettingsModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Calendar-Settings"),onSave:null},events:{"click .btn-save":"save"},beforeModalCreated:function(){var t=_.bind(function(){PJQ.app.session.fetchProjectCustomFields(null,_.bind(function(e){this.customFields=e,PJQ.app.session.fetchProjectStatuses(_.bind(function(e){this.projectStatuses=e,this.render()},this))},this))},this);null==this.model?PJQ.app.session.fetchCalendarSettings(_.bind(function(e){this.model=e,t()},this)):t()},renderData:function(){return{projectStatuses:this.projectStatuses,customFields:_.filter(this.customFields.models,function(e){var t=e.get("fieldType").toUpperCase();return"TEXT"===t||"INT"===t}),dateCustomFields:_.filter(this.customFields.models,function(e){var t=e.get("fieldType").toUpperCase();return"DATE"===t||"DATETIME"===t})}},afterRender:function(){if(void 0!==this.customFields){new PJQ.inputs.Selectpicker({el:this.$(".bids-due-filter"),defaultValue:this.model.get("bidsDueFilter"),onChange:_.bind(function(e){this.model.set("bidsDueFilter",e)},this)}),new PJQ.inputs.Selectpicker({el:this.$(".start-finish-filter"),defaultValue:this.model.get("startFinishFilter"),onChange:_.bind(function(e){this.model.set("startFinishFilter",e)},this)}),new PJQ.inputs.Selectpicker({el:this.$(".project-tasks-filter"),isMultiple:!0,defaultValue:this.model.get("scheduleTasksFilter"),onChange:_.bind(function(e){this.model.set("scheduleTasksFilter",e)},this)}),PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PROJECT_STATUS_ID)&&new PJQ.inputs.Selectpicker({el:this.$(".project-status-filter"),defaultValue:this.model.get("projectStatusFilter"),isMultiple:!0,onChange:_.bind(function(e){this.model.set("projectStatusFilter",e)},this)});var e={projects:this.model.get("customFieldProjectsFilter"),fields:this.model.get("customFieldIdsFilter")};new PJQ.inputs.Selectpicker({el:this.$(".custom-fields-filter"),defaultValue:e,isGrouped:!0,onChange:_.bind(function(e){this.model.set("customFieldIdsFilter",e.fields?e.fields:null),this.model.set("customFieldProjectsFilter",e.projects?e.projects:"NONE")},this)}),new PJQ.inputs.Selectpicker({el:this.$(".custom-fields-display"),defaultValue:this.model.get("customFieldIdsDisplay"),isMultiple:!0,onChange:_.bind(function(e){this.model.set("customFieldIdsDisplay",e)},this)})}},save:function(){this.model.hasChanged()?this.model.save(null,{success:_.bind(function(){PJQ.notifications.notify.successNotify({message:"Calendar settings saved"}),"function"==typeof this.options.onSave&&this.options.onSave(this.model),this.removeModal()},this)}):this.removeModal()}}),PJQ.models.calendars={},PJQ.models.calendars.CalendarSettings=PJQ.models.BaseModel.extend({idAttribute:"userId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"calendar"},{endpoint:"settings"}])}}),PJQ.models.calendars.CalendarTask=PJQ.models.BaseModel.extend({parse:function(e){return null!=e.model&&(this.model=e.model),e}}),PJQ.collections.calendars={},PJQ.collections.calendars.CalendarTasks=PJQ.collections.BaseCollection.extend({model:PJQ.models.calendars.CalendarTask}),PJQ.charts={colors:{RED_80:"rgba(255, 99, 132, 0.8)",BLUE_80:"rgba(54, 162, 235, 0.8)",YELLOW_80:"rgba(255, 206, 86, 0.8)",GREEN_80:"rgba(75, 192, 192, 0.8)"}},PJQ.charts.Chart=function(){function i(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,i),this.$outer=e,this.$outer.addClass("chart-outer"),this.options=_.defaults(t,{width:null,height:null,showTotal:!1,onClick:_.noop}),this.renderChart()}return _createClass(i,[{key:"renderChart",value:function(){if(0<_.size(this.$el)&&this.$el.remove(),this.options.width&&this.options.height&&(this.options.options=_.defaults({maintainAspectRatio:!1},this.options.options?this.options.options:{})),this.$el=$("<canvas>",{height:this.options.height,width:this.options.width,style:"z-index:100 !important;"}),this.$outer.append(this.$el),"doughnut"===this.options.type.toLowerCase()&&this.options.showTotal){var e=this.options.total;isNaN(e)&&(e=_.reduce(this.options.data.datasets[0].data,function(e,t){return t+e},0)),this.$outer.append($("<span />
1",{class:"chart-total text-align-center fs-40 wd-50 font-weight-light p-absolute left-25",style:"z-index:1 !important;top:"+(this.options.height/3).toString()+"px;",text:e}))}this.chart=new Chart(this.$el,this.options),null!=this.options.onClick&&this.$el.on("click",_.bind(function(e){this.options.onClick(this.chart.getElementsAtEvent(e))},this))}}]),i}(),PJQ.views.charts={},PJQ.views.charts.dhtmlxGantt=PJQ.views.BaseView.extend({defaults:{enableSorting:!1,sortField:"sortOrder",sortAsc:!1,onSort:null,isShowCriticalPath:!1},events:{"click .grid-toggle":"toggleGrid"},beforeFirstRender:function(){this.collection=this.options.schedule.tasks,this.currentSort={field:null!=this.options.sortField?this.options.sortField:"sortOrder",asc:null!=this.options.sortAsc&&this.options.sortAsc}},afterRender:function(){this.initChart(),this.renderContextMenu()},getDataObject:function(){var o={tasks:[],links:[],minStartDate:null,maxStartDate:null,maxEndDate:null,hasTaskNearToday:!1},a=PJQ.helpers.dateHelpers.getNewDateAddDays(new Date,-7),r=PJQ.helpers.dateHelpers.getNewDateAddDays(new Date,7);return _.each(this.collection.models,function(e){var t=null;null!=e.get("start")&&(t=new Date(e.get("start")),(null==o.minStartDate||t<o.minStartDate)&&(o.minStartDate=t),(null==o.maxStartDate||t>o.maxStartDate)&&(o.maxStartDate=t));var i=null;if(null!=e.get("finish")&&(i=new Date(e.get("finish")),(null==o.maxEndDate||i>o.maxEndDate)&&(o.maxEndDate=i)),o.hasTaskNearToday=o.hasTaskNearToday||null!=t&&null!=i&&PJQ.helpers.dateHelpers.checkDateRangesOverlap(a,r,t,i)||null!=t&&PJQ.helpers.dateHelpers.checkDateBetweenDays(a,r,t)||null!=i&&PJQ.helpers.dateHelpers.checkDateBetweenDays(a,r,i),e instanceof PJQ.models.schedule.Task){var s=e.get("isMilestone")?"#43A047":e.status?e.status.get("color"):"#0b7bc1",n={text:e.get("name"),start_date:e.get("start")?e.get("start"):o.maxStartDate,duration:e.get("isMilestone")?1:e.get("duration"),id:e.get("taskId"),type:e.get("isMilestone")?"milestone":e.get("isSummaryTask")?"project":"task",progress:e.get("percentComplete")/100,parent:e.get("summaryTaskId")&&e.get("summaryTaskId")!==e.get("taskId")?e.get("summaryTaskId"):e.get("parentTaskId"),calendar_id:e.get("weekendWork")?"weekend_work":null,details:e.get("notes"),bar_height:e.get("isSummaryTask")?18:null,unscheduled:null==e.get("start")&&!e.get("isSummaryTask"),color:s,textColor:PJQ.helpers.colorHelpers.idealLinkColorForBackground(s),listTextColor:s,sortOrder:e.get("sortOrder")};o.tasks.push(n)}},this),_.each(this.options.schedule.dependencies.models,function(t){if(!t.get("isDeleted")){var e={id:t.get("dependencyId"),target:t.get("taskId"),source:t.get("dependTaskId"),type:Object.keys(PJQ.constants.schedule.linkTypes).find(function(e){return PJQ.constants.schedule.linkTypes[e]===t.get("type")}),lag:t.get("offset")};o.links.push(e)}},this),o},startInlineEdit:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"text";0<e&&this.gantt.ext.inlineEditors.startEdit(e,null!=t?t:"text")},initChart:function(){this.gantt&&this.gantt.destructor();var a=Gantt.getGanttInstance();(this.gantt=a).clearAll(),a.templates.scale_cell_class=function(e){if(0===e.getDay()||6===e.getDay())return"weekend-highlight"},a.templates.timeline_cell_class=function(e,t){if(0===t.getDay()||6===t.getDay())return"weekend-highlight"},a.config.fit_tasks=!0,a.skin="broadway",a.config.work_time=!0,a.config.correct_work_time=!0,a.addCalendar({id:"weekend_work",worktime:{days:[1,1,1,1,1,1,1]}});var r=this;a.config.editor_types.dateEditor={show:function(e,t,i,s){s.innerHTML='<div class="input-group"><input type="text" class="form-control input-date date-editor-input fs-13"></div>';r.getTask(e);var n=r.collection.get(e);r.showDate(n.get("start")),this.datePicker=new PJQ.inputs.Datepicker({el:r.$(".date-editor-input"),canEdit:!0,datepickerOptions:{format:PJQ.helpers.dateHelpers.dateFormats.datePicker.ALT_DATE,defaultDate:n.get("start")?n.get("start"):new Date,minDate:"end_date"===t.name?n.get("start"):n.getMinStart(),widgetPositioning:{horizontal:"start_date"===t.name?"left":"right"}}
1,onChange:function(e){"start_date"===t.name&&r.gantt.ext.inlineEditors.startEdit(n.get("taskId"),"end_date")}})},hide:function(e){this.datePicker.remove()},set_value:function(e,t,i,s){var n=r.collection.get(e.id),o=new Date(n&&n.get("start")?n.get("start"):e.start_date);"end_date"===i.name&&(o=new Date(n&&n.get("finish")?n.get("finish"):e.end_date-1)),o.setHours(0,0,0,0),this.datePicker.setValue(o)},get_value:function(e,t,i){return this.datePicker.getValue()},is_changed:function(e,t,i,s){var n=new Date("start_date"===i.name?e.start_date:e.end_date-1),o=new Date(this.datePicker.getValue());return n.setHours(0,0,0,0),o.setHours(0,0,0,0),n.getTime()!==o.getTime()||e.unscheduled&&null!=this.datePicker.getValue()},is_valid:function(e,t,i,s){return null!==e},save:function(e,t,i){var s=r.getTask(e),n=r.collection.get(e);if("start_date"===t.name)s.start_date=PJQ.helpers.dateHelpers.getNewDateAddDays(new Date(this.datePicker.getValue()),1,!n.get("weekendWork"),!0),s.end_date=PJQ.helpers.dateHelpers.getNewDateAddDays(s.start_date,0<s.duration?s.duration:1,!n.get("weekendWork"),!0);else{var o=PJQ.helpers.dateHelpers.getDateDaysDiff(this.datePicker.getValue(),s.start_date,!n.get("weekendWork"),!0);s.end_date=PJQ.helpers.dateHelpers.getNewDateAddDays(s.start_date,0<o?o:1,!n.get("weekendWork"),!0)}"function"==typeof r.options.onTaskMoved&&r.options.onTaskMoved(n,s,t.name,!0),r.currentSort&&r.sort()},focus:function(e){var t=r.getInput(e);t&&(t.focus&&t.focus(),t.select&&t.select())}},a.config.editor_types.durationEditor={show:function(e,t,i,s){var n=r.getTask(e);r.showDate(n.start_date),s.innerHTML='<input type="number" class="form-control number-editor-input fs-13">'},set_value:function(e,t,i,s){var n=r.getInput(s);n&&(n.value=e.duration)},get_value:function(e,t,i){var s=r.getInput(i);if(s)return s.value||0},is_changed:function(e,t,i,s){var n=this.get_value(t,i,s);return Number(e.duration)!==Number(n)},is_valid:function(e,t,i,s){return!isNaN(parseInt(e))&&0<e},save:function(e,t,i){var s=r.getTask(e),n=r.collection.get(e);s.duration=parseInt(this.get_value(e,t,i)),s.end_date=PJQ.helpers.dateHelpers.getNewDateAddDays(s.start_date,s.duration,!n.get("weekendWork"),!0),"function"==typeof r.options.onTaskMoved&&r.options.onTaskMoved(n,s,t.name,!0),r.currentSort&&r.sort()},focus:function(e){var t=r.getInput(e);t&&(t.focus&&t.focus(),t.select&&t.select())}},a.config.editor_types.nameEditor={show:function(e,t,i,s){var n=r.getTask(e);r.showDate(n.start_date),s.innerHTML='<input type="text" class="form-control name-editor-input fs-13">'},hide:function(){},set_value:function(e,t,i,s){r.getInput(s).value=e.text},get_value:function(e,t,i){return r.getInput(i).value||""},is_changed:function(e,t,i,s){var n=this.get_value(t,i,s);return e.text!==n},is_valid:function(e,t,i,s){return null!=e},save:function(e,t,i){var s=r.getTask(e),n=r.collection.get(e);s.text=this.get_value(e,t,i),"function"==typeof r.options.onTaskMoved&&r.options.onTaskMoved(n,s,t.name),r.currentSort&&r.sort()},focus:function(e){var t=r.getInput(e);t&&(t.focus&&t.focus(),t.select&&t.select())}};var e=a.ext.formatters.durationFormatter({enter:"day",store:"day",format:"auto"}),o=a.ext.formatters.linkFormatter({durationFormatter:e}),t={type:"dateEditor",map_to:"auto"},i={type:"predecessor",map_to:"auto",formatter:o};a.config.columns=[{name:"wbs",label:"#",width:40,template:a.getWBSCode,resize:!0},{name:"text",label:"Name",tree:!0,width:200,resize:!0,editor:{type:"nameEditor",map_to:"auto"}},{name:"start_date",label:"Start",width:85,align:"center",resize:!0,editor:t},{name:"end_date",label:"Finish",width:85,align:"center",resize:!0,editor:t},{name:"duration",label:"Duration",width:75,align:"center",resize:!0,editor:{type:"durationEditor",map_to:"auto"},sort:!1},{name:"predecessors",label:"WBS",width:80,align:"left",editor:i,resize:!0,template:function(e){for(var t=e.$target,i=[],s=0;s<t.length;s++){var n=a.getLink(t[s]);i.push(o.format(n))}return i.join(", ")}},{name:"add"}],a.templates.task_text=_.bind(function(e,t,i){return this.checkTaskOverflow(i)?" ":i.text},this),a.templates.rightside_text=_.bind(function(e,t,i){if(this.checkTaskOverflow(i)||"milestone"===i.type)return i.text},this),a.templates.grid_folder=_.bind(function(e){return e.$open?'<div class="text-align-center"><i class="fad fa-folder-open ml-1 mr-1" style="margin-top: 50%;"></i></div>':'<div class="text-align-center"><i class="fad fa-folder-closed ml-1 mr-1" style="margin-top: 50%;"></i></div>'},this),a.templates.grid_row_class=_.bind(function(e,t,i){return"project"!==i.type?"normal_task":""},this),a.templates.grid_file=_.bind(function(e){return e.unscheduled?'<div class="text-align-center"><i class="fad fa-exclamation-circle text-danger ml-1 mr-1 p-1" title="Unscheduled Task" style="margin-top: 25%;"></i></div>':"milestone"===e.type?'<div class="text-align-center"><i class="fad fa-flag text-success ml-1 mr-1 p-1" title="Milestone" style="margin-top: 25%;"></i></div>':'<div class="text-align-center"><i class="fad fa-check ml-1 mr-1 p-1" style="margin-top: 25%;"></i></div>'},this),a.templates.task_class=function(e,t,i){if("project"===i.type)return"summary-task-bar"},a.config.scale_height=75,this.options.enableSorting||(a.config.order_branch=!0),a.templates.task_end_date=function(e,t){return a.templates.task_date(new Date(e.valueOf()-1))},a.config.open_tree_initially=!0,a.config.readonly=!this.options.canEdit||this.options.settings.get("lockSchedule"),a.attachEvent("onGanttReady",_.bind(function(e,t,i){var s=document.querySelectorAll(".gantt_grid")[0],n=document.querySelectorAll(".schedule-dashboard-view")[0],o=s.getBoundingClientRect();this.gridCollapse=document.createElement("div"),n.append(this.gridCollapse),this.gridCollapse.innerHTML='<i class="fas fa-caret-left" style="margin-top: 60%; margin-left: 35%"></i>',this.gridCollapse.classList.add("grid-toggle"),this.gridCollapse.style.top=o.height/2+"px",this.gridCollapse.style.left=o.width+"px",a.addTaskLayer(function(e){if(a.getState().drag_id!=e.id||"milestone"===e.type)return!1;var t=a.getTaskPosition(e,e.start_date,e.end_date),i=document.createElement("div"),s=Math.round(100*e.progress);
1return i.className="progress_value",i.innerHTML=s+"%",i.style.left=t.left+t.width/3+"px",i.style.top=t.top+40+"px",i.style.backgroundColor=100===s?"#28a745":60<=s?"#ffc107":"#dc3545",i}),a.addTaskLayer(function(e){if("project"===e.type){var t=a.getTaskPosition(e,e.start_date,e.end_date),i=document.createElement("div");return i.className="summary-task-left",i.style.left=t.left+"px",i.style.top=t.top+22+"px",i}}),a.addTaskLayer(function(e){if("project"===e.type){var t=a.getTaskPosition(e,e.start_date,e.end_date),i=document.createElement("div");return i.className="summary-task-right",i.style.left=t.left+t.width-20+"px",i.style.top=t.top+22+"px",i}})},this));var s=a.date.date_to_str("%m-%d-%Y");a.templates.date_grid=function(e,t,i){return t.unscheduled?(t.duration=0,""):"end_date"===i&&"milestone"!==t.type?s(new Date(e.valueOf()-1)):s(e)},a.plugins({critical_path:!0,marker:!0});var n={levels:[{name:"day",scale_height:40,min_column_width:25,scales:[{unit:"week",format:function(e){return a.date.date_to_str("%d %M")(e)}},{unit:"day",step:1,format:function(e){var t=a.date.date_to_str("%D")(e),i=e.getDay();return 0===i||4===i?t.substring(0,2):t[0]},css:function(e){return 0===e.getDay()||6===e.getDay()?"weekend-highlight":""}}]},{name:"week",scale_height:35,min_column_width:100,scales:[{unit:"month",format:"%F %Y"},{unit:"week",step:1,format:function(e){var t=a.date.date_to_str("%d"),i=a.date.add(e,6,"day");return t(e)+"-"+t(i)}}]},{name:"month",scale_height:35,min_column_width:80,scales:[{unit:"year",format:"%Y"},{unit:"month",format:"%M"}]},{name:"quarter",scale_height:35,min_column_width:90,scales:[{unit:"year",format:"%Y"},{unit:"quarter",step:1,format:function(e){return"Quarter "+(Math.floor(e.getMonth()/3)+1)}}]},{name:"year",scale_height:35,min_column_width:30,scales:[{unit:"year",step:1,format:"%Y"}]}],activeLevelIndex:0};a.ext.zoom.init(n),a.config.sort=this.options.enableSorting,a.init(this.options.el[0]);var l=this.getDataObject();if(a.parse(l),l.hasTaskNearToday){var c=a.posFromDate(new Date);a.scrollTo(c)}else if(null!=l.minStartDate){var d=a.posFromDate(l.minStartDate);a.scrollTo(d)}this.currentSort&&this.sort(),this.attachEvents(),this.renderTodayMarker(),this.options.isShowCriticalPath&&this.toggleCriticalPath(this.options.isShowCriticalPath)},renderTodayMarker:function(){if(this.isExporting){if(null==this.todayMarkerId)return;this.gantt.deleteMarker(this.todayMarkerId),this.todayMarkerId=null}else{null!=this.todayMarkerId&&(this.gantt.deleteMarker(this.todayMarkerId),this.todayMarkerId=null);var e=this.gantt.date.date_to_str(this.gantt.config.task_date);this.todayMarkerId=this.gantt.addMarker({start_date:new Date,css:"today-marker",text:"Today",title:e(new Date)})}},checkTaskOverflow:function(e,t){var i=this.gantt.getTaskPosition(e,e.start_date,e.end_date),s=document.createElement("canvas").getContext("2d"),n=document.getElementsByClassName("gantt_task_content")[0];if(n){var o=getComputedStyle(n)["font-family"],a=getComputedStyle(n)["font-size"];s.font=a+" "+o}var r=0,l=s.measureText(e.text).width;if(t&&(r=s.measureText(t).width),l+60>i.width||r+60>i.width)return!0},renderForExport:function(){this.isExporting=!0,this.gantt.templates.task_text=_.bind(function(e,t,i){var s=PJQ.helpers.dateHelpers.getDateString(i.start_date,PJQ.helpers.dateHelpers.dateFormats.DATE,!1);return"milestone"!==i.type&&(s+=" - "+PJQ.helpers.dateHelpers.getDateString(new Date(i.end_date-1),PJQ.helpers.dateHelpers.dateFormats.DATE,!1)),this.checkTaskOverflow(i,s)?" ":'<div style="position: absolute; top: -4px"><div style="height: 12px; line-height: 75%; margin-top: 7px">'+i.text+'</div> <div class="mb-1" style="height: 12px; line-height: 100%;">'+s+"</div></div>"},this),this.gantt.templates.rightside_text=_.bind(function(e,t,i){var s=PJQ.helpers.dateHelpers.getDateString(i.start_date,PJQ.helpers.dateHelpers.dateFormats.DATE,!1);if("milestone"!==i.type&&(s+=" - "+PJQ.helpers.dateHelpers.getDateString(new Date(i.end_date-1),PJQ.helpers.dateHelpers.dateFormats.DATE,!1)),this.checkTaskOverflow(i,s)||"milestone"===i.type)return'<div><div style="height: 10px; line-height: 75%; margin-top: 7px">'+i.text+'</div> <div class="mb-1" style="height: 12px; line-height: 100%;">'+s+"</div></div>"},this),this.renderTodayMarker(),this.gantt.render()},renderForViewing:function(){this.isExporting=!1,this.gantt.templates.task_text=_.bind(function(e,t,i){return this.checkTaskOverflow(i)?" ":i.text},this),this.gantt.templates.rightside_text=_.bind(function(e,t,i){if(this.checkTaskOverflow(i)||"milestone"===i.type)return i.text},this),this.renderTodayMarker(),this.gantt.render()},toggleGrid:function(){if(this.gantt.config.show_grid=!this.gantt.config.show_grid,this.gantt.render(),this.gantt.config.show_grid){var e=document.querySelectorAll(".gantt_grid")[0].getBoundingClientRect();this.gridCollapse.style.top=e.height/2+"px",this.gridCollapse.style.left=e.width+"px",this.gridCollapse.innerHTML='<i class="fas fa-caret-left" style="margin-top: 60%; margin-left: 35%"></i>'}else{var t=document.querySelectorAll(".gantt_container")[0].getBoundingClientRect();this.gridCollapse.style.top=t.height/2+"px",this.gridCollapse.style.left="0px",this.gridCollapse.innerHTML='<i class="fas fa-caret-right" style="margin-top: 60%; margin-left: 35%"></i>'}},attachEvents:function(){var t=this;this.gantt.attachEvent("onScaleAdjusted",_.bind(function(){var e=this.gantt.ext.inline
1Editors.getState();"end_date"===e.columnName&&e.editor.datePicker.show()},this)),this.gantt.attachEvent("onBeforeGanttRender",function(){var e=t.gantt.getSubtaskDates();null!=e.start_date&&null!=e.end_date&&(t.isExporting?(t.gantt.config.start_date=t.gantt.calculateEndDate(e.start_date,-3,"day"),t.gantt.config.end_date=t.gantt.calculateEndDate(e.end_date,5,"day")):(t.gantt.config.start_date=t.gantt.calculateEndDate(e.start_date,-30,"day"),t.gantt.config.end_date=t.gantt.calculateEndDate(e.end_date,30,"day")))}),this.gantt.attachEvent("onBeforeLightBox",_.bind(function(e){if(null==(e=parseInt(e))||"function"!=typeof this.options.onTaskEdit)return!0;var t=this.collection.get(e),i=this.getTask(e);if(null!=t)this.options.onTaskEdit(t);else if("function"==typeof this.options.onTaskAdd){var s=_.bind(function(e){this.gantt.ext.inlineEditors.startEdit(e.get("taskId"),"text")},this);this.options.onTaskAdd(i,s)}},this)),this.gantt.attachEvent("onGridResizeEnd",_.bind(function(e,t){return this.gridCollapse.style.left=t+"px",!0},this)),this.gantt.ext.inlineEditors.attachEvent("onBeforeEditStart",_.bind(function(e){var t=this.getTask(e.id);return(!t||"duration"!==e.columnName||!t.unscheduled&&"project"!==t.type)&&((!t||"start_date"!==e.columnName&&"end_date"!==e.columnName||"project"!==t.type)&&!(t&&"start_date"===e.columnName&&0<_.size(t.$target)&&(PJQ.app.session.project&&PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.ASAP_SCHEDULE_CONTRAINT_ENABLED)||null==PJQ.app.session.project&&PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ASAP_SCHEDULE_CONTRAINT_ENABLED))))},this)),this.gantt.attachEvent("onAfterSort",_.bind(function(e,t,i){this.gantt.config.order_branch=!1,"wbs"===e&&(e="sortOrder",this.gantt.config.order_branch=!0,this.gantt.clearAll(),this.gantt.parse(this.getDataObject())),this.currentSort={field:e,asc:t},"function"==typeof this.options.onSort&&this.options.onSort(this.currentSort),this.gantt.render()},this)),this.gantt.attachEvent("onError",_.bind(function(e){return PJQ.notifications.notify.errorNotify({message:e}),!1},this)),this.gantt.attachEvent("onTaskCreated",_.bind(function(e){var t=_.bind(function(e){this.gantt.showTask(e.get("taskId")),this.gantt.ext.inlineEditors.startEdit(e.get("taskId"),"text")},this);this.options.onTaskAdd(e,t)},this)),this.gantt.attachEvent("onAfterTaskDelete",_.bind(function(e,t){var i=this.collection.get(e);"function"==typeof this.options.onTaskDelete&&this.options.onTaskDelete(i)},this)),this.gantt.attachEvent("onTaskDrag",_.bind(function(e,t,i,s,n){var o=this.collection.get(e);o&&(i.start_date<o.getMinStart()&&(i.start_date=s.start_date,i.end_date=s.end_date),"move"===t&&0<_.size(i.$target)&&(PJQ.app.session.project&&PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.ASAP_SCHEDULE_CONTRAINT_ENABLED)||null==PJQ.app.session.project&&PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ASAP_SCHEDULE_CONTRAINT_ENABLED))&&(i.start_date=s.start_date,i.end_date=s.end_date))},this)),this.gantt.attachEvent("onRowDragEnd",_.bind(function(n,e){var o=this.getTask(n);new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"schedule"},{endpoint:"tasks",value:o.id},{endpoint:"sort",value:o.$local_index+1}]),data:{cloudFlareFix:!0}}).put().done(_.bind(function(){var i=o.$local_index+1,s=o.sortOrder;if(this.collection){var t=this.collection.get(n).get("summaryTaskId"),e=_.sortBy(_.filter(this.collection.models,function(e){return!(0<t)&&null==e.get("summaryTaskId")||e.get("summaryTaskId")===t}),function(e){var t=e.get("sortOrder");return e.id.toString()===n?i:i<s&&i<=t?t+1:s<i&&t===i?t-1:s<i&&i<t?t+1:t});_.each(e,function(e,t){e.set("sortOrder",t+1)})}o.sortOrder=i},this))},this)),this.gantt.attachEvent("onBeforeRowDragEnd",_.bind(function(e,t){return this.getTask(e).parent===t},this)),this.gantt.attachEvent("onAfterTaskDrag",_.bind(function(e,t,i){var s=this.getTask(e),n=this.collection.get(e);"function"==typeof this.options.onTaskMoved&&this.options.onTaskMoved(n,s),this.currentSort&&this.sort()},this)),this.gantt.attachEvent("onAfterLinkAdd",_.bind(function(e,t){var i=this.collection.get(parseInt(t.target));"function"==typeof this.options.onDependencyAdd&&this.options.onDependencyAdd(i,t)},this)),this.gantt.attachEvent("onAfterLinkDelete",_.bind(function(e,t){var i=this.collection.get(parseInt(t.target));"function"==typeof this.options.onDependencyAdd&&this.options.onDependencyDelete(i,t)},this))},sort:function(e){this.gantt.sort(null!=e?e:this.currentSort.field,this.currentSort.asc)},getTask:function(e){return this.gantt.getTask(e)},getZoom:function(){return this.gantt.ext.zoom.getCurrentLevel()},zoomIn:function(){this.gantt.ext.zoom.zoomIn()},zoomOut:function(){this.gantt.ext.zoom.zoomOut()},getInput:function(e){return e.querySelector("input")},showTask:function(e){this.gantt.showTask(e)},showDate:function(e){this.gantt.showDate(e)},updateLink:function(e){this.gantt.updateLink(e)},renderContextMenu:function(){this.options.contextMenuOptions={actions:[{name:"View Details",onClick:_.bind(function(e){var t=e.data("task-id"),i=this.collection.get(t);this.editTask(i)},this)},{name:"Add Sub-Task",onClick:_.bind(function(e){var t=e.data("task-id"),i=this.collection.get(t);this.addSubTaskClicked(i)},this),isShown:_.bind(function(e){var t=e.data("task-id");this.collection.get(t);return!this.options.settings.get("lockSchedule")},this)},{name:"Add to Summary Task",onClick:_.bind(function(e){var t=e.data("task-id"),i=this.collection.get(t);this.addToSummaryTaskClicked(i)},this),isShown:_.bind(function(e){return!this.options.settings.get("lockSchedule")},this)},{name:"Remove from Summary Task",onClick:_.bind(function(e){var t=e.data("task-id"),i=this.collection.get(t);this.removeSummaryTask(i)},this),isShown:_.bind(function(e){var t=e.data("task-id");return 0<this.collection.get(t).get("summaryTaskId")&&!this.options.settings.get("lockSchedule")},this)},{name:"Delete",isDanger:!0,onClick:_.bind(function(e){var t=e.data("task-id"),i=this.collection.get(t);this.deleteTask(i)},this),isShown:_.bind(function(e){return!this.options.settings.get("lockSchedule")},this)}]},this.contextMenu=new PJQ.menus.ContextMenu(_.defaults(this.options.contextMenuOptions,{el:this.$(".gantt_container"),selector:".gantt_bar_task, .gantt_row_task, .gantt_bar_project, .gantt_row_project, .gantt_row_milestone, .gantt_bar_milestone",fetchElementData:_.bind(function(e){return e},this),onOpen:_.bind(function(e){},this),onClose:_.bind(function(){this.$(".context-row").removeClass("context-row")},this)}))},editTask:function(e){"function"==typeof this.options.onTaskEdit&&this.options.onTaskEdit(e)},removeSummaryTask:function(e){"function"==typeof this.options.onTaskUpdateSummary&&this.options.onTaskUpdateSummary(e,0)},addToSummaryTaskClicked:function(e){new PJQ.views.charts.SummaryTaskModal({tasks:this.collection,task:e,project:this.options.project,schedule:this.options.schedule,onSave:_.bind(function(e,t){var i=2<arguments.length&&void 0!==arguments[2]&&arguments[2];"function"==typeof this.options.onTaskUpdateSummary&&this.options.onTaskUpdateSummary(e,t,i)},this)})},addSubTaskClicked:function(e){"function"==typeof this.options.onAddSubTask&&this.options.onAddSubTask(e)},deleteTaskClicked:function(e){var t=$(e.currentTarget).closest(".task-popup").data("taskId"),i=this.collection.get(t);this.deleteTask(i)},deleteTask:function(e){"function"==typeof this.options.onTaskDelete&&this.options.onTaskDelete(e)},addTask:function(i,e){var t={text:i.get("name"),start_date:i.get("start"),duration:i.get("duration"),id:i.get("taskId"),t
1ype:i.get("isMilestone")?"milestone":i.get("isSummaryTask")?"project":"task",progress:i.get("percentComplete")/100,parent:i.get("summaryTaskId")?i.get("summaryTaskId"):i.get("parentTaskId"),calendar_id:i.get("weekendWork")?"weekend_work":null};this.gantt.addTask(t),_.each(i.dependencies.models,function(e){if(e.get("taskId")===i.get("taskId")){var t={id:e.get("dependencyId"),target:e.get("taskId"),source:e.get("dependTaskId"),type:"FS"===e.get("type")?"0":"1",lag:e.get("offset")};this.addLink(t)}},this)},addLink:function(e){this.gantt.addLink(e)},toggleCriticalPath:function(e){this.gantt.config.highlight_critical_path=e,this.gantt.render()},refreshTasks:function(){var e=this.gantt.getScrollState();this.gantt.clearAll(),this.gantt.parse(this.getDataObject()),this.currentSort&&this.sort(),this.gantt.scrollTo(e.x,e.y),this.renderTodayMarker()},updateTask:function(e){var t=this.gantt.getTask(e.get("taskId")),i=_.find(this.collection.models,function(e){return null!=e.get("start")})?new Date(Math.max.apply(Math,_toConsumableArray(this.collection.models.map(function(e){return new Date(e.get("start"))})))):new Date,s=new Date(e.get("finish"));(s=s.addDays(1)).setHours(0,0,0,0),t.start_date=null!=e.get("start")?e.get("start"):i,t.end_date=s,t.duration=e.get("duration"),t.unscheduled=null==e.get("start")||null==e.get("finish"),this.gantt.updateTask(t.id)},getExportHeader:function(e,t){return e?"<style>.weekend-highlight{background-color: #eee !important;}.chart-outer{position:relative}.gantt-container{height:100%!important;flex:1;display:flex;position:relative}.task-list-header{height:39px;width:600px;background-color:#fff;z-index:9999999}.task-list-task{height:50px;width:600px;text-align:left;align-content:start;font-size:16px;border-bottom:1px solid #eaeaea;transition:border-right-width 0.2s linear;&:hover{color:#156cb1!important;background:#f8f9fa!important;border-right-width:10px!important}}.task-list-div{height:100%!important;flex:0 0 600px;width:600px!important;background-color:#fff;position:absolute;left:0;top:0}.task-list-fill{height:100%!important;flex:0 0 600px;width:600px!important;background-color:#fff}.task-list-input{padding:.39rem .3rem!important;margin-top:0.6rem!important}.gantt{display:flex;.lower-text{font-size:15px!important;font-weight:300!important}.upper-text{font-size:16px!important;font-weight:500!important}.bar-label{font-size:14px!important;font-weight:500!important;&.big{font-weight:700!important;color:#343a40!important}}.today-highlight{fill:rgba(0,109,255,.35)!important;opacity:inherit!important}.weekend-highlight{fill:rgba(94,53,177,.1)!important;opacity:inherit!important}.row-line{stroke:#b6b6b6!important;stroke-width:.4!important}.tick{stroke:transparent!important;stroke-width:.4!important}}.gantt_qi_big_icon.icon_delete{font-family:Roboto,sans-serif;font-weight:400;color:#fff;background-color:#dc3545;display:inline-block;text-align:center;vertical-align:middle;user-select:none;border:1px solid #dc3545;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;cursor:pointer;padding-left:10px;&:hover{color:#fff;background-color:#c82333;border-color:#bd2130;text-decoration:none}}.gantt_qi_big_icon.icon_edit{font-family:Roboto,sans-serif;font-weight:400;color:#fff;background-color:#17a2b8;display:inline-block;text-align:center;vertical-align:middle;user-select:none;border:1px solid #17a2b8;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;cursor:pointer;padding-left:12px;min-width:50px;&:hover{color:#fff;background-color:#138496;border-color:#117a8b;text-decoration:none}}.icon_edit{background-image:none!important;width:0!important}.icon_delete{background-image:none!important;width:0!important}.progress_value{position:absolute;border-radius:5px;margin-top:-7px;height:20px;width:40px;color:#fff;z-index:99999;text-align:center}.summary-task-bar{background-color:#000!important;border:1px solid #000!important}.summary-task-bar .gantt_task_progress_wrapper .gantt_task_progress{border:1px solid #4f4f4f!important;background:#5a5a5a!important;box-shadow:none!important}.summary-task-left{position:absolute;border-top:20px solid #000;border-right:20px solid transparent;z-index:0;
1margin-top:-7px;color:#fff;text-align:center}.summary-task-right{position:absolute;border-top:20px solid #000;border-left:20px solid transparent;z-index:0;margin-top:-7px;color:#fff;text-align:center}.milestone-icon{position:absolute;z-index:99999;padding:3px;margin-left:-10px;margin-top:8px;pointer-events:none}.gantt_task_line.gantt_milestone{border-radius:50%}.gantt_critical_task{background-color:#e63030!important;border-color:#9d3a3a!important}.gantt_container{font-family:Roboto,sans-serif;font-weight:400}.gantt_row.odd,.gantt_task_row.odd,.gantt_row,.gantt_task_row{background:white!important;border-bottom:1px solid #e8e8e8!important}.gantt_grid_data{background:white!important}.gantt_task .gantt_task_scale .gantt_scale_cell{background-color:#FFFFFF!important}.gantt_grid_scale .gantt_grid_head_cell{border-left:none!important;border-right:none!important;background-color:#FFFFFF!important;color:#212529;font-size:12px!important}.gantt_task_scale{border-bottom:none!important}.gantt_scale_line{border-bottom:none;border-top:none!important}.gantt_scale_cell{font-size:12px!important;border-bottom:1px solid #b3b3b3}.today-marker{background-color:rgb(0 0 0 / 60%)}.normal_task .gantt_add{display:none} </style>"+(null!=e.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_GANTT_HEADER_CUSTOM_MARKUP)?e.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_GANTT_HEADER_CUSTOM_MARKUP):"<div style='display: flex; font-size: 24px; background: #022c52; color: #FFFFFF; padding: 20px; font-family: sans-serif;'> <img src='"+t+"' alt='Company Logo' style='margin-bottom: auto; max-width: 200px; margin-right:20px;'/> <div style='align-self: flex-end; margin-left:20px;'> <div style='font-weight: bold;'>"+e.get("projectName")+"</div><div>"+e.get("address1")+"</div><div>"+e.get("city")+", "+e.get("state")+" "+e.get("zip")+" </div></div></div>"):""},exportToPDF:function(o){var a=this;if(this.gantt){var r="/schedule/export";!PJQ.app.session.project&&this.options.shareKey&&(r+="?shareKey="+this.options.shareKey);var n=function(s){var n=a.gantt.attachEvent("onGanttRender",function(e,t,i){a.gantt.detachEvent(n),a.gantt.exportToPDF({name:(PJQ.app.session.project?PJQ.app.session.project.get("projectName"):"Project")+"_Gantt.pdf",header:a.getExportHeader(PJQ.app.session.project,s),raw:!0,server:PJQ.helpers.urlHelpers.buildApiUrl(r,{service:PJQ.constants.services.APIv2})}),a.renderForViewing(),"function"==typeof o&&o()});a.renderForExport()},l=function(){a.getCompanyLogoUrl(function(e){return n(e)})};PJQ.app.session.project&&null!=PJQ.app.session.project.get("businessUnitId")&&0<PJQ.app.session.project.get("businessUnitId")?PJQ.app.session.project.fetchBusinessUnits(function(e){var t,i=null==e?void 0:e.get(PJQ.app.session.project.get("businessUnitId")),s=(null==i?void 0:null===(t=i.get("logo"))||void 0===t?void 0:t.url)||null;s?n(s):l()}):l()}},exportToExcel:function(t){this.gantt&&this.getCompanyLogoUrl(_.bind(function(e){this.gantt.exportToExcel({name:(PJQ.app.session.project?PJQ.app.session.project.get("projectName"):"Project")+"_Gantt.xlsx",visual:"base-colors",cellColors:!0,date_format:"mmmm d, yyyy",project:PJQ.app.session.project,logoURL:e,server:PJQ.helpers.urlHelpers.buildApiUrl("/schedule/export",{service:PJQ.constants.services.APIv2})}),"function"==typeof t&&t()},this))},exportToPNG:function(t){this.gantt&&this.getCompanyLogoUrl(_.bind(function(e){this.renderForExport(),this.gantt.exportToPNG({name:(PJQ.app.session.project?PJQ.app.session.project.get("projectName"):"Project")+"_Gantt.png",header:"<style>.gantt_container{margin: 20px;}.chart-outer{position:relative}.gantt-container{height:100%!important;flex:1;display:flex;position:relative}.task-list-header{height:39px;width:600px;background-color:#fff;z-index:9999999}.task-list-task{height:50px;width:600px;text-align:left;align-content:start;font-size:16px;border-bottom:1px solid #eaeaea;transition:border-right-width 0.2s linear;&:hover{color:#156cb1!important;background:#f8f9fa!important;border-right-width:10px!important}}.task-list-div{height:100%!important;flex:0 0 600px;width:600px!important;background-color:#fff;position:absolute;
1left:0;top:0}.task-list-fill{height:100%!important;flex:0 0 600px;width:600px!important;background-color:#fff}.task-list-input{padding:.39rem .3rem!important;margin-top:0.6rem!important}.gantt{display:flex;.lower-text{font-size:15px!important;font-weight:300!important}.upper-text{font-size:16px!important;font-weight:500!important}.bar-label{font-size:14px!important;font-weight:500!important;&.big{font-weight:700!important;color:#343a40!important}}.today-highlight{fill:rgba(0,109,255,.35)!important;opacity:inherit!important}.weekend-highlight{fill:rgba(94,53,177,.1)!important;opacity:inherit!important}.row-line{stroke:#b6b6b6!important;stroke-width:.4!important}.tick{stroke:transparent!important;stroke-width:.4!important}}.gantt_qi_big_icon.icon_delete{font-family:Roboto,sans-serif;font-weight:400;color:#fff;background-color:#dc3545;display:inline-block;text-align:center;vertical-align:middle;user-select:none;border:1px solid #dc3545;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;cursor:pointer;padding-left:10px;&:hover{color:#fff;background-color:#c82333;border-color:#bd2130;text-decoration:none}}.gantt_qi_big_icon.icon_edit{font-family:Roboto,sans-serif;font-weight:400;color:#fff;background-color:#17a2b8;display:inline-block;text-align:center;vertical-align:middle;user-select:none;border:1px solid #17a2b8;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;cursor:pointer;padding-left:12px;min-width:50px;&:hover{color:#fff;background-color:#138496;border-color:#117a8b;text-decoration:none}}.icon_edit{background-image:none!important;width:0!important}.icon_delete{background-image:none!important;width:0!important}.progress_value{position:absolute;border-radius:5px;margin-top:-7px;height:20px;width:40px;color:#fff;z-index:99999;text-align:center}.summary-task-bar{background-color:#000!important;border:1px solid #000!important}.summary-task-bar .gantt_task_progress_wrapper .gantt_task_progress{border:1px solid #4f4f4f!important;background:#5a5a5a!important;box-shadow:none!important}.summary-task-left{position:absolute;border-top:20px solid #000;border-right:20px solid transparent;z-index:0;margin-top:-7px;color:#fff;text-align:center}.summary-task-right{position:absolute;border-top:20px solid #000;border-left:20px solid transparent;z-index:0;margin-top:-7px;color:#fff;text-align:center}.milestone-icon{position:absolute;z-index:99999;padding:3px;margin-left:-10px;margin-top:8px;pointer-events:none}.gantt_task_line.gantt_milestone{border-radius:50%}.gantt_critical_task{background-color:#e63030!important;border-color:#9d3a3a!important}.gantt_container{font-family:Roboto,sans-serif;font-weight:400}.gantt_row.odd,.gantt_task_row.odd,.gantt_row,.gantt_task_row{background:white!important;border-bottom:1px solid #e8e8e8!important}.gantt_grid_data{background:white!important}.gantt_task .gantt_task_scale .gantt_scale_cell{background-color:#FFFFFF!important}.gantt_grid_scale .gantt_grid_head_cell{border-left:none!important;border-right:none!important;background-color:#FFFFFF!important;color:#212529;font-size:12px!important}.gantt_task_scale{border-bottom:none!important}.gantt_scale_line{border-bottom:none;border-top:none!important}.gantt_scale_cell{font-size:12px!important;border-bottom:1px solid #b3b3b3}.today-marker{background-color:rgb(0 0 0 / 60%)}.normal_task .gantt_add{display:none}</style>"+(null!=PJQ.app.session.project.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_GANTT_HEADER_CUSTOM_MARKUP)?PJQ.app.session.project.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_GANTT_HEADER_CUSTOM_MARKUP):"<div style='display: flex; font-size: 24px; background: #022c52; color: #FFFFFF; padding: 20px; font-family: sans-serif;'> <img src='"+e+"' alt='Company Logo' style='margin-bottom: auto; margin-right:20px; max-width: 200px;'/> <div style='align-self: flex-end; margin-left:20px;'> <div style='font-weight: bold;'>"+PJQ.app.session.project.get("projectName")+"</div><div>"+PJQ.app.session.project.get("address1")+"</div><div>"+PJQ.app.session.project.get("city")+", "+PJQ.app.session.project.get("state")+" "+PJQ.app.session.project.get("zip")+" </div></div></div>"),skin:"broadway",raw:!0,server:PJQ.helpers.urlHelpers.buildApiUrl("/schedule/export",{service:PJQ.constants.services.APIv2})}),this.renderForViewing(),"function"==typeof t&&t()},this))},getCompanyLogoUrl:function(t){null==this.logoURL?0<PJQ.app.session.project.get("masterUserId")?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users",value:PJQ.app.session.project.get("masterUserId")},{endpoint:"logo"}])}).get().done(_.bind(function(e){this.logoURL=e.url,t(e.url)},this)):t(null):t(this.logoURL)},exportToPrimavera:function(e){this.gantt.exportToPrimaveraP6({name:(PJQ.app.session.project?PJQ.app.session.project.get("projectName"):"Project")+"_Gantt.xer"}),"function"==typeof e&&e()},exportToMSProject:function(e){this.gantt.exportToMSProject({name:(PJQ.app.session.project?PJQ.app.session.project.get("projectName"):"Project")+"_Gantt.mpp"}),"function"==typeof e&&e()}}),PJQ.views.charts.SummaryTaskModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"summary-task-modal"),width:"30%",maxWidth:700,onSave:_.noop},events:{"click .btn-save":"save","click .btn-new-summary-task":"newSummaryTaskClicked"},beforeRender:function(){this.existingTasks=_.filter(this.options.tasks.models,function(e){return(e.get("model")?e.get("model"):e).get("isSummaryTask")},this),this.targetTask=this.options.task,this.renderData={tasks:this.options.tasks.models,targetTask:this.targetTask}},afterRender:function(){var t=this.getAllDescendantTaskIds();this.existingTaskPicker=new PJQ.inputs.Selectpicker({el:$(".select-existing-summary-task"),isLiveSearch:!0,noneSelectedText:"Select Existing Task",choices:_.map(_.filter(this.options.tasks.models,function(e){return!_.contains(t,e.get("taskId"))&&e.get("taskId")!==this.targetTask.get("taskId")&&e.get("taskId")!==this.targetTask.get("summaryTaskId")},this),function(e){return{id:e.get("taskId"),name:e.get("name")}}),onChange:_.bind(function(t){var e=_.find(this.existingTasks,function(e){return e.id===parseInt(t)});this.warningAlert&&this.warningAlert.destroy(),null==e&&(this.warningAlert=new PJQ.Alert(this.$(".summary-warning"),{type:"danger",text:"Selected task is not currently a summary task. Saving will cause selected task to convert into a summary task."})),this.summaryTaskId=t,this.$(".btn-save").prop("disabled",!1)},this)})},getAllDescendantTaskIds:function(){var i=[],s=_.bind(function(t){_.each(this.options.tasks.models,function(e){(e=e.model?e.model:e).get("summaryTaskId")===t&&(i.push(e.get("taskId")),s(e.get("taskId")))})},this);return s(this.targetTask.get("taskId")),i},newSummaryTaskClicked:function(){var e=new PJQ.models.schedule.Task({projectId:this.targetTask?this.targetTask.get("projectId"):null,templateId:this.targetTask?this.targetTask.get("templateId"):null});this.newSummaryTask(e)},newSummaryTask:function(e){new PJQ.views.schedule.EditTaskModal({project:this.options.project,schedule:this.options.schedule,isSummaryTask:!0,model:e,onSave:_.bind(function(){e.save(null,{success:_.bind(function(e){this.summaryTaskId=e.get("taskId"),this.options.onSave(e,null,!0),this.save()},this)})},this),onClose:_.bind(function(){this.removeModal()},this)})},save:function(){null!=this.summaryTaskId&&(this.options.onSave(this.targetTask,this.summaryTaskId),this.removeModal())}}),PJQ.views.charts.AssigneeListModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"assignee-list-modal"),subTemplates:{assignees:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"assignee-list")},width:"30%",maxWidth:700},events:{"click .btn-edit-assignee":"editAssignee"},afterRender:function(){this.renderAssignees()},renderAssignees:function(){this.renderSubTemplate(!1,this.options.subTemplates.assignees,this.$(".assignee-outer"),{assignees:this.options.assignees.models})},editAssignee:function(e){var t=$(e.currentTarget).closest(".assignee-card").data("cid"),i=this.options.assignees.get(t),s=new PJQ.models.contacts.Contact(i);new PJQ.views.contacts.BaseEditContactModal({model:s})}}),PJQ.models.charts={},PJQ.models.charts.GanttTask=PJQ.models.BaseModel.extend({parse:function(e){return null!=e.model&&(this.model=e.model),e}}),PJQ.collections.charts={},PJQ.collections.charts.GanttTasks=PJQ.collections.BaseCollection.extend({model:PJQ.models.charts.GanttTask}),PJQ.views.collapse={},PJQ.views.collapse.BaseCollapse=PJQ.views.BaseView.extend({defaults:{onShown:null},events:{"shown.bs.collapse":"onShown","hidden.bs.collapse":"renderChevrons","show.bs.collapse":"renderChevrons","hide.bs.collapse":"renderChevrons"},afterRender:function(){this.$el.collapse(),this.renderChevrons()},onShown:function(e){if("function"==typeof this.options.onShown){var t=e?$(e.target).attr("id"):null;this.options.onShown(t)}this.renderChevrons()},renderChevrons:function(){this.$(".card-header[data-target]").each(function(){var e,t=$(this),i=t.data("target"),s=$(i);t.css("position","relative"),0===_.size(t.find(".chevron"))?(e=$("<span />",{class:"chevron fal fa-chevron-down position-absolute right-10p top-35 fs-20 text-dark"}),t.append(e)):e=t.find(".chevron"),e.removeClass(s.hasClass("show")?"fa-chevron-down":"fa-chevron-up"),e.addClass(s.hasClass("show")?"fa-chevron-up":"fa-chevron-down")})}}),PJQ.colors={},PJQ.colors.ColorPicker=function(){function i(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,i),this.$el=e,this.options=_.defaults(t,{format:"auto"}),this.initPicker()}return _createClass(i,[{key:"initPicker",value:function(){this.$el.colorpicker(this.options).on("change",_.bind(function(e){"function"==typeof this.options.onChange&&this.options.onChange(e.value)},this))}},{key:"getColor",value:function(){return this.$el.colorpicker("getValue")}},{key:"setColor",value:function(e){return this.$el.colorpicker("setValue",e)}}]),i}(),PJQ.colors.SimpleColorPicker=function(){function i(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,i),this.colors=[{hex:PJQ.constants.colors.BLUE,name:"Blue"}
1,{hex:PJQ.constants.colors.PURPLE,name:"Purple"},{hex:PJQ.constants.colors.PINK,name:"Pink"},{hex:PJQ.constants.colors.RED,name:"Red"},{hex:PJQ.constants.colors.ORANGE,name:"Orange"},{hex:PJQ.constants.colors.YELLOW,name:"Yellow"},{hex:PJQ.constants.colors.GREEN,name:"Green"},{hex:PJQ.constants.colors.CYAN,name:"Cyan"},{hex:PJQ.constants.colors.GRAY,name:"Gray"},{hex:PJQ.constants.colors.BLACK,name:"Black"}],this.$el=e,this.$picker=null,this.color=t.color?t.color:this.colors[0].hex,this.options=t,this.render()}return _createClass(i,[{key:"setColor",value:function(e){this.color=e,this.render()}},{key:"render",value:function(){var e=new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"color-picker");PJQ.templating.TemplateRenderer.renderTemplate(!0,e,this.$el,{colors:this.colors,color:this.color},_.bind(function(e){(this.$picker=e).find(".color-item").on("click",_.bind(this.colorPicked,this))},this))}},{key:"toggle",value:function(){this.$picker&&(this.$picker.hasClass("hidden")?this.$picker.removeClass("hidden"):this.$picker.addClass("hidden"))}},{key:"show",value:function(){this.$picker&&this.$picker.removeClass("hidden")}},{key:"hide",value:function(){this.$picker&&this.$picker.addClass("hidden")}},{key:"colorPicked",value:function(e){e.stopPropagation(),this.color=$(e.currentTarget).data("color"),"function"==typeof this.options.onColorPicked&&this.options.onColorPicked(this.color),this.hide()}},{key:"remove",value:function(e){this.$picker&&0<this.$picker.length&&this.$picker.remove()}}]),i}(),PJQ.views.comments={},PJQ.views.comments.CommentsModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-add-comment"),onAddComment:null,onCancel:null},events:{"keyup .textarea-comment":"commentChanged","click .btn-add-comment":"addComment"},commentChanged:function(){this.$(".btn-add-comment").prop("disabled",0===_.size(this.$(".textarea-comment").val()))},addComment:function(){"function"==typeof this.options.onAddComment&&this.options.onAddComment(this.$(".textarea-comment").val()),this.removeModal()}}),PJQ.models.companies={},PJQ.models.companies.UserLimits=PJQ.models.BaseModel.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"userlimits"}])}}),PJQ.compression={encode:{delta:function(e){return(e=e.sort(function(e,t){return e-t})).reduce(function(e,t){var i=t-e.lastValue;return e.encoded.push(isNaN(i)?t:i),e.lastValue=t,e},{encoded:[]}).encoded},runLength:function(e){var s=_.size(e);return e.reduce(function(e,t,i){return i===s-1?e.lastValue!==t?(isNaN(e.lastValue)||(e.encoded.push(1<e.multiple?e.multiple.toString()+"_"+e.lastValue.toString():e.lastValue.toString()),e.multiple=1),e.encoded.push(t.toString())):(e.multiple++,e.encoded.push(e.multiple.toString()+"_"+t.toString())):e.lastValue===t?e.multiple++:isNaN(e.lastValue)||(e.encoded.push(1<e.multiple?e.multiple.toString()+"_"+e.lastValue.toString():e.lastValue.toString()),e.multiple=1),e.lastValue=t,e},{encoded:[],multiple:1}).encoded}},decode:{}},PJQ.models.contacts={},PJQ.collections.contacts={},PJQ.views.contacts={},PJQ.helpers.contacts={getContactAnchor:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};null!=e.contact&&("backboneModel"===PJQ.helpers.objectHelpers.refinedType(e.contact,!0)?(e.id=null!=e.contact.get("id")?e.contact.get("id"):e.contact.id,e.useCompanyName&&null!=e.contact.get("companyName")?e.name=e.contact.get("companyName"):e.name=e.contact.get("contactName")):(e.id=e.contact.id,e.useCompanyName&&null!=e.contact.companyName?e.name=e.contact.companyName:e.name=e.contact.contactName)),0==_.size(e.name)&&(e.name="(No Contact Name)");var t=PJQ.app.session.hasPermission("contacts.canView");return t&&null!=PJQ.app.session.project&&PJQ.app.session.project.get("masterUserId")!==PJQ.app.session.get("masterUserId")&&(t=!1),null!=e.id&&0!==e.id&&(null!=PJQ.app.session.user&&-e.id===PJQ.app.session.user.id||t)?'<a href="javascript:void(0)" class="font-weight-normal watch-contact-edit contact-name text-primary" data-contact-id="'.concat(e.id.toString(),'">').concat(e.name,"</a>"):"<span>"+e.name+"</span>"}},PJQ.models.contacts.Company=PJQ.models.BaseModel.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"companies",value:this.id}])},beforeConstruct:function(e){e&&null!=e.groups&&this.parseContactData(e)},beforeInit:function(){this.on("change:userTypeId",function(){if(null!=PJQ.app.session){var e=this.get("userTypeId");null!=e?(this.userType=PJQ.app.session.userTypes.get(e),null===this.userType&&(this.userType=PJQ.app.session.userTypes.getDefault(this.id<0))):this.userType=PJQ.app.session.userTypes.getDefault(this.id<0)}})},parse:function(e){return this.parseContactData(e),this.parseAttachmentData(e),e},parseContactData:function(e){this.contacts=new PJQ.collections.contacts.Contacts(e?e.contacts:null)},parseAttachmentData:function(e){this.attachments=new PJQ.collections.files.Files(e?e.attachments:null)},getGroups:function(){var t=[],i=[];return _.each(this.contacts.models,function(e){_.each(e.groups.models,function(e){-1===i.indexOf(e.id)&&(i.push(e.id),t.push(e))})}),t},checkHasGroup:function(t){var i=!1;return _.each(this.contacts.models,function(e){i=i||e.checkHasGroup(t)}),i},beforeSave:function(){this.set({attachments:this.attachments.getChangedModels()})},fetchERPObject:function(t){var i=this;null!=this.get("externalObject")||this.externalObjectFetched?t(this.get("externalObject")):(this.externalObjectFetched=!0,new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.id},{endpoint:"erpobject"}]),isAPIv2:!0}).get().done(function(e){null!=e&&i.set({externalObject:e},{silent:!0}),"function"==typeof t&&t(i.get("externalObject"))}).fail(function(){"function"==typeof t&&t(null)}))},erpSyncStatus:function(){0<arguments.length&&void 0!==arguments[0]&&arguments[0];var e=this.get("externalObject");
1if(null==e)return 0;var t=this.get("modifiedOn"),i="number"==typeof e.status?e.status:0;return null!=this.contacts&&(t=_.min(_.union([t],_.map(this.contacts.models,function(e){var t=e.get("modifiedOn");return t?new Date(t):null})))),i!==PJQ.constants.integrations.erp.syncStatuses.REVIEWING&&i!==PJQ.constants.integrations.erp.syncStatuses.APPROVED&&t>new Date(e.lastSync)?PJQ.constants.integrations.erp.syncStatuses.STALE:i},unlinkERP:function(i){this.id&&0!==this.id&&new PJQ.ajax.Request({endpoint:"/erp/vendors/".concat(this.id,"/unlink"),isAPIv2:!0}).post().done(_.bind(function(){this.set("externalObject",null),"function"==typeof i&&i(!0)},this)).fail(_.bind(function(e){var t;"function"==typeof i&&(t=null!=e.responseJSON?e.responseJSON.type:null,i(!1,t))},this))}}),PJQ.models.contacts.Contact=PJQ.models.contacts.Company.extend({defaults:{type:"contact"},endpoint:function(e){var t=[];return e&&e.approve&&t.push({parameter:"approve",value:!0}),PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.id}],t)},sendPasswordReset:function(t){PJQ.helpers.users.sendPasswordReset(this.get("username"),function(e){"function"==typeof t&&t(e)})},parseContactData:function(e){if(null!=e){var t=this instanceof PJQ.models.users.User||this.id<0;null!=PJQ.app.session&&(null!=e.userTypeId&&(this.userType=PJQ.app.session.userTypes.get(e.userTypeId)),null==this.userType&&(!t&&PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_PREVENT_DEFAULT_USER_TYPE)||(this.userType=PJQ.app.session.userTypes.getDefault(t),null!=this.userType&&(e.userTypeId=this.userType.id)))),null!=e.user&&(this.user=new PJQ.models.users.User(e.user)),null==this.approvals&&(this.approvalUpdates=new PJQ.collections.contacts.ApprovalUpdates(e.approvalUpdates)),null==this.groups?this.groups=new PJQ.collections.groups.Groups(e.groups,{groupLevels:PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS)}):(null!=e.groups&&(e.groups=e.groups),this.groups.reset(0<_.size(e.groups)?e.groups:null),this.groups.options.groupLevels=PJQ.app.session?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS):1),this.workAreas?this.workAreas.reset(e.workAreas):this.workAreas=new PJQ.collections.workAreas.ContactWorkAreas(e.workAreas,{contactId:e.id})}else{var i=this instanceof PJQ.models.users.User||this.id<0;!i&&PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_PREVENT_DEFAULT_USER_TYPE)||(this.userType=null!=PJQ.app.session?PJQ.app.session.userTypes.getDefault(i):null),this.groups=new PJQ.collections.groups.Groups,this.workAreas=new PJQ.collections.workAreas.ContactWorkAreas}},fetchEditHistory:function(e){null==this.editHistory&&(this.editHistory=new PJQ.collections.contacts.EditHistory(null,{contact:this})),this.editHistory.fetch({success:_.bind(function(){e(this.editHistory)},this)})},fetchCompanyERPObject:function(t){null!=this.get("companyExternalObject")||this.companyErpObjectFetched?t(this.get("companyExternalObject")):(this.companyErpObjectFetched=!0,new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("contactCompanyId")},{endpoint:"erpobject"}]),isAPIv2:!0}).get().done(_.bind(function(e){null!=e&&this.set({companyExternalObject:e},{silent:!0}),"function"==typeof t&&t(this.get("companyExternalObject"))},this)).fail(function(){"function"==typeof t&&t(null)}))},externalId:function(){var e;return null!=(e=0<arguments.length&&void 0!==arguments[0]&&arguments[0]?this.get("companyExternalObject"):this.get("externalObject"))&&"string"==typeof e.externalId?e.externalId:null},erpSyncStatus:function(){var e;if(null==(e=0<arguments.length&&void 0!==arguments[0]&&arguments[0]?this.get("companyExternalObject"):this.get("externalObject")))return 0;var t="number"==typeof e.status?e.status:0;return t!==PJQ.constants.integrations.erp.syncStatuses.REVIEWING&&t!==PJQ.constants.integrations.erp.syncStatuses.APPROVED&&new Date(this.get("modifiedOn"))>new Date(e.lastSync)?PJQ.constants.integrations.erp.syncStatuses.STALE:t},isERPSynced:function(){var e=0<arguments.length&&void 0!==arguments[0]&&arguments[0];return 0<_.size(this.externalId(e))},fetchSystemPermissions:function(e){var t;(t=this.isNew()?new PJQ.models.permissions.SystemPermissions({userTypeId:null!=this.userType?this.userType.id:null}):new PJQ.models.permissions.SystemPermissions({id:this.get("id")})).fetch({success:_.bind(function(){e(t)},this)})},fetchProjectPermissions:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,i=1<arguments.length?arguments[1]:void 0;(e=this.isNew()?new PJQ.models.permissions.ProjectPermissions({userTypeId:null!=this.userType?this.userType.id:null}):new PJQ.models.permissions.ProjectPermissions({id:this.get("id"),projectId:t})).fetch({success:_.bind(function(){i(e)},this)})},fetchSystemNotificationSettings:function(e){var t=null;(t=this.isNew()?new PJQ.models.notificationSettings.SystemNotificationSettings({userTypeId:this.get("userTypeId")}
1):new PJQ.models.notificationSettings.SystemNotificationSettings({id:this.get("id")})).fetch({success:_.bind(function(){e(t)},this)})},fetchProjectNotificationSettings:function(e,t){var i=null;(i=this.isNew()?new PJQ.models.notificationSettings.ProjectNotificationSettings({userTypeId:this.get("userTypeId"),projectId:e}):new PJQ.models.notificationSettings.ProjectNotificationSettings({id:this.get("id"),projectId:e})).fetch({success:_.bind(function(){t(i)},this)})},unlinkUser:function(e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.id},{endpoint:"user"}])}).delete().done(_.bind(function(){this.userid=null,this.username=null,this.user=null,"function"==typeof e&&e()},this)).fail(_.bind(function(e,t,i){},this))},copyContact:function(t){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.id},{endpoint:"copy"}])}).post().done(_.bind(function(e){"function"==typeof t&&t(e)},this)).fail(_.bind(function(e,t,i){},this))},getVcard:function(){PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.id},{endpoint:"vcard"}]))},showProjectHistory:function(){new PJQ.views.projects.ProjectParticipantHistoryModal({contactId:this.get("contactId")})},sendUpdater:function(e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("contactId")},{endpoint:"updater"}])}).post().done(_.bind(function(){e()},this)).fail(function(e,t,i){})},exportExcel:function(){PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.id},{endpoint:"export"}]))},beforeSave:function(){var e=this.get("contactCustomFieldValuesFlat");if(0<_.size(e)){var i=[];_.each(e,function(e,t){i.push({fieldNumber:e,value:t})}),this.set({contactCustomFieldValues:i,contactCustomFieldValuesFlat:null})}var t=this.get("companyCustomFieldValuesFlat");if(0<_.size(t)){var s=[];_.each(t,function(e,t){s.push({id:t,value:e})}),this.set({companyCustomFieldValues:s,contactCustomFieldValuesFlat:null})}this.groups&&this.set({groups:_.map(this.groups.models,function(e){return{groupId:e.id,isDeleted:e.get("isDeleted")}})}),this.workAreas&&this.set({workAreas:_.map(this.workAreas.models,function(e){return{contactWorkAreaId:e.id,workAreaId:e.get("workAreaId"),isDeleted:e.get("isDeleted")}})}),null!=this.userType&&this.set("userTypeId",this.userType.id)},approve:function(e){this.set("approvalUpdates",this.approvalUpdates?this.approvalUpdates.toJSON():null),this.save(null,{urlOptions:{approve:!0},success:_.bind(function(){this.set("isApprovalRequired",!1),e()},this),error:_.bind(e,this)})},addCompanyCustomFieldValue:function(t){this.attributes.companyCustomFieldValues=_.filter(this.attributes.companyCustomFieldValues,function(e){return t.id!==e.id}),this.attributes.companyCustomFieldValues.push(t)},addContactCustomFieldValue:function(){this.attributes.contactCustomFieldValues=_.filter(this.attributes.contactCustomFieldValues,function(e){return value.id!==e.id}),this.attributes.contactCustomFieldValues.push(value)},mergeCustomFields:function(){}}),PJQ.models.contacts.EditHistoryItem=PJQ.models.BaseModel.extend({idAttribute:"auditId"}),PJQ.models.contacts.ApprovalUpdates=PJQ.models.BaseModel.extend({idAttribute:"id"}),PJQ.models.contacts.ContactCustomField=PJQ.models.customFields.CustomField.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"contactcustomfields",value:this.id}])}}),PJQ.models.contacts.CompanyCustomField=PJQ.models.customFields.CustomField.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"companycustomfields",value:this.id}])}}),PJQ.models.contacts.CompanyPhoto=PJQ.models.BaseModel.extend({idAttribute:"companyPhotoId",endpoint:function(){return 0<_.size(this.get("profileKey"))?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"profiles",value:this.get("profileKey")},{endpoint:"companyphotos",value:this.id}]):0<this.get("contactCompanyId")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("contactCompanyId")},{endpoint:"photos",value:this.id}]):void 0}}),PJQ.models.contacts.ContactFieldSetting=PJQ.models.BaseModel.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"fields"}])}}),PJQ.models.contacts.ContactGroup=PJQ.models.BaseModel.extend({defaults:{isAPIv2:!0},idAttribute:"groupId"}),PJQ.collections.contacts.ContactFieldSettings=PJQ.collections.BaseCollection.extend({model:PJQ.models.contacts.ContactFieldSetting,endpoint:function(){var e;return e=0<this.options.masterUserId?[{parameter:"masterUserId",value:this.options.masterUserId}]:null,PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"fields"}],e)}}),PJQ.collections.contacts.Contacts=PJQ.collections.BaseCollection.extend({model:PJQ.models.contacts.Contact,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"}])},filteredByGroups:function(t){var i=PJQ.collections.contacts.Contacts();return _.each(this.models,function(e){e.checkHasGroup(t)&&i.add(e)}),i}}),PJQ.collections.contacts.ContactInfoList=PJQ.collections.BaseCollection.extend({model:PJQ.models.contacts.Contact,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"list"}],[{parameter:"contactIds",value:this.options.contactIds}])}}),PJQ.collections.contacts.EditHistory=PJQ.collections.BaseCollection.extend({model:PJQ.models.contacts.EditHistoryItem,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.options.contact.
1id},{endpoint:"edithistory"}])}}),PJQ.collections.contacts.CompanyPhotos=PJQ.collections.BaseCollection.extend({model:PJQ.models.contacts.CompanyPhoto,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("contactCompanyId")},{endpoint:"photos"}])}}),PJQ.collections.contacts.ContactCustomFields=PJQ.collections.BaseCollection.extend({model:PJQ.models.contacts.ContactCustomField,options:{masterUserId:null},endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"contactcustomfields"}],[{parameter:"masterUserId",value:this.options.masterUserId?this.options.masterUserId:PJQ.app.session.get("masterUserId")}])}}),PJQ.collections.contacts.CompanyCustomFields=PJQ.collections.customFields.CustomFields.extend({model:PJQ.models.contacts.CompanyCustomField,options:{masterUserId:null},endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"companycustomfields"}],[{parameter:"masterUserId",value:0<this.options.masterUserId?this.options.masterUserId:PJQ.app.session.get("masterUserId")}])}}),PJQ.collections.contacts.ApprovalUpdates=PJQ.collections.BaseCollection.extend({model:PJQ.models.contacts.ApprovalUpdates}),PJQ.collections.contacts.ContactGroups=PJQ.collections.BaseCollection.extend({defaults:{isAPIv2:!0},model:PJQ.models.contacts.ContactGroup,endpoint:function(){var e=[];return this.options.projectId&&e.push({parameter:"projectId",value:this.options.projectId}),PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.options.contactId},{endpoint:"groups"}],e)}}),PJQ.views.contacts.BaseEditContactView=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"contact-edit-base"),subTemplates:{sso:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"user-edit-sso")},canEdit:!0,alert:null,onSave:null,onCancel:null,onDelete:null},events:{"click .btn-edit-permissions":"editPermissions","click .btn-edit-notifications":"editNotifications","change .contact-edit-phone,.contact-edit-fax,.contact-edit-cell":"formatPhone","keydown .contact-edit-phone-ext":"numbersOnly","keyup .contact-edit-phone-ext":"numbersOnly","click .btn-unlock-user":"unlockUser","click .btn-unlink-user":"unlinkContactUser","click .btn-send-user-reg":"sendSignUp","click .btn-send-password-reset":"sendPasswordReset","click .btn-screening-request-contact":"newScreeningRequest","click .contact-edit-add":"addNew","click .contact-edit-cancel":"cancel","click .contact-edit-save":"save","click .contact-edit-save-and-add-project":"saveAndAddToProject","click .contact-edit-delete":"delete","change .cb-sso-enabled":"userSSOChanged"},beforeFirstRender:function(){var e=this;this.options.project=this.options.project?this.options.project:PJQ.app.session.project;var t=this.options.project?this.options.project.preferences:PJQ.app.session.preferences,i=this.model&&(this.model.get("id")<0||this.model instanceof PJQ.models.users.User);this.options.fieldSettingsEnabled||(this.options.fieldSettingsEnabled=i?t.hasPref(PJQ.constants.preferenceTypes.ENABLE_USER_FIELD_SETTINGS):t.hasPref(PJQ.constants.preferenceTypes.ENABLE_CONTACT_FIELD_SETTINGS)),0<this.options.masterUserId||null!=this.options.project&&(this.options.masterUserId=this.options.project.get("masterUserId"));var s,n=function(){i?PJQ.app.session.fetchUserCustomFields(e.options.masterUserId,_.bind(function(e){this.userCustomFields=e,PJQ.app.session.fetchSSOProviders(_.bind(function(e){this.ssoProviders=e,this.render()},this))},e)):(e.render(),PJQ.app.session.fetchCompanyCustomFields(e.options.masterUserId,_.bind(function(e){this.companyCustomFields=e,this.isRendered&&this.renderCompanyCustomFields()},e)),PJQ.app.session.fetchContactCustomFields(e.options.masterUserId,_.bind(function(e){this.contactCustomFields=e,this.isRendered&&this.renderContactCustomFields()},e)))};s=function(){var t;t=function(){e.options.fieldSettingsEnabled?i?PJQ.app.session.fetchUserFieldSettings(e.options.masterUserId,_.bind(function(e){this.coreFieldSettings=e,n()},e)):PJQ.app.session.fetchContactFieldSettings(e.options.masterUserId,_.bind(function(e){this.coreFieldSettings=e,n()},e)):n()},PJQ.app.session.fetchERPIntegration(_.bind(function(e){this.erpIntegration=e,null!=this.erpIntegration?this.model.fetchCompanyERPObject(_.bind(function(){t()},this)):t()},e))},null==e.model?e.model=new PJQ.models.contacts.Contact({id:e.options.contactId,country:"US"}):0===_.size(e.model.get("country"))&&e.model.set("country","US"),e.model.isNew()||e.model.isFetched?(e.listenTo(e.model,"sync",e.render),s()):e.model.fetch({success:_.bind(function(){this.listenTo(this.model,"sync",this.render),s()},e)})},beforeRender:function(){var e=null!=this.company?this.company:this.model;if(null==e||this.options.fieldSettingsEnabled&&null==this.coreFieldSettings)return!1;this.initPermissionOptions(),this.initViewOptions(),this.listenTo(e,"change:isActive",function(){this.render()}),this.listenTo(e,"change:itbUser change:pmUser",function(){this.featuresDidChange=!0}),this.featuresDidChange=!1,this.options.showScreenings=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_SCREENINGS)},renderERP:function(){var e,t=this,i=(e=null!=this.company?this.company:this.model)instanceof PJQ.models.users.User||e instanceof PJQ.models.projectContacts.ProjectContact&&this.model.id<0;if(null!=this.erpIntegration&&!i){var s=this.$el.closest(".modal-content");s.find(".erp-badge").html(PJQ.helpers.erp.getERPBadge(e.erpSyncStatus(),e.get("externalObject"))),PJQ.helpers.erp.renderERPButtons(s.find(".erp-sync"),{pushSupported:this.erpIntegration.hasAvailableAction(PJQ.
1constants.integrations.actions.PUSH_VENDORS),status:e.erpSyncStatus(!0),unlinkSupported:this.erpIntegration.hasAvailableAction(PJQ.constants.integrations.actions.UNLINK_VENDOR)}),s.find(".btn-push-erp").off().on("click",function(){return t.pushERP()}),s.find(".btn-undo-push-erp").off().on("click",function(){return t.undoPushERP()}),s.find(".btn-unlink-erp").off().on("click",function(){return t.unlinkERP()})}},pushERP:function(){var e=_asyncToGenerator(_regeneratorRuntime().mark(function e(){var t,i,s=this;return _regeneratorRuntime().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=this.erpIntegration&&this.erpIntegration.hasAvailableAction(PJQ.constants.integrations.actions.PUSH_VENDORS)){e.next=2;break}return e.abrupt("return");case 2:t=null!=this.company?this.company:this.model,i=function(){s.erpIntegration.pushVendor(t,function(){PJQ.notifications.notify.successNotify({message:"Company pushed to ERP"}),s.render()})},t.isNew()?this.save(function(){i()}):i();case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),undoPushERP:function(){var e=this,t=null!=this.company?this.company:this.model;null!=this.erpIntegration&&t.erpSyncStatus()===PJQ.constants.integrations.erp.syncStatuses.REVIEWING&&this.erpIntegration.undoPush(t,function(){PJQ.notifications.notify.successNotify({message:"Company removed from ERP approval"}),e.render()})},unlinkERP:function(){var i=this;null!=this.erpIntegration&&new PJQ.views.modals.YesNo({header:"Unlink from ERP",body:"Are you sure you want to unlink this Company from your ERP system?",onYes:function(){var t=new PJQ.Loader(i.$(".modal-content")),e=null!=i.company?i.company:i.model;i.erpIntegration.unlinkVendor(e,function(e){e&&(t.remove(),PJQ.notifications.notify.successNotify({message:"Company unlinked from ERP"}),i.render())})}})},initViewOptions:function(){var e=null!=this.company?this.company:this.model;this.options.groupLevels=null,(this.options.maxGroups=null)!=PJQ.app.session.project?(0<e.id&&(this.options.allowMultipleEmails=!PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.SUB_RESTRICT_SINGLE_EMAIL)),this.options.isAdmin||0<e.id&&this.options.isSelfEdit&&(this.options.allowMultipleEmails=!PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.SUB_RESTRICT_SINGLE_EMAIL)),this.options.prevailingWageLabel=PJQ.app.session.project.preferences.getPref(PJQ.constants.preferenceTypes.PREVAILING_WAGE_LABEL),this.options.groupLevels=PJQ.app.session.project.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS),this.options.maxGroups=PJQ.app.session.project.preferences.getPref(PJQ.constants.preferenceTypes.RESTRICT_GROUP_COUNT)):(this.options.prevailingWageLabel=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PREVAILING_WAGE_LABEL),this.options.groupLevels=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS),this.options.maxGroups=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.RESTRICT_GROUP_COUNT)),this.options.isAdmin&&!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_RSVP)&&(this.options.maxGroups=null)},initPermissionOptions:function(){this.options.enablePermissions=!0;var e=null!=this.company?this.company:this.model;if(this.options.isSelfEdit=!1,this.options.canModifyAttachments=!1,!e.isNew()){var t=null!=PJQ.app.session.user?PJQ.app.session.user.id:null,i=null!=PJQ.app.session.contact?PJQ.app.session.contact.id:null;(null!=t&&e.get("userId")===t||null!=i&&e.get("contactId")===i)&&(this.options.isSelfEdit=!0),0<e.id&&(this.options.canModifyAttachments=PJQ.app.session.hasPermission("contacts.canViewAttachments"))}this.options.isAdmin=!1,this.options.isPrequalVisible=!1,this.options.canEdit=!1,this.options.canModifyNotifications=!1,this.options.canViewCustomFields=!0,this.options.canEditCustomFields=!1;var s=e instanceof PJQ.models.users.User||e instanceof PJQ.models.projectContacts.ProjectContact&&e.id<0;e.isNew()?(this.options.canEdit=!0,this.options.canEditCustomFields=!0,this.options.isAdmin=0<PJQ.app.session.get("masterUserId"),this.options.canModifyNotifications=this.options.isAdmin&&PJQ.app.session.hasPermission("users.canModifyNotifications"),this.options.canModifyAttachments=!s&&PJQ.app.session.hasPermission("contacts.canViewAttachments")):this.options.isSelfEdit?(this.options.canEdit=!0,this.options.canEditCustomFields=!0,this.options.isAdmin=PJQ.app.session.hasPermission("settings.canManageUsers")&&null!=PJQ.app.session.user&&e.get("masterUserId")===PJQ.app.session.user.get("masterUserId"),this.options.canModifyNotifications=this.options.isAdmin&&PJQ.app.session.hasPermission("users.canModifyNotifications")):((s||e.id<0)&&PJQ.app.session.hasPermission("settings.canManageUsers")||0<e.id&&PJQ.app.session.hasPermission("contacts.isAdmin")||0<e.id&&PJQ.app.session.hasPermission("contacts.canEditContact"))&&e.get("masterUserId")===PJQ.app.session.get("masterUserId")?(this.options.canEdit=!0,this.options.canViewCustomFields=e.get("masterUserId")===PJQ.app.session.get("masterUserId"),this.options.canEditCustomFields=!0,this.options.isAdmin=(null==this.options.project||this.options.project.hasPermission("projectContacts.isAdmin"))&&e.get("masterUserId")===PJQ.app.session.get("masterUserId"),this.options.isPrequalVisible=!s&&e.get("masterUserId")===PJQ.app.session.get("masterUserId")&&PJQ.app.session.hasPermission("prequal.canView"),this.options.canModifyNotifications=this.options.isAdmin&&PJQ.app.session.hasPermission("users.canModifyNotifications")):39===e.get("masterUserId")&&(PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_DIRECTORY_EDIT)&&(this.options.canEdit=!0),this.options.canEditCustomFields=!0),this.options.isPrequalVisible=!e.isNew()&&!this.options.isSelfEdit&&!s&&e.get("masterUserId")===PJQ.app.session.get("masterUserId")&&PJQ.app.session.hasPermission("prequal.canView"),this.options.isCompanyUser=e instanceof PJQ.models.users.User||e.id<0},renderData:function(){return{isContact:0<this.model.get("id")||this.model.isNew()&&!(this.model instanceof PJQ.models.users.User),isUser:this.model.get("id")<0||this.model.isNew()&&this.model instanceof PJQ.models.users.User,model:this.model,userTypes:PJQ.app.session.userTypes.getByIsCompany(this.options.isCompanyUser),isUserTypeRequired:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_PREVENT_DEFAULT_USER_TYPE)&&this.options.isCompanyUser,prevailingWageLabel:this.options.prevailingWageLabel,checkFieldVisible:_.bind(this.checkFieldVisible,this),checkFieldRequired:_.bind(this.checkFieldRequired,this),maxGroups:this.options.maxGroups?this.options.maxGroups:0,isSelfEdit:this.options.isSelfEdit,alert:this.options.alert,enablePermissions:this.options.enablePermissions,canEdit:this.options.canEdit,canViewCustomFields:this.options.canViewCustomFields,canEditCustomFields:this.options.canEditCustomFields,ssoProviders:this.ssoProviders,isAdmin:this.options.isAdmin,isPrequalVisible:this.options.isPrequalVisible,canModifyNotifications:this.options.canModifyNotifications,canModifyAttachments:this.options.canModifyAttachments,userCustomFields:this.userCustomFields,showScreenings:this.options.showScreenings}},afterRender:function(){null==this.model||!this.model.isFetched&&!this.model.isNew()?new PJQ.Loader(this.$(".modal-body")):(null==this.options.masterUserId&&(this.options.masterUserId=this.model.get("masterUserId")),this.renderERP(),this.renderContact())},checkFieldRequired:function(e){if(!this.checkFieldVisible(e)||!this.options.canEdit)return!1;if(!this.options.isSelfEdit&&"userType"===e)return!0;
1if(null==this.coreFieldSettings){var t;switch(t=null!=PJQ.app.session.project?PJQ.app.session.project.preferences:PJQ.app.session.preferences,e){case"contactName":case"email":return!0;case"address1":case"address2":case"city":case"state":return!1;case"country":return!this.options.isAdmin&&t.hasPref(PJQ.constants.preferenceTypes.SUB_ADDRESS_REQUIRED)||this.options.isAdmin&&(t.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_CORE)||t.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_RSVP)&&t.hasPref(PJQ.constants.preferenceTypes.SUB_ADDRESS_REQUIRED));case"zip":return!this.options.isAdmin&&t.hasPref(PJQ.constants.preferenceTypes.SUB_ZIP_REQUIRED)||this.options.isAdmin&&(t.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_CORE)||t.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_RSVP)&&t.hasPref(PJQ.constants.preferenceTypes.SUB_ZIP_REQUIRED));case"phone":return!this.options.isAdmin||t.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_CORE)||t.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_RSVP)&&t.hasPref(PJQ.constants.preferenceTypes.DOWNLOAD_CONTACT_UPDATE_REQ);case"laborStatus":return this.checkFieldVisible(e)&&!t.hasPref(PJQ.constants.preferenceTypes.NO_REQUIRE_UNION_SUB)&&(!this.options.isAdmin||t.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_RSVP));case"groups":return!(this.model.get("id")<0||this.model.isNew()&&this.model instanceof PJQ.models.users.User)&&(t.hasPref(PJQ.constants.preferenceTypes.ALLOW_SUB_GROUP_EDIT_REQUIRED)&&(this.options.isSelfEdit||t.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_RSVP)))}}else{var i=this.coreFieldSettings.findWhere({fieldName:e});if(null!=i)return this.options.isAdmin?i.get("isRequiredAdmin"):i.get("isRequiredContact")}return!1},checkFieldVisible:function(e){if("title"===e&&null!=this.model&&(this.model.get("id")<0||this.model.isNew()&&this.model instanceof PJQ.models.users.User))return!1;if(this.options.isSelfEdit&&("userType"===e||"companyNotes"===e||"contactNotes"===e||"active"===e))return!1;if(!this.options.isSelfEdit&&"userType"===e)return!0;if(null==this.coreFieldSettings){var t,i;switch(t=null!=PJQ.app.session.project?PJQ.app.session.project.preferences:PJQ.app.session.preferences,e){case"sector":i=!t.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_HIDE_SECTOR);break;case"laborStatus":i=!0!==t.getPref(PJQ.constants.preferenceTypes.IS_HIDE_UNION_STATUS),this.options.isAdmin||i&&t.hasPref(PJQ.constants.preferenceTypes.CAN_EDIT_UNION_STATUS_SUB)&&(i=t.getPref(PJQ.constants.preferenceTypes.CAN_EDIT_UNION_STATUS_SUB));break;case"classifications":i=!1===t.getPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_HIDE_MINORITY_STATUS)&&(this.options.isAdmin||t.getPref(PJQ.constants.preferenceTypes.CAN_EDIT_MINORITY_CLASS_SUB));break;case"groups":i=!(this.model.get("id")<0||this.model.isNew()&&this.model instanceof PJQ.models.users.User);break;default:i=!0}return i}var s=this.coreFieldSettings.findWhere({fieldName:e});return null==s||(this.options.isSelfEdit?s.get("isVisibleContact"):s.get("isVisibleAdmin"))},renderContact:function(){var e,t,i,s=this;if(!1!==this.checkFieldVisible("userType")){var n=!(this.model instanceof PJQ.models.users.User||this.model.id<0)&&PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_PREVENT_DEFAULT_USER_TYPE)?null:null!=this.model.get("userTypeId")?this.model.get("userTypeId"):null;this.userTypePicker=new PJQ.inputs.Selectpicker({el:this.$(".contact-edit-user-type"),noneSelectedText:"Select Value",isIntChoices:!0,defaultValue:this.model.userType?this.model.userType.id:n,onChange:_.bind(function(e){this.model.set("userTypeId",e),this.model.userType=PJQ.app.session.userTypes.getById(e)},this)})}var o=new PJQ.inputs.StatePicker({el:this.$(".contact-edit-state"),country:null!==(e=this.model.get("country"))&&void 0!==e?e:null,defaultValue:null!==(t=this.model.get("state"))&&void 0!==t?t:null,size:20,onChange:function(e){s.model.set("state",e)}});new PJQ.inputs.CountryPicker({el:this.$(".contact-edit-country"),defaultValue:null!==(i=this.model.get("country"))&&void 0!==i?i:null,
1statePicker:o,zipInput:this.$(".contact-edit-zip"),enableInternational:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_INTERNATIONAL_COUNTRIES),size:20,onChange:function(e){s.model.set("country",e)}}),new PJQ.inputs.Selectpicker({el:this.$(".contact-edit-selection-status"),noneSelectedText:"Select Value",defaultValue:this.model.get("isAutoSelectDisabled"),onChange:_.bind(function(e){this.model.set("isAutoSelectDisabled","true"===e)},this)}),this.options.canEdit&&new PJQ.Binder(this.$el,this.model),PJQ.helpers.inputHelpers.inputMaskPhone(this.$(".contact-edit-phone")),PJQ.helpers.inputHelpers.inputMaskPhone(this.$(".contact-edit-fax")),PJQ.helpers.inputHelpers.inputMaskPhone(this.$(".contact-edit-cell")),this.renderLaborStatus(this.model),this.renderSector(this.model),this.renderMinority(this.model),0<this.$("#contactInfoCollapseContainer").length?new PJQ.views.collapse.BaseCollapse({el:this.$("#contactInfoCollapseContainer"),onShown:_.bind(function(e){switch(e){case"prequalCollapse":this.renderPrequal();break;case"screeningCollapse":this.renderScreenings();break;case"contactEditWorkAreasCollapse":null==this.workAreaMap||this.workAreaMap.options.contactId!==this.model.id?null!=this.model.workAreas&&this.renderWorkAreas():this.workAreaMap.refresh();break;case"companyAttachmentsCollapse":this.renderCompanyAttachments()}},this)}):this.renderWorkAreas(),this.model instanceof PJQ.models.users.User||!(0<this.model.id||this.model.isNew())||(null!=this.model.groups&&this.renderGroupSelector(),this.options.canViewCustomFields&&(this.renderCompanyCustomFields(),this.renderContactCustomFields())),(this.model.get("id")<0||this.model.isNew()&&this.model instanceof PJQ.models.users.User)&&(null!=this.model.groups&&this.checkFieldVisible("groups")&&this.renderGroupSelector(),this.options.canViewCustomFields&&this.renderUserCustomFields(),this.options.isAdmin&&this.renderSSO()),this.isRendered=!0},renderPrequal:function(){var t;if(PJQ.app.session.hasPermission("prequal.canView")&&PJQ.app.session.subscription.hasFeature("projectmessaging")){if(null==this.prequalEditor&&null!=(t=this.model.isNew()?_.find(this.company.contacts.models,function(e){return 0<e.id}):this.model.clone())){var i=this,s=null!=this.company?this.company:this.model,e=function(){PJQ.templating.TemplateRenderer.renderTemplate(!1,new PJQ.templating.Template(PJQ.constants.modules.PROFILE,"Screening-Editor-Dashboard"),i.$(".company-prequal-data"),{prequal:s.prequal,isAdmin:i.options.isAdmin,isPrequalVisible:i.options.isPrequalVisible},function(e){i.$(".company-prequal-data .prequal-export-pdf").click(function(){PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:t.get("contactId")},{endpoint:"prequal"},{endpoint:"export"}],[{parameter:"masterUserId",value:0<s.prequal.get("masterUserId")?s.prequal.get("masterUserId"):PJQ.app.session.preferences.hasPref("portalOwner")?PJQ.app.session.preferences.getPref("portalOwner"):PJQ.app.session.get("masterUserId")},{parameter:"isExcel",value:!1}]))}),i.$(".company-prequal-data .prequal-export-excel").click(function(){PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:t.get("contactId")},{endpoint:"prequal"},{endpoint:"export"}],[{parameter:"masterUserId",value:0<s.prequal.get("masterUserId")?s.prequal.get("masterUserId"):PJQ.app.session.preferences.hasPref("portalOwner")?PJQ.app.session.preferences.getPref("portalOwner"):PJQ.app.session.get("masterUserId")},{parameter:"isExcel",value:!0}]))}),i.prequalEditor=new PJQ.views.prequal.PrequalEditor({el:e.find(".screening-dashboard-body"),isAdmin:i.model.get("masterUserId")===PJQ.app.session.user.get("masterUserId"),canEdit:PJQ.app.session.hasPermission("prequal.canEdit"),clients:new PJQ.collections.screenings.ScreeningClients,navContainer:e.find(".screening-dashboard-nav-extend"),preferences:PJQ.app.session.preferences,model:s.prequal,contact:t,onContactChange:function(e,t){e.id===i.model.id&&(i.model.groups=e.groups,i.model.workAreas=e.workAreas,i.model.set(t.prop,t.value),s.set(t.prop,t.value),i.renderContact())},onCompanyCustomFieldChange:function(t){null!=i.companyCustomFieldsForm&&null!=t&&0<t.id&&(_.each(i.model.attributes.companyCustomFieldValues,function(e){e.id===t.id&&(e.value=t.value)}),i.companyCustomFieldsForm.setValue(t.id,t.value))},onContactCustomFieldChange:function(t){null!=i.contactCustomFieldsForm&&null!=t&&0<t.id&&(_.each(i.model.attributes.contactCustomFieldValues,function(e){e.id===t.id&&(e.value=t.value)}),i.contactCustomFieldsForm.setValue(t.id,t.value))}})})};null!=s.prequal&&s.prequal.isFetched?(s.prequal.contact=t,e()):(s.prequal=new PJQ.models.prequal.Prequal({contact:t}),s.prequal.fetch({success:function(){e()}}))}}else this.$(".prequal-section").remove()},renderScreenings:function(){if(this.options.isAdmin){var e=null;if(this.model.isNew()){if(null!=this.company){var t=_.find(this.company.contacts.models,function(e){return 0<e.id});null!=t&&(e=t.id)}}else e=this.model.id;if(null==this.screenings&&null!=e){var i=this;this.screenings=new PJQ.models.screenings.ScreeningClient({masterUserId:PJQ.app.session.get("masterUserId"),contactId:e}),this.screenings.fetch({success:_.bind(function(){var e=this.$(".contact-screenings");0<_.size(this.screenings.categories)?this.screeningEditor=new PJQ.views.screenings.ScreeningClientEditor({el:e,canManage:!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_PROQUAL_CUSTOMER),isAdmin:i.options.isAdmin,model:this.screenings}):(e.empty(),new PJQ.Alert(e,{text:"This contact has not been requested to complete any screening items"}))},this)})}}else this.$(".screening-section").remove()},newScreeningRequest:function(){new PJQ.views.addressbook.ProqualRequestModal({contactId:this.model.id,onSend:_.bind(function(){this.screenings=null,this.renderScreenings()},this)})},renderCompanyAttachments:function(){var e;PJQ.app.session.hasPermission("contacts.canViewAttachments")&&(null==this.companyAttachmentFileUploader&&(PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.SORT_COMPANY_ATTACHMENTS)&&(e=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.SORT_COMPANY_ATTACHMENTS)),this.companyAttachmentFileUploader=new PJQ.views.files.FileUploaderGrid({el:this.$(".company-documents"),collection:this.model.attachments,sortBy:e?e.sortBy:null,sortDirection:e?e.sortBy?"asc":"desc":null,previewImageDimension:150,canUpload:PJQ.app.session.hasPermission("contacts.canEditContact"),canDownloadAll:!0,onSuccess:_.bind(function(){this.model.isDirty=!0},this),onDelete:_.bind(function(e,t){0<e.id?e.set("isDeleted",!0):e.destroy(),this.model.isDirty=!0,t()},this)})))},renderLaborStatus:function(r){if(this.checkFieldVisible("laborStatus")&&null!=r){var e=[];r.get("isUnion")&&e.push("union"),r.get("isNonUnion")&&e.push("nonUnion"),r.get("isPrevailingWage")&&e.push("prevWage"),new PJQ.inputs.Selectpicker({el:this.$(".contact-edit-labor-status"),noneSelectedText:"Select Value",isMultiple:!0,isDisabled:!this.options.canEdit,defaultValue:e,onCh
1ange:_.bind(function(e){var t,i,s,n,o,a;(r.set({isUnion:-1!==(null!==(t=null==e?void 0:e.indexOf("union"))&&void 0!==t?t:-1),isNonUnion:-1!==(null!==(i=null==e?void 0:e.indexOf("nonUnion"))&&void 0!==i?i:-1),isPrevailingWage:-1!==(null!==(s=null==e?void 0:e.indexOf("prevWage"))&&void 0!==s?s:-1)}),null!=this.company)&&this.company.set({isUnion:-1!==(null!==(n=null==e?void 0:e.indexOf("union"))&&void 0!==n?n:-1),isNonUnion:-1!==(null!==(o=null==e?void 0:e.indexOf("nonUnion"))&&void 0!==o?o:-1),isPrevailingWage:-1!==(null!==(a=null==e?void 0:e.indexOf("prevWage"))&&void 0!==a?a:-1)})},this)})}},renderSector:function(t){if(this.checkFieldVisible("sector")&&null!=t){var e=[];t.get("isPrivateSector")&&e.push("privateSector"),t.get("isPublicSector")&&e.push("publicSector"),new PJQ.inputs.Selectpicker({el:this.$(".contact-edit-sector"),noneSelectedText:"Select Value",isMultiple:!0,isDisabled:!this.options.canEdit,defaultValue:e,onChange:_.bind(function(e){t.set({isPrivateSector:-1!==e.indexOf("privateSector"),isPublicSector:-1!==e.indexOf("publicSector")}),null!=this.company&&this.company.set({isPrivateSector:-1!==e.indexOf("privateSector"),isPublicSector:-1!==e.indexOf("publicSector")})},this)})}},renderMinority:function(t){if(this.checkFieldVisible("classifications")&&null!=t){var e=[];t.get("isDBE")&&e.push("isDBE"),t.get("isDVBE")&&e.push("isDVBE"),t.get("isMBE")&&e.push("isMBE"),t.get("isSBE")&&e.push("isSBE"),t.get("isSDVBE")&&e.push("isSDVBE"),t.get("isWBE")&&e.push("isWBE"),0===e.length&&e.push("NA"),this.minorityClassSelectPicker=new PJQ.inputs.Selectpicker({el:this.$(".contact-edit-minority-class"),noneSelectedText:"Select Value",isMultiple:!0,isDisabled:!this.options.canEdit,defaultValue:e,exclusiveChoices:"NA",onChange:_.bind(function(e){t.set({isDBE:-1!==e.indexOf("isDBE"),isDVBE:-1!==e.indexOf("isDVBE"),isMBE:-1!==e.indexOf("isMBE"),isSBE:-1!==e.indexOf("isSBE"),isSDVBE:-1!==e.indexOf("isSDVBE"),isUDBE:-1!==e.indexOf("isUDBE"),isVSBE:-1!==e.indexOf("isVSBE"),isWBE:-1!==e.indexOf("isWBE")}),null!=this.company&&this.company.set({isDBE:-1!==e.indexOf("isDBE"),isDVBE:-1!==e.indexOf("isDVBE"),isMBE:-1!==e.indexOf("isMBE"),isSBE:-1!==e.indexOf("isSBE"),isSDVBE:-1!==e.indexOf("isSDVBE"),isUDBE:-1!==e.indexOf("isUDBE"),isVSBE:-1!==e.indexOf("isVSBE"),isWBE:-1!==e.indexOf("isWBE")})},this)})}},renderGroupSelector:function(){var e=this.$(".contact-edit-groups");0<_.size(e)&&(null!=this.groupSelector&&this.groupSelector.remove(),this.groupSelector=new PJQ.views.groups.GroupSelector({el:this.$(".contact-edit-groups"),contactId:null!=this.model?this.model.id:null,groupLevels:this.options.groupLevels,groupUserId:this.options.masterUserId,selectedGroups:this.model.groups,maxGroups:this.options.maxGroups,detectGroupLevels:this.options.detectGroupLevels,isAdmin:this.options.canEdit&&!this.options.isSelfEdit&&!(PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_DOCUMENT_CLERK)||PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_DIRECTORY_EDIT)),canEdit:this.options.canEdit,onGroupSelected:_.bind(this.groupsChanged,this)}))},groupsChanged:function(e){this.model.isDirty=!0},sendPasswordReset:function(){this.model.sendPasswordReset(_.bind(function(){this.$(".btn-send-password-reset").closest("div").html('<div class="fs-16 text-success"><i class="fal fa-check mr-1"></i>Password Reset Sent</div>')},this))},unlinkContactUser:function(){null!=this.model.user&&this.model.unlinkUser(_.bind(function(){PJQ.notifications.notify.successNotify({message:"User successfully unlinked from contact"}),this.render()},this))},sendSignUp:function(){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.model.id},{endpoint:"requestsignup"}])}).post().done(_.bind(function(){PJQ.notifications.notify.successNotify({message:"Sign up link sent"}),this.$("button.btn-send-user-reg").remove(),this.$(".sign-up-alert").replaceWith('<div class="fs-16 text-success"><i class="fal fa-check mr-1"></i>Sign-Up Link Sent</div>')},this)).fail(function(e,t,i){})},userSSOChanged:function(){this.model.set("isSSOEnabled",this.$(".cb-sso-enabled").prop("checked")),this.renderSSO()},renderSSO:function(){this.model.get("isSSOEnabled")?this.$(".btn-send-password-reset").addClass("hidden"):this.$(".btn-send-password-reset").removeClass("hidden"),this.renderSubTemplate(!1,this.options.subTemplates.sso,this.$(".user-sso"),{model:this.model,ssoProviders:this.ssoProviders},_.bind(function(){this.tagSelectPicker=new PJQ.inputs.Selectpicker({el:this.$(".select-sso-provider"),defaultValue:this.model.get("samlId"),noneSelectedText:"Default Provider",isIntChoices:!0,onChange:_.bind(function(e){this.model.set("samlId",e)},this)})},this))},renderUserCustomFields:function(){var e=this.$(".user-custom-fields");
1if(null!=this.userCustomFields&&0<_.size(this.userCustomFields.models)){this.$(".user-custom-fields-outer").removeClass("hidden"),null!=_.find(this.userCustomFields.models,function(e){return e.get("isRequired")},this)&&this.$(".user-custom-fields-header").html("Additional User Details "+PJQ.constants.markup.requiredAst);var s=[];_.each(this.userCustomFields.models,function(t){var e=_.find(this.model.get("userCustomFieldValues"),function(e){return e&&e.id===t.get("id")},this);if(0<_.size(t.get("defaultValue"))&&(null==e||null==e.value||"number"!=typeof e.value&&"boolean"!=typeof e.value&&0===_.size(e.value))){var i;switch(t.get("fieldType")){case"CHOICE":case"CHOICEMULTIPLE":i=parseInt(t.get("defaultValue"));break;case"BOOL":i="true"===t.get("defaultValue");break;default:i=t.get("defaultValue")}null!=e?e.value=i:e={id:t.get("id"),fieldNumber:t.get("fieldNumber"),value:i}}null!=e&&s.push(e)},this),this.model.set({userCustomFieldValues:s},{silent:!0}),this.userCustomFieldsForm=new PJQ.views.customFields.CustomFieldsForm({el:e,isAdmin:!0,isEdit:this.options.canEdit,collection:this.userCustomFields,model:this.model,fieldValues:this.model.get("userCustomFieldValues"),onChange:_.bind(function(){this.model.isDirty=!0},this)})}},renderCompanyCustomFields:function(){var e=this.$(".company-custom-fields");if(null!=this.companyCustomFields&&(0<this.model.id||this.model.isNew())&&0<e.length&&0<_.size(_.filter(this.companyCustomFields.models,_.bind(function(e){return!this.options.isSelfEdit||e.get("isVisibleInRSVP")},this)))){this.$(".company-custom-fields-outer").removeClass("hidden"),null!=_.find(this.companyCustomFields.models,function(e){return!this.options.isAdmin&&e.get("isRequired")||e.get("isRequiredAdmin")},this)&&this.$(".company-custom-fields-header").html("Additional Company Details "+PJQ.constants.markup.requiredAst);var t=null!=PJQ.app.session.user&&(this.model.get("masterUserId")===PJQ.app.session.user.get("masterUserId")||this.model.isNew());if(null!=this.companyCustomFields){var s=[];_.each(this.companyCustomFields.models,function(t){var e=_.find(this.model.get("companyCustomFieldValues"),function(e){return e&&e.id===t.get("id")},this);if(0<_.size(t.get("defaultValue"))&&(null==e||null==e.value||"number"!=typeof e.value&&"boolean"!=typeof e.value&&0===_.size(e.value))){var i;switch(t.get("fieldType")){case"CHOICE":case"CHOICEMULTIPLE":i=parseInt(t.get("defaultValue"));break;case"BOOL":i="true"===t.get("defaultValue");break;default:i=t.get("defaultValue")}null!=e?e.value=i:e={id:t.get("id"),fieldNumber:t.get("fieldNumber"),value:i}}null!=e&&s.push(e)},this),this.model.set({companyCustomFieldValues:s},{silent:!0})}this.companyCustomFieldsForm=new PJQ.views.customFields.CustomFieldsForm({el:e,isAdmin:t,isEdit:this.options.canEditCustomFields,collection:this.companyCustomFields,fieldValues:this.model.get("companyCustomFieldValues"),onChange:_.bind(function(){this.model.isDirty=!0},this)})}},renderContactCustomFields:function(){var e=this.$(".contact-custom-fields");if(null!=this.contactCustomFields&&0<e.length&&0<_.size(_.filter(this.contactCustomFields.models,_.bind(function(e){return!this.options.isSelfEdit||e.get("isVisibleInRSVP")},this)))){this.$(".contact-custom-fields-outer").removeClass("hidden"),null!=_.find(this.contactCustomFields.models,function(e){return!this.options.isAdmin&&e.get("isRequired")||e.get("isRequiredAdmin")},this)&&this.$(".contact-custom-fields-header").html("Additional Contact Details "+PJQ.constants.markup.requiredAst);var t=null!=PJQ.app.session.user&&(this.model.get("masterUserId")===PJQ.app.session.user.get("masterUserId")||this.model.isNew());if(null!=this.contactCustomFields){var s=[];_.each(this.contactCustomFields.models,function(t){var e=_.find(this.model.get("contactCustomFieldValues"),function(e){return e&&e.id===t.get("id")},this);if(0<_.size(t.get("defaultValue"))&&(null==e||null==e.value||"number"!=typeof e.value&&"boolean"!=typeof e.value&&0===_.size(e.value))){var i;switch(t.get("fieldType")){case"CHOICE":case"CHOICEMULTIPLE":i=parseInt(t.get("defaultValue"));break;case"BOOL":i="true"===t.get("defaultValue");break;default:i=t.get("defaultValue")}
1null!=e?e.value=i:e={id:t.get("id"),fieldNumber:t.get("fieldNumber"),value:i}}null!=e&&s.push(e)},this),this.model.set({contactCustomFieldValues:s},{silent:!0})}this.contactCustomFieldsForm=new PJQ.views.customFields.CustomFieldsForm({el:e,isAdmin:t,isEdit:this.options.canEditCustomFields,collection:this.contactCustomFields,fieldValues:this.model.get("contactCustomFieldValues"),onChange:_.bind(function(){this.model.isDirty=!0},this)})}},renderWorkAreas:function(e){var t=this.$(".contact-edit-work-areas");0<_.size(t)&&(this.workAreaMap=new PJQ.views.workAreas.WorkAreaMap({el:t,collection:this.model.workAreas,isInline:!1,isEdit:this.options.canEdit,isSync:!1,contactId:this.model.id,onChange:_.bind(function(){this.model.isDirty=!0},this),onDelete:_.bind(function(){this.model.isDirty=!0},this),error:e}))},countryChanged:function(){var e=this.model.get("country")&&0<this.model.get("country").length?this.model.get("country").toLowerCase():"us",t='<option value="">Select Value</option>';_.each(PJQ.constants.states[e],function(e){t+='<option value="'+e.abbreviation.toLowerCase()+'">'+e.name+"</option>"}),this.statePicker.$el.html(t),this.statePicker.refresh(),this.model.get("state")&&this.statePicker.setValue(this.model.get("state").toLowerCase()),PJQ.helpers.inputHelpers.inputMaskZip(this.$(".contact-edit-zip"),e)},formatPhone:function(e){var t=$(e.currentTarget);t.val(PJQ.helpers.formatHelpers.formatPhoneNumber(t.val()))},numbersOnly:function(e){return 86===e.keyCode&&(!0===e.ctrlKey||!0===e.metaKey)||PJQ.helpers.inputHelpers.numbersOnly(e)},editPermissions:function(){new PJQ.views.permissions.PermissionsEditorModal({model:this.model,project:this.options.project})},editNotifications:function(){new PJQ.views.notificationSettings.NotificationSettingsEditorModal({model:this.model,project:this.options.project})},validateCoreFields:function(){var e=!1,t=null;if(this.checkFieldRequired("companyName")){var i=this.$(".contact-edit-company");0<i.length&&(PJQ.helpers.inputHelpers.setInputError(i,!0),0===_.size(this.model.get("companyName"))&&(PJQ.helpers.inputHelpers.setInputError(i,!1),e=!0))}if(this.checkFieldRequired("contactName")){var s=this.$(".contact-edit-name");PJQ.helpers.inputHelpers.setInputError(s,!0),0===_.size(this.$(".contact-edit-name").val())&&(PJQ.helpers.inputHelpers.setInputError(s,!1),e=!0)}if(this.checkFieldRequired("title")){var n=this.$(".contact-edit-title");PJQ.helpers.inputHelpers.setInputError(n,!0),0===_.size(this.model.get("title"))&&(PJQ.helpers.inputHelpers.setInputError(n,!1),e=!0)}if(this.checkFieldRequired("phone")){var o=this.$(".contact-edit-phone");PJQ.helpers.inputHelpers.setInputError(o,!0),0===_.size(this.model.get("phone"))&&(PJQ.helpers.inputHelpers.setInputError(o,!1),e=!0)}if(this.checkFieldRequired("cell")){var a=this.$(".contact-edit-cell");PJQ.helpers.inputHelpers.setInputError(a,!0),0===_.size(this.model.get("cell"))&&(PJQ.helpers.inputHelpers.setInputError(a,!1),e=!0)}if(this.checkFieldRequired("fax")){var r=this.$(".contact-edit-fax");PJQ.helpers.inputHelpers.setInputError(r,!0),0===_.size(this.model.get("fax"))&&(PJQ.helpers.inputHelpers.setInputError(r,!1),e=!0)}if(this.checkFieldRequired("email")){var l=this.$(".contact-edit-email");PJQ.helpers.inputHelpers.setInputError(l,!0),0===_.size(this.model.get("email"))&&(PJQ.helpers.inputHelpers.setInputError(l,!1),e=!0)}if(this.checkFieldRequired("address1")){var c=this.$(".contact-edit-address-1");PJQ.helpers.inputHelpers.setInputError(c,!0),0===_.size(this.model.get("address1"))&&(PJQ.helpers.inputHelpers.setInputError(c,!1),e=!0)}if(this.checkFieldRequired("address2")){var d=this.$(".contact-edit-address-2");PJQ.helpers.inputHelpers.setInputError(d,!0),0===_.size(this.model.get("address2"))&&(PJQ.helpers.inputHelpers.setInputError(d,!1),e=!0)}if(this.checkFieldRequired("city")){var p=this.$(".contact-edit-city");PJQ.helpers.inputHelpers.setInputError(p,!0),0===_.size(this.model.get("city"))&&(PJQ.helpers.inputHelpers.setInputError(p,!1),e=!0)}if(this.checkFieldRequired("state")){var u=this.$(".contact-edit-state");PJQ.helpers.inputHelpers.setInputError(u,!0),0===_.size(this.model.get("state"))&&(PJQ.helpers.inputHelpers.setInputError(u,!1),e=!0)}if(this.checkFieldRequired("zip")){var h=this.$(".contact-edit-zip");PJQ.helpers.inputHelpers.setInputError(h,!0),0===_.size(this.model.get("zip"))&&(PJQ.helpers.inputHelpers.setInputError(h,!1),e=!0)}if(this.checkFieldRequired("country")){var m=this.$(".contact-edit-country");PJQ.helpers.inputHelpers.setInputError(m,!0),0===_.size(this.model.get("country"))&&(PJQ.helpers.inputHelpers.setInputError(m,!1),e=!0)}if(this.checkFieldRequired("laborStatus")&&!(this.model instanceof PJQ.models.users.User)&&(!(this.model instanceof PJQ.models.projectContacts.ProjectContact)||0<this.model.get("id"))){var f=this.$(".contact-edit-labor-status,.company-edit-labor-status");PJQ.helpers.inputHelpers.setInputError(f,!0),this.model.get("isUnion")||this.model.get("isNonUnion")||this.model.get("isPrevailingWage")||(PJQ.helpers.inputHelpers.setInputError(f,!1),e=!0)}if(this.checkFieldRequired("classifications")&&!(this.model instanceof PJQ.models.users.User)&&(!(this.model instanceof PJQ.models.projectContacts.ProjectContact)||0<this.model.get("id"))){var g=this.$(".contact-edit-minority-class,.contact-edit-minority-class");PJQ.helpers.inputHelpers.setInputError(g,!0),0==this.minorityClassSelectPicker.getValue().length&&(PJQ.helpers.inputHelpers.setInputError(g,!1),e=!0)}if(this.checkFieldRequired("sector")&&!(this.model instanceof PJQ.models.users.User)&&(!(this.model instanceof PJQ.models.projectContacts.ProjectContact)||0<this.model.get("id"))){var P=this.$(".contact-edit-sector,.company-edit-sector");PJQ.helpers.inputHelpers.setInputError(P,!0),this.model.get("isPublicSector")||this.model.get("isPrivateSector")||(PJQ.helpers.inputHelpers.setInputError(P,!1),e=!0)}if(this.checkFieldVisible("userType")&&!(this.model instanceof PJQ.models.users.User)&&(!(this.model instanceof PJQ.models.projectContacts.ProjectContact)||0<this.model.get("id"))){var v=this.$(".contact-edit-user-type");PJQ.helpers.inputHelpers.setInputError(v,!0),this.model.get("userTypeId")||(PJQ.helpers.inputHelpers.setInputError(v,!1),e=!0)}if(e&&(t=this.$(".validation-error")),null!=this.groupSelector&&(this.groupSelector.hideError(),this.checkFieldRequired("groups")&&0===_.size(this.groupSelector.getGroupsData().selected))){this.groupSelector.showError("Please select at least one value"),e=!0;var b=this.$("#contactEditGroupsCollapse");0<b.length?(b.hasClass("show")||b.siblings(".card-header").click(),null==t&&(t=b)):null==t&&(t=this.$(".contact-edit-groups"))}if(null!=this.workAreaMap&&this.workAreaMap.hideError(),this.checkFieldRequired("workAreas")&&0===_.size(_.filter(this.model.workAreas.models,function(e){return!e.get("isDeleted")}))){e=!0,null==this.workAreaMap&&this.renderWorkAreas("Please select at least one work area");var C=this.$("#contactEditWorkAreasCollapse");0<C.length?(C.hasClass("show")||C.siblings(".card-header").click(),null==t&&(t=C)):null==t&&(t=this.$(".contact-edit-work-areas")),setTimeout(_.bind(function(){null!=this.workAreaMap&&this.workAreaMap.showError("Please select at least one work area")},this),300)}return{valid:!e,$scrollTo:t}},unlockUser:function(){this.model.unlock(_.bind(function(){PJQ.notifications.notify.successNotify({message:"User unlocked"}),this.render()},this))},saveAndAddToProject:function(){this.save(null,!1,!0)},save:function(e,t,i,s){var n=this,o=!1,a=null,r="Required fields are empty or have an incorrect value";if(this.options.canEdit){var l=this.validateCoreFields();if(l.valid||(o=!0,a=l.$scrollTo),this.model instanceof PJQ.models.users.User){if(this.model.isNew()){var c=this.$(".input-username");PJQ.helpers.inputHelpers.setInputError(c,!0),0===_.size(this.model.get("username"))&&(PJQ.helpers.inputHelpers.setInputError(c,!1),o=!0,null==a&&(a=c));var d=this.$(".input-password");PJQ.helpers.inputHelpers.setInputError(d,!0),0===_.size(this.model.get("password"))&&(PJQ.helpers.inputHelpers.setInputError(d,!1),o=!0,null==a&&(a=d))}var p=this.$(".cb-itb-user"),u=this.$(".cb-pm-user");PJQ.helpers.inputHelpers.setInputError(p,!0),PJQ.helpers.inputHelpers.setInputError(u,!0),this.model.get("itbUser")||this.model.get("pmUser")||(PJQ.helpers.inputHelpers.setInputError(p,!1),PJQ.helpers.inputHelpers.setInputError(u,!1),o=!0,a=this.$(".cb-itb-user"),r="User must be enabled for either ITB or PM features")}}if(this.options.canEditCustomFields){if(this.contactCustomFieldsForm&&!this.contactCustomFieldsForm.validate()){var h=this.$("#contactEditContactCustomFieldsCollapse");h.hasClass("show")||h.siblings(".card-header").click(),o=!0,null==a&&(a=this.contactCustomFieldsForm.$el)}if(this.companyCustomFieldsForm&&!this.companyCustomFieldsForm.validate()){var m=this.$("#contactEditCompanyCustomFieldsCollapse");m.hasClass("show")||m.siblings(".card-header").click(),o=!0,null==a&&(a=this.companyCustomFieldsForm.$el)}if(this.userCustomFieldsForm&&!this.userCustomFieldsForm.validate()){var f=this.$("#contactEditUserCustomFieldsCollapse");f.hasClass("show")||f.siblings(".card-header").click(),o=!0,null==a&&(a=this.userCustomFieldsForm.$el)}}if(o)return new PJQ.Alert(this.$(".validation-error"),{type:"danger",text:r}),void(null!=a&&this.scrollTo(a.offset().top));if(this.$(".validation-error").empty(),!this.options.isSelfEdit||this.model.isDirty){var g=this.model.groups,P=this.model.get("companyCustomFieldValues"),v=this.model.get("contactCustomFieldValues"),b=this.model.get("userCustomFieldValues");this.model.get("id")<0||this.model.isNew()&&this.model instanceof PJQ.models.users.User?(null!=this.groupSelector&&this.model.groups.reset(this.groupSelector.getGroupsData().all),this.model.set("userCustomFieldValues",null!=this.userCustomFieldsForm?this.userCustomFieldsForm.getChanged():null)):this.model.id<0||(null!=this.groupSelector&&this.model.groups.reset(this.groupSelector.getGroupsData().all),this.model.set("companyCustomFieldValues",null!=this.companyCustomFieldsForm?this.companyCustomFieldsForm.getChanged():null),this.model.set("contactCustomFieldValues",null!=this.contactCustomFieldsForm?this.contactCustomFieldsForm.getChanged():null));var C=new PJQ.Loader(this.$(".modal-content")),y=this.model.isNew();y&&this.model instanceof PJQ.models.projectParticipants.ProjectParticipant&&this.model.set({isPreventAddToProject:!i,isForceSaveExistingEmail:!1});var S=new PJQ.collections.workAreas.ContactWorkAreas;t&&_.each(this.model.workAreas.models,_.bind(function(e){e.get("isDeleted")||S.add(new PJQ.models.workAreas.ContactWorkArea({country:e.get("
1country"),state:e.get("state"),county:e.get("county"),isDeleted:!1,workAreaId:e.get("workAreaId")}))},this));var w=function(){if(t)return n.model=new PJQ.models.projectParticipants.ProjectParticipant({projectId:PJQ.app.session.project.id,contactId:0,contactCompanyId:n.model.get("contactCompanyId"),companyName:n.model.get("companyName"),masterUserId:PJQ.app.session.user.get("masterUserId"),address1:n.model.get("address1"),address2:n.model.get("address2"),city:n.model.get("city"),state:n.model.get("state"),country:n.model.get("country"),zip:n.model.get("zip"),phone:n.model.get("phone"),fax:n.model.get("fax"),groups:g,companyCustomFieldValues:P,contactCustomFieldValues:v,userCustomFieldValues:b}),n.model.groups=g,n.model.workAreas=S,void("function"==typeof n.options.onAddNew?n.options.onAddNew(n.model):n.render());var e="Successfully saved contact";n.options.isSelfEdit?(e="Successfully saved your info",n.featuresDidChange&&PJQ.app.session.fetchSystemPermissions(function(){PJQ.app.navigator.refreshCommands()})):n.model instanceof PJQ.models.projectContacts.ProjectContact?e=y?(PJQ.app.session.project.projectContacts.add(n.model),"Successfully added project contact"):"Successfully saved project contact":n.model instanceof PJQ.models.projectParticipants.ProjectParticipant?e=y?(PJQ.app.session.project.participants.add(n.model),i?"Successfully added bid participant":"Successfully saved contact"):"Successfully saved contact":n.model instanceof PJQ.models.users.User&&(e=y?(PJQ.app.session.users.add(n.model),"Successfully added user"):"Successfully saved user"),PJQ.notifications.notify.successNotify({message:e}),"function"==typeof n.options.onSave&&n.options.onSave(n.model,y),"function"==typeof s&&s(!0)};this.model.save(null,{notify:!1,success:_.bind(function(e,t){w()},this),error:function(e,t){if("function"==typeof s&&s(!0),C.remove(),t.responseJSON&&t.responseJSON.message){if("ACTIVE_USERS_EXCEEDS_SEATS"===t.responseJSON.message)return void PJQ.app.session.subscription.getCostsPerUser(_.bind(function(e){var t;switch(PJQ.app.session.subscription.id){case PJQ.constants.subscriptions.types.BASIC:t=e.basic;break;case PJQ.constants.subscriptions.types.PRO:t=e.pro;break;case PJQ.constants.subscriptions.types.ENTERPRISE:t=e.enterprise;break;default:t=0}var i=new PJQ.views.modals.YesNo({header:"Not Enough User Seats",body:"You don't have enough user seats to activate this user.  Would you like to add one?  "+PJQ.helpers.formatHelpers.formatCurrency(t,2,!0)+" will be charged to your credit card on file.",onYes:_.bind(function(){PJQ.app.session.changeUserSeats(PJQ.app.session.subscription.get("userSeats")+1,_.bind(function(){i.removeModal(),this.save()},this),_.bind(function(){PJQ.notifications.notify.errorNotify({message:"Encountered an error adding user seats.  Please contact customer service."}),this.removeModal()},this))},this)})},n));if("EmailExists"===t.responseJSON.message)return void new PJQ.views.modals.YesNo({header:"Email Exists",body:"Another contact in your Address Book has this email address already.   Do you still want to save this record?",onYes:function(){n.model.set("isForceSaveExistingEmail",!0),C=new PJQ.Loader(n.$(".modal-content")),n.model.save(null,{success:_.bind(function(){w()},n),error:function(){C.remove(),PJQ.notifications.notify.errorNotify({message:"Failed to save"})}},n)}});if("USERNAME_EXISTS"===t.responseJSON.message)return new PJQ.Alert(n.$(".validation-error"),{type:"danger",text:"The entered username is already taken"}),void PJQ.helpers.inputHelpers.setInputError(n.$(".input-username"),!1)}PJQ.notifications.notify.errorNotify({message:"Failed to save"})}})}else{var J=_.bind(function(){"function"==typeof this.options.onSave&&this.options.onSave(this.model)},this);this.model instanceof PJQ.models.projectContacts.ProjectContact?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.model.get("projectId")},{endpoint:"contacts",value:this.model.get("id")},{endpoint:"updated"}])}).post().done(function(){J()}):J()}},scrollTo:function(e){"function"==typeof this.options.scrollTo?this.options.scrollTo(e):this.$el.animate({scrollTop:e},500)}
1,cancel:function(){this.model.isDirty&&this.options.canEdit?new PJQ.views.modals.SaveDontSave({header:"Unsaved Changes",body:"Do you want to save changes?",onSave:_.bind(function(){this.save()},this),onDontSave:_.bind(function(){this.model.restore(),"function"==typeof this.options.onCancel&&this.options.onCancel(this.model)},this)}):"function"==typeof this.options.onCancel&&this.options.onCancel(this.model)},delete:function(){var e="Are you sure you want to delete this contact?";this.model instanceof PJQ.models.users.User?e="Are you sure you want to delete this user?":this.model instanceof PJQ.models.projectContacts.ProjectContact?e="Are you sure you want to remove this contact from the project?":this.model instanceof PJQ.models.projectParticipants.ProjectParticipant&&(e="Are you sure you want to remove this bid participant from the project?"),new PJQ.views.modals.DeleteCancel({header:"Confirm Deletion",body:e,onDelete:_.bind(function(){this.model.destroy(),this.model instanceof PJQ.models.projectContacts.ProjectContact&&null!=PJQ.app.session.project.projectContacts?(PJQ.app.session.project.projectContacts.remove(this.model.id),e="Are you sure you want to remove this contact from the project?"):this.model instanceof PJQ.models.projectParticipants.ProjectParticipant&&(PJQ.app.session.project.participants.remove(this.model.id),e="Are you sure you want to remove this bid participant from the project?"),"function"==typeof this.options.onDelete&&this.options.onDelete(this.model)},this)})}}),PJQ.views.contacts.BaseEditContactModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-contact-edit-base"),canEdit:!0,minWidth:600,maxWidth:1200,isShowAddContact:!1,alert:null,onDelete:_.noop,onCancel:_.noop,onSave:_.noop},events:{"click .btn-edit-permissions":"editPermissions","click .btn-edit-notifications":"editNotifications","change .contact-edit-phone,.contact-edit-fax,.contact-edit-cell":"formatPhone","keydown .contact-edit-phone-ext":"numbersOnly","click .btn-send-password-reset":"sendPasswordReset","click .contact-edit-add":"addNew","click .contact-edit-cancel":"cancel","click .contact-edit-save":"save","click .contact-edit-save-without-approval":"saveWithoutApproval","click .contact-edit-save-and-add-project":"saveAndAddToProject","click .contact-edit-delete":"delete"},beforeModalCreated:function(){null==this.model&&(this.model=new PJQ.models.contacts.Contact({id:this.options.contactId})),this.listenTo(this.model,"sync",this.render),this.model.isNew()||this.model.isFetched?this.isRendered||this.render():this.model.fetch()},beforeRender:function(){PJQ.views.contacts.BaseEditContactView.prototype.initPermissionOptions.call(this)},renderData:function(){return{model:this.model,isSelfEdit:this.options.isSelfEdit,isShowAddContact:this.options.isShowAddContact,deleteLabel:this.options.deleteLabel?this.options.deleteLabel:"Delete",canEdit:this.options.canEdit,canEditCustomFields:this.options.canEditCustomFields,enablePermissions:this.options.enablePermissions,isAdmin:this.options.isAdmin,canModifyNotifications:this.options.canModifyNotifications}},shouldRenderInnerView:function(){return null!=this.model&&(this.model.isNew()||this.model.isFetched)},getContactElement:function(){return this.$(".modal-body")},afterRender:function(){if(this.shouldRenderInnerView()){var e=this.getContactElement(),t=_.extend(this.getInnerViewOptions(),{el:e,len:e.length,scrollTo:_.bind(function(e){$("div.modal").animate({scrollTop:e},500)},this),onAddNew:_.bind(function(e){this.model=e,this.render()},this),onSave:_.bind(function(e,t){!1!==(2<arguments.length&&void 0!==arguments[2]?arguments[2]:{contextClosed:!0}).contextClosed&&this.removeModal(),"function"==typeof this.options.onSave&&this.options.onSave(e,t)},this),onCancel:_.bind(function(e){!1!==(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{contextClosed:!0}).contextClosed&&this.removeModal(),"function"==typeof this.options.onCancel&&this.options.onCancel(e)},this),onDelete:_.bind(function(e){!1!==(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{contextClosed:!0}).contextClosed&&this.removeModal(),"function"==typeof this.options.onDelete&&this.options.onDelete(e)},this)});this.editView=new(this.getInnerViewType())(t)}},getInnerViewType:function(){return PJQ.views.contacts.BaseEditContactView},getInnerViewOptions:function(){return{model:this.model,modal:this}},editPermissions:function(){this.editView.editPermissions()},editNotifications:function(){this.editView.editNotifications()},addNew:function(){this.editView.save(null,!0)},saveAndAddToProject:function(){var e;(e=this.editView).saveAndAddToProject.apply(e,arguments)},save:function(){var e;(e=this.editView).save.apply(e,arguments)},cancel:function(){var e;(e=this.editView).cancel.apply(e,arguments)},delete:function(){var e;(e=this.editView).delete.apply(e,arguments)}}
1),PJQ.views.contacts.SelectContactsModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-contacts-select"),onCancel:_.noop,onSave:_.noop,hideContacts:null,hideEmails:null,disableBadEmail:!1,disableBlacklisted:!1,disableContacts:null,isSingleChoice:!0,contacts:null,showAddress:!1,context:PJQ.constants.contacts.contexts.CONTACTS,minWidth:"500px",width:"100%",maxWidth:"1000px",userTypeFilter:null,isUserTypeFilterDisabled:!1,titleOverride:null,canSwitchContext:!1,hideUsers:!1,shouldHideContacts:!1,enableSelectAll:!1,saveButtonText:"Save"},events:{"change .select-contact":"selectContact","click .contacts-select-cancel":"cancel","click .contacts-select-save":"save","click .switch-context":"switchContext","click .project-contacts-new-contact":"newContactClicked","click .project-contacts-add-from-bid-participants":"addFromBidParticipants","click .project-contacts-add-from-address-book":"addFromAddressBook","click .project-contacts-quick-search":"quickSearch","click .project-contacts-add-from-project":"addFromProject","click .project-contacts-add-from-company":"addFromCompany","click .select-all-contacts":"selectAllContacts"},beforeModalCreated:function(){if(this.options.project=PJQ.app.session.project?PJQ.app.session.project:null,this.options.isAdmin=!!this.options.project&&this.options.project.hasPermission("projectContacts.isAdmin"),this.selectedContact=this.options.isSingleChoice?null:[],this.options.context===PJQ.constants.contacts.contexts.USERS)null==this.users?(this.users=new PJQ.collections.users.Users,this.listenTo(this.users,"sync",this.render),this.users.fetch()):this.listenTo(this.users,"sync",this.render);else if(this.options.contacts&&(this.contacts=this.options.contacts),null==this.contacts){var s=[],t=_.bind(function(e){switch(e){case PJQ.constants.contacts.contexts.PARTICIPANTS:return PJQ.app.session.project.participants;case PJQ.constants.contacts.contexts.PROJECTCONTACTS:return PJQ.app.session.project.projectContacts;case PJQ.constants.contacts.contexts.CONTACTS:default:return new PJQ.collections.contacts.Contacts}},this);this.forParticipants=!1,"array"===PJQ.helpers.objectHelpers.refinedType(this.options.context)?_.each(this.options.context,function(e){s.push(t(e)),e===PJQ.constants.contacts.contexts.PARTICIPANTS&&(this.forParticipants=!0)},this):(this.contacts=t(this.options.context),this.options.context===PJQ.constants.contacts.contexts.PARTICIPANTS&&(this.forParticipants=!0));var i=_.bind(function(){var e=this;if(0<_.size(s)){this.contacts=new PJQ.collections.contacts.Contacts;!function t(i){_.size(s)>i?s[i].fetch({success:_.bind(function(e){this.contacts.add(e.models),t(i+1)},e)}):e.render()}(0)}else this.options.context===PJQ.constants.contacts.contexts.CONTACTS||this.contacts.isFetched||(this.contacts.fetch(),this.listenTo(this.contacts,"reset update",_.bind(function(){this.render()},this)),this.listenTo(this.contacts,"sync",_.bind(function(){this.dataTable.refresh("page")},this)))},this);this.forParticipants?this.options.project.getProjectStatuses(_.bind(function(e){this.projectStatuses=e,i()},this)):i()}else this.listenTo(this.contacts,"reset update",_.bind(function(){this.render()},this)),this.listenTo(this.contacts,"sync",_.bind(function(){this.dataTable.refresh("page")},this))},beforeRender:function(){this.options.titleOverride?this.options.title=this.options.titleOverride:this.options.context===PJQ.constants.contacts.contexts.USERS?this.options.title="Select User":this.options.context===PJQ.constants.contacts.contexts.PROJECTCONTACTS?this.options.title="Select Project Contact":this.options.context===PJQ.constants.contacts.contexts.PARTICIPANTS?this.options.title="Select Bid Participant":this.options.context===PJQ.constants.contacts.contexts.COMPANIES?this.options.title="Select Company":this.options.title="Select Contact",this.options.isSingleChoice||(this.options.title+="s"),this.renderData={options:this.options}},afterRender:function(){var e=[];this.options.context===PJQ.constants.contacts.contexts.USERS?e=[{data:"attributes.id",title:this.options.enableSelectAll?'<div class="text-align-center"><div class="pretty p-default p-smooth fs-18 m-0"><input type="checkbox" class="select-all-contacts" /><div class="state p-primary ml-auto"><label class="wd-0">&nbsp;</label></div></div>
1':"",orderable:!1,searchable:!1,render:_.bind(function(t,e,i){var s=!1;return null!=this.selectedContact&&(s=this.options.isSingleChoice&&null!=this.selectedContact?this.selectedContact.id===t:null!=_.find(this.selectedContact,function(e){return t===e.id})),'<div class="text-align-center"><div class="pretty p-default p-smooth fs-18 m-0"><input type="checkbox"'+(s?" checked ":"")+' class="select-contact" '+(i.get("isBlacklisted")?"disabled":"")+'/><div class="state p-primary"><label class="wd-0">&nbsp;</label></div></div></div>'},this)},{title:"Active",data:"attributes.isActive",width:"40px",render:_.bind(function(e,t,i){return!0===e?'<i class="fas fa-circle" style="color: #5cb85c"><div hidden>true</div></i>':'<i class="fas fa-circle" style="color: #d9534f"><div hidden>false</div></i>'})},{title:"Type",width:"120px",orderable:!0,searchable:!1,render:_.bind(function(e,t,i){var s;return s=null!=i.userType?i.userType:PJQ.app.session.userTypes.getDefault(i.get("id")<0),"sort"===t?s.get("sortOrder"):'<span style="color:'+s.get("color")+';">'+s.get("name")+"</span>"},this)},{data:"attributes.contactName",title:"Contact Name"},{data:"attributes.email",title:"Email"}]:(e=[{data:"attributes.id",title:this.options.enableSelectAll?'<div class="text-align-center"><div class="pretty p-default p-smooth fs-18 m-0"><input type="checkbox" class="select-all-contacts" /><div class="state p-primary ml-auto"><label class="wd-0">&nbsp;</label></div></div>':"",orderable:!1,searchable:!1,render:_.bind(function(t,e,i){var s=!1,n=!1;return null!=this.selectedContact&&(s=this.options.isSingleChoice?this.selectedContact.id===t:null!=_.find(this.selectedContact,function(e){return t===e.id})),i.get("isBlacklisted")?n=!0:this.options.disableContacts&&(this.options.isSingleChoice?this.options.disableContacts.id===t&&(n=!0):void 0!==_.find(this.options.disableContacts,function(e){return e.id===t})&&(n=s=!0)),'<div class="text-align-center"><div class="pretty p-default p-smooth fs-18 m-0"><input type="checkbox" '+(s?"checked":"")+(n?" disabled":"")+' class="select-contact"/><div class="state p-primary"><label class="wd-0">&nbsp;</label></div></div></div>'},this)},{data:"userType",title:"Type",width:"120px",orderable:!0,searchable:!1,render:_.bind(function(e,t,i){var s;return s=null!=i.userType?i.userType:PJQ.app.session.userTypes.getDefault(i.get("id")<0),"sort"===t?s.get("sortOrder"):'<span style="color:'+s.get("color")+';">'+s.get("name")+"</span>"},this)},{data:"attributes.companyName",title:"Company Name"},{data:"attributes.contactName",title:"Contact Name"},{data:"attributes.email",title:"Email"}],null!=this.projectStatuses&&e.push({data:"attributes.status",title:"Status",width:"80px",render:_.bind(function(e,t,i){var s=0<_.size(e)?e.toUpperCase():"PENDING";return'<span style="color:'+this.getStatusColor(s)+'">'+s+"</span>"},this)})),this.options.showAddress&&(e.push({data:"attributes.address1",title:"Address"}),e.push({data:"attributes.city",title:"City"}),e.push({data:"attributes.state",title:"State"}));var t,i,s,n,o=null;this.options.context===PJQ.constants.contacts.contexts.CONTACTS?o=_.bind(function(e,t,i,s){var n=i[0];new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"}],[{parameter:"search",value:this.$(".datatable-search").val(),includeIfEmpty:!1},{parameter:"page",value:e},{parameter:"pageSize",value:t},{parameter:"orderBy",value:n.name},{parameter:"orderDirection",value:n.direction},{parameter:"userTypes",value:this.dataTable?this.dataTable.userTypeFilter:null,includeIfEmpty:!1},{parameter:"projectId",value:this.options.project?this.options.project.id:null,includeIfEmpty:!1}])}).get().success(_.bind(function(e){var t=new PJQ.collections.contacts.Contacts(e.contacts);s(t.models,e.totalRows)},this)).fail(_.bind(function(e){s()},this))},this):this.options.context===PJQ.constants.contacts.contexts.COMPANIES?o=_.bind(function(e,t,i,s){var n=i[0];new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"companiessimple"}],[{parameter:"search",value:this.$(".datatable-search").val(),includeIfEmpty:!1},{parameter:"page",value:e},{parameter:"pageSize",value:t},{parameter:"orderBy",value:n.name},{parameter:"orderDirection",value:n.direction},{parameter:"userTypes",value:this.dataTable?this.dataTable.userTypeFilter:null,includeIfEmpty:!1},{parameter:"projectId",value:this.options.project?this.options.project.id:null,includeIfEmpty:!1}])}).get().success(_.bind(function(e){var t=new PJQ.collections.contacts.Contacts(e.companies);s(t.models,e.totalRows)},this)).fail(_.bind(function(e){s()},this))},this):t=this.getContactsList(),0<_.size(t)&&this.options.hideUsers&&(t=_.filter(t,function(e){return 0<e.get("
1contactId")},this)),0<_.size(t)&&this.options.shouldHideContacts&&(t=_.filter(t,function(e){return null==e.get("contactId")},this)),n=this.options.context===PJQ.constants.contacts.contexts.USERS?(i=PJQ.app.session.userTypes.getByIsCompany(!0),s="No users match the search criteria",0===_.size(t)&&0<_.size(this.users.models)?"All users have already been added":"You don't have any other users in your company"):this.options.context===PJQ.constants.contacts.contexts.PARTICIPANTS?(i=PJQ.app.session.userTypes.getByIsCompany(!1),s="No bid participants match the search criteria",0===_.size(t)&&0<_.size(this.contacts.models)?"All bid participants have already been added":"No bid participants have been added to this project"):this.options.context===PJQ.constants.contacts.contexts.PROJECTCONTACTS?(i=PJQ.app.session.userTypes.getByIsCompany(),s="No project contacts match the search criteria",0===_.size(t)&&(null==this.contacts||0<_.size(this.contacts.models))?"All project contacts have already been added":"No project contacts have been added to this project"):(i=this.options.context===PJQ.constants.contacts.contexts.CONTACTS?PJQ.app.session.userTypes.getByIsCompany(!1):_.union(PJQ.app.session.userTypes.getByIsCompany(),PJQ.app.session.userTypes.getByIsCompany(!1)),s="No contacts match the search criteria",0===_.size(t)&&(null==this.contacts||0<_.size(this.contacts.models))?"All contacts have already been added":"No contacts match the search criteria"),this.dataTable=new PJQ.views.contacts.ContactSelectDataTable({el:this.$(".contacts-data-table"),data:t,deferRender:!0,order:this.options.context===PJQ.constants.contacts.contexts.USERS?[2,"asc"]:[1,"asc"],columns:e,userTypeFilter:this.options.userTypeFilter,isUserTypeFilterDisabled:this.options.isUserTypeFilterDisabled,headerData:{userTypes:i,projectStatuses:this.projectStatuses,filterGroups:this.forParticipants,context:this.options.context,isAdmin:this.options.isAdmin},language:{emptyTable:n,zeroRecords:s},getPageCallback:o,createdRow:_.bind(this.createdRow,this)})},getStatusColor:function(t){var e=_.find(this.projectStatuses,function(e){return e.name.toUpperCase()===t.toUpperCase()});return null!=e?e.backgroundColor:"#eee"},switchContext:function(){this.options.context=this.options.context===PJQ.constants.contacts.contexts.CONTACTS?PJQ.constants.contacts.contexts.USERS:PJQ.constants.contacts.contexts.CONTACTS,this.render()},getContactsList:function(){var e=[];if(null!=this.users&&0<this.users.length&&(e=_.union(e,this.users.models)),null!=this.contacts&&0<this.contacts.length&&(e=_.union(e,this.contacts.models)),this.options.hideContacts&&(e=this.options.isSingleChoice?_.filter(e,_.bind(function(e){return e.id!==this.options.hideContacts.id},this)):_.filter(e,_.bind(function(t){return null==_.find(this.options.hideContacts,function(e){return e.id===t.id})},this))),this.options.hideEmails&&Array.isArray(this.options.hideEmails)&&0<_.size(this.options.hideEmails)){var s=this.options.hideEmails.map(function(e){return e.toLowerCase()});e=_.filter(e,function(e){var t,i=null===(t=e.get("email"))||void 0===t?void 0:t.toLowerCase();return!s.includes(i)})}return e},createdRow:function(e,t,i){t.attributes.isBlacklisted&&$(e).css({cssText:"text-decoration: line-through !important;"})},selectAllContacts:function(e){var t=$(e.currentTarget).prop("checked");this.selectedContact=t?this.getContactsList():this.options.isSingleContact?null:[],this.$(".select-contact").prop("checked",t),this.$(".contacts-select-save").prop("disabled",null==this.selectedContact||0===_.size(this.selectedContact))},selectContact:function(e){var t=$(e.currentTarget),i=t.prop("checked");this.options.isSingleChoice&&this.$(".select-contact").not(t).prop("checked",!1);var s=this.dataTable.dataTable.row(t.parents("tr")).data();i?this.options.isSingleChoice?this.selectedContact=s:this.selectedContact.push(s):this.options.isSingleChoice?this.selectedContact=null:this.selectedContact=_(this.selectedContact).filter(function(e){return e.attributes.id!==s.attributes.id}),this.$(".contacts-select-save").prop("disabled",null==this.selectedContact||0===_.size(this.selectedContact))},addFromBidParticipants:function(){this.options.project.fetchParticipants(_.bind(function(e){new PJQ.views.contacts.SelectContactsMo
1dal({contacts:e,hideContacts:this.contacts.models,context:PJQ.constants.contacts.contexts.PARTICIPANTS,isSingleChoice:!1,subtitle:"Add Project Contacts from Bid Participants",onSave:_.bind(function(e){var t=this;this.contacts.addContactsToProject(_.map(e,function(e){return e.id}),function(){t.render()})},this)})},this))},addFromAddressBook:function(){var i=this;$('form[name="modal-add-participants"]').remove();var e={onSave:function(e,t){i.contacts.addContactsToProject(e,function(){i.render()})},disableContacts:_.map(this.contacts.models,function(e){return e.id})};PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_ADDRESSBOOK)||(e.isWrapForm=!1,e.wrapFormName=null,e.isUseNewAddressBook=!0,e.isMultipleProjects=!0),new PJQ.views.projects.AddParticipantsDetailedModal(e)},quickSearch:function(){new PJQ.views.contacts.SelectContactsModal({context:PJQ.constants.contacts.contexts.CONTACTS,isSingleChoice:!1,project:this.options.project,subtitle:"Add Project Contacts From Address Book",onSave:_.bind(function(e){var t=this;this.contacts.addContactsToProject(_.map(e,function(e){return e.id}),function(){t.render()})},this)})},addFromProject:function(){},addFromCompany:function(){new PJQ.views.contacts.SelectContactsModal({context:PJQ.constants.contacts.contexts.USERS,isSingleChoice:!1,hideContacts:this.contacts.models,subtitle:"Add Project Contacts from My Company Users",onSave:_.bind(function(e){var t=this;this.contacts.addContactsToProject(_.map(e,function(e){return-e.id}),function(){t.render()})},this)})},newContactClicked:function(){new PJQ.views.contacts.BaseEditContactModal({model:new PJQ.models.projectContacts.ProjectContact({projectId:this.options.project.id,country:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_DEFAULT_COUNTRY)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_DEFAULT_COUNTRY):"US"})})},newUserClicked:function(){new PJQ.views.contacts.BaseEditContactModal({model:new PJQ.models.projectContacts.ProjectContact({projectId:this.options.project.id})})},save:function(){var t=_.bind(function(){this.options.onSave(this.selectedContact),this.removeModal()},this);this.options.disableBadEmail?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:PJQ.app.session.project.id},{endpoint:"checkpcg"}]),data:{contactIds:this.options.isSingleChoice?[this.selectedContact]:_.map(this.selectedContact,function(e){return e.get("contactId")}),contactCompanyIds:[],contactGroupIds:[]}}).post().done(_.bind(function(e){0<e.results.length?new PJQ.views.projects.AddParticipantsErrorModal({data:e.results,onContinue:_.bind(function(){_.each(e.results,_.bind(function(t){this.options.isSingleChoice&&t.contactId===this.selectedContact.get("contactId")?this.selectedContact=null:this.options.isSingleChoice||(this.selectedContact=_.filter(this.selectedContact,_.bind(function(e){return e.get("contactId")!==t.contactId},this)))},this)),t()},this)}):t()},this)).fail(function(){}):t()},cancel:function(){this.options.onCancel()}}),PJQ.views.contacts.ContactSelectDataTable=PJQ.views.dataTables.DataTable.extend({defaults:{subTemplates:{header:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Data-Table-Header-Contact-Select")},userTypeFilter:null,isUserTypeFilterDisabled:!1},events:{"keyup .datatable-search":"search","click .btn-filter-groups":"filterGroups","click .contact-select-clear-filters":"clearFilters"},beforeDataTableRender:function(){this.options.userTypeFilter&&(this.userTypeFilter=this.options.userTypeFilter),this.filterPicker=new PJQ.inputs.Selectpicker({el:this.$(".contacts-filter"),onChange:_.bind(function(e){var t,i,s=e.companyUserType,n=e.contactUserType;(this.userTypeFilter=[],0<_.size(s))&&(t=this.userTypeFilter).push.apply(t,_toConsumableArray(s));0<_.size(n)&&(i=this.userTypeFilter).push.apply(i,_toConsumableArray(n));this.projectStatusFilter=e.projectStatus,this.filter()},this),isGrouped:!0,isMultiple:!0,isDisabled:this.options.isUserTypeFilterDisabled,defaultValue:this.userTypeFilter,noneSelectedText:"No Filters"})},getFilterData:function(){if(0===_.size(this.userTypeFilter)&&0===_.size(this.projectStatusFilter)&&0===_.size(this.groupsFilter))return this.options.data;var e=this.options.data;return 0<_.size(this.userTypeFilter)&&(e=_.filter(e,function(e){return _.contains(this.userTypeFilter,e.userType.id.toString())},this)),0<_.size(this.groupsFilter)&&(e=_.filter(e,function(e){return _.contains(this.groupsFilter,0)&&0===_.size(e.groups.models)||null!=_.find(e.groups.models,_.bind(function(e){return _.contains(this.groupsFilter,e.id)},this))},this)),0<_.size(this.projectStatusFilter)?_.filter(e,function(e){var t=e.get("status");return 0===_.size(t)&&(t="PENDING"),0<_.size(t)&&_.contains(this.projectStatusFilter,t.toUpperCase())},this):e},filterGroups:function(){new PJQ.views.addressbook.FilterTradesModal({selectedGroups:this.groupsFilter,onFilter:_.bind(function(e){this.updateGroupsFilter(e),this.filter()},this)})},updateGroupsFilter:function(e){this.groupsFilter=e;var t=_.size(e);this.$(".filter-groups-text").text((0<t?t.toString():"All")+" Trades")},afterSearch:function(){this.$(".contact-select-clear-filters").prop("disabled",0===_.size(this.$("input.datatable-search").val())&&0===_.size(this.userTypeFilter)&&0===_.size(this.projectStatusFilter)&&0===_.size(this.groupsFilter))},clearFilters:function(){this.userTypeFilter=null,this.projectStatusFilter=null,this.updateGroupsFilter(null),this.filterPicker.deselectAll(),this.$("input.datatable-search").val(""),this.filter()}}),PJQ.views.contacts.ContactsSelectInput=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Contacts-Select-Input"),subTemplates:{contactBadge:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Contacts-Select-Input-Contacts")}
1,contacts:null,selectedContact:null,disableContacts:null,isSingleChoice:!0,isShowAddButtonByLabel:!0,addButton:null,onAdd:_.noop,onChange:_.noop,onDelete:_.noop,context:PJQ.constants.contacts.contexts.PROJECTCONTACTS,emptyNotice:"No Contacts Selected",isRequired:!1,isReadOnly:null,showSelectorAddress:!1,contactsRenderData:null,isSortable:!1,onStop:_.noop,canSwitchContext:!1,canViewContacts:null,canEdit:!0,hideUsers:!1,shouldHideContacts:!1,saveButtonText:null},events:{"click .btn-approve-behalf":"approveBehalf","click .contact-select-input-add":"edit","click .contact-select-input-delete":"deleteContact"},beforeRender:function(){this.selectedContact=this.options.selectedContact?this.options.selectedContact:this.options.isSingleChoice?null:[],this.options.isSingleChoice||null==this.selectedContact||"array"===PJQ.helpers.objectHelpers.refinedType(this.selectedContact)||(this.selectedContact=[this.selectedContact]),null!=this.options.isReadOnly&&(this.options.canEdit=!this.options.isReadOnly)},afterRender:function(){if(null!=this.options.addButton&&this.options.canEdit)this.options.addButton.off().on("click",_.bind(this.edit,this));else if(this.options.canEdit){var e=$('<button type="button" class="btn btn-transparent-light text-info btn-sm contact-select-input-add ml-1"><i class="fal fa-pencil"></i></button>');this.options.isShowAddButtonByLabel?(this.$el.closest(".form-group").find("label").append(e),e.on("click",_.bind(this.edit,this))):this.find(".contact-select-input-buttons").append(e)}if(this.options.isSortable){var t=this;t.approversSortable=new PJQ.Sortable(t.$(".contact-select-list"),{containment:"document",items:".select-contact-container",connectWith:".select-contact-container",onStop:_.bind(function(){var s=[];t.$(".select-contact-container").each(function(e,t){var i=$(t).data("contactId");s.push(i)}),t.options.onStop(s)},this)})}this.renderSelectedContact()},approveBehalf:function(e){var t=$(e.target).closest(".select-contact-container").data("contactId"),i=_.find(this.selectedContact,function(e){return e.id===t});"function"==typeof this.options.onApproveBehalf&&this.options.onApproveBehalf(i)},deleteContact:function(e){var t=$(e.target).closest(".select-contact-container").data("cid");if(this.options.isSingleChoice)this.options.onDelete(this.selectedContact,null),this.options.onChange(null),this.selectedContact=null;else{var i=_.find(this.selectedContact,function(e){return e.cid===t});null!=i&&(this.selectedContact=_.filter(this.selectedContact,function(e){return e.cid!==t}),this.options.onDelete(i,this.selectedContact),this.options.onChange(this.selectedContact))}this.renderSelectedContact()},edit:function(){var i=this;this.selector=new PJQ.views.contacts.SelectContactsModal({contacts:this.options.contacts,hideUsers:this.options.hideUsers,shouldHideContacts:this.options.shouldHideContacts,hideContacts:this.options.allowDuplicate?null:this.selectedContact,disableContacts:this.options.disableContacts,context:this.options.context,canSwitchContext:this.options.canSwitchContext,showAddress:this.options.showSelectorAddress,isSingleChoice:this.options.isSingleChoice,saveButtonText:this.options.saveButtonText,onSave:function(e){var t;i.options.allowDuplicate&&!i.options.isSingleChoice?(t=i.selectedContact).push.apply(t,_toConsumableArray(e)):i.selectedContact=i.options.isSingleChoice?e:_.union(i.selectedContact,e);i.renderSelectedContact(),i.options.onAdd(e,i.selectedContact),i.options.onChange(i.selectedContact)}})},renderSelectedContact:function(){var e,t,i=this.selectedContact;(this.selectedContact&&this.options.isSingleChoice&&(i=[this.selectedContact]),0===_.size(i))?this.$(".contact-select-list").html('<div class="text-muted font-weight-light mt-1 fs-16">'+this.options.emptyNotice+"</div>"):(t="function"==typeof this.options.contactsRenderData?this.options.contactsRenderData(i):this.options.contactsRenderData?this.options.contactsRenderData:{},this.renderSubTemplate(!1,this.options.subTemplates.contactBadge,this.$(".contact-select-list"),{models:i,contactsRenderData:t,isSingleChoice:this.options.isSingleChoice,dis
1playContactsBlock:this.options.displayContactsBlock,canView:null!==(e=this.options.canViewContacts)&&void 0!==e?e:this.options.canEdit,canEdit:this.options.canEdit}))},validate:function(){return 0<_.size(this.selectedContact)||(this.$(".contact-select-list").html('<div class="text-danger mt-1">This field is required.</div>'),!1)}}),PJQ.views.contacts.ReportContactModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.PROJECTWALL,"Modal-Report-Contact"),minWidth:"400px",reason:"",onReport:null,showRemoveFromProject:!1},events:{"keyup .input-other-reason":"otherReasonChanged","click .btn-report":"reportParticipant"},afterRender:function(){new PJQ.inputs.Selectpicker({noneSelectedText:"Select Reason",el:this.$(".select-reason"),onChange:_.bind(function(e){e&&"other"===e.toLowerCase()?this.$(".other-reason").removeClass("hidden"):this.$(".other-reason").addClass("hidden"),this.setReason(e)},this)}),this.options.showRemoveFromProject&&this.$(".remove-from-project").removeClass("hidden")},otherReasonChanged:function(e){this.setReason($(e.currentTarget).val())},setReason:function(e){this.options.reason=e,this.$(".btn-report").prop("disabled",0===_.size(this.options.reason))},reportParticipant:function(){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.options.contactId},{endpoint:"report"}]),data:{projectId:PJQ.app.session.project?PJQ.app.session.project.id:null,reason:this.options.reason,removeFromProject:this.$(".input-remove-from-project").prop("checked")}}).post().done(_.bind(function(e){"function"==typeof this.options.onReport&&this.options.onReport(this.$(".input-remove-from-project").prop("checked")),this.removeModal(),PJQ.notifications.notify.successNotify({message:"Contact successfully reported"})},this)).fail(_.bind(function(e,t,i){this.removeModal(),PJQ.notifications.notify.errorNotify({message:"Failed to report contact"}),new PJQ.logging.Debug(PJQ.logging.LoggingActions.REPORT_CONTACT,{error:t,result:i})},this))}}),PJQ.models.contacts.ContactImportUpload=PJQ.models.BaseModel.extend({defaults:{isFileAPI:!0},idAttribute:"contactImportUploadId",endpoint:function(e){var t=[];return null!=e&&(e.overwrite?t.push({parameter:"overwrite",value:!0}):e.skip&&t.push({parameter:"skip",value:!0}),e.createGroups&&t.push({parameter:"createGroups",value:!0})),PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"imports",value:this.id}],t)},parse:function(e){return this.columns=new PJQ.collections.contacts.ContactImportUploadColumns(e?e.columns:null),e}}),PJQ.collections.contacts.ContactImportUploads=PJQ.collections.BaseCollection.extend({model:PJQ.models.contacts.ContactImportUpload,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"imports"}])}}),PJQ.models.contacts.ContactImportUploadColumn=PJQ.models.BaseModel.extend({idAttribute:"index",parse:function(e){return e&&null!=e.customField&&(this.customField=new PJQ.models.customFields.CustomField(e.customField)),e}}),PJQ.collections.contacts.ContactImportUploadColumns=PJQ.collections.BaseCollection.extend({model:PJQ.models.contacts.ContactImportUploadColumn}),PJQ.views.contacts.ContactsImportModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Contacts-Import"),minWidth:"70%",maxWidth:"90%",contextUpload:null},events:{"click .btn-export-template":"exportTemplate","click .btn-import":"import","click .btn-cancel":"cancel"},renderData:function(){return{contextUpload:this.options.contextUpload}},afterRender:function(){null==this.collection?(this.collection=new PJQ.collections.contacts.ContactImportUploads,this.collection.fetch({success:_.bind(function(){this.renderUI()},this)})):this.renderUI()},renderUI:function(){null!=this.options.contextUpload?this.renderUploadEdit():this.renderImportUploadPicker()},renderImportUploadPicker:function(){var t=this.$(".contacts-import-container");new PJQ.views.contacts.ContactsImportUploadsSelect({el:t,collection:this.collection,viewImportUploadCallback:_.bind(function(e){e.fetch({success:_.bind(function(){t.empty(),new PJQ.Loader(t),this.options.contextUpload=e,this.render()},this)})},this)})},renderUploadEdit:function(){var e=this.$(".contacts-import-container");this.editor=new PJQ.views.contacts.ContactsImportUploadEdit({el:e,model:this.options.contextUpload,onDone:_.bind(function(){this.collection.fetch({success:_.bind(function(){this.options.contextUpload=null,this.render()},this)})},this),onCancel:_.bind(function(){this.renderImportUploadPicker()},this)})},exportTemplate:function(){PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"imports"},{endpoint:"template"}]))},import:function(){this.editor.import()},cancel:function(){this.options.contextUpload=null,this.render()}}),PJQ.views.contacts.ContactsImportUploadsSelect=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Contacts-Import-Uploads-Select")},events:{"click .view-contact-import-upload":"viewImportUpload","click .delete-contact-import-upload":"deleteImportUpload"},beforeRender:function(){this.renderData={collection:this.collection}},afterRender:function(){this.renderUploads(),this.renderFileUploader()},renderUploads:function(){_.each(this.collection.models,function(e){e.set("displayUploadedOn",PJQ.helpers.dateHelpers.getDateString(new Date(e.get("uploadedOn")),PJQ.helpers.dateHelpers.dateFormats.DATE_TIME))}),this.uploadsDataTable=new PJQ.views.dataTables.DataTable({el:this.$(".contacts-import-upload-data-table"),data:this.collection.models,language:{zeroRecords:"You haven't uploaded any contact imports yet"},isHideSearch:!0,columns:[{data:"attributes.fileName",title:"File Name"},{data:"attributes.uploadedBy",title:"Uploaded By"},{data:"attributes.displayUploadedOn",title:"Uploaded On"},{title:"",width:"80px",orderable:!1,searchable:!1,render:function(e,t,i){var s=i.get("status");return 1===s?'<span class="text-info fs-16 font-weight-light">Processing...</span>':2===s?'<span class="text-success fs-16 font-weight-light">Imported</span>':'<div class="text-align-center"><button type="button" class="btn btn-info view-contact-import-upload mr-1"><i class="fal fa-pencil"></i></button><button type="button" class="btn btn-danger delete-contact-import-upload"><i class="fal fa-trash"></i></button></div>'}}],onRowDoubleClick:_.bind(function(e){var t=e.data();0===t.get("status")&&this.options.viewImportUploadCallback(t)},this)})},renderFileUploader:function(){this.fileUploader=new PJQ.views.files.FileUploaderGrid({el:this.$(".contacts-import-file-upload"),endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"imports"}]),isRemoveOnComplete:!0,onSuccess:_.bind(function(){this.collection.fetch({success:_.bind(function(){this.renderUploads()},this)})},this)})},viewImportUpload:function(e){var t=this.uploadsDataTable.getRow($(e.currentTarget).parents("tr"));this.options.viewImportUploadCallback(t.data())},deleteImportUpload:function(e){var t=this.uploadsDataTable.getRow($(e.currentTarget).parents("tr")),i=t.data();i.destroy(),this.collection.remove(i),t.remove(),this.uploadsDataTable.refresh()}}),PJQ.views.contacts.ContactsImportUploadEdit=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Contacts-Import-Uploads-Edit")},events:{"click .btn-map-groups":"mapGroups","click .delete-contact-import-upload-row":"deleteRow","click .btn-edit-groups":"editGroups","click .btn-edit-work-areas":"editWorkAreas","keyup .input-text":"textValueChanged","keydown .input-int":"numbersOnly","keyup .input-int":"intValueChanged","change select.input-state":"stateValueChanged","change select.input-country":"countryValueChanged","keyup .input-phone":"phoneValueChanged","change select.input-bool":"boolValueChanged","change select.input-choice":"singleChoiceValueChanged","change select.input-user-type":"userTypeValueChanged"},afterRender:function(){PJQ.app.session.fetchUserGroups(null,_.bind(function(e){this.groups=e,_.each(this.model.get("rows"),_.bind(function(t){_.each(PJQ.app.session.userTypes.getByIsCompany(!1),_.bind(function(e){(0<_.size(t.columnData.userTypeId)&&e.get("name").toLowerCase()===t.columnData.userTypeId.toLowerCase().trim()||e.get("userTypeId")===parseInt(t.columnData.userTypeId))&&(t.columnData.userTypeId=e.get("userTypeId"))},this))},this)),this.renderImportUploadData()},this)),this.$el.closest(".modal").find(".cb-overwrite").on("change",_.bind(this.overwriteOptionChanged,this))},deleteRow:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr"));this.dataTable.removeRow(i),this.model.set("rows",_.filter(this.model.get("rows"),function(e){return e.index!==i.data().index}))},numbersOnly:function(e){return PJQ.helpers.inputHelpers.numbersOnly(e)},textValueChanged:function(e){var t=$(e.currentTarget),i=t.data("p-bind");this.dataTable.getRow(t.closest("tr")).data().columnData[i]=t.val()},intValueChanged:function(e){var t=$(e.currentTarget),i=t.data("p-bind"),s=this.dataTable.getRow(t.closest("tr")),n=parseInt(t.val());s.data().columnData[i]=isNaN(n)?0:n},stateValueChanged:function(e){var t=$(e.currentTarget),i=t.data("p-bind");this.dataTable.getRow(t.closest("tr")).data().columnData[i]=t.val()},countryValueChanged:function(e){var t=$(e.currentTarget),i=t.data("p-bind"),s=t.closest("tr"),n=this.dataTable.getRow(s),o=t.val();if(o!==n.data().columnData[i]){var a=s.find(".input-state"),r=this.getStateOptions(o,a.val());a.empty(),a.append(r),PJQ.helpers.inputHelpers.inputMaskZip(s.find(".input-zip"),o)}n.data().columnData[i]=o},getUserTypeOptions:function(t){var i='<option value="">Select Value</option>';return _.each(PJQ.app.session.userTypes.getByIsCompany(!1),_.bind(function(e){i+="<option "+(t===e.get("userTypeId")?"selected":"")+' value="'+e.get("userTypeId")+'">'+e.get("name")+"</option>"},this)),i},userTypeValueChanged:function(e){var t=$(e.currentTarget);this.dataTable.getRow(t.closest("tr")).data().columnData.userTypeId=t.val()},getStateOptions:function(e,i){var s='<option value="">Select Value</option>';return _.each(PJQ.constants.states[0===_.size(e)?"us":e.toLowerCase()],function(e){var t=e.abbreviation.toLowerCase();s+="<option "+(i===t||i===e.name.toLowerCase()?"selected":"")+' value="'+t+'">'+e.abbreviation.toUpperCase()+"</option>"}),s},phoneValueChanged:function(e){var t=$(e.currentTarget),i=t.data("p-bind");this.dataTable.getRow(t.closest("tr")).data().columnData[i]=PJQ.helpers.formatHelpers.numbersOnly(t.val())},boolValueChanged:function(e){var t=$(e.currentTarget),i=t.data("p-bind");this.dataTable.getRow(t.closest("tr")).data().columnData[i]="true"===t.val()},singleChoiceValueChanged:function(e){var t=$(e.currentTarget),i=t.data("p-bind");this.dataTable.getRow(t.closest("tr")).data().columnData[i]=t.val()},beforeRender:function(){this.renderData={model:this.model}},getColumnWidth:function(e){var t=null;switch(e.get("attribute").toLowerCase()){case"companyname":case"contactname":t="150px";break;case"title":t="100px";break;case"email":t="200px";break;case"address1":case"address2":t="120px";break;case"notes":t="200px";break;case"groups":t="100px"}if(null==t)switch(e.get("type").toLowerCase()){case"choice":t="80px";break;case"int":t="60px";break;case"bool":t="50px";break;case"phone":case"text":t="100px";break;case"regions":case"groups":case"workareas":t="80px";break;case"state":case"country":case"zip":t="50px";break;case"usertype":t="85px"}return t},renderImportUploadData:function(){this.unmatchedGroups=[];var e=[],m=!1;_.each(this.model.columns.models,function(u){var h=PJQ.helpers.objectHelpers.convertObjectCamelcase(u.get("attribute"));e.push({data:"columnData."+h,title:u.get("name"),width:this.getColumnWidth(u),render:_.bind(function(i,e,t){if("sort"===e||"type"===e)return i;var s,n=!0;switch(u.get("type").toLowerCase()){case"choice":if(null!=u.customField){var o='<option value="">No Value</option>';_.each(u.customField.choices.models,function(e){var t;t="array"===PJQ.helpers.objectHelpers.refinedType(i)?i&&-1!==i.indexOf(e.id):i===e.id,o+="<option "+(t?"selected":"")+' value="'+e.id+'">'+e.get("choiceName")+"</option>"}),s='<div class="d-flex align-items-center ht-100 wd-100"><select data-p-bind="'+h+'" class="form-control max-wd-150p input-choice '+(u.customField.get("isMultipleChoice")?"input-multiple-choice":"")+'">',s+=o,s+="</select>",s+="</div>"}break;case"bool":s='<select class="form-control input-bool" data-p-bind="'+h+'">',s+='<option value="">Select Value</option>',s+='<option value="true" '+(!0===i?"selected":"")+">Yes</option>",s+='<option value="false" '+(!1===i?"selected":"")+" >No</option>",s+="</select>";break;case"state":var a=null!=i?i.toLowerCase():"";s='<select class="form-control max-wd-150p input-state">',s+=this.getStateOptions(t.columnData.country,a),s+="</select>";break;case"usertype":s='<select class="form-control max-wd-100p input-user-type">',s+=this.getUserTypeOptions(t.columnData.userTypeId),s+="</select>";break;case"zip":n=!(0<_.size(i)&&!PJQ.helpers.validators.validateZip(i)),s='<input title="original: '+i+'" type="text" data-p-bind="'+h+'" class="form-control input-text input-zip'+(n?"":" bg-danger-transparent")+'" value="'+(null!=i?i:"")+'">';break;
1case"country":var r=null!=i?i.toLowerCase():"";s='<select title="original: '+i+'" class="form-control input-country" data-p-bind="'+h+'"><option value="US" '+("us"===r?"selected":"")+'>US</option><option value="CA" '+("ca"===r?"selected":"")+" >CA</option></select>";break;case"int":s='<input title="original: '+i+'" type="number" data-p-bind="'+h+'" class="form-control input-int" value="'+(null!=i?i:"")+'">';break;case"phone":n=!0,"fax"!==u.get("attribute").toLowerCase()&&"email"!==u.get("attribute").toLowerCase()||(n=0<_.size(t.columnData.email)||0<_.size(t.columnData.fax),m=m||!n),s='<input type="text" title="original: '+i+'"  data-p-bind="'+h+'" class="form-control input-phone'+(n?"":" bg-danger-transparent")+'" value="'+(null!=i?i:"")+'">';break;case"groups":var l=this.getColumnGroupNames(i),c=0<_.size(l.unmatched);this.unmatchedGroups=_.union(this.unmatchedGroups,l.unmatched),s='<div class="d-flex align-items-center wd-100 ht-100 '+(c?"bg-primary-transparent":"")+'"><button type="button" title="original: '+i+'" class="btn btn-link btn-edit-groups">'+_.size(l.matched).toString()+" selected</button>",c&&(s+='<i class="fad fa-history ml-1" title="original: '+i+'"></i>'),s+="</div>";break;case"regions":var d=null!=i?i.split(","):[];s='<button type="button" title="original: '+i+'" class="btn btn-link btn-edit-regions">'+_.size(d).toString()+" selected</button>";break;case"workareas":s='<button type="button" class="btn btn-link btn-edit-work-areas">'+_.size(i).toString()+" selected</button>";break;case"text":default:var p=i;if(n=!0,"fax"===u.get("attribute").toLowerCase()||"email"===u.get("attribute").toLowerCase()){if("email"===u.get("attribute").toLowerCase()&&null!=p&&-1!==p.indexOf("<")&&-1!==p.indexOf(">")){p=/<(.*?)>/g.exec(p)[1]}n=0<_.size(p)||0<_.size(t.columnData.fax),m=m||!n}s='<input type="text" title="original: '+i+'"  data-p-bind="'+h+'" class="form-control input-text'+(n?"":" bg-danger-transparent")+'" value="'+(null!=p?p:"")+'">'}return s},this)})},this),e.push({title:"",defaultContent:'<button type="button" class="btn btn-danger delete-contact-import-upload-row"><i class="fal fa-trash"></i></button>',orderable:!1,searchable:!1}),_.each(this.model.get("rows"),function(e){null!=e.columnData.groups&&-1===e.columnData.groups.indexOf(",")&&-1===e.columnData.groups.indexOf("|")&&(e.columnData.groups=e.columnData.groups+",")});var s=this.$(".contact-import-upload-data-table"),n=this;this.dataTable=new PJQ.views.dataTables.DataTable({el:s,rowId:"index",autoWidth:!1,isHideSearch:!0,data:this.model.get("rows"),columns:e,isOverflowAuto:!0,onTableDraw:function(){PJQ.helpers.inputHelpers.inputMaskPhone(s.find(".input-phone")),s.find(".input-multiple-choice").each(function(){var t=$(this).data("p-bind");new PJQ.inputs.Selectpicker({el:$(this),isMultiple:!0,onChange:_.bind(function(e){n.dataTable.getRow($(this).parents("tr")).data().columnData[t]=e},this)})}),s.find("th").each(function(e){var t=n.model.columns.models[e];null!=t&&$(this).css("min-width",n.getColumnWidth(t))});var e=0<_.size(n.unmatchedGroups);if((e||m)&&null==n.importAlert){var t="";if(m&&(t+="Some of the imported contacts do not have an email or fax number, these are highlighted in red."),e){0<_.size(t)&&(t+="<br/>");var i=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LABEL);t+='Some of the imported contacts have groups that do not exist in the system.  If you do not map them by clicking <strong><a href="javascript:void(0)" class="btn-map-groups">Map '+(i||"Groups")+"</a></strong>, these groups will be created automatically."}n.importAlert=new PJQ.Alert(n.$el,{type:"primary",text:t,isPrepend:!0})}}});var t=this.$el.closest(".modal-content").find(".modal-footer");if(t.find(".btn-map-groups").remove(),0<_.size(this.unmatchedGroups)){var i=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LABEL),o=$("<button />",{type:"button",class:"btn btn-info btn-map-groups",text:"Map "+(i||"Groups")});t.prepend(o),o.on("click",_.bind(this.mapGroups,this))}},editWorkAreas:function(e){var t=this.dataTable.getRow($(e.currentTarget).closest("tr")).data(),i=new PJQ.collections.workAreas.ContactWorkAreas;_.each(this.model.get("workAreas"),function(e){-1!==t.columnData.workAreas.indexOf(e.w
1orkAreaId)&&i.add(new i.model(e))}),new PJQ.views.workAreas.WorkAreaMapModal({collection:i,onSave:_.bind(function(e){t.columnData.workAreas=_.map(e.models,function(e){return e.get("workAreaId")}),this.dataTable.refresh()},this)})},getColumnGroupNames:function(e){var t,s={matched:[],unmatched:[]};return t=0===_.size(e)?[]:-1!==e.indexOf("|")?e.split("|"):-1!==e.indexOf(",")?e.split(","):[e],_.each(t,function(t){if(null!=t&&0!==_.size(t.trim())){var i=t.toLowerCase().trim();if(null!=_.find(this.groups.models,function(e){return e.get("groupName").toLowerCase()===i}))s.matched.push(t);else{var e=_.find(this.groupMap,function(e){return null!=e.group&&e.groupName===t});null!=e?s.matched.push(e.group.get("groupName")):-1===s.unmatched.indexOf(t)&&s.unmatched.push(t)}}},this),s},editGroups:function(e){var t=this.dataTable.getRow($(e.currentTarget).closest("tr")).data(),i=[],s=this.getColumnGroupNames(t.columnData.groups);_.each(s.matched,function(t){var e=_.find(this.groups.models,function(e){return e.get("groupName").toLowerCase()===t.trim().toLowerCase()});null!=e&&i.push(e.id)},this),new PJQ.views.groups.SelectGroupsModal({selectorOptions:{selectedGroupIds:i},onSave:_.bind(function(e){t.columnData.groups=_.map(e.selected,function(e){return e.get("groupName")}).join(","),this.dataTable.refresh()},this)})},mapGroups:function(){new PJQ.views.contacts.MapGroupsModal({groupMap:this.groupMap,groupNames:this.unmatchedGroups,onSave:_.bind(function(e){this.groupMap=e,this.render()},this)})},editRegions:function(){},getIsOverwrite:function(){return!0===this.$el.closest(".modal").find(".cb-overwrite").prop("checked")},overwriteOptionChanged:function(){var e=this.$el.closest(".modal").find(".cb-merge-data-outer");this.getIsOverwrite()?e.removeClass("hidden"):e.addClass("hidden")},import:function(i){var e=_.bind(function(){var e=this.$el.closest(".modal").find(".btn-import,.btn-cancel");new PJQ.Loader(this.dataTable.$el);e.prop("disabled",!0),null!=this.groupMap&&_.each(this.model.get("rows"),function(e){var t=this.getColumnGroupNames(e.columnData.groups),i=[];_.each(t.matched,function(e){-1===i.indexOf(e)&&i.push(e)}),_.each(t.unmatched,function(e){-1===i.indexOf(e)&&i.push(e)}),0<_.size(i)&&(e.columnData.groups=i.join("|"))},this);var t=this.getIsOverwrite();this.model.save({overwrite:t,mergeData:t&&this.$el.closest(".modal").find(".cb-merge-data").prop("checked"),rows:this.model.get("rows")},{timeout:6e5,urlOptions:_.extend(i,{createGroups:this.$(".cb-create-groups").prop("checked")}),notify:!1,success:_.bind(function(e,t){PJQ.notifications.notify.successNotify({message:"Your contacts have been queued for import"}),"function"==typeof this.options.onDone&&this.options.onDone()},this)})},this);if(null!=i&&i.overwrite)e();else{var t=0;_.each(this.model.get("rows"),function(e){0===_.size(e.columnData.email)&&0===_.size(e.columnData.fax)&&t++}),0<t?new PJQ.views.modals.YesNo({header:"Import Data Missing",body:"Some of the contacts you are importing do not have an email or fax.  Do you still want to continue?",onYes:_.bind(function(){e()},this)}):e()}}}),PJQ.views.contacts.DuplicateEmailModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Contacts-Import-Duplicate-Email"),onSkip:null,onOverwrite:null},events:{"click .btn-overwrite":"overwrite","click .btn-skip":"skip","click .btn-cancel":"cancel"},overwrite:function(){"function"==typeof this.options.onOverwrite&&(this.options.onOverwrite(),this.removeModal())},skip:function(){"function"==typeof this.options.onSkip&&(this.options.onSkip(),this.removeModal())},cancel:function(){"function"==typeof this.options.onCancel&&(this.options.onCancel(),this.removeModal())}}),PJQ.views.contacts.MapGroupsModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-contacts-import-map-groups")},events:{"click .btn-save":"save"},beforeModalCreated:function(){null==this.options.groupMap&&(this.options.groupMap=[],_.each(this.options.groupNames,function(e){this.options.groupMap.push({id:_.uniqueId(),groupName:e,group:null})},this)),PJQ.app.session.fetchUserGroups(null,_.bind(function(e){this.groups=e,this.render()},this))},renderData:function(){return{groupMap:this.options.groupMap,groups:this.groups}},afterRender:function(){PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LABEL);_.each(this.options.groupMap,function(t){var e;new PJQ.inputs.Selectpicker({el:this.$('.select-group[data-tid="'+t.id.toString()+'"]'),defaultValue:null===(e=t.group)||void 0===e?void 0:e.id,noneSelectedText:"Select Group",isLiveSearch:!0,onChange:_.bind(function(e){t.group=this.groups.get(e)},this)})},this)},save:function(){"function"==typeof this.options.onSave&&(this.options.onSave(this.options.groupMap),this.removeModal())}}),PJQ.models.contactus={},PJQ.models.contactus.ContactUs=PJQ.models.BaseModel.extend({idAttribute:"contactUsId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contactus"}])}}),PJQ.views.ContactUs=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Contact-Us")},events:{"click .contactus-submit":"onSubmit"},beforeFirstRender:function(){},beforeRender:function(){this.renderData={}},afterRender:function(){PJQ.helpers.inputHelpers.inputMaskPhone(this.$(".contactus-phone"))},onSubmit:function(){var e=0;PJQ.helpers.inputHelpers.setInputError(this.$(".contactus-company"),!0),0==this.$(".contactus-company").val().trim().length&&(PJQ.helpers.inputHelpers.setInputError(this.$(".contactus-company"),!1),e++),PJQ.helpers.inputHelpers.setInputError(this.$(".contactus-contact"),!0),0==this.$(".contactus-contact").val().trim().length&&(PJQ.helpers.inputHelpers.setInputError(this.$(".contactus-contact"),!1),e++);var t=PJQ.helpers.validators.validateEmail(this.$(".contactus-email").val());PJQ.helpers.inputHelpers.setInputError(this.$(".contactus-email"),t.success),t.success||e++;var i=PJQ.helpers.formatHelpers.numbersOnly(this.$(".contactus-phone").val());if(0==e){var s=new PJQ.models.contactus.ContactUs,n="Sub LP - General";this.getParameterByName("contactcontext")&&(n=this.getParameterByName("contactcontext")),s.set("context",n),s.set("companyName",this.$(".contactus-company").val()),s.set("contactName",this.$(".contactus-contact").val()),s.set("phone",i),s.set("email",this.$(".contactus-email").val()),s.set("message",this.$(".contactus-message").val()),s.save(null,{success:function(){window.location.href="http://app.panteratools.com/Default.aspx?tabid=21997"}}),this.$(".contactus-company").val(""),this.$(".contactus-contact").val(""),this.$(".contactus-phone").val(""),this.$(".contactus-email").val(""),this.$(".contactus-message").val("")}},getParameterByName:function(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(window.location.search);return null==t?"":decodeURIComponent(t[1].replace(/\+/g," "))}}),Date.daysBetween=function(e,t){var i=e.getTime(),s=t.getTime()-i;return Math.round(s/864e5)},Date.prototype.addDays=function(e){var t=new Date(this.valueOf());return t.setDate(t.getDate()+e),t},PJQ.Draggable=function(){function s(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,s);var i=this;i.$el=e,i.options=_.defaults(t,{addClasses:"selected",stop:function(){i.onStop()}}),0<_.size(i.$el)&&i.$el.draggable(i.options)}return _createClass(s,[{key:"onStop",value:function(){"function"==typeof this.options.onStop&&this.options.onStop()}}]),s}(),PJQ.Droppable=function(){function s(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,s);var i=this;i.$el=e,i.options=_.defaults(t,{addClasses:"selected",stop:function(){i.onStop()}}),0<_.size(i.$el)&&i.$el.droppable(i.options)}return _createClass(s,[{key:"onStop",value:function(){"function"==typeof this.options.onStop&&this.options.onStop()}}]),s}(),PJQ.views.email={},PJQ.views.email.ComposeEmailModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-compose-email"),subTemplates:{emailBadge:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Share-Email-Badge")},header:"Send Email",enableCC:!0,subject:"",onSave:null,onSaveWait:null,onCancel:null,maxWidth:"1200px"},events:{"keyup .input-share-search":"searchChanged","focus .input-share-search":"focusSearch","click .share-email-delete":"deleteEmail","click .modal-share-send":"send","click .modal-share-cancel":"cancel","mousedown .modal-dialog":"checkIsFocused","click .btn-add-project-contact":"addProjectContact"},beforeModalCreated:function(){var e,t,i;(this.selectedEmailsTo=null!==(e=this.options.selectedEmailsTo)&&void 0!==e?e:[],this.selectedEmailsCC=null!==(t=this.options.selectedEmailsCC)&&void 0!==t?t:[],this.focusType=null,0<_.size(this.options.subjectTemplate))&&(this.options.subject=this.replaceTokens(this.options.subjectTemplate,null!==(i=this.options.tokens)&&void 0!==i?i:{}))},replaceTokens:function(e,s){return e.replace(/\[([^\]]+)]/g,function(e,t){var i=PJQ.helpers.objectHelpers.getNestedValue(s,t);return null!=i?i:""})},renderData:function(){return{options:this.options}},afterRender:function(){var t=this;0<_.size(this.selectedEmailsTo)&&(this.focusType="to",this.$('.share-selected-emails[data-email-line="'+this.focusType+'"]').empty(),_.each(this.selectedEmailsTo,function(e){PJQ.helpers.validators.validateEmail(e).success&&t.addEmail(e,!0)})),0<_.size(this.selectedEmailsCC)&&(this.focusType="cc",this.$('.share-selected-emails[data-email-line="'+this.focusType+'"]').empty(),_.each(this.selectedEmailsCC,function(e){PJQ.helpers.validators.validateEmail(e).success&&t.addEmail(e,!0)})),this.bodyEditor=new PJQ.inputs.HTMLEditor({el:this.$(".email-body"),editorHeight:300,isHideTokens:!0,onChange:_.bind(function(e){},this)})},focusSearch:function(e){this.focusType=$(e.currentTarget).data("email-line"),null!=this.contactEmailSelector&&this.contactEmailSelector.remove(),this.contactEmailSelector=new PJQ.views.email.ContactSearchSelect({el:"to"===this.focusType?this.$(".contact-emails-to"):this.$(".contact-emails-cc"),selectedEmails:"to"===this.focusType?this.selectedEmailsTo:this.selectedEmailsCC,search:this.getFocusSearchText(),project:this.options.project,onAdd:_.bind(function(e){this.addEmail(e)},this)})},checkIsFocused:function(e){if(!(0<this.$(e.target).closest(".share-contact").length)){var t,i=$(e.target),s=$(e.target.parentElement);if(!(null==this.focusType||i.hasClass("share-contact")||s.hasClass("share-contact")||i.hasClass("input-share-search")||i.hasClass("share-contact-email")||i.hasClass("share-email-entry")||i.hasClass("share-contact-name")))null===(t=this.contactEmailSelector)||void 0===t||t.remove(),this.focusType=null}},getFocusSearchText:function(){return null!=this.focusType?this.$('.input-share-search[data-email-line="'+this.focusType+'"]').val().toLowerCase():this.$(".input-share-search").val().toLowerCase()},searchChanged:function(){this.contactEmailSelector.searchChanged(this.getFocusSearchText())},renderRecipientCount:function(){var e=_.size(this.selectedEmailsTo)+_.size(this.selectedEmailsCC);this.$(".recipient-count").html(e.toString()+(1===e?" recipient":" recipients"))},addProjectContact:function(e){var i=this,s=$(e.currentTarget).data("email-line");
1new PJQ.views.contacts.SelectContactsModal({hideEmails:"to"===s?this.selectedEmailsTo:this.selectedEmailsCC,subtitle:"Add Project Contacts to the ".concat("to"===s?"To":"CC"," line"),context:PJQ.constants.contacts.contexts.PROJECTCONTACTS,canSwitchContext:!1,showAddress:!1,isSingleChoice:!1,saveButtonText:"Add",onSave:function(e){i.focusType=s,_.each(e,function(e){var t=e.get("email").toLowerCase();0!==_.size(t)&&("to"===s?i.selectedEmailsTo.push(t):i.selectedEmailsCC.push(t),i.addEmail(t,!0))}),i.focusType=null}})},addEmail:function(e,t){this.renderSubTemplate(!0,this.options.subTemplates.emailBadge,this.$('.share-selected-emails[data-email-line="'+this.focusType+'"]'),{email:e}),this.$(".input-share-search").val(""),this.$(".modal-share-send").prop("disabled",!1),this.renderRecipientCount(),t||this.$('.input-share-search[data-email-line="'+this.focusType+'"]').focus()},deleteEmail:function(e){var t=$(e.currentTarget).closest(".share-email"),i=$(e.currentTarget).closest(".share-selected-emails").data("email-line"),s="to"===i?this.selectedEmailsTo:this.selectedEmailsCC;s=_.without(s,t.data("email").toLowerCase()),"to"===i?this.selectedEmailsTo=s:this.selectedEmailsCC=s,t.remove(),this.searchChanged(),this.$(".modal-share-send").prop("disabled",0===_.size(s)),this.renderRecipientCount()},validate:function(){return!0},send:function(){var e=this,t=this.$(".input-share-subject"),i={toEmails:this.selectedEmailsTo,ccEmails:this.selectedEmailsCC,subject:t.val(),body:this.bodyEditor.getValue()},s=0<_.size(i.subject);PJQ.helpers.inputHelpers.setInputError(t,s),s&&("function"==typeof this.options.onSave?(this.options.onSave(i),this.removeModal()):"function"==typeof this.options.onSaveWait?(new PJQ.Loader(this.$(".modal-content")),this.options.onSaveWait(i,function(){e.removeModal()})):this.removeModal())},cancel:function(){"function"==typeof this.options.onCancel&&this.options.onCancel()}}),PJQ.views.email.ContactSearchSelect=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"contact-email-search-select"),subTemplates:{contact:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Share-Contact")},search:""},events:{"click .share-contact":"addEmail"},beforeFirstRender:function(){this.selectedEmails=this.options.selectedEmails,this.render()},afterRender:function(){if(null!=this.options.project){var t=new PJQ.Loader(this.$(".share-contacts-outer"));this.options.project.fetchProjectContacts(_.bind(function(e){this.contacts=e,t.remove(),this.searchChanged(this.options.search)},this))}else this.contacts=new PJQ.collections.contacts.Contacts,this.searchChanged(this.options.search)},searchChanged:function(e){var t,i=null!=e?e:"";t=0<_.size(i)?_.filter(this.contacts.models,_.bind(function(e){var t=e.get("email").toLowerCase();return 0!==_.size(t)&&-1===_.indexOf(this.selectedEmails,t)&&(-1!==e.get("contactName").toLowerCase().indexOf(i)||-1!==t.indexOf(i))},this)):_.filter(this.contacts.models,_.bind(function(e){var t=e.get("email").toLowerCase();return 0<_.size(t)&&-1===_.indexOf(this.selectedEmails,t)},this));var s=this.$(".share-add-email"),n=PJQ.helpers.validators.validateEmail(i).success;n&&0===_.size(t)?(this.$(".share-suggested-contacts").append($("<div>",{text:i})),this.$(".share-add-email .share-contact").data("email",i),this.$(".share-email-entry-letter").html(i[0].toUpperCase()),this.$(".share-email-entry").text(i),s.removeClass("hidden")):s.addClass("hidden");var o=this.$(".share-search-results"),a=this.$(".share-search-results-outer");o.empty(),0<_.size(t)?(_.each(_.sortBy(t,function(e){return e.get("contactName")}),_.bind(function(e){this.renderSubTemplate(!0,this.options.subTemplates.contact,o,{model:e})},this)),a.removeClass("hidden")):a.addClass("hidden");var r=this.$(".share-search-no-results");n||0<_.size(t)?r.addClass("hidden"):r.removeClass("hidden")},addEmail:function(e){var t=$(e.currentTarget).closest(".share-contact").data("email");this.selectedEmails.push(t.toLowerCase()),this.searchChanged(),"function"==typeof this.options.onAdd&&this.options.onAdd(t)}}),PJQ.models.emailTemplates={},PJQ.models.emailTemplates.EmailTemplate=PJQ.models.BaseModel.extend({idAttribute:"emailTemplateId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"emailTemplates",value:this.id}])}}),PJQ.collections.emailTemplates={},PJQ.collections.emailTemplates.EmailTemplates=PJQ.collections.BaseCollection.extend({options:{projectMessage:!1},model:PJQ.models.emailTemplates.EmailTemplate,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"emailTemplates"}],[{parameter:"projectMessage",value:this.options.projectMessage}])}}),PJQ.Errors={auth:{INACTIVE:"Your account is currently inactive, contact an administrator to activate it",INACTIVE_USER:"Your account is currently inactive, contact an administrator to activate it",KEY_LENGTH:"Access key must be 10 characters",NOT_FOUND:"Access key not found",USER_NOT_FOUND:"Unable to find an account with that username",LOCKED:"Your account has been locked due to too many failed attempts",LOCKED_USER:"Your account is currently locked",INCORRECT_PASSWORD:"Incorrect password",INVALID_GRANT:"Username does not exist or has been deleted",UNHANDLED:"An error occurred, please contact customer service or try again later",USERNAME_EXISTS:"Username already taken",CUSTOMER_SERVICE:"An error occurred, please contact customer service or try again later",CURRENT_PASSWORD:"You cannot use your current password",SSO_DISABLED:"SSO is not enabled for this user",INVALID_SAML:"Unable to validate SAML certificate, please contact your system administrator"}},PJQ.ErrorHandler=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,t),(e=null!=e?e:{}).handlers=_.defaults(e.handlers?e.handlers:{},{0:{notification:{type:"error",message:"Unable to connect.  Please verify you are still connected to the internet.",showContact:!0}},400:{enableTracking:!0,level:"error",notification:{message:"An error occurred",showContact:!0}},401:{notification:{type:"error",message:"You do not have permission to view this {0}"}},404:{enableTracking:!0,level:"error",notification:{message:"An error occurred",showContact:!0}},405:{enableTracking:!0,level:"error",notification:{message:"An error occurred",showContact:!0}},500:{enableTracking:!0,level:"error",notification:{message:"An error occurred",showContact:!0}},502:{enableTracking:!0,level:"error",notification:{message:"An error occurred",showContact:!0}},503:{enableTracking:!0,level:"error",notification:{message:"An error occurred",showContact:!0}},504:{enableTracking:!0,level:"error",notification:{message:"An error occurred",showContact:!0}},default:{enableTracking:!0}}),this.options=_.defaults(e||{},{})}return _createClass(t,[{key:"handle",value:function(i,s){var n=this.options.handlers[i.status];if(null!=n&&(n.enableTracking&&"object"===("undefined"==typeof Sentry?"undefined":_typeof(Sentry))&&Sentry.configureScope(function(e){var t=0;
1null!=PJQ.app.session.contact?t=PJQ.app.session.contact.id:null!=PJQ.app.session.user&&(t=-PJQ.app.session.user.id),e.setUser({id:t}),e.setLevel(n.level?n.level:"warning"),e.setExtra("statusCode",i.status),e.setExtra("responseText",i.responseText),e.setExtra("data",s),Sentry.captureMessage(i.status.toString()+": "+i.url)}),null!=n.notification)){var e=null!=n.itemName?n.itemName:"item";n.notification.message=PJQ.helpers.stringHelpers.format(n.notification.message,e),"warning"===n.level||"warning"===n.notification.type?PJQ.notifications.notify.warningNotify(n.notification):PJQ.notifications.notify.errorNotify(n.notification)}}}]),t}(),PJQ.models.featureSettings={},PJQ.models.featureSettings.FeatureSetting=PJQ.models.BaseModel.extend({endpoint:function(){return this.options.project?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:PJQ.app.session.project.get("projectId")},{endpoint:"featuresettings"}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"settings"},{endpoint:"featuresettings"}])}}),PJQ.views.featureSettings={},PJQ.views.featureSettings.FeatureSettings=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"feature-settings")},events:{},beforeFirstRender:function(){!this.model||this.options.project||this.model.isFetched?this.render():this.model.fetch({success:_.bind(function(){this.render()},this)})},renderData:function(){return{model:this.model,project:this.options.project}},afterRender:function(){new PJQ.Binder(this.$(".settings"),this.model,{setDefaultValues:!0,watchElements:["input"],afterChange:_.bind(function(){this.onChange()},this)})},onChange:function(){"function"==typeof this.options.onChange&&this.options.onChange(this.model)}}),PJQ.views.featureSettings.FeatureSettingsModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Feature-Settings"),minWidth:700},defaultEvents:{"click .btn-save":"save","click .btn-cancel":"cancel"},renderData:function(){return{model:this.model,project:this.options.project}},afterRender:function(){new PJQ.views.featureSettings.FeatureSettings({el:this.$(".feature-settings"),project:this.options.project,model:this.model})},save:function(){this.model.save(null,{success:_.bind(function(e){PJQ.app.session.project.set("featureSettings",e.toJSON()),PJQ.app.navigator.refreshCommands(),PJQ.app.navigator.renderHeader(),this.removeModal()},this)})},cancel:function(){this.removeModal()}}),PJQ.files={downloadDrawings:function(e,t,i){var s=PJQ.helpers.objectHelpers.refinedType(e,!0);if("backboneCollection"===s||"array"===s){var n={},o=_.uniq(_.map(_.filter("array"===s?e:e.models,function(e){return e.get("isDrawing")&&null!=e.get("guid")}),function(e){return e.get("versionId")}));_.each(o,function(t){n[t]=_.map(_.filter("array"===s?e:e.models,function(e){return e.get("versionId")===t}),function(e){return e.get("guid")})});var a,r=[];i&&(i.raster&&r.push({parameter:"raster",value:i.raster}),i.merge&&r.push({parameter:"merge",value:i.merge}),i.includeAttachments&&r.push({parameter:"attachments",value:i.includeAttachments})),a=null!=t?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:t.id},{endpoint:"drawings"},{endpoint:"downloads"}],r):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"drawings"},{endpoint:"downloads"}],r);var l={versions:n,fileGuids:_.map(_.filter("array"===s?e:e.models,function(e){return!e.get("isDrawing")}),function(e){return e.get("guid")})};PJQ.files.queueDownload(a,l)}else new PJQ.models.drawings.Drawing({drawingId:-e.get("entryId"),guid:e.get("guid")}).download()},queueDownload:function(t,e,i){var s=3<arguments.length&&void 0!==arguments[3]&&arguments[3];PJQ.files.createDownloadFrame();var n=new PJQ.ajax.Request({endpoint:t,data:e,isApi2:!0,isAPIv2:s});(n=null!=e?n.post():n.get()).done(_.bind(function(e){"function"==typeof i&&i(),this.handleDownload(e)},this)).fail(function(e){PJQ.files.logDownloadFailure({endpoint:t,error:e.responseText})})},handleDownload:function(e){var t,i,s="fora";if(PJQ.app.session&&PJQ.app.session.get("portalId")===PJQ.constants.panteraPortalId&&PJQ.app.options.isPanteraApp&&(null==PJQ.app.session.user||null!=PJQ.app.session.project&&PJQ.app.session.project.get("masterUserId")!==PJQ.app.session.get("masterUserId"))){var n=PJQ.app.session.contact,o=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.QUIKBID_GROUP_IDS);
1if(null!=o){if(o=o.split(","),null!=n&&!n.isFetched)return void n.fetch({success:_.bind(function(){this.handleDownload(e)},this)});null!=n&&_.each(n.groups.models,function(e){_.contains(o,e.get("groupId").toString())&&(s="quikbid")},this)}t=20,i=!0}else t=null,i=!1;e.isReady&&e.url&&(!e.isZip&&!e.isDrawing||t<=0||null==t)?PJQ.files.downloadFile(e.url,{isEndpoint:!1}):e.isZip?new PJQ.views.files.ZipProgressModal({model:new PJQ.models.files.ZipFile(e),minWaitSeconds:t,showPromo:i,promoType:s}):e.isDrawing?new PJQ.views.files.DrawingProgressModal({model:new PJQ.models.drawings.DrawingDownload(e),minWaitSeconds:t,showPromo:i,promoType:s}):new PJQ.views.files.FileProgressModal({model:new PJQ.models.files.File(e)})},logDownloadFailure:function(e){new PJQ.logging.Debug(PJQ.logging.LoggingActions.FILE_DOWNLOAD_FAILED,e)},downloadFile:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};PJQ.files.createDownloadFrame(),!1!==t.isEndpoint&&(t.includeSessionId=!0,(t.includeAccessToken=!0)===t.isAPIv2?t.service=PJQ.constants.services.APIv2:!0===t.isApi2&&(t.service=PJQ.constants.services.FILES),e=PJQ.helpers.urlHelpers.buildApiUrl(e,t)),window.open(e,PJQ.constants.files.downloadFrameId)}
1,createDownloadFrame:function(){var e=$("#"+PJQ.constants.files.downloadFrameId);return 0===_.size(e)&&(e=$("<iframe/>",{id:PJQ.constants.files.downloadFrameId,name:PJQ.constants.files.downloadFrameId,class:"hidden"}),$("body").append(e)),e}},PJQ.models.files={},PJQ.models.files.File=PJQ.models.BaseModel.extend({idAttribute:"entryId",endpointArr:function(){return this.get("isFolder")?0<_.size(this.get("guid"))?[{endpoint:"files",value:this.get("guid")}]:[{endpoint:"folders",value:this.get("folderGuid")}]:0<_.size(this.get("guid"))?this.get("entryId")<0?[{endpoint:"drawings",value:this.get("guid")}]:[{endpoint:"files",value:this.get("guid")}]:0<_.size(this.get("key"))?[{endpoint:"files",value:this.get("key")}]:[{endpoint:"files",value:this.get("entryId")}]},endpoint:function(e){var t;return t=null!=e&&null!=e.params?e.params:[],PJQ.helpers.urlHelpers.generateEndpoint(this.endpointArr(),t)},renderUrl:function(e){return PJQ.helpers.urlHelpers.buildAPIURL(PJQ.helpers.urlHelpers.generateEndpoint(_.union(this.endpointArr(),[{endpoint:0<_.size(this.get("guid"))?"render":"renderid"}]),[{parameter:"pageNumber",value:0<e?e:1}]),!1,!1,!0)},urlForKey:function(e){return PJQ.helpers.urlHelpers.buildApiUrl(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files",value:0<_.size(e)?e:this.get("key")}]),{service:PJQ.constants.services.APIv2})},thumbnailUrl:function(){var e=this.get("thumbUrl");return 0<_.size(e)?e:0<_.size(this.get("key"))?this.urlForKey()+"/thumbnail":this.dataUrl},getSize:function(){return this.get("isFolder")?_.reduce(this.getFolderAttachments(),function(e,t){return e+t.getSize()},0):this.get("size")},exportFileList:function(){PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files",value:this.get("entryId")},{endpoint:"export"}]))},addNotification:function(e){new PJQ.models.files.DrawingNotification({guid:this.get("guid"),email:e}).save()},download:function(){var e=this.get("url");0===_.size(e)&&0<_.size(this.get("key"))&&(e=this.urlForKey()+"/download"),0<_.size(e)?PJQ.files.downloadFile(e,{isEndpoint:!1,isApi2:!0}):0<_.size(this.get("guid"))&&PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint(this.endpointArr())+"/download",{isApi2:!0})},move:function(i,e,t){var s=[];null!=e.project&&s.push({parameter:"projectId",value:e.project.id}),this.get("isFolder")?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files",value:this.get("entryId")},{endpoint:"moveto"}],s),data:{entryList:_.map(i,function(e){return e.get("entryId")})}}).put().done(_.bind(function(e){_.each(e,function(t){var e=_.find(i,function(e){return e.get("entryId")===t.entryId});null!=e&&e.set("folderId",t.folderId)},this),t(i)},this)):t(i)},copy:function(e,t,i){var s=[];null!=t.project&&s.push({parameter:"projectId",value:t.project.id}),this.get("isFolder")?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files",value:this.get("entryId")},{endpoint:"copyto"}],s),data:{entryList:_.map(e,function(e){return e.get("entryId")})}}).put().done(_.bind(function(e){i(e)},this)):i(e)},destroy:function(e){return this.get("isFolder")&&this.deleteFolderContents(),Backbone.Model.prototype.destroy.call(this,e)},deleteFolderContents:function(){_.each(this.getFolderAttachments(),_.bind(function(e){e.get("isFolder")&&e.deleteFolderContents(),null!=this.collection&&this.collection.remove(e)},this))},detachFromProject:function(e,t){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:e.id},{endpoint:"attachments",value:this.get("guid")},{endpoint:"detach"}])}).delete().done(t)},parse:function(e){return null!=e&&(null!=e.key&&(e.url=this.urlForKey(e.key)+"/download",e.thumbUrl=this.urlForKey(e.key)+"/thumbnail"),null!=e.createdOn&&(e.createdOn=new Date(e.createdOn)),null!=e.versions&&(this.versions=new PJQ.collections.files.Files(e.versions))
1),e},convert:function(e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint(this.endpointArr())+"/convert",isApi2:!0}).post().done(e).fail(_.bind(function(){PJQ.files.logDownloadFailure({file:this,error:"Failed to convert file"})},this))},checkStatus:function(e){new PJQ.ajax.Request({url:this.get("url")}).get().done(e).fail(_.bind(function(){PJQ.files.logDownloadFailure({file:this,error:"Failed to process file"})},this))},canRender:function(){var e=PJQ.helpers.fileHelpers.getExtension(this.get("name"));return"pdf"===e||"tiff"===e||"tif"===e},isImage:function(){return _.contains(PJQ.constants.files.imageExtensions,PJQ.helpers.fileHelpers.getExtension(this.get("name")))},getNameNoExtension:function(){return this.get("name").replace(this.getExtension(),"")},getExtension:function(){var e=this.get("name").split(".").pop();return""===e?e:"."+e},icon:function(){var e,t=0<arguments.length&&void 0!==arguments[0]&&arguments[0];if(this.get("isFolder"))e="folder";else switch(e="file",PJQ.helpers.fileHelpers.getExtension(this.get("name"))){case"avi":case"mp4":case"flv":case"mov":case"qt":case"wmv":case"webm":e="file-video";break;case"mp3":case"wav":case"flac":case"m4a":case"m4b":case"wma":case"aac":case"aiff":e="file-audio";break;case"png":case"jpg":case"jpeg":case"bmp":case"gif":case"tif":case"tiff":e="file-image";break;case"pdf":e="file-pdf";break;case"xls":case"xlsx":e="file-excel";break;case"doc":case"docx":e="file-word";break;case"ppt":case"pptx":e="file-powerpoint";break;case"csv":e="file-csv";break;case"zip":case"rar":case"7z":case"gz":case"tar":e="file-archive";break;case"eml":case"mbox":case"msg":e="envelope"}return(t?"file-type ":"")+"fal fa-"+e},getFolderAttachments:function(){var e=0<arguments.length&&void 0!==arguments[0]&&arguments[0],t=1<arguments.length?arguments[1]:void 0;return this.collection.getFolderAttachments(this,e,t)},fetchFolderAttachments:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{recursive:!1},s=1<arguments.length?arguments[1]:void 0;new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files"}],[{parameter:"folderId",value:this.get("guid")},{parameter:"recursive",value:e&&e.recursive}])}).get().done(_.bind(function(e){null!=this.collection&&this.collection.add(e,{silent:!0}),this.isFetched=!0,s(this.collection.get(_.map(e,function(e){return e.entryId})))},this)).fail(_.bind(function(e,t,i){s(null)},this))},getSiblingAttachments:function(){var e=this.get("folderId");return null!=this.collection&&0<e?this.collection.where({folderId:e}):[this]},getParentFolder:function(){var e=0<arguments.length&&void 0!==arguments[0]&&arguments[0],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,s=this.get("folderId");if(e){if(null!=t&&(s=t.get("folderId")),null==i&&(i=[]),null!=s){var n=this.collection.findWhere({entryId:s});if(null!=n)return i.push(n),this.getParentFolder(e,n,i)}return i}return null==this.collection?null:this.collection.findWhere({entryId:s})},getDepth:function(){if(null==this.collection)return 0;for(var e=this.getParentFolder(),t=0;null!=e;)t++,e=e.getParentFolder();return t}}),PJQ.models.files.ZipFile=PJQ.models.files.File.extend({idAttribute:"guid",endpoint:function(){return PJQ.app.options.isV2Zips?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"zips",value:this.get("guid")}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files"},{endpoint:"zips",value:this.get("guid")}])},beforeInit:function(e){PJQ.app.options.isV2Zips&&(e.isAPIv2=!0)},downloadEndpoint:function(){return this.endpoint()+"/download"},download:function(){var e=this.get("url");0===_.size(e)&&0<_.size(this.get("key"))&&(e=this.urlForKey()+"/download"),0<_.size(e)?PJQ.files.downloadFile(e,{isEndpoint:!1,isApi2:!0,isAPIv2:PJQ.app.options.isV2Zips}):PJQ.files.queueDownload(this.endpoint(),{guids:this.get("guids")},null,PJQ.app.options.isV2Zips)},addNotification:function(e){new PJQ.models.files.ZipFileNotification({guid:this.get("guid"),email:e}).save()},cancel:function(){this.get("isReady")||(this.set("status",PJQ.constants.files.zipStatus.CANCELLED),new PJQ.ajax.Request({endpoint:this.endpoint("cancel")}).delete())}}),PJQ.models.files.ZipFileNotification=PJQ.models.BaseModel.extend({idAttribute:"zipFileNotificationId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files"},{endpoint:"zips",value:this.get("guid")},{endpoint:"notifications"}])}}),PJQ.models.files.DrawingNotification=PJQ.models.BaseModel.extend({idAttribute:"notificationId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"drawings"},{endpoint:"downloads",value:this.get("guid")},{endpoint:"notifications"}])}}),PJQ.collections.files={},PJQ.collections.files.Files=PJQ.collections.BaseCollection.extend({model:PJQ.models.files.File,endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files"}],[{parameter:"folderId",value:this.options?this.options.folderId:null}]),share:function(e,t,i){var s;
1s=null!=t?this.options.isPhotos?"/projects/"+t.id.toString()+"/photos/share":"/projects/"+t.id.toString()+"/attachments/share":"/files/share",new PJQ.ajax.Request({endpoint:s,data:{subject:null!=e?e.subject:null,emails:null!=e?e.emails:null,guids:_.map(this.models,function(e){return e.get("guid")})}}).post().done(function(e){"function"==typeof i&&i(e)}).fail(function(){i()})},download:function(){null!=_.find(this.models,function(e){return e.get("isDrawing")})?PJQ.files.downloadDrawings(this.models):new PJQ.models.files.ZipFile({guids:_.map(this.models,function(e){return e.get("guid")})}).download()},getRootAttachments:function(){return this.where({folderId:0})},getSharedFolder:function(){if(null==this.get(-1)){var e=new PJQ.models.files.File({entryId:-1,folderId:0,name:"Shared",isFolder:!0});this.add(e),_.each(this.models,_.bind(function(t){-1!==t.get("entryId")&&null==_.find(this.models,function(e){return e.get("entryId")===t.get("folderId")})&&t.set("folderId",-1)},this))}return _.find(this.models,function(e){return 0===e.get("folderId")&&-1===e.get("entryId")})},getPrivateFolder:function(){return _.find(this.models,function(e){return 0===e.get("folderId")&&0<e.get("entryId")})},getRootSharedAttachments:function(){var e=this.where({folderId:0});if(1<_.size(e))return e;var t=[];return _.each(e,function(e){t.push.apply(t,_toConsumableArray(this.getFolderAttachments(e)))},this),t},fetchFoldersAttachments:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{recursive:!1},s=2<arguments.length?arguments[2]:void 0;new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files"}],[{parameter:"folderIds",value:_.map(_.filter(e,function(e){return e.get("isFolder")}),function(e){return e.get("guid")})},{parameter:"recursive",value:t&&t.recursive}])}).get().done(_.bind(function(e){this.add(e,{silent:!0}),s(this.get(_.map(e,function(e){return e.guid})))},this)).fail(_.bind(function(e,t,i){s(null)},this))},getFolderAttachments:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{hideFiles:!1,hideFolders:!1};if(null==e||!e.get("isFolder"))return[];if(t){var s=[];return _.each(this.where({folderId:e.get("entryId")}),function(e){e.get("isFolder")?(i.hideFolders||s.push(e),s=_.union(s,this.getFolderAttachments(e,t,i))):i.hideFiles||s.push(e)},this),s}var n={folderId:e.get("entryId")};return i.hideFolders?n.isFolder=!0:i.hideFiles&&(n.isFolder=!1),this.where(n)},destroy:function(e){var t=this.getPrivateFolder(),i=t?t.get("entryId"):null,s=_.filter(this.models,_.bind(function(e){return e.get("entryId")!==i},this));new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files"}]),data:{entryList:_.map(s,function(e){return e.get("entryId")})}}).delete().done(_.bind(function(){e(!0)},this)).fail(_.bind(function(){e(!1)},this))}}),PJQ.collections.files.FileShare=PJQ.collections.files.Files.extend({model:PJQ.models.files.File,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files"},{endpoint:"share",value:this.options.accessKey}])}}),PJQ.views.files={},PJQ.views.files.FileUploader=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"File-Uploader"),endpoint:"/files",canUpload:!0,canDelete:!0,dictRemoveFile:"Delete",isRemoveOnComplete:!1,ignoreHiddenFiles:!1,allowedExtensions:null,dictDefaultMessage:"Drop files here or click to upload",parallelUploads:2,chunking:!0,onError:_.noop,onSuccess:_.noop,onDrop:_.noop,useFileAPI:!0,useApiV2:!1,uuid:null},events:{"click .download-import-template":"downloadImportTemplate"},downloadImportTemplate:function(e){e.stopPropagation(),"function"==typeof this.options.uploadTemplateCallback&&this.options.uploadTemplateCallback()},getUrl:function(e){var t,i;i=this.options.useApiV2?(t=PJQ.constants.services.APIv2,"/uploads"):(t=this.options.useFileAPI?PJQ.constants.services.FILES:PJQ.constants.services.API,this.options.endpoint);var s=PJQ.helpers.urlHelpers.buildApiUrl(i,{service:t});if(s+=(-1===s.indexOf("?")?"?":"&")+"folder="+this.options.uuid,1===_.size(e)){var n=e[0];if(0<_.size(n.fullPath)&&n.fullPath!==n.name){var o=n.fullPath.replace("/"+n.name,"");
10<_.size(o)&&(s+="&fp="+encodeURIComponent(o))}}return s},beforeRender:function(){null===this.options.uuid&&(this.options.uuid=PJQ.helpers.guid()),null==this.collection&&(this.collection=new PJQ.collections.files.Files)},renderData:function(){return{options:this.options,collection:this.collection,uuid:"fileUpload_"+this.options.uuid}},afterRender:function(){this.options.canDelete||(this.options.dictRemoveFile=""),this.options.headers=PJQ.helpers.apiHelpers.getHeaders();var e=_.map(this.options.allowedExtensions,function(e){return"."+e.toLowerCase()});if(this.options.dropzoneOptions=_.defaults(this.options,{url:_.bind(this.getUrl,this),hiddenInputContainer:this.$el[0],maxFilesize:15e3,acceptedFiles:0<_.size(e)?e.join(","):null}),this.renderDropzone(),this.options.canUpload){var t="function"==typeof this.options.uploadTemplateCallback,i=$('<div class="mt-1" />');this.$el.append(i),0<_.size(this.options.allowedExtensions)&&i.append($("<span>",{class:"text-muted fs-12 ml-1"}).append("<strong>Allowed File Types: </strong>"+this.options.allowedExtensions.join(",")+(this.options.maxFiles||t?" |":""))),this.options.maxFiles&&i.append($("<span>",{class:"text-muted fs-12 ml-1"}).append("<strong>Max Files: </strong>"+this.options.maxFiles+(t?" |":""))),t&&i.append($("<span>",{class:"text-muted fs-12 ml-1"}).append('<strong>Upload Template: </strong><a class="download-import-template" href="javascript:void(0)">Download</a>'))}},renderDropzone:function(){0<this.$("#fileUpload_"+this.options.uuid).length&&(this.dropzone=new Dropzone("#fileUpload_"+this.options.uuid,this.options.dropzoneOptions),this.dropzone.on("complete",_.bind(function(t){this.options.isRemoveOnComplete&&this.removeFile(t),"success"===t.status?this.onSuccess(t):"error"===t.status&&(0<_.size(this.options.dropzoneOptions.acceptedFiles)&&!_.contains(this.options.dropzoneOptions.acceptedFiles,function(e){return t.name.toLowerCase().indexOf(e)})&&(this.removeFile(t),this.showError("The file type you uploaded is not allowed")),this.onError(t))},this)),this.dropzone.on("drop",_.bind(function(){"function"==typeof this.options.onDrop&&this.options.onDrop()},this)))},showError:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:2e3;return this.errorAlert=new PJQ.Alert(this.$(".file-upload"),{type:"danger",extraClasses:["dropzone-error-alert","p-absolute","wd-100","left-0","text-align-center"],style:"bottom:-13px !important;",text:e,isAppend:!0,animation:{in:"fadeIn",out:"fadeOut"},timeout:t}),this.errorAlert},isUploading:function(){return null!=this.dropzone&&0<_.size(this.dropzone.getQueuedFiles())+_.size(this.dropzone.getUploadingFiles())},clearError:function(){null!=this.errorAlert&&this.errorAlert.destroy()},removeFile:function(e){null!=this.dropzone&&this.dropzone.removeFile(e),null!=this.collection&&null!=e.model&&this.collection.remove(e.model)},onError:function(e){this.options.onError(e)},onSuccess:function(e){var t,i=JSON.parse(e.xhr.response);i.name=null!==(t=i.fileName)&&void 0!==t?t:i.name,this.options.onSuccess(i,e)}}),PJQ.views.files.FileUploaderGrid=PJQ.views.files.FileUploader.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"File-Uploader-Grid"),subTemplates:{gridFile:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"File-Uploader-Grid-File"),listFile:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"File-Uploader-List-File")},style:"grid",sideBySide:!1,isSmall:!1,endpoint:"/files",canUpload:!0,canDelete:!0,canView:!0,dictRemoveFile:"Delete",isRemoveOnComplete:!1,ignoreHiddenFiles:!1,allowedExtensions:null,dictDefaultMessage:"Drop files here or click to upload",canDownloadAll:!1,includeProjectAttachments:!1,parallelUploads:1,chunking:!0,offsetTopText:!1,onError:_.noop,onSuccess:_.noop,onFileStatusChange:_.noop,onDrop:_.noop,onDelete:null,afterDelete:_.noop,previewImageDimension:150,showCreatedByLink:!0,useFileAPI:!0,useApiV2:!1,hasNotes:!1,isVersioned:!1,onNewVersion:_.noop,context:null,contextId:null,onAnnotationChange:null,canAddAnnotations:!0,mergeAnnotations:null,sortDirection:"desc",maxFiles:null,onNoteChanged:null},events:{"click .file-preview-image":"viewFile","click .file-view-pdf":"viewPdfFile","click .file-preview-download":"downloadFile","click .file-preview-delete":"deleteFile","click .btn-versions":"viewFileVersions","click .file-edit-note":"editNote","click .download-all":"downloadAll","click .dz-upload-project-attachments":"uploadFromProjectAttachments","click .download-import-template":"downloadImportTemplate"},viewFileVersions:function(t){var e=this.collection.get($(t.currentTarget).closest(".file-preview").data("cid"));null==e&&this.options.isVersioned&&(e=_.find(this.collection.models,function(e){if(null!=e.versions&&0<_.size(e.versions.models)&&null!=e.versions.get($(t.currentTarget).closest(".file-preview").data("cid")))return!0;return!1})),new PJQ.views.files.FileVersionsModal({model:e,collectionDefinition:this.collection?this.collection.constructor:null,onSave:_.bind(function(e){var t=null!=e[0].get("parentAttachmentId")?this.collection.get(e[0].get("parentAttachmentId")):null;null!=t&&t.versions.add(e),this.collection.add(e),this.options.onNewVersion&&this.options.onNewVersion()},this)})},beforeFirstRender:function(){this.options.uuid=PJQ.helpers.guid();var e=null;null!=PJQ.app.session.project?e=PJQ.app.session.project.preferences:null!=PJQ.app.session&&(e=PJQ.app.session.preferences),null!=e&&(this.options.sideBySide=e.hasPref(PJQ.constants.preferenceTypes.FILE_UPLOADER_SIDE_BY_SIDE))},renderDropzone:function(){this.options.isSmall&&this.$(".file-upload").addClass("file-upload-small"),"list"===this.options.style.toLowerCase()?this.$(".file-upload").addClass("file-upload-list"):this.$(".file-upload").addClass("file-upload-grid"),this.options.canUpload&&(this.dropzone=new Dropzone(this.$("#fileUpload_"+this.options.uuid)[0],_.extend(this.options.dropzoneOptions,{maxFiles:this.options.maxFiles,maxfilesexceeded:_.bind(function(e){this.removeFile(e),this.showError("Maximum files exceeded")},this),addedfile:_.bind(function(e){if(this.options.maxFiles&&_.size(_.filter(this.collection.models,function(e){return!e.get("delete")&&!e.get("isDeleted")},this))>=this.options.maxFiles)return this.removeFile(e),void this.showError("Maximum files exceeded");var t,i=new this.collection.model({name:e.name,status:"queued"});(null!=PJQ.app.session.contact?i.set("createdBy",PJQ.app.session.contact.toJSON()):null!=PJQ.app.session.user&&i.set("createdBy",PJQ.app.session.user.toJSON()),this.options.versionByName)&&(null!=(t="function"==typeof this.options.getParentAttachment?this.options.getParentAttachment(i):_.find(this.collection.models,function(e){return e.get("name")===i.get("name")&&!e.get("delete")&&(null==e.get("parentAttachmentId")||e.get("parentAttachmentId")===e.id)}
1))&&i.set("parentAttachmentId",t.id));(i.file=e).model=i,this.collection.add(i),e.$previewElement=this.renderFile(i,"grid"===this.options.style.toLowerCase()),e.$previewElement.addClass("uploading queued"),e.previewElement=e.$previewElement[0]},this),thumbnail:function(e,t){null!=e.$previewElement&&e.$previewElement.find(".file-preview-image").attr("src",t)},uploadprogress:function(e,t){if(e.$previewElement.removeClass("queued"),e.model.get("status")!==e.status&&(e.model.set("status",e.status),this.options.onFileStatusChange(e)),"uploading"===e.status&&t<100||"success"===e.status){e.lastProgress=Math.ceil(t);var i=e.lastProgress.toString()+"%";e.$previewElement.find(".file-preview-progress .progress-bar").css("width",i).html(i)}},drop:_.bind(function(){"function"==typeof this.options.onDrop&&this.options.onDrop()},this),complete:_.bind(function(t){if(t.model.set("status",t.status),this.options.onFileStatusChange(t),"success"===t.status){t.$previewElement.removeClass("uploading").addClass("uploaded"),t.model.dataUrl=t.dataURL;var e,i,s,n,o,a,r,l=JSON.parse(t.xhr.response);if(this.options.useApiV2||"/files"!==this.options.endpoint&&!this.options.useApiV2)t.model.set({uploadId:l.uploadId,name:null!==(e=null!==(i=l.name)&&void 0!==i?i:l.fileName)&&void 0!==e?e:null===(s=l.fileData)||void 0===s?void 0:s.fileName},{silent:!0});else t.model.set({folder:l.folder,name:null!==(n=null!==(o=l.name)&&void 0!==o?o:l.fileName)&&void 0!==n?n:null===(a=l.fileData)||void 0===a?void 0:a.fileName},{silent:!0});if(!this.options.useApiV2&&"/files"!==this.options.endpoint)"array"===PJQ.helpers.objectHelpers.refinedType(l)?_.each(l,function(e){e.isFolder?this.collection.add(e):r=e},this):r=l,t.model.set(r,{silent:!0});0<t.model.id&&t.$previewElement.find(".file-preview-download").removeClass("hidden"),this.onSuccess(t)}else if("error"===t.status){if(0<_.size(this.options.dropzoneOptions.acceptedFiles)&&!_.contains(this.options.dropzoneOptions.acceptedFiles,function(e){return t.name.toLowerCase().indexOf(e)}))this.removeFile(t),this.showError("The file type you uploaded is not allowed");else{var c=t.model.get("retries");-1<(c=null!=c?c:0)?t.$previewElement.removeClass("uploading").addClass("failed"):(t.model.set("retries",1),new File([t],t.name,{type:t.type}),this.dropzone.uploadFile(t))}this.onError(t)}},this)}))),this.renderFiles()},renderFiles:function(){this.options.canUpload&&this.renderUploadMessage(),_.each(_.sortBy(_.filter(this.collection.models,function(e){return!e.get("isDeleted")}),_.bind(function(e){return this.options.sortBy?e.get(this.options.sortBy):this.options.sortDirection&&"asc"===this.options.sortDirection.toLowerCase()?e.id:-e.id},this)),_.bind(function(e){var t=e;this.options.isVersioned&&(null!=e.versions&&0<_.size(e.versions.models)?t=_.max(e.versions.models,function(e){return e.get("version")}):1<e.get("version")&&(t=null)),null!=t&&this.renderFile(t)},this)),PJQ.app.lazyLoad().update()},renderFile:function(e){var t,i=1<arguments.length&&void 0!==arguments[1]&&arguments[1];t="list"===this.options.style.toLowerCase()?this.options.subTemplates.listFile:this.options.subTemplates.gridFile;var s,n=PJQ.templating.TemplateRenderer.parseTemplate(t,{model:e,showCreatedByLink:this.options.showCreatedByLink,canDelete:this.options.canDelete,canView:this.options.canView,isImage:e.isImage(),thumbUrl:e.thumbnailUrl(),previewImageDimension:this.options.previewImageDimension,hasNotes:this.options.hasNotes,isVersioned:this.options.isVersioned,versions:this.options.versions?this.options.versions:null});return this.options.canUpload&&!this.$(".dz-message").hasClass("dz-message-top")&&(n.addClass("hidden"),this.renderUploadMessage(_.bind(function(){n.removeClass("hidden")},this))),s=this.options.sideBySide&&0<e.id?this.$(".files-existing-container"):this.$(".files-container"),i?s.prepend(n):s.append(n),n},renderUploadMessage:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:_.noop,t=this.$(".dz-message"),i="dz-message-top",s={height:"40px"};this.options.offsetTopText&&(s.right="3rem"),!this.options.sideBySide&&0<this.collection.length||null!=this.collection.findWhere(function(e){return e.isNew()})?(this.$(".file-upload").removeClass("dz-clickable"),t.hasClass("dz-message-top")?e():t.addClass(i).animate(s,500,_.bind(function(){t.css(s).html('Drop files or <a href="javascript:void(0)" class="file-upload-upload ml-1 text-orange">click here to upload</a>'),this.options.offsetTopText&&(t.removeAttr("left"),t.css("right","3rem")),null!=e&&e()},this)).addClass(i)):(t.html("Drop files or click to upload"),null!=e&&e())},uploadFromProjectAttachments:function(e){new PJQ.views.projects.AttachmentsModal({onSave:_.bind(function(e){_.each(e,function(e){var t=new PJQ.models.files.File(e.toJSON());t.get("isFolder")||(0<t.get("drawingId")&&t.set("entryId",-t.get("drawingId")),t.set("attachmentId",null),this.collection.add(t),this.options.onSuccess(t))},this),this.render()},this)})},viewFile:function(i){var s=this.collection.get($(i.currentTarget).closest(".file-preview").data("cid"));null==s&&this.options.isVersioned&&_.find(this.collection.models,function(e){if(null!=e.versions&&0<_.size(e.versions.models)){var t=e.versions.get($(i.currentTarget).closest(".file-preview").data("cid"));if(null!=t)return s=t,!0}return!1}),PJQ.app.view.renderPhotoViewer({model:s,collection:this.collection,canDelete:this.options.canDelete,onDelete:_.bind(function(){this.render()},this)})},viewPdfFile:function(i){var s=this.collection.get($(i.currentTarget).closest(".file-preview").data("cid"));if(null==s&&this.options.isVersioned&&_.find(this.collection.models,function(e){if(null!=e.versions&&0<_.size(e.versions.models)){var t=e.versions.get($(i.currentTarget).closest(".file-preview").data("cid"));if(null!=t)return s=t,!0}return!1}),s.get("entryId")<0){var e=new PJQ.models.drawings.Drawing({drawingId:-s.get("entryId")});e.fetch({success:_.bind(function(){new PJQ.views.drawings.DrawingViewer({model:e,context:this.options.context,contextId:this.options.contextId,isA
1nnotationsEnabled:!0,noNavigation:!0,canAddAnnotations:this.options.canAddAnnotations,onAnnotationChange:this.options.onAnnotationChange,mergeAnnotations:null!=this.options.mergeAnnotations?this.options.mergeAnnotations.models:null})},this)})}else new PJQ.views.files.FileViewer({model:s})},downloadFile:function(i){var s=this.collection.get($(i.currentTarget).closest(".file-preview").data("cid"));if(null==s&&this.options.isVersioned&&_.find(this.collection.models,function(e){if(null!=e.versions&&0<_.size(e.versions.models)){var t=e.versions.get($(i.currentTarget).closest(".file-preview").data("cid"));if(null!=t)return s=t,!0}return!1}),null!=s.versions&&0<_.size(s.versions.models))return s.versions.sortBy(function(e){return-e.id})[0].download();s.download()},downloadAll:function(){this.collection.download()},downloadVersion:function(e){this.options.versions.get($(e.currentTarget).closest(".btn-download-version").data("cid")).download()},editNote:function(t){var e=this,i=this.collection.get($(t.currentTarget).closest(".file-preview").data("cid"));null==i&&this.options.isVersioned&&(i=_.find(this.collection.models,function(e){if(null!=e.versions&&0<_.size(e.versions.models)&&null!=e.versions.get($(t.currentTarget).closest(".file-preview").data("cid")))return!0;return!1})),new PJQ.views.submittals.FileEditorModal({model:i,isNoteEdit:!0,collection:this.collection,isNewVersion:!0,onSave:function(){e.render(),"function"==typeof e.options.onNoteChanged&&e.options.onNoteChanged(i)}})},deleteFile:function(t){var e=$(t.currentTarget).closest(".file-preview"),i=this.collection.get(e.data("cid"));null==i&&this.options.isVersioned&&(i=_.find(this.collection.models,function(e){if(null!=e.versions&&0<_.size(e.versions.models)&&null!=e.versions.get($(t.currentTarget).closest(".file-preview").data("cid")))return!0;return!1})),"function"==typeof this.options.onDelete?this.options.onDelete(i,_.bind(function(){e.remove(),this.options.afterDelete()},this)):(i.destroy(),e.remove(),this.options.afterDelete())}}),PJQ.views.files.ZipProgressModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Zip-Progress"),subTemplates:{content:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Zip-Progress-Content")},checkProgressInterval:2e3,minWaitSeconds:null},events:{"click .zip-download-button":"downloadZip","click .zip-email-button":"emailZip","keyup .zip-email":"emailChanged","click .zip-cancel-button":"cancelZip"},beforeModalCreated:function(){0<this.options.minWaitSeconds&&(this.isWaiting=!0,this.waitTimeout=setTimeout(_.bind(function(){this.isWaiting=!1;var e=this.model.get("status");!this.model.get("isReady")||e!==PJQ.constants.files.zipStatus.COMPLETE&&e!==PJQ.constants.files.zipStatus.COMPLETE_ASYNC||(this.downloadZip(),this.stopChecking())},this),1e3*this.options.minWaitSeconds))},renderData:function(){return{model:this.model,showPromo:this.options.showPromo,promoType:this.options.promoType}},afterRender:function(){this.renderContent(),this.checkZipStatus()},checkZipStatus:function(){var e=this.model.get("status");!this.model.get("isReady")||e!==PJQ.constants.files.zipStatus.COMPLETE&&e!==PJQ.constants.files.zipStatus.COMPLETE_ASYNC?e===PJQ.constants.files.zipStatus.NEW||e===PJQ.constants.files.zipStatus.QUEUED||e===PJQ.constants.files.zipStatus.IN_PROGRESS?this.checkStatusTimeout=setTimeout(_.bind(function(){this.model.fetch({success:_.bind(function(){this.checkZipStatus()},this),fail:_.bind(function(e,t){this.model.set("status",PJQ.constants.files.zipStatus.FAILED),this.renderContent(),PJQ.files.logDownloadFailure({model:e,result:t})},this)})},this),this.options.checkProgressInterval):e!==PJQ.constants.files.zipStatus.CANCELLED&&e!==PJQ.constants.files.zipStatus.FAILED||this.renderContent():this.isWaiting?this.renderContent():this.downloadZip()},renderContent:function(){var e="";null!=PJQ.app.session.user?e=PJQ.app.session.user.get("email"):null!=PJQ.app.session.contact&&(e=PJQ.app.session.contact.get("email")),this.renderSubTemplate(!1,this.options.subTemplates.content,this.$(".download-content"),{model:this.model,defaultEmail:e,isWaiting:this.isWaiting},_.bind(function(){this.model.get("status")===PJQ.constants.files.zipStatus.CANCELLED||this.model.get("status")===PJQ.constants.files.zipStatus.FAILED?this.$(".zip-cancel-button").text("Close"):new PJQ.Loader(this.$(".zip-loader"),{type:"block"})},this))},downloadZip:function(){this.cancel||this.downloaded||(this.downloaded=!0,this.model.download(),this.options.showPromo?this.renderContent():this.removeModal())},emailChanged:function(){this.$(".zip-email-button").prop("disabled",this.$(".zip-email").val().indexOf("@")<=0)},emailZip:function(){this.stopChecking(),this.model.addNotification(this.$(".zip-email").val())},cancelZip:function(){this.stopChecking(),this.model.get("status")===PJQ.constants.files.zipStatus.IN_PROGRESS&&this.model.cancel()},stopChecking:function(){this.cancel=!0,null!=this.checkStatusTimeout&&clearTimeout(this.checkStatusTimeout),null!=this.waitTimeout&&clearTimeout(this.waitTimeout)}}),PJQ.views.files.FileProgressModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-File-Progress"),subTemplates:{content:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-File-Progress-Content")}},events:{"click .file-cancel-button":"cancelDownload"},afterRender:function(){this.renderContent()},renderContent:function(){this.renderSubTemplate(!1,this.options.subTemplates.content,this.$(".modal-body"),{model:this.model},_.bind(function(){new PJQ.Loader(this.$(".file-loader"),{type:"block"}),this.model.get("isReady")?this.downloadFile():this.model.get("isProcess")&&0<_.size(this.model.get("url"))?this.checkStatus():this.model.convert(_.bind(function(){this.downloadFile()},this))},this))},downloadFile:function(){this.isCancel||(this.model.download(),this.removeModal())},checkStatus:function(){setTimeout(_.bind(function(){this.model.checkStatus(_.bind(function(e){this.model.set(e),e.isReady?this.downloadFile():this.checkStatus()},this))},this),2e3)},cancelDownload:function(){this.isCancel=!0}}),PJQ.views.files.DrawingProgressModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Drawing-Progress"),subTemplates:{content:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Drawing-Progress-Content")},checkProgressInterval:2e3,minWaitSeconds:null},events:{"click .drawing-download-button":"downloadZip","click .drawing-email-button":"emailZip","keyup .drawing-email":"emailChanged","click .drawing-cancel-button":"cancelZip"},beforeModalCreated:function(){0<this.options.minWaitSeconds&&(this.isWaiting=!0,this.waitTimeout=setTimeout(_.bind(function(){this.isWaiting=!1;var e=this.model.get("status");this.model.get("isReady")&&e===PJQ.constants.drawings.downloadStatus.COMPLETE&&(this.downloadDrawings(),this.stopChecking())},this),1e3*this.options.minWaitSeconds))},renderData:function(){return{model:this.model,showPromo:this.options.showPromo,promoType:this.options.promoType}},afterRender:function(){this.renderContent(),this.checkDownloadStatus()},checkDownloadStatus:function(){var e=this.model.get("status");this.model.get("isReady")&&e===PJQ.constants.drawings.downloadStatus.COMPLETE?this.isWaiting?this.renderContent():this.downloadDrawings():e===PJQ.constants.drawings.downloadStatus.QUEUED||e===PJQ.constants.drawings.downloadStatus.IN_PROGRESS?this.checkStatusTimeout=setTimeout(_.bind(function(){this.model.fetch({success:_.bind(function(){this.checkDownloadStatus()},this),fail:_.bind(function(e,t){this.model.set("status",PJQ.constants.drawings.downloadStatus.FAILED),this.renderContent(),PJQ.files.logDownloadFailure({model:e,result:t})},this)})},this),this.options.checkProgressInterval):e===PJQ.constants.drawings.downloadStatus.FAILED&&this.renderContent()},renderContent:function(){var e="";null!=PJQ.app.session.user?e=PJQ.app.session.user.get("email"):null!=PJQ.app.session.contact&&(e=PJQ.app.session.contact.get("email")),this.renderSubTemplate(!1,this.options.subTemplates.content,this.$(".modal-body"),{model:this.model,defaultEmail:e,isWaiting:this.isWaiting},_.bind(function(){this.model.get("status")===PJQ.constants.drawings.downloadStatus.FAILED&&this.$(".drawing-cancel-button").text("Close")},this))},downloadDrawings:function(){this.cancel||this.downloaded||(this.downloaded=!0,this.model.download(),this.options.showPromo?this.renderContent():this.removeModal())},emailChanged:function(){this.$(".drawing-email-button").prop("disabled",this.$(".drawing-email").val().indexOf("@")<=0)},emailZip:function(){this.stopChecking(),this.model.addNotification(this.$(".drawing-email").val())},cancelZip:function(){this.stopChecking(),this.model.get("status")===PJQ.constants.files.zipStatus.IN_PROGRESS&&this.model.cancel()},stopChecking:function(){this.cancel=!0,null!=this.checkStatusTimeout&&clearTimeout(this.checkStatusTimeout)}}),PJQ.views.files.FileUploaderModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.FILES,"Modal-Upload"),fileUploaderOptions:{},onDone:_.noop,maxFiles:null},events:{"click .btn-done":"done"},beforeModalCreated:function(){this.files=new PJQ.collections.files.Files},renderData:function(){return{options:this.options}},afterRender:function(){this.fileUploader=new PJQ.views.files.FileUploaderGrid(_.defaults({el:this.$(".file-uploader-container"),collection:this.files,endpoint:null!=this.options.project?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"attachments",value:null!=this.options.folder?this.options.folder.get("entryId"):null}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files",value:null!=this.options.folder?this.options.folder.get("entryId"):null}]),allowedExtensions:this.options.allowedExtensions,maxFiles:this.options.maxFiles,style:"list",onSuccess:_.bind(this.dataChanged,this),onFileStatusChange:_.bind(this.dataChanged,this),onDrop:_.bind(this.dataChanged,this),afterDelete:_.bind(this.dataChanged,this)},this.options.fileUploaderOptions))},dataChanged:function(){var o=0,a=0,r=0,l=0;_.each(this.files.models,function(e){switch(e.get("status")){case"queued":o++;break;case"uploading":a++;break;case"success":r++;break;case"error":l++}var t=$('<span class="text-primary mr-2">Queued: '+o.toString()+"</span>");0===o&&t.addClass("op-6 font-weight-light");var i=$('<span class="text-orange mr-2">Uploading: '+a.toString()+"</span>");0===a&&i.addClass("op-6 font-weight-light");var s,n=$('<span class="text-success mr-2">Uploaded: '+r.toString()+"</span>");0===r&&n.addClass("op-6 font-weight-light"),s=0===l?[t,i,n]:[t,i,n,$('<span class="text-danger">Failed: '+l.toString()+"</span>")],this.$(".upload-files-status").empty().append(s)},this)},done:function(){this.fileUploader.isUploading()?new PJQ.views.BaseModal({header:"Files Uploading",body:"You cannot finish while files are still uploading.  Would you like to stop uploading?",isShowOkButton:!1,isShowCancelButton:!0,isShowSecondaryButton:!0,secondaryButtonText:"Stop Upload",secondaryButtonColorClass:"danger",onSecondary:_.b
1ind(function(){this.removeModal()},this)}):(this.removeModal(),"function"==typeof this.options.onDone&&this.options.onDone(this.files.models))},cancel:function(){this.removeModal()}}),PJQ.views.files.RawFileUploaderModal=PJQ.views.files.FileUploaderModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-File-Uploader-Raw"),maxWidth:"530px"},events:{"keyup .input-revision-name":"dataChanged","click .btn-submit":"submit"},beforeModalCreated:function(){null==this.options.project&&(this.options.project=PJQ.app.session.project),this.files=new PJQ.collections.files.Files},beforeRender:function(){this.renderData={uploadId:this.uploadId,options:this.options}},afterRender:function(){null==this.uploadId&&(this.fileUploader=new PJQ.views.files.FileUploaderGrid({el:this.$(".raw-file-upload"),collection:this.files,useFileAPI:!1,style:"list",onSuccess:_.bind(this.dataChanged,this),onFileStatusChange:_.bind(this.dataChanged,this),onDrop:_.bind(this.dataChanged,this),afterDelete:_.bind(this.dataChanged,this)}))},dataChanged:function(){var e=0<_.size(this.$(".input-revision-name").val()),t=0<_.size(this.files.models),n=0,o=0,a=0;_.each(this.files.models,function(e){switch(e.get("status")){case"queued":n++;break;case"uploading":o++;break;case"success":a++}var t=$('<span class="text-primary mr-2">Queued: '+n.toString()+"</span>");0===n&&t.addClass("op-6 font-weight-light");var i=$('<span class="text-orange mr-2">Uploading: '+o.toString()+"</span>");0===o&&i.addClass("op-6 font-weight-light");var s=$('<span class="text-success">Uploaded: '+a.toString()+"</span>");0===a&&s.addClass("op-6 font-weight-light"),this.$(".upload-files-status").empty().append([t,i,s])},this),this.$(".btn-submit").prop("disabled",!e||!t||this.fileUploader.isUploading())},submit:function(){var s={name:this.$(".input-revision-name").val(),notes:this.$(".input-revision-notes").val(),attachments:this.files.toJSON()};new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"revisions"}]),data:s}).post().done(_.bind(function(e){this.uploadId=e.uploadId,null!=this.options.project&&this.options.project.set("status","BUSY"),this.render()},this)).fail(_.bind(function(e,t,i){this.uploadId=0,this.render(),new PJQ.logging.Debug(PJQ.logging.LoggingActions.UPLOAD_RAW_FILES,{data:s,error:t,result:i})},this))}}),PJQ.views.files.FileUploaderBackground=PJQ.views.files.FileUploader.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"File-Uploader-Grid"),subTemplates:{gridFile:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"File-Uploader-Grid-File"),listFile:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"File-Uploader-List-File")},style:"grid",isSmall:!1,endpoint:"/files",canUpload:!0,canDelete:!0,canView:!0,dictRemoveFile:"Delete",isRemoveOnComplete:!1,allowedExtensions:null,dictDefaultMessage:"Drop files here or click to upload",parallelUploads:1,chunking:!0,onError:_.noop,onSuccess:_.noop,onFileStatusChange:_.noop,onDrop:_.noop,onDelete:null,afterDelete:_.noop,previewImageDimension:160,showCreatedByLink:!0,useFileAPI:!0,hasNotes:!1,isVersioned:!1},events:{"click .file-preview-image":"viewFile","click .file-preview-download":"downloadFile","click .file-preview-delete":"deleteFile","click .file-preview":"renderHistoryFiles"},beforeFirstRender:function(){null==this.collection&&(this.collection=new PJQ.collections.files.Files)},renderDropzone:function(){this.options.isSmall&&this.$(".file-upload").addClass("file-upload-small"),"list"===this.options.style.toLowerCase()?this.$(".file-upload").addClass("file-upload-list"):this.$(".file-upload").addClass("file-upload-grid"),this.dropzone=new Dropzone("#fileUpload_"+this.options.uuid,_.extend(this.options.dropzoneOptions,{addedfile:_.bind(function(e){var t=new this.collection.model({name:e.name,status:"queued"});null!=PJQ.app.session.contact?t.set("createdBy",PJQ.app.session.contact.toJSON()):null!=PJQ.app.session.user&&t.set("createdBy",PJQ.app.session.user.toJSON()),(t.file=e).model=t,this.collection.add(t),e.$previewElement=this.renderFile(t,"grid"===this.options.style.toLowerCase()),e.$previewElement.addClass("uploading queued"),e.previewElement=e.$previewElement[0]},this),thumbnail:function(e,t){null!=e.$previewElement&&e.$previewElement.find(".file-preview-image").attr("src",t)},uploadprogress:function(e,t){if(e.$previewElement.removeClass("queued"),e.model.get("status")!==e.status&&(e.model.set("status",e.status),this.options.onFileStatusChange(e)),"uploading"===e.status&&t<100||"success"===e.status){e.lastProgress=Math.ceil(t);var i=e.lastProgress.toString()+"%";e.$previewElement.find(".file-preview-progress .progress-bar").css("width",i).html(i)}},drop:_.bind(function(){"function"==typeof this.options.onDrop&&this.options.onDrop()},this),complete:_.bind(function(t){if("success"===t.status){t.$previewElement.removeClass("uploading").addClass("uploaded"),t.model.dataUrl=t.dataURL;var i,e=JSON.parse(t.xhr.response);if(this.options.useApiV2?t.model.set({uploadId:e.uploadId,name:e.fileName},{silent:!0}):t.model.set({folder:e.folder,name:e.fileData.fileName},{silent:!0}),!this.options.useApiV2&&"/files"!==this.options.endpoint)"array"===PJQ.helpers.objectHelpers.refinedType(e)?_.each(e,function(e){e.isFolder?this.collection.add(e):i=e},this):i=e,t.model.set(i,{silent:!0});0<t.model.id&&t.$previewElement.find(".file-preview-download").removeClass("hidden"),this.onSuccess(t)}else if("error"===t.status)if(0<_.size(this.options.dropzoneOptions.acceptedFiles)&&!_.contains(this.options.dropzoneOptions.acceptedFiles,function(e){return t.name.toLowerCase().indexOf(e)}))this.removeFile(t),this.showError("The file type you uploaded is not allowed");else{var s=t.model.get("retries");-1<(s=null!=s?s:0)?t.$previewElement.removeClass("uploading").addClass("failed"):(t.model.set("retries",1),new File([t],t.name,{type:t.type}),this.dropzone.uploadFile(t))}},this)})),this.options.canUpload||this.$(".dz-hidden-input").remove(),this.renderFiles()},renderFiles:function(){this.options.canUpload&&this.renderUploadMessage(),_.each(_.sortBy(_.filter(this.collection.models,function(e){return!e.get("isDeleted")}),function(e){return-e.get("entryId")}),_.bind(function(e){this.renderFile(e)},this)),PJQ.app.lazyLoad().update()},renderFile:function(e){var t,i=1<arguments.length&&void 0!==arguments[1]&&arguments[1];t="list"===this.options.style.toLowerCase()?this.options.subTemplates.listFile:this.options.subTemplates.gridFile;var s,n=PJQ.templating.TemplateRenderer.parseTemplate(t,{model:e,showCreatedByLink:this.options.showCreatedByLink,canDelete:this.options.canDelete,canView:this.options.canView,isImage:e.isImage(),thumbUrl:e.thumbnailUrl(),previewImageDimension:this.options.previewImageDimension,hasNotes:this.options.hasNotes,isVersioned:this.options.isVersioned,versions:e.fileHistory?e.fileHistory:null});return this.options.canUpload&&!this.$(".dz-message").hasClass("dz-message-top")&&(n.addClass("hidden"),this.renderUploadMessage(_.bind(function(){n.removeClass("hidden")},this))),s=this.options.sideBySide&&0<e.id?this.$(".files-existing-container"):this.$(".files-container"),i?s.prepend(n):s.append(n),n},renderUploadMessage:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:_.noop,t=this.$(".dz-message"),i="dz-message-top",s={height:"40px"};null!=this.collection.findWhere(function(e){return e.isNew()})?(this.$(".file-upload").removeClass("dz-clickable"),t.hasClass("dz-message-top")?e():t.addClass(i).animate(s,500,_.bind(function(){t.css(s).html('Drop files or <a href="javascript:void(0)" class="file-upload-upload ml-1 text-orange">click here to upload</a>'),null!=e&&e()},this)).addClass(i)):(t.html("Drop files or click to upload"),null!=e&&e())},viewFile:function(e){var t=this.collection.get($(e.currentTarget).closest(".file-preview").data("cid"));PJQ.app.view.renderPhotoViewer({model:t,collection:this.collection})},downloadFile:function(e){this.collection.get($(e.currentTarget).closest(".file-preview").data("cid")).download()},deleteFile:function(e){var t=$(e.currentTarget).closest(".file-preview"),i=this.collection.get(t.data("cid"));"function"==typeof this.options.onDelete?this.options.onDelete(i,_.bind(function(){t.remove(),this.options.afterDelete()},this)):(i.destroy(),t.remove(),this.options.afterDelete())}}),PJQ.views.files.FileSelectInput=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"File-Select-Input"),subTemplates:{changeButton:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"File-Select-Input-Change-Button")},isShowChangeButton:!1,emptyNotice:"No Files Selected"},events:{"click .file-select-input-edit":"edit"}
1,beforeFirstRender:function(){this.options.isShowChangeButton&&(this.options.template=this.options.subTemplates.changeButton);var e=$('<button type="button" class="btn btn-transparent-light text-info btn-sm file-select-input-edit ml-1"><i class="fal fa-pencil"></i></button>');this.$el.closest(".form-group").find("label").append(e),e.on("click",_.bind(this.edit,this)),this.selectedFiles=this.options.selectedFiles?this.options.selectedFiles:[]},renderData:function(){return{selectedFiles:this.selectedFiles}},edit:function(){new PJQ.views.files.FileSelector(_.defaults(this.options.selectorOptions,{project:this.options.project,selectedAttachmentIds:_.map(this.selectedFiles,function(e){return e.cid}),collection:this.options.collection,onSave:_.bind(function(e){this.selectedFiles=this.options.ignoreFolders?_.filter(e,function(e){return!e.get("isFolder")}):e,this.render(),"function"==typeof this.options.onChange&&this.options.onChange(this.selectedFiles)},this)}))},validate:function(){return 0<_.size(this.selectedFiles)||(this.$(".file-select-value").html('<div class="text-danger mt-1">This field is required.</div>'),!1)}}),PJQ.views.files.FileVersionsModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-file-versions"),width:"40%",maxWidth:800},events:{"click .btn-download-version":"downloadVersion","click .btn-save":"save"},beforeRender:function(){this.versions=_.union(this.model.versions?this.model.versions.models:[],[this.model]),null==this.collectionDefinition&&(this.collectionDefinition=PJQ.collections.files.Files),this.newVersions=new this.collectionDefinition,this.renderData={model:this.model}},afterRender:function(){this.dataTable=new PJQ.views.dataTables.DataTable({el:this.$(".file-versions"),data:this.versions,isHideSearch:!0,rowId:"cid",paging:!1,order:[0,"desc"],language:{zeroRecords:"No other versions"},columns:[{title:"Version",data:"attributes.version",render:function(e,t,i){return null!=e?e:1}},{title:"Name",data:"attributes.name"},{title:"Uploaded",data:"attributes.createdOn",render:function(e,t,i){return null==i.get("createdOn")?"":PJQ.helpers.dateHelpers.getDateString(i.get("createdOn"),PJQ.helpers.dateHelpers.dateFormats.DATE)}},{data:"",title:"",orderable:!1,searchable:!1,width:"80px",render:_.bind(function(e,t,i){return'<div class="show-on-row-hover"><button type="button" data-cid="'+i.cid+'" class="btn btn-primary btn-download-version"><i class="fal fa-download"></i></button></div>'},this)}]}),this.fileUploader=new PJQ.views.files.FileUploaderGrid({el:this.$(".file-versions-uploader"),collection:this.newVersions,style:"list",canUpload:0===this.newVersions.length,canDelete:!0,canDownload:!0,isRemoveOnComplete:!0,previewImageDimension:150,onDelete:_.bind(function(e,t){0<e.id?e.set("isDeleted",!0):e.destroy(),this.model.isDirty=!0,t()},this)})},downloadVersion:function(e){_.findWhere(this.versions,{cid:$(e.currentTarget).data("cid")}).download()},save:function(){var t=this;_.each(this.newVersions.models,function(e){e.set({parentAttachmentId:t.model.get("attachmentId"),version:t.versions.length+1,createdOn:new Date}),t.model.versions.add(e)}),this.options.onSave(this.newVersions.models),this.removeModal()}}),PJQ.helpers.fileHelpers={getExtension:function(e){return e?e.split(".").pop().toLowerCase():null},getDisplayFileSize:function(e){var t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],i=t?1e3:1024;if(Math.abs(e)<i)return e+" B";for(var s=t?["kB","MB","GB","TB","PB","EB","ZB","YB"]:["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],n=-1;e/=i,++n,Math.abs(e)>=i&&n<s.length-1;);return e.toFixed(1)+" "+s[n]}},PJQ.modules.files={routes:[{route:"files/share/:accessKey",name:"shareFiles",callback:function(e){var i=new PJQ.collections.files.FileShare(null,{accessKey:e});i.fetch({success:function(){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"orders"},{endpoint:"settings"}],[{parameter:"entryId",value:i.models[0].get("entryId")}])}).get().done(_.bind(function(e){var t=$("<div>",{class:"p-3"});PJQ.app.$el.html(t),_.each(i.models,function(e){e.get("isFolder")&&(e.isFetched=!0)}),PJQ.app.view.renderView(PJQ.views.projects.Attachments,{el:t,collection:i,isAdmin:!1,orderSettings:e})},this))},error:function(e,t){var i=$("<div>",{class:"p-3"});PJQ.app.$el.html(i),"BUSY"==t.responseJSON.message?i.html('\n                                <div class="d-flex align-items-center justify-content-center ht-100 text-align-center wd-100">\n                                    <div>\n                                        <div><i class="fal fa-circle-exclamation fa-9x text-orange mb-2"></i></div>\n                                        <div class="fs-36">File Share Unavailable</div>\n                                        <div class="fs-24">Files for this project are currently being processed.<br />Please try again later.</div>\n                                    </div>\n                                </div>\n\t\t\t\t\t\t    '):"OFFLINE"==t.responseJSON.message?i.html('\n                                <div class="d-flex align-items-center justify-content-center ht-100 text-align-center wd-100">\n                                    <div>\n                                        <div><i class="fal fa-circle-exclamation fa-9x text-orange mb-2"></i></div>\n                                        <div class="fs-36">File Share Unavailable</div>\n                                        <div class="fs-24">This project is currently unavailable for download.<br />Please try again later, or check with the sender if the issue persists.</div>\n                                    </div>\n                                </div>\n\t\t\t\t\t\t    '):i.html('\n                                <div class="d-flex align-items-center justify-content-center ht-100 text-align-center wd-100">\n                                    <div>\n                                        <div><i class="fal fa-clock fa-9x text-orange mb-2"></i></div>\n                                        <div class="fs-36">File Share Invalid</div>\n                                        <div class="fs-24">
1This file share has expired or is invalid.</div>\n                                    </div>\n                                </div>\n\t\t\t\t\t\t    ')}})}}]},PJQ.app.addRoutes(PJQ.modules.files.routes),PJQ.models.groups={},PJQ.models.groups.Group=PJQ.models.BaseModel.extend({idAttribute:"groupId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"groups",value:this.id}])}}),PJQ.collections.groups={},PJQ.collections.groups.Groups=PJQ.collections.BaseCollection.extend({defaults:{groupLevels:1},model:PJQ.models.groups.Group,endpoint:function(){var e=[{endpoint:"groups"}];return 0<this.options.userId?e=[{endpoint:"users",value:this.options.userId},{endpoint:"groups"}]:null!=this.options.project&&(e=[{endpoint:"projects",value:this.options.project.id},{endpoint:"groups"}]),PJQ.helpers.urlHelpers.generateEndpoint(e)},afterInit:function(){this.on("sync",this.setSelectedGroups,this)},setSelectedGroups:function(t){0<_.size(this.models)&&_.each(this.models,_.bind(function(e){null!=t&&-1!==t.indexOf(e.id)?e.set("isSelected",!0):e.set("isSelected",!1)},this))},addSelectedGroups:function(e){_.each("number"==typeof e?[e]:e,function(e){var t=this.get(e);null!=t&&t.set("isSelected",!0)},this)},deleteSelectedGroups:function(e){_.each("number"==typeof e?[e]:e,function(e){var t=this.get(e);null!=t&&t.set("isSelected",!1)},this)},setDisabledGroups:function(t){0<_.size(this.models)&&_.each(this.models,_.bind(function(e){-1!==t.indexOf(e.id)?e.set("isDisabled",!0):e.set("isDisabled",!1)},this))},setPublicDisabledGroups:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];0<_.size(this.models)&&_.each(this.models,_.bind(function(e){-1!==t.indexOf(e.id)?(e.set("isDisabled",!0),e.set("isPublic",!0)):(e.set("isDisabled",!1),e.set("isPublic",!1))},this))},getGroupIds:function(){var t=[];return _.each(this.models,function(e){t.push(e.id)}),t}
1,getSelectedGroups:function(){var t=new PJQ.collections.groups.Groups([],{groupLevels:this.options.groupLevels?this.options.groupLevels:PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS)});return _.each(this.models,function(e){e.get("isSelected")&&t.add(e)}),t},getGroupsLeveled:function(o){var a=null;return 1===this.options.groupLevels?a=null==o?this.models:_.filter(this.models,function(e){return null!=_.find(o,{id:e.id})}):1<this.options.groupLevels&&(a=[],_.each(this.models,function(e){if(null===o||null!=_.find(o,{id:e.id})){var t=e.get("groupDescription"),i="";0===_.size(t)&&(t="No Parent"),3===this.options.groupLevels&&(i=t.split("|")[1],t=t.split("|")[0],0===_.size(i)&&(i="No Parent"));var s=_.find(a,function(e){return e.name===t});if(null!=s)if(3===this.options.groupLevels){var n=_.find(s.parents,function(e){return e.name===i});null!=n?n.groups.push(e):s.parents.push({name:i,groups:[e]})}else s.groups.push(e);else 3===this.options.groupLevels?a.push({name:t,parents:[{name:i,groups:[e]}]}):a.push({name:t,groups:[e]})}},this)),a}}),PJQ.views.groups={},PJQ.views.groups.GroupSelector=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Group-Selector-Container"),subTemplates:{selector:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Group-Selector")},groups:null,groupLabel:null,groupUserId:null,groupLevels:null,detectGroupLevels:!1,includeGroupIds:null,selectedGroupIds:null,disabledGroupIds:null,selectedGroups:null,onGroupsLoaded:null,onGroupSelected:null,isAdmin:!1,isPublicGroups:!1,isEnableSelectedFilter:!0,isEnableSelectAll:!0,isDisableSelected:!1,isHideDisabled:!1,isExpandSelected:!0,isDisableParents:!1,isDisableCollapsedParents:!1,isShowGroupCount:!1,canEdit:!0,isShowNoGroup:!1,onSelect:_.noop,isSingleChoice:!1,maxGroups:null,headerButtons:null},events:{"keyup .group-search":"renderGroups","click .btn-header-action":"headerAction","click .group-clear-filters":"clearFilters","click .group-all-select":"selectAll","click .group-parent-select":"selectParent","click .group-select":"groupSelected","click .group-expand":"expandParentClick","click .report-contact-groups":"reportContactGroups","click .no-group-select":"noGroupClicked"},beforeFirstRender:function(){0<this.options.maxGroups&&(this.options.isEnableSelectAll=!0,this.options.isDisableParents=!0)},afterRender:function(){this.isNoGroupSelected=!1,this.options.groupUserId=this.options.isPublicGroups?PJQ.constants.publicUserId:this.options.groupUserId,null==this.options.groups?this.getGroups():this.afterSync()},reload:function(e){"number"==typeof e&&(this.options.groupUserId=e),this.getGroups()},getGroups:function(){PJQ.app.session.fetchUserGroups(this.options.groupUserId,_.bind(function(e){this.options.groups=e.toJSON(),this.afterSync()},this))},afterSync:function(){this.options.isGroupsLoaded=!0,this.loadGroups()},loadGroups:function(){if(!this.removed){var e=null!=this.options.groups?this.options.groups:PJQ.app.session.groups[0<this.options.groupUserId?this.options.groupUserId:-1].toJSON();if(this.options.groupUserId===PJQ.constants.publicUserId)this.options.groupLevels=2;else if(this.options.detectGroupLevels){for(var t=0;t<_.size(e);t++){var i=e[t];if(0<_.size(i.groupDescription)){if(-1!==i.groupDescription.indexOf("|")){this.options.groupLevels=3;break}this.options.groupLevels<2&&(this.options.groupLevels=2)}}_.each(e,_.bind(function(e){},this))}else if(null==this.options.groupLevels){var s=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS);this.options.groupLevels=s||1}if(null==this.options.groupLabel){var n=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LABEL);this.options.groupLabel="string"==typeof n?n.toLowerCase():"trades"}if(this.collection=new PJQ.collections.groups.Groups(e,{groupLevels:this.options.groupLevels,userId:this.options.groupUserId}),0<_.size(this.options.selectedGroupIds))this.collection.setSelectedGroups(this.options.selectedGroupIds);else{this.disabledPublicGroups=[];var o=[];0<_.size(this.options.selectedGroups)&&_.each(this.options.selectedGroups.models,function(e){o.push(e.id),this.options.isAdmin&&e.get("isPublic")&&23!==PJQ.app.session.get("masterUserId")&&this.disabledPublicGroups.push(e.id)},this),this.collection.setSelectedGroups(o)}this.options.canEdit?0<this.options.contactId&&0<_.size(this.disabledPublicGroups)&&(this.createDisabledPublicGroupsAlert(),this.collection.setPublicDisabledGroups(this.disabledPublicGroups)):this.collection.setDisabledGroups(_.map(this.collection.models,function(e){return e.id})),0<_.size(this.options.disabledGroupIds)&&this.collection.setDisabledGroups(this.options.disabledGroupIds),this.originalGroups=this.collection.getSelectedGroups().models,this.renderFilters(),this.renderGroups(),0<_.size(this.options.selectedGroupIds)&&this.options.isS
1howNoGroup&&-1!==this.options.selectedGroupIds.indexOf(0)&&this.$(".no-group-select").prop("checked",!0),"function"==typeof this.options.onGroupsLoaded&&this.options.onGroupsLoaded()}},renderFilters:function(){0<_.size(this.disabledPublicGroups)&&this.$(".group-status-filter").append('<option value="public">Public</option>'),this.options.isEnableSelectedFilter&&(this.filterPicker=new PJQ.inputs.Selectpicker({el:this.$(".group-status-filter"),onChange:_.bind(this.renderGroups,this),noneSelectedText:"No Filters",hideDisabled:!1}))},renderGroups:function(){var t=this.$(".group-search").val().toLowerCase(),e=this.options.isEnableSelectedFilter?this.filterPicker.getValue().toLowerCase():"",i=null,s=null,n=[];"public"===e.toLowerCase()?s=!0:"selected"===e.toLowerCase()?i=!0:"unselected"===e.toLowerCase()&&(i=!1),0<_.size(t)||null!=i||null!=s||0<_.size(this.options.includeGroupIds)?(this.$(".group-clear-filters").prop("disabled",!1),_.each(this.collection.models,_.bind(function(e){0!==_.size(this.options.includeGroupIds)&&-1===this.options.includeGroupIds.indexOf(e.id)||null!=s&&e.get("isPublic")!==s||null!==i&&e.get("isSelected")!==i||!(-1<e.get("groupName").toLowerCase().indexOf(t)||-1<e.get("groupDescription").toLowerCase().indexOf(t))||n.push(e)},this))):(this.$(".group-clear-filters").prop("disabled",!0),n=this.collection.models);var o={models:this.collection.getGroupsLeveled(n),options:this.options,isNoGroupSelected:this.isNoGroupSelected};this.renderSubTemplate(!1,this.options.subTemplates.selector,this.$(".groups-container"),o,_.bind(function(){this.setSelectedParents(),!this.isRendered&&1<this.options.groupLevels&&this.options.isExpandSelected&&this.expandSelectedParents(),this.setDisabledParents(),this.options.isHideDisabled&&this.$(".group-select:disabled").closest(".group-select-container").hide(),this.isRendered=!0,this.checkMaxGroups()},this))},setDisabledParents:function(){var t=this;this.$(".group-parent-select").each(function(){var e=t.getParentChildContainer($(this));$(this).prop("disabled",t.options.isDisableCollapsedParents&&(e.hasClass("hidden")||0<_.size(e.find(".group-child-container.hidden")))||0===_.size(e.find(".group-select,.group-parent-select").not(":disabled")))}),!this.options.isEnableSelectAll||this.options.isDisableCollapsedParents||this.options.isDisableParents||this.$(".group-all-select").prop("disabled",!(0<this.$(".group-select:not(:disabled)").length))},setSelectedParents:function(){var e=this;this.$(".group-parent-select").each(function(){$(this).prop("checked",0===_.size(e.getParentChildContainer($(this)).find(".group-select").not(":checked")))}),this.$(".group-all-select").prop("checked",!(0<this.$(".group-select:not(:checked)").length))},createDisabledPublicGroupsAlert:function(){new PJQ.Alert(this.$el,{text:"<div>This contact has "+this.options.groupLabel.toLowerCase()+" that are linked to a public account.  They can only be removed by this contact.</div><div class='mt-1'>Think these are incorrect?  <a href='javascript:void(0)' class='report-contact-groups font-weight-normal'>Report their groups</a></div>",isPrepend:!0})},getGroupSwitch:function(e){return this.$('input[data-group-id="'+e.toString()+'"]')},expandSelectedParents:function(){1<this.options.groupLevels&&_.each(this.collection.getSelectedGroups().models,function(e){var t=this.getGroupSwitch(e.id).closest(".group-child-container");t.hasClass("hidden")&&this.expandParent(t),3===this.options.groupLevels&&(t=t.parent().closest(".group-child-container")).hasClass("hidden")&&this.expandParent(t)},this)},getParentChildContainer:function(e){return e.closest(".pretty").siblings(".group-child-container")},setIncludedGroups:function(e){this.options.includeGroupIds=e,this.renderGroups()},headerAction:function(e){var t=$(e.currentTarget).data("id"),i=_.findWhere(this.options.headerButtons,{id:t});null!=i&&"function"==typeof i.callback&&i.callback(this)},clearFilters:function(){this.$(".group-search").val(""),this.options.isEnableSelectedFilter&&this.filterPicker.deselectAll(),this.renderGroups()},selectAll:function(e){"boolean"==typeof e&&this.$(".group-all-select").prop("checked",e);var t=this.$(".group-select:not(:disabled)");this.$(".group-all-select").prop("checked")?(this.isNoGroupSelected=!0,this.collection.addSelectedGroups(_.map(t,function(e){return $(e).data("groupId")})),t.prop("checked",!0)):(this.isNoGroupSelected=!1,this.collection.deleteSelectedGroups(_.map(t,function(e){return $(e).data("groupId")})),t.prop("checked",!1)),this.onGroupSelected()},noGroupClicked:function(e){this.isNoGroupSelected=this.$(".no-group-select").prop("checked")},selectParent:function(e){if(!this.options.isDisableParents){var t=this.getParentChildContainer($(e.currentTarget)),i=$(e.currentTarget).is(":checked"),s=[];this.options.isDisableCollapsedParents?(s=t.find(".group-select:visible").not(":disabled"),t.find(".group-select:visible,.group-parent-select:visible").not(":disabled").prop("checked",i)):(s=t.find(".group-select").not(":disabled"),t.find(".group-select,.group-parent-select").not(":disabled").prop("checked",i)),i?(t.hasClass("hidden")&&this.expandParent(t),t=t.find(".group-child-container"),0<_.size(t)&&t.hasClass("hidden")&&this.expandParent(t),this.collection.addSelectedGroups(_.map(s,function(e){return $(e).data("groupId")}))):this.collection.deleteSelectedGroups(_.map(s,function(e){return $(e).data("groupId")})),this.onGroupSelected()}},selectGroups:function(e){this.options.canEdit&&0<_.size(e)&&(_.each(e,function(e){this.selectGroup(e,!0,!0,!0)},this),this.options.onSelect(),this.onGroupSelected())},groupSelected:function(e){if(this.options.canEdit){var t=$(e.currentTarget),i=t.data("groupId"),s=t.is(":checked");this.selectGroup(i,s,!1)}},selectGroup:function(e,t){var i=2<arguments.length&&void 0!==arguments[2]&&arguments[2],s=3<arguments.length&&void 0!==arguments[3]&&arguments[3];this.options.canEdit&&0<e&&(t?(this.options.isSingleChoice&&this.collection.setSelectedGroups(),this.collection.addSelectedGroups(e)):this.collection.deleteSelectedGroups(e),i&&this.getGroupSwitch(e).prop("checked",t),s||(this.options.onSelect(),this.onGroupSelected()))},onGroupSelected:function(){this.checkMaxGroups(),this.setSelectedParents(),"function"==typeof this.options.onGroupSelected&&this.options.onGroupSelected(this.getGroupsData())},checkMaxGroups:function(){if(null==this.options.maxGroups)return!0;var e=this.options.maxGroups<=this.getGroupsData().selected.length;return e?_.each(this.$(".group-select:not(:disabled)")&&this.$(".group-select:not(:checked)"),function(e){$(e).prop("disabled",!0)}):this.options.canEdit&&_.each(this.$(".group-select:disabled"),function(e){$(e).prop("disabled",!1)}),e},expandParentClick:function(e){this.expandParent($(e.currentTarget).siblings(".group-child-container"))},expandParent:function(e){var t=e.siblings("i.group-expand");e.hasClass("hidden")?(e.removeClass("hidden"),t.removeClass("fa-chevron-down text-primary"),t.addClass("fa-chevron-up text-muted")):(e=e.add(e.find(".group-child-container")),t=t.add(e.find("i.group-expand")),e.addClass("hidden"),t.removeClass("fa-chevron-up text-muted"),t.addClass("fa-chevron-down text-primary")),this.setDisabledParents()},getGroupsData:function(){var t=this.collection.getSelectedGroups().models;if(this.options.isSingleChoice)return 0<_.size(t)?t[0]:null;
1this.options.isShowNoGroup&&this.$(".no-group-select").prop("checked")&&t.push(new PJQ.models.groups.Group({groupId:0}));var e=_.filter(t,function(e){return!_.findWhere(this.originalGroups,{id:e.id})},this),i=_.union([],this.originalGroups);return _.each(t,function(e){_.findWhere(i,{id:e.id})||i.push(e)}),_.each(i,_.bind(function(e){_.findWhere(this.originalGroups,{id:e.id})&&!_.findWhere(t,{id:e.id})?e.set("isDeleted",!0):e.set("isDeleted",!1)},this)),this.options.isSync&&(this.originalGroups=t),{selected:t,new:e,original:this.originalGroups,all:i}},reportContactGroups:function(){new PJQ.views.groups.ReportContactGroupsModal({contactId:this.options.contactId,groups:this.collection})},showError:function(e){this.hideError(),this.errorAlert=new PJQ.Alert(this.$el,{type:"danger",extraClasses:["mt-1, mb-1"],text:e,isPrepend:!0})},hideError:function(){this.errorAlert&&this.errorAlert.destroy()},remove:function(){return this.removed=!0,PJQ.views.BaseView.prototype.remove.call(this)}}),PJQ.views.groups.ReportContactGroupsModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Report-Contact-Groups"),onSave:_.noop},events:{"click .btn-report-contact-groups":"report"},afterRender:function(){var e=_.where(this.options.groups.getSelectedGroups().toJSON(),{isPublic:!0});_.each(e,function(e){e.isDisabled=!1}),this.groupSelector=new PJQ.views.groups.GroupSelector({el:this.$(".group-selector"),groups:e,isEnableSelectedFilter:!1,onGroupSelected:_.bind(this.checkGroupsSelected,this)}),this.checkGroupsSelected(this.groupSelector.getGroupsData())},checkGroupsSelected:function(e){this.$(".btn-report-contact-groups").prop("disabled",0===_.size(e.selected))},report:function(){var t=new PJQ.collections.groups.Groups(this.groupSelector.getGroupsData().selected).toJSON();new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.options.contactId},{endpoint:"groups"},{endpoint:"report"}]),data:{groups:t,projectId:PJQ.app.session.project?PJQ.app.session.project.id:null}}).post().done(_.bind(function(){var e=_.size(t);PJQ.notifications.createNotifyModal({header:"Groups Reported",notification:e.toString()+" groups linked to this contact's public account were successfully reported.  Customer service will determine if they are valid.",cookie:PJQ.constants.cookies.NOTIFY_CONTACT_GROUPS_REPORTED})||PJQ.notifications.notify.successNotify({message:e.toString()+" groups successfully reported."})},this)).fail(function(){PJQ.notifications.notify.errorNotify({message:"Failed to report groups.  Contact customer service."})})}}),PJQ.views.groups.SelectGroupsModal=PJQ.views.BaseModal.extend({defaults:{isSingleChoice:!1,template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Groups-Select"),alertText:null,onSave:null},events:{"click .groups-select-save":"onSave"},renderData:function(){return{options:this.options}},afterRender:function(){this.options.selectorOptions=_.defaults(this.options.selectorOptions,{el:this.$(".group-selector"),isEnableSelectedFilter:!1,onGroupSelected:_.bind(this.checkGroupsSelected,this)}),this.groupSelector=new PJQ.views.groups.GroupSelector(this.options.selectorOptions)},checkGroupsSelected:function(e){this.$(".groups-select-save").prop("disabled",0===_.size(e.new)&&0===_.size(_.difference(_.map(e.original,function(e){return e.id}),_.map(e.selected,function(e){return e.id})))),this.options.selectorOptions.isSingleChoice&&this.onSave()},onSave:function(){"function"==typeof this.options.onSave&&this.options.onSave(this.groupSelector.getGroupsData()),this.removeModal()}}),PJQ.views.groups.GroupsSelectInput=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Groups-Select-Input"),subTemplates:{groupBadge:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Groups-Select-Input-Groups")},selectedGroups:null,isShowAddButton:!0,addButton:null,isReadOnly:!1,onAfterSave:_.noop,limitGroups:!1},events:{"click .group-select-input-edit":"modify","click .group-select-input-delete":"deleteGroup","click .btn-show-groups":"showAllGroups"},renderData:function(){return{isReadOnly:this.options.isReadOnly}}
1,beforeRender:function(){this.options.isShowAddButton||(this.options.template=new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Groups-Select-Input-No-Button"),0<_.size(this.options.addButton)&&this.options.addButton.on("click",_.bind(this.modify,this))),this.selectedGroups=this.options.selectedGroups?this.options.selectedGroups:[]},afterRender:function(){this.renderSelectedGroups()},deleteGroup:function(){var t=jQuery(event.target).closest(".select-group-container").data("group-id");this.selectedGroups=_(this.selectedGroups).filter(function(e){return e.id!==t}),this.options.onAfterSave(this.selectedGroups),this.renderSelectedGroups()},modify:function(){this.selector=new PJQ.views.groups.SelectGroupsModal({selectorOptions:{groupUserId:this.options.groupUserId,selectedGroupIds:_.map(this.selectedGroups,function(e){return e.attributes.groupId}),groupLevels:this.options.groupLevels},onSave:_.bind(function(e){this.selectedGroups=_.union(this.selectedGroups,e.new),this.renderSelectedGroups(),this.options.onAfterSave(this.selectedGroups)},this)})},renderSelectedGroups:function(){var e;e=this.options.limitGroups&&5<_.size(this.selectedGroups)?_.rest(this.selectedGroups.reverse(),_.size(this.selectedGroups)-5).reverse():this.selectedGroups,0===_.size(e)?this.$(".group-select-list").html('<div class="text-muted font-weight-light fs-16 mb-2 mt-2">No Trades Selected</div>'):this.renderSubTemplate(!1,this.options.subTemplates.groupBadge,this.$(".group-select-list"),{models:e,isReadOnly:this.options.isReadOnly}),this.options.limitGroups&&5<_.size(this.selectedGroups)&&this.$(".group-select-list").append("<a href='javascript:void(0)' class='btn-show-groups' title='Click to show complete list of Trades'> Show "+(_.size(this.selectedGroups)-5)+" more item(s)</a>")},showAllGroups:function(){var e=this.selectedGroups.reverse();0===_.size(e)?this.$(".group-select-list").html('<div class="text-muted font-weight-light fs-16 mb-2">No Trades Selected</div>'):this.renderSubTemplate(!1,this.options.subTemplates.groupBadge,this.$(".group-select-list"),{models:e,isReadOnly:this.options.isReadOnly})}}),PJQ.views.history={},PJQ.views.history.HistoryTimelineModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-history-timeline"),width:600,maxWidth:"90%",isShowCloseButton:!0},events:{"click .btn-notification-link":"copyNotificationLink","click .btn-notification-resend":"resendNotification"},beforeModalCreated:function(){var e=_asyncToGenerator(_regeneratorRuntime().mark(function e(){var t=this;return _regeneratorRuntime().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isFetched=!1,null!=this.options.items?this.items=this.options.items:this.items=[],null==this.collection||this.collection.isFetched){e.next=6;break}return e.next=5,this.collection.fetch();case 5:_.each(this.collection.models,function(e){t.items.push({action:e.getActionName(),description:e.getDescription(),date:e.get("createdOn"),person:e.get("person")})});case 6:this.isFetched=!0,this.render();case 8:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),afterRender:function(){new PJQ.views.history.HistoryTimeline({el:this.$(".history-outer"),items:this.items})},renderData:function(){return{options:this.options,isFetched:this.isFetched}}}),PJQ.views.history.HistoryTimeline=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"history-timeline"),subTemplates:{}},renderData:function(){return{items:this.options.items}},afterRender:function(){}}),PJQ.inputs={},PJQ.inputs.EditorInput=PJQ.views.BaseView.extend({baseOptions:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Editor-Input"),value:"",label:"",title:"",extraLabelClasses:"",extraValueDisplayClasses:"",extraEditButtonClasses:"",editButtonText:"edit",isFormInput:!1,canEdit:!0,showSaveButton:!0,showCancelButton:!0,onEditStart:_.noop,onCancel:_.noop,onSave:_.noop},events:{"click .ei-edit-button":"edit","click .ei-cancel-button":"cancel","click .ei-save-button":"save","keyup .ei-input":"onChange","dp.change .ei-input":"onChange"},inputType:"",beforeFirstRender:function(){this.setValue(this.getValue())},beforeRender:function(){this.beforeInputRender(),this.renderData={value:this.getDisplayValue(),isEdit:this.isEdit,inputType:this.inputType,options:this.options}},beforeInputRender:function(){},afterRender:function(){this.isEdit&&this.$(".ei-input").focus().select(),this.afterInputRender()},afterInputRender:function(){},getDisplayValue:function(){return"function"==typeof this.options.getDisplayValue?this.options.getDisplayValue(this.options.value):this.options.value},getValue:function(){return this.options.value},setValue:function(e){this.options.value=e},onChange:function(e){e&&13===e.which?this.save():this.setValue(this.$(".ei-input").val())},onEditStart:function(){"function"==typeof this.options.onEditStart&&this.options.onEditStart()},edit:function(){this.onEditStart(),this.isEdit=!0,this.render()},cancel:function(){this.options.onCancel(this.getValue()),this.isEdit=!1,this.render()},save:function(){this.options.onSave(this.getValue()),this.isEdit=!1,this.render()}}),PJQ.inputs.CurrencyEditorInput=PJQ.inputs.EditorInput.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Editor-
1Input-Currency"),digits:2},inputType:"currency",afterRender:function(){if(this.isEdit){var e=this.$(".ei-input");PJQ.helpers.inputHelpers.inputMaskCurrency(e,this.options.digits),null==this.options.value&&(this.options.value=0),e.val(2===this.options.digits?this.options.value/100:this.options.value),e.focus().select()}},onChange:function(e){var t=$(e.currentTarget).val().replace(/ /g,"0"),i=parseInt(PJQ.helpers.formatHelpers.numbersOnly(t));return isNaN(i)?i=0:0===this.options.digits&&(i*=100),this.setValue(i),i}}),PJQ.inputs.TextEditorInput=PJQ.inputs.EditorInput.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Editor-Input-Text")},inputType:"text"}),PJQ.inputs.SelectPickerEditorInput=PJQ.inputs.EditorInput.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Editor-Input-Select-Picker"),subTemplates:{formTemplate:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Editor-Input-Select-Picker-Form")}},inputType:"select",beforeInputRender:function(){this.options.isFormInput&&(this.options.template=this.options.subTemplates.formTemplate),this.options.selectPickerOptions=null!=this.options.selectPickerOptions?this.options.selectPickerOptions:{}},afterInputRender:function(){new PJQ.inputs.Selectpicker(_.extend(this.options.selectPickerOptions,{el:this.$("select.ei-input"),defaultValue:this.options.value,onChange:_.bind(function(e){var t;(this.options.value=e,"function"==typeof this.options.onChange)&&(t=this.options).onChange.apply(t,arguments)},this)}))},onEditStart:function(){var t=this;if("function"==typeof this.options.getChoices){var i=function(e){"array"===PJQ.helpers.objectHelpers.refinedType(e)&&(t.options.selectPickerOptions.choices=e,t.render())},e=this.options.getChoices(function(e){i(e)});i(e)}return PJQ.inputs.EditorInput.prototype.onEditStart.apply(this,arguments)},getDisplayValue:function(){if(null!=this.options.value&&0<_.size(this.options.selectPickerOptions.choices)){var e=_.find(this.options.selectPickerOptions.choices,_.bind(function(e){return e.id===this.options.value},this));if(null!=e)return e.name}else if(0<_.size(this.options.defaultDisplayValue))return this.options.defaultDisplayValue;return"N/A"}}),PJQ.inputs.TextAreaEditorInput=PJQ.inputs.EditorInput.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Editor-Input-Textarea"),value:"",label:"",nullText:"",canEdit:!0,extraLabelClasses:"",extraValueDisplayClasses:"",extraEditButtonClasses:"",onEditStart:_.noop,onCancel:_.noop,onSave:_.noop},inputType:"textarea",onChange:function(e){this.setValue($(e.currentTarget).val())}}),PJQ.inputs.DateEditorInput=PJQ.inputs.EditorInput.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Editor-Input-Date"),value:"",label:"",nullText:"",canEdit:!0,extraLabelClasses:"",extraValueDisplayClasses:"",extraEditButtonClasses:"",onEditStart:_.noop,onCancel:_.noop,onSave:_.noop,dateOrientation:"left bottom",dateFormat:PJQ.helpers.dateHelpers.dateFormats.DATE_TIME},inputType:"date",afterRender:function(){0<_.size(this.$(".ei-date").find(".ei-input"))&&(this.datepicker=this.$(".ei-date").find(".ei-input"),new PJQ.inputs.Datepicker({el:this.datepicker,datepickerOptions:{format:this.options.dateFormat===PJQ.helpers.dateHelpers.dateFormats.DATE?PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE:PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE_TIME,defaultDate:this.getValue()}}))},setValue:function(e){"string"===PJQ.helpers.objectHelpers.refinedType(e)?this.options.value=new Date(e):this.options.value=e},onChange:function(e){this.setValue(e.date._d)},getDisplayValue:function(){var e=this.getValue();return null==e?this.options.nullText:PJQ.helpers.dateHelpers.getDateString(e,this.options.dateFormat)}}),PJQ.inputs.AutocompleteInput=PJQ.views.BaseView.extend({defaults:{data:null,dataDisplayProperty:null,source:[],value:null,onSelect:_.noop},events:{keyup:"onKeyup"},afterRender:function(){this.$el.hasClass("pt-autocomplete")||this.$el.addClass("pt-autocomplete"),this.parseSource(),this.autocomplete=this.$el.autocomplete(_.defaults(this.options,{select:_.bind(this.select,this),change:_.bind(this.change,this)}));var e=this;this.autocomplete.data("ui-autocomplete")._renderMenu=function(t,e){_.each(e,_.bind(function(e){this._renderItemData(t,e)},this)),$(t).addClass("pt-autocomplete-menu")},this.autocomplete.data("ui-autocomplete")._resizeMenu=function(){this.menu.element.outerWidth(e.$el.outerWidth())},null!=this.options.value&&this.setValue(this.getValue())},parseSource:function(){"array"===PJQ.helpers.objectHelpers.refinedType(this.options.data)&&null!=this.options.dataDisplayProperty&&(this.options.source=[],_.each(this.options.data,_.bind(function(e){this.options.source.pu
1sh(this.getDataItemValue(e))},this)))},reloadSource:function(e){null!=e&&(e.data&&this.options.dataDisplayProperty?(this.options.data=e.data,this.parseSource()):"array"===PJQ.helpers.objectHelpers.refinedType(e.source)&&(this.options.source=e.source)),this.autocomplete&&this.$el.autocomplete("option","source",this.options.source)},getValue:function(){return this.$el.val()},setValue:function(e){this.$el.val(e)},refresh:function(e){$(e.currentTarget).autocomplete("search")},onKeyup:function(e){1===_.size(this.$el.val())&&setTimeout(_.bind(function(){this.refresh(e)},this),300)},change:function(e,t){"function"==typeof this.options.onChange&&this.options.onChange($(e.currentTarget).val())},select:function(e,t){var i=$(e.target);i.val(t.item.value),i.trigger("keyup"),"function"==typeof this.options.onSelect&&this.options.onSelect({value:t.item.value,match:"array"===PJQ.helpers.objectHelpers.refinedType(this.options.data)?_.find(this.options.data,_.bind(function(e){return this.getDataItemValue(e).toLowerCase()===t.item.value.toLowerCase()},this)):null,e:e})},getDataItemValue:function(e){var t="backboneModel"===PJQ.helpers.objectHelpers.refinedType(e,!0)?e.get(this.options.dataDisplayProperty):e[this.options.dataDisplayProperty];return t||""}}),PJQ.inputs.Datepicker=PJQ.views.BaseView.extend({defaults:{datepickerOptions:{defaultDate:null,allowInputToggle:!0,format:PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE_TIME,icons:{time:"fal fa-clock",date:"fal fa-calendar-alt",up:"fal fa-chevron-up",down:"fal fa-chevron-down",previous:"fal fa-chevron-left",next:"fal fa-chevron-right",today:"fal fa-crosshairs",clear:"fal fa-trash",close:"fal fa-times"},useCurrent:!1,minDate:!1},disabledDays:[],disableWeekends:!1,isTimeOnly:!1,onChange:_.noop,onShow:_.noop,isShowTimezone:!0,isEditTimezone:!1,canEdit:!0,timezone:(new Date).toLocaleTimeString("en-us",{timeZoneName:"short"}).split(" ")[2]},events:{"dp.show":"onShow","dp.change":"onChange"},beforeInit:function(e){if(null!=e.datepickerOptions){if(this.options.datepickerOptions=_.defaults(e.datepickerOptions?e.datepickerOptions:{},this.defaults.datepickerOptions),this.setMinDate(this.options.datepickerOptions.minDate),null==this.options.datepickerOptions.defaultDate&&0<_.size(this.$el.val())&&(this.options.datepickerOptions.defaultDate=this.$el.val(),this.$el.val("")),"string"==typeof this.options.datepickerOptions.defaultDate&&0<_.size(this.options.datepickerOptions.defaultDate)){this.options.isDateTime||this.options.datepickerOptions.defaultDate.replace(/[^0-9\/]/g,"");var t=t=PJQ.helpers.dateHelpers.parseDateString(this.options.datepickerOptions.defaultDate,this.options.datepickerOptions.format!==PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE);isNaN(t.getTime())?(this.options.datepickerOptions.defaultDate=null,this.value=null):this.value=t}else"date"===PJQ.helpers.objectHelpers.refinedType(this.options.datepickerOptions.defaultDate)?this.value=this.options.datepickerOptions.defaultDate:this.value=null;this.options.datepickerOptions.defaultDate=this.value}(this.$el.hasClass("disabled")||this.$el.prop("disabled"))&&(e.canEdit=!1),e.isTimeOnly&&(e.datepickerOptions.format="LT"),0===_.size(this.options.timezone)&&(this.options.timezone=(new Date).toLocaleTimeString("en-us",{timeZoneName:"short"}).split(" ")[2])},afterRender:function(){var t=this;if(this.$el.prop("disabled",!this.options.canEdit),this.options.isEditTimezone&&this.options.canEdit){this.$el.after('<select class="select-tz wd-75p"></select>');(new Date).getTimezoneOffset();this.timezonePicker=new PJQ.inputs.Selectpicker({el:this.$el.parent().find(".select-tz"),defaultValue:this.options.timezone,isLiveSearch:!0,choices:this.getTimezoneSelectOptions(),isMultiple:!1,isIntChoices:!1,onChange:function(e){t.options.timezone=e,"function"==typeof t.options.onTimezoneChange&&t.options.onTimezoneChange(t.options.timezone)}})}else if((this.options.isShowTimezone||this.options.isEditTimezone)&&(this.isDateTime()||this.options.isTimeOnly)){var e=$("<div>",{class:"input-group-append"}).append($("<span>",{class:"input-group-text"}).text(this.options.timezone));this.$el.after(e)}this.datetimepicker=this.$el.datetimepicker(this.getPickerOptions()),this.$el.on("keyup",_.bind(this.onKeyup,this))},getPickerOptions:function(){return _.defaults({daysOfWeekDisabled:this.getDaysOfWeekDisabled()},this.options.datepickerOptions)},setTimezone:function(e){0!==_.size(e)&&null!=this.timezonePicker&&(this.options.timezone=e,this.timezonePicker.setValue(e))},getTimezoneSelectOptions:function(){return _.map(_.sortBy(PJQ.helpers.dateHelpers.timezones,function(e){return e.offset}),function(e){return{id:e.abbr,title:e.abbr,name:"(GMT"+PJQ.helpers.dateHelpers.getFormattedTimezoneOffset(e.offset)+") "+e.name}})},setDisabledDays:function(e){this.options.disabledDays=e;var t=this.getPicker();null!=t&&t.options(this.getPickerOptions())},getDaysOfWeekDisabled:function(){var e,t=[];this.options.disableWeekends&&(e=t).push.apply(e,[0,6]);return 0<_.size(this.options.disabledDays)&&(t=_.union(t,this.options.disabledDays)),0<_.size(t)&&t},isDateTime:function(){return-1!==this.options.datepickerOptions.format.indexOf("h")||-1!==this.options.datepickerOptions.format.indexOf("m")},onKeyup:function(){var e=this.$el.val(),t=null;PJQ.helpers.dateHelpers.validateDate(e)&&(t=PJQ.helpers.dateHelpers.parseDateString(e)),this.dateChanged(t)},onChange:function(e){e.date&&this.dateChanged(e.date._d)},onShow:function(){"function"==typeof this.options.onShow&&this.options.onShow(this)},hide:function(){var e=this.getPicker();null!=e&&e.hide()},show:function(){var e=this.getPicker();null!=e&&e.show()},dateChanged:function(e){var t=!1,i=this.isDateTime(),s=this.options.isTimeOnly;if(null==this.value)t=!0;else if((i||s)&&0!==PJQ.helpers.dateHelpers.getDateDiff(e,new Date(this.value)))t=!0;else if(!i){var n=PJQ.helpers.dateHelpers.getDateString(this.value,PJQ.helpers.dateHelpers.dateFormats.DATE);void 0!==n&&n!==PJQ.helpers.dateHelpers.getDateString(e,PJQ.helpers.dateHelpers.dateFormats.DATE)&&(t=!0)}t&&(i||s||null==e||e.setHours(0,0,0,0),this.value=e,"function"==typeof this.options.onChange&&this.options.onChange(void 0===e?null:e))},disable:function(){this.$el.prop("disabled",!0)},setValue:function(e){if(null===(this.value=e))this.$el.val("");else{var t=this.getPicker();null!=t&&t.setValue(e)}},setValueSilently:function(e){if(null===(this.value=e))this.$el.val("");else{this.datetimepicker.off("dp.change");var t=this.getPicker();null!=t&&t.setValue(e),this.datetimepicker.on("dp.change",this.onChange.bind(this))}},getValue:function(){return this.value},setMinDate:function(e){var t,i=e;i&&("string"==typeof i&&(i=new Date(i)),i=PJQ.helpers.dateHelpers.getDateString(i,PJQ.helpers.dateHelpers.dateFormats.DATE)),this.options.datepickerOptions.minDate=null!==(t=i)&&void 0!==t&&t;var s=this.getPicker();null!=s&&s.minDate(this.options.datepickerOptions.minDate)},setPickerOption:function(e,t){this.options.datepickerOptions[e]=t;var i=this.getPicker();null!=i&&i.options(this.options.datepickerOptions)},getPicker:function(){return null!=this.datetimepicker?this.datetimepicker.data("DateTimePicker"):null},showError:function(e){PJQ.helpers.inputHelpers.setInputError(this.$el,!1,{errorText:e})},hideError:function(){PJQ.helpers.inputHelpers.setInputError(this.$el,!0)}}),PJQ.inputs.SelectPickerCollection=function(){function s(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};_classCallCheck(this,s),this.options=_.defaults(i,{selectPickerOptions:{},pickerSelector:null,idAttribute:"cid"}),0!==_.size(this.options.pickerSelector)&&(this.$el=e,this.models=t,this.pickers={},this.initPickers())}return _createClass(s,[{key:"initPickers",value:function(){this.cleanPickers(),this.pickers={};var n=this;this.$el.find(this.options.pickerSelector).each(function(){var t=null,i=$(this).closest("tr").attr("id");if(0<_.size(i)&&(t=_.find(n.models,function(e){var t;return(null===(t=e[n.options.idAttribute])||void 0===t?void 0:t.toString())===i},this)),null!=t){var e=n.options.selectPickerOptions.defaultValue&&"function"==typeof n.options.selectPickerOptions.defaultValue?n.options.selectPickerOptions.defaultValue(t):null,s=_.defaults({el:$(this),defaultValue:e||function(){return 0<_.size(n.options.valueAttribute)?"backboneModel"===PJQ.helpers.objectHelpers.refinedType(t,!0)?t.get(n.options.valueAttribute):t[n.options.valueAttribute]:null},choices:function(){var e=n.options.selectPickerOptions.choices;return"function"==typeof e?e(t):e},isDisabled:function(){var e=n.options.selectPickerOptions.isDisabled;return"function"==typeof e?e(t):e},onChange:function(e){"function"==typeof n.options.onChange&&n.options.onChange(t,e)}},n.options.selectPickerOptions);n.pickers[t.cid]=new PJQ.inputs.Selectpicker(s)}})}},{key:"getPickerForId",value:function(e){return this.pickers[e]}},{key:"cleanPickers",value:function(){_.each(this.pickers,function(e){e.remove()}),this.pickers={}}},{key:"remove",value:function(){this.cleanPickers()}}]),s}(),PJQ.inputs.DatePickerCollection=function(){function s(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};_classCallCheck(this,s),this.options=_.defaults(i,{datePickerOptions:{},pickerSelector:null,idAttribute:"cid"}),0!==_.size(this.options.pickerSelector)&&(this.$el=e,this.models=t,this.pickers={},this.initPickers())}return _createClass(s,[{key:"initPickers",value:function(){this.cleanPickers(),this.pickers={};var o=this;this.$el.find(this.options.pickerSelector).each(function(){var t=null,i=$(this).closest("tr").attr("id");if(0<_.size(i)&&(t=_.find(o.models,function(e){var t;return(null===(t=e[o.options.idAttribute])||void 0===t?void 0:t.toString())===i},this)),null!=t){var e="backboneModel"===PJQ.helpers.objectHelpers.refinedType(t,!0)?t.get(o.options.valueAttribute):t[o.options.valueAttribute],s=new Date(e),n=_.defaults({el:$(this),onChange:function(e){"function"==typeof o.options.onChange&&o.options.onChange(t,e)},datepickerOptions:_.defaults({defaultDate:s instanceof Date&&!isNaN(s.getTime())?s:null},o.options.datePickerOptions.datepickerOptions)},o.options.datePickerOptions);o.pickers[t.cid]=new PJQ.inputs.Datepicker(n)}})}},{key:"getPickerForId",value:function(e){return this.pickers[e]}},{key:"cleanPickers",value:function(){_.each(this.pickers,function(e){e.remove()}),this.pickers={}}},{key:"remove",value:function(){this.cleanPickers()}}]),s}(),PJQ.inputs.Selectpicker=PJQ.views.BaseView.extend({defaults:{onChange:_.noop,onHide:_.noop,onShow:_.noop,style:"btn-default",noneSelectedText:"Select Value",selectAllText:"All Selected",defaultValue:null,selectOnTab:!0,isMultiple:!1,isDisabled:!1,isGrouped:!1,allGroupsIsMultiple:!1,hideDisabled:!0,isIntChoices:!1,isLiveSearch:!1,isBlockSubtext:!1,mobile:!1,header:!1,isMirrorOptionColors:!1,exclusiveChoices:null,mustSelectValue:!1,mustSelectValuePerOptGroup:!1,countBeforeTextFormat:0,canEdit:!0},events:{"changed.bs.select":"onChange","hidden.bs.select":"onHidden","show.bs.select":"onShow"},beforeFirstRender:function(){this.options.isLiveSearch&&this.$el.attr("data-live-search","true"),0<this.options.countBeforeTextFormat&&this.$el.attr("data-selected-text-format","count > "+this.options.countBeforeTextFormat),this.options.isBlockSubtext&&this.$el.addClass("block-subtext"),(this.$el.hasClass("disabled")||this.$el.prop("disabled"))&&(this.options.canEdit=!1),0<this.$el.length&&this.$el.data("selectpickerview",this),this.$el.prop("disabled",!this.options.canEdit)},beforeRender:function(){var t=this,e=_.size(this.$("optgroup").filter(function(){return void 0!==$(this).data("multiple")}
1)),i=0<e;if(this.options.allGroupsIsMultiple=this.options.isGrouped&&this.options.isMultiple&&0===e,this.options.isMultiple=this.options.isMultiple||this.$el.hasClass("multiple")||this.$el.prop("multiple")||i||this.options.allGroupsIsMultiple,this.$el.prop("multiple",this.options.isMultiple),this.options.isDisabled=this.options.isDisabled||this.$el.hasClass("disabled")||this.$el.prop("disabled"),this.$el.prop("disabled",this.options.isDisabled),this.options.choices&&this.updateChoices(this.options.choices),null==this.options.defaultValue){var s=this;this.$el.find("option").each(function(){if($(this).attr("selected")&&"selected"===$(this).attr("selected").toLowerCase()){null==s.options.defaultValue&&(s.options.defaultValue=s.options.isMultiple?[]:"");var e=$(this).attr("value");if(!s.options.isMultiple)return s.options.defaultValue=e,!1;s.options.defaultValue.push(e)}})}return this.$el.selectpicker(_.defaults({choices:"function"==typeof this.options.choices?this.options.choices():this.options.choices},this.options)),this.$outer=this.$el.closest(".bootstrap-select"),this.options.isDisabled&&("function"!=typeof this.options.isDisabled||this.options.isDisabled())||this.$outer.find(".dropdown-toggle").removeClass("btn-light"),this.$outer.find(".dropdown-header").each(function(){var e=$
1(this);0===_.size(e.find(".text").html())&&e.addClass("hidden")}),this.isClicking=!1,this.$outer.add(this.$outer.find("button.dropdown-toggle")).off("mousedown.isClicking click.isClicking").on("mousedown.isClicking click.isClicking",function(e){t.isClicking=!0}),this.$outer.find("button.dropdown-toggle").off("focus").on("focus",function(e){!t.isClicking&&t.isCollapsed()&&t.toggle(),t.isClicking=!1}),this.setValue("function"==typeof this.options.defaultValue?this.options.defaultValue():this.options.defaultValue,!1),this.afterRender(),!1},checkGroupIsMultiple:function(e){if(this.options.allGroupsIsMultiple)return!0;if(0<_.size(e)){var t=this.$('optgroup[data-attr="'+e+'"]');if(0<_.size(t))return!0===t.data("multiple")}return!1},getValue:function(){var s=null,n=this;if(this.options.isGrouped)s={},this.$("option:selected").each(function(){var e=$(this).val();if(void 0!==e){if(n.options.isIntChoices&&(e=parseInt(e),isNaN(e)))return;var t=n.getOptionGroupAttribute($(this)),i=n.checkGroupIsMultiple(t);null==s[t]?s[t]=i?[e]:e:i&&s[t].push(e)}});else if(s=this.$el.selectpicker("val"),this.options.isIntChoices){var e=PJQ.helpers.objectHelpers.refinedType(s);if("array"===e){var i=[];_.each(s,function(e){var t=parseInt(e);isNaN(t)?i.push(e):i.push(t)}),s=i}else if("string"===e){var t=parseInt(s);s=isNaN(t)?null:t}}return null!=s&&"object"==_typeof(s)&&0===s.length?null:null==s&&this.options.isMultiple?[]:s},getOptionGroupAttribute:function(e){var t=e.closest("optgroup").data("attr");return _.size(t)<=0?"noGroup":t},setValue:function(e,t,i){if(this.lastValue=e,this.options.isGrouped){if("object"===_typeof(e)){var s=[];_.each(e,function(e){"string"==typeof e?s.push(e):"object"==_typeof(e)&&_.each(e,function(e){s.push(e)})}),this.$el.selectpicker("val",s)}}else if(this.options.isMultiple){var n=[],o=PJQ.helpers.objectHelpers.refinedType(e);"string"===o?n.push(e):"array"===o&&(n=e),t&&(n=_.union(n,this.getValue())),this.$el.selectpicker("val",n)}else!this.$el.find('option[value="'+(null==e?"":e.toString())+'"]').prop("disabled")||i?this.$el.selectpicker("val",null==e?null:e.toString()):this.$el.selectpicker("val",null);this.$el.selectpicker("render"),this.options.isMirrorOptionColors&&!this.options.isMultiple&&this.setInputColors()},selectAll:function(){this.options.isMultiple&&this.$el.selectpicker("selectAll")},deselectAll:function(){this.options.isMultiple?this.$el.selectpicker("deselectAll"):this.setValue("",!1)},toggle:function(){this.$el.selectpicker("toggle")},isCollapsed:function(){return!this.$outer.hasClass("show")},hide:function(){this.$el.selectpicker("hide")},show:function(){this.$el.selectpicker("show")},enable:function(){this.options.isDisabled=!1,this.$el.prop("disabled",!1).removeClass("disabled"),this.$el.closest(".bootstrap-select").find(".dropdown-toggle").removeClass("btn-light"),this.refresh()},disable:function(){this.options.isDisabled=!0,this.$el.prop("disabled",!0),this.refresh()},updateChoices:function(e){var n=this;this.options.choices=e,this.$el.empty();var o=!0,s=function(e){var t,i=null!==(t=e.style)&&void 0!==t?t:"";if(null!=n.options.pickerWidth&&(i+=";overflow:hidden;width: "+n.options.pickerWidth),"string"==typeof e)return o=!1,$("<option>",{value:e,text:e,style:i});if("object"!==_typeof(e))return"";o=o&&"number"==typeof e.id;var s={value:e.id,"data-content":e.name,style:i,"data-subtext":e.subtext,disabled:!0===e.disabled};return 0<_.size(e.title)&&(s.title=e.title),$("<option>",s).html(e.name)};_.each("function"==typeof e?e():e,function(e){if(null==e)this.$el.append($("<option>",{text:this.options.noneSelectedText,disabled:!0}));else if(null!=e.choices){var t,i=$('<optgroup data-attr="'+(null!==(t=e.id)&&void 0!==t?t:"")+'" label="'+e.name+'"></optgroup>');_.each(e.choices,function(e){i.append(s(e))},this),this.$el.append(i)}else this.$el.append(s(e))},this),this.refresh(),!this.options.isIntChoices&&o&&(this.options.isIntChoices=!0)},updateNoneSelectedText:function(e){this.options.noneSelectedText=e,this.$el.closest(".bootstrap-select").find(".filter-option").html(this.options.noneSelectedText)},refresh:function(){this.$el.selectpicker("refresh"),this.setValue(this.lastValue)},onChange:function(e,t){if(1<_.size(this.$el)&&!this.options.isMultiple){var i=$(e.currentTarget);this.$el.selectpicker("val",i.selectpicker("val")),this.$el.selectpicker("render")}this.lastValue=this.getValue();var s=$(this.$el.find("option")[t]).closest("optgroup"),n=$(this.$el.find("option")[t]).attr("value");if(this.options.isIntChoices&&(n=parseInt(n),isNaN(n)&&(n=null)),this.options.isMultiple){if(0<_.size(this.options.exclusiveChoices)){var o=[];"array"===PJQ.helpers.objectHelpers.refinedType(this.options.exclusiveChoices)?o=this.options.exclusiveChoices:o.push(this.options.exclusiveChoices),this.options.isGrouped?-1!==_.indexOf(o,n)&&_.each(s.find("option"),_.bind(function(e){var t=parseInt($(e).attr("value"));t!==n&&(this.lastValue[s.data("attr")]=_.filter(this.lastValue[s.data("attr")],function(e){return e!==t}))},this)):this.lastValue=-1!==_.indexOf(o,n)?[n]:_.filter(this.lastValue,function(e){return-1===_.indexOf(o,e)}),this.setValue(this.lastValue)}if(this.options.mustSelectValue&&0===_.size(this.lastValue)&&(this.lastValue=[n],this.setValue(this.lastValue)),this.options.mustSelectValuePerOptGroup&&"nullable"!==s.data("options")){var a=!1;this.options.isGrouped?0===_.size(this.lastValue[s.data("attr")])&&(this.lastValue[s.data("attr")]=[n],this.setValue(this.lastValue)):(_.each(s.find("option"),_.bind(function(e){-1!==this.lastValue.indexOf(parseInt($(e).attr("value")))&&(a=!0)},this)),a||(this.lastValue.push(n),this.setValue(this.lastValue)))}}if(this.options.isMirrorOptionColors&&!this.options.isMultiple&&this.setInputColors(),this.options.isGrouped&&!this.options.allGroupsIsMultiple){var r=s.data("attr");if(0<_.size(r))this.checkGroupIsMultiple(r)||(this.lastValue[r]=n,this.setValue(this.lastValue))}this.options.onChange(this.lastValue)},onHidden:function(){this.options.onHide()},onShow:function(){this.options.onShow()},setInputColors:function(){var e=this.$("option:selected").first(),t="inherit";0<_.size(e)&&(t=e.css("color")),this.$(".filter-option").css("color",t)},showError:function(e){PJQ.helpers.inputHelpers.setInputError(this.$el,!1,{errorText:e})},hideError:function(){PJQ.helpers.inputHelpers.setInputError(this.$el,!0)}}),PJQ.inputs.StatePicker=PJQ.inputs.Selectpicker.extend({beforeFirstRender:function(){this.options.hideDisabled=!1},afterRender:function(){this.renderStates(this.options.country)},setValue:function(e,t,i){PJQ.inputs.Selectpicker.prototype.setValue.call(this,e,t,i)},renderStates:function(t){this.$el.find("option").remove();var e=[];
1if(t)if("ca"===t.toLowerCase())e=_.sortBy(_.map(PJQ.constants.states.ca,function(e){return{id:e.abbreviation.toUpperCase(),name:e.name}}),function(e){return e.name});else if("us"===t.toLowerCase())e=_.sortBy(_.map(PJQ.constants.states.us,function(e){return{id:e.abbreviation.toUpperCase(),name:e.name}}),function(e){return e.name});else{var i=_.find(PJQ.constants.internationalCountries,function(e){return e.name===t});i&&(e=_.sortBy(_.map(i.states,function(e){return{id:e,name:e,title:e}}),function(e){return e.name}))}this.updateChoices(e)}}),PJQ.inputs.GroupPicker=PJQ.inputs.Selectpicker.extend({beforeFirstRender:function(){return this.options.noneSelectedText="Select Group",this.options.isIntChoices=!0,this.options.isLiveSearch=!0,this.options.size=20,PJQ.inputs.Selectpicker.prototype.beforeFirstRender.call(this)},afterRender:function(){var i=this;if(null!=this.options.project)return this.options.project.fetchGroups(function(e){var t=_.groupBy(e.models,function(e){return e.get("groupDescription")});i.options.choices=_.map(t,function(e,t){return{name:t,choices:_.map(e,function(e){return{id:e.id,name:e.get("groupName")}})}}),i.updateChoices(i.options.choices)},!0),!1;PJQ.app.session.fetchUserGroups(null,function(e){var t=_.groupBy(e.models,function(e){return e.get("groupDescription")});i.options.choices=_.map(t,function(e,t){return{name:t,choices:_.map(e,function(e){return{id:e.id,name:e.get("groupName")}})}}),i.updateChoices(i.options.choices)})}}),PJQ.inputs.ProjectLocationPicker=PJQ.inputs.Selectpicker.extend({beforeFirstRender:function(){return this.options.noneSelectedText="Select Location",this.options.isIntChoices=!0,this.options.isLiveSearch=!0,PJQ.inputs.Selectpicker.prototype.beforeFirstRender.call(this)},afterRender:function(){var t=this;if(null!=this.options.project)return this.options.project.fetchLocations(function(e){t.options.choices=e.getPickerArray(),t.updateChoices(t.options.choices)}),!1}}),PJQ.inputs.CountryPicker=PJQ.inputs.Selectpicker.extend({beforeFirstRender:function(){this.options.hideDisabled=!1},afterRender:function(){var t={name:"",choices:[]},i={name:"",choices:[]};this.options.enableInternational?(t.choices.push({id:"US",name:"United States",title:"US"}),t.choices.push({id:"CA",name:"Canada",title:"CA"}),_.each(PJQ.constants.internationalCountries,function(e){i.choices.push({id:e.name,name:e.name,title:e.name})},this)):_.each(PJQ.constants.countries,function(e){t.choices.push({id:e.toUpperCase(),name:e.toUpperCase(),title:e.toUpperCase()})},this),this.updateChoices(0<_.size(i)?[t,i]:t.choices),this.refresh(),(this.options.statePicker||this.options.zipInput)&&this.attachStateZipInputs(this.options.statePicker,this.options.zipInput)},setValue:function(e,t,i){PJQ.inputs.Selectpicker.prototype.setValue.call(this,e,t,i),this.options.statePicker&&this.options.statePicker.renderStates(e)},attachStateZipInputs:function(t,i){var s=this.options.onChange;this.options.onChange=function(e){t instanceof PJQ.inputs.StatePicker&&t.renderStates(e),i.is("input")&&(i.val(""),PJQ.helpers.inputHelpers.inputMaskZip(i,e)),"function"==typeof s&&s(e)},i.is("input")&&PJQ.helpers.inputHelpers.inputMaskZip(i,this.getValue())}}),PJQ.inputs.HTMLEditor=PJQ.views.BaseView.extend({defaults:{onChange:_.noop,defaultValue:null,isDisabled:!1,isHideTokens:!1,onInit:_.noop,editorHeight:200},events:{},beforeRender:function(){},afterRender:function(){var e=_.bind(function(e){return $.summernote.ui.button({contents:"Tokens",tooltip:"View the available Message Tokens",click:_.bind(function(){e.invoke("editor.saveRange"),new PJQ.inputs.HTMLEditor.HTMLEditorTokensModal({editor:this.$el.summernote,context:e})},this)}).render()},this),t={tabsize:2,height:this.options.editorHeight,shortcuts:!1,callbacks:{onChange:_.bind(function(e,t){if("function"==typeof this.options.onChange){try{var i=$(e);0<_.size(i)&&0===_.size(i.text().replace(/\s/gm,""))&&(e="")}catch(e){}this.options.onChange(e)}},this)},toolbar:[["style",["style"]],["font-style",["bold","italic","underline","clear"]],["font",["fontname"]],["font-size",["fontsize"]],["font-color",["color"]],["para",["ul","ol","paragraph"]],["table",["table"]],["insert",["hr"]],["misc",["codeview"]],["custom",["token"]]],oninit:this.options.onInit};this.options.isHideTokens||(t.buttons={token:e}),this.$el.summernote(t),this.options.defaultValue&&this.setValue(this.options.defaultValue)},getValue:function(){return this.$el.summernote("code")},setValue:function(e){this.$el.summernote("code",e)},pasteValue:function(e){this.$el.summernote("pasteHTML",e)},enable:function(){this.$el.summernote("enable")},disable:function(){this.$el.summernote("disable")}}),PJQ.inputs.HTMLEditor.HTMLEditorTokensModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Project-Tokens"),minWidth:"60%",context:null},events:{"click .tokens-close":"onClose","click table.tokens tr td label":"insertToken"},insertToken:function(e){this.removeModal(),this.options.context.
1invoke("editor.restoreRange"),this.options.context.invoke("editor.focus"),this.options.context.invoke("editor.insertText",$(e.currentTarget).text())},onClose:function(){this.removeModal()}}),PJQ.inputs.ButtonGroup=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Input-Button-Group"),colorInactiveButtons:!1,buttons:[],defaultValue:null,onChange:_.noop,buttonClasses:null,fitHeight:!1,fitWidth:!1,separateButtons:!1,canEdit:!0},events:{"click .input-btn-group button":"onChange"},beforeFirstRender:function(){this.value=void 0!==this.options.defaultValue?this.options.defaultValue:null},beforeRender:function(){this.renderData={options:this.options}},afterRender:function(){this.renderButton()},renderButton:function(){var e=this;this.$(".input-btn-group button").each(function(){$(this).data("value")===e.value||"null"===$(this).data("value")&&null==e.value?e.options.colorInactiveButtons?$(this).removeClass($(this).data("inactiveClass")).addClass($(this).data("activeClass")).addClass("active"):$(this).removeClass("inactive").addClass("font-weight-normal").addClass("active"):e.options.colorInactiveButtons?$(this).addClass($(this).data("inactiveClass")).removeClass($(this).data("activeClass")).removeClass("active"):$(this).addClass("inactive").removeClass("font-weight-normal").addClass("active")})},onChange:function(e){this.value=$(e.currentTarget).data("value"),this.renderButton(),"function"==typeof this.options.onChange&&this.options.onChange(this.value)},getValue:function(){return this.value},setValue:function(e,t){this.value=e,this.renderButton(),t&&"function"==typeof this.options.onChange&&this.options.onChange(this.value)}}),PJQ.inputs.StarRating=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Star-Rating"),isReadOnly:!1},events:{"click .btn-rate":"ratingChanged"},beforeFirstRender:function(){this.rating=this.options.rating,null==this.rating&&(this.rating=0)},renderData:function(){return{rating:this.rating,isReadOnly:this.options.isReadOnly}},ratingChanged:function(e){this.setRating(parseInt(this.$(e.currentTarget).data("stars"))),"function"==typeof this.options.onChange&&this.options.onChange(this.rating)},setRating:function(e){this.rating=null==e?0:e,this.render()}}),PJQ.inputs.DayPicker=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"day-picker"),isReadOnly:!1},events:{"click .btn-work-day":"dayClicked"},beforeFirstRender:function(){this.days=this.options.defaultValue,null==this.days&&(this.days=0)},renderData:function(){return{days:this.days}},reportDayClicked:function(e){this.notificationPerDayRefresh()},dayClicked:function(e){var t=$(e.currentTarget);t.hasClass("selected")?t.removeClass("selected"):t.addClass("selected");var i=0;this.$(".btn-work-day.selected").each(function(){i+=parseInt($(this).data("value"))}),this.days=i,this.render(),"function"==typeof this.options.onChange&&this.options.onChange(this.days)},getValue:function(){return this.days}}),"undefined"==typeof LazyLoad&&function(e,t){var i=t.getElementsByTagName("head")[0],s=t.createElement("script"),n="IntersectionObserver"in e?"10.19.0":"8.17.0";s.setAttribute("defer",""),s.src=("string"==typeof window.lazyLoadPath?window.lazyLoadPath:"/DesktopModules/PanteraModuleGlobal/lazyload/js")+"/lazyload-"+n+".min.js",i.appendChild(s)}(window,document);var dateFormat=function(){var f=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,g=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,P=/[^-+\dA-Z]/g,v=function(e,t){for(e=String(e),t=t||2;e.length<t;)e="0"+e;return e};return function(e,t,i){var s=dateFormat;if(1!=arguments.length||"[object String]"!=Object.prototype.toString.call(e)||/\d/.test(e)||(t=e,e=void 0),e=e?new Date(e):new Date,isNaN(e))throw SyntaxError("invalid date");"UTC:"==(t=String(s.masks[t]||t||s.masks.default)).slice(0,4)&&(t=t.slice(4),i=!0);var n=i?"getUTC":"get",o=e[n+"Date"](),a=e[n+"Day"](),r=e[n+"Month"](),l=e[n+"FullYear"](),c=e[n+"Hours"](),d=e[n+"Minutes"](),p=e[n+"Seconds"](),u=e[n+"Milliseconds"](),h=i?0:e.getTimezoneOffset(),m={d:o,dd:v(o),ddd:s.i18n.dayNames[a],dddd:s.i18n.dayNames[a+7],m:r+1,mm:v(r+1),mmm:s.i18n.monthNames[r],mmmm:s.i18n.monthNames[r+12],yy:String(l).slice(2),yyyy:l,h:c%12||12,hh:v(c%12||12),H:c,HH:v(c),M:d,MM:v(d),s:p,ss:v(p),l:v(u,3),L:v(99<u?Math.round(u/10):u),t:c<12?"a":"p",tt:c<12?"am":"pm",T:c<12?"A":"P",TT:c<12?"AM":"PM",Z:i?"UTC":(String(e).match(g)||[""]).pop().replace(P,""),o:(0<h?"-":"+")+v(100*Math.floor(Math.abs(h)/60)+Math.abs(h)%60,4),S:["th","st","nd","rd"][3<o%10?0:(o%100-o%10!=10)*o%10]};return t.replace(f,function(e){return e in m?m[e]:e.slice(1,e.length-1)})}}();function ValidateEmail2(e){var t=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,i=!0;if(-1!=(e=e.replace(/[ ]/g,"")).indexOf(";")){for(var s=e.split(";"),n=0;n<s.length;n++)if(!t.test(s[n])){i=!1;break}}else i=t.test(e);return i}function ValidateEmail3(e){var t=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,i=!0;if(-1!=(e=e.replace(/[ ]/g,"")).indexOf(";")){for(var s=e.split(";"),n=0;n<s.length;n++)if(!t.test(s[n])){i=!1;break}}else i=t.test(e);return i}dateFormat.masks={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"},dateFormat.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Frid
1ay","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]},Date.prototype.format=function(e,t){return dateFormat(this,e,t)},PJQ.Loader=function(){function i(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,i),this.$el=e,this.options=_.defaults(t,{loadingText:"Loading...",type:this.$el.is(":button")?"button":null}),this.init()}return _createClass(i,[{key:"init",value:function(){switch(this.getType().toLowerCase()){case"button":this.$processing=$("<span>",{style:"position:absolute;color:#fff;",text:this.options.loadingText}),this.$el.addClass("loader loader-button").prop("disabled",!0),0===_.size(this.options.loadingText)?this.$el.addClass("loader-center"):this.$el.removeClass("loader-center"),this.$el.prepend(this.$processing);break;case"iconbutton":this.$el.find("i").addClass("hidden"),this.$el.addClass("loader loader-button").prop("disabled",!0),0===_.size(this.options.loadingText)?this.$el.addClass("loader-center"):this.$el.removeClass("loader-center"),this.$processing=$("<span>",{style:"position:absolute;color:#fff;",text:this.options.loadingText}),this.$el.prepend(this.$processing);break;case"block":this.$el.addClass("loader");break;case"small":this.$el.addClass("loader loader-overlay loader-small");break;default:this.$el.addClass("loader loader-overlay")}}},{key:"getType",value:function(){return this.options.type?this.options.type:""}},{key:"remove",value:function(){"button"===this.getType().toLowerCase()?(this.$processing.remove(),this.$el.css("color","").removeClass("loader loader-overlay").prop("disabled",!1)):"iconbutton"===this.getType().toLowerCase()?(this.$processing.remove(),this.$el.removeClass("loader loader-overlay").prop("disabled",!1),this.$el.find("i").removeClass("hidden")):this.$el.removeClass("loader").removeClass("loader-overlay")}}]),i}
1(),PJQ.logging={LoggingActions:{GLOBAL_GET_SESSION:"GLOBAL_GET_SESSION",AUTH_SIGN_IN:"AUTH_SIGN_IN",AUTH_SIGN_UP:"AUTH_SIGN_UP",AUTH_RESET_PASSWORD:"AUTH_RESET_PASSWORD",PJQPROFILE_GET_SCREENINGS:"PJQPROFILE_GET_SCREENINGS",PJQPROFILE_GET_PREQUAL:"PJQPROFILE_GET_PREQUAL",SEND_PREQUAL_UPDATE:"SEND_PREQUAL_UPDATE",PJQPROQUALADMIN_GET_INVITE:"PJQPROQUALADMIN_GET_INVITE",PJQPROQUALADMIN_GET_ITEM:"PJQPROQUALADMIN_GET_ITEM",PJQPROQUALADMIN_GET_REQUEST:"PJQPROQUALADMIN_GET_REQUEST",PJQPROQUALADMIN_GET_ITEM_COMMENTS:"PJQPROQUALADMIN_GET_ITEM_COMMENTS",PREQUAL_EXPORT:"PREQUAL_EXPORT",FILE_DOWNLOAD_FAILED:"FILE_DOWNLOAD_FAILED",SCREENING_PAYMENT:"SCREENING_PAYMENT",GET_NEW_CONTACT_AB:"GET_NEW_CONTACT_AB",PAYMENT_ERROR:"PAYMENT_ERROR",DELETE_PROJECT_CONTACTS_OR_GROUPS:"DELETE_PROJECT_CONTACTS_OR_GROUPS",UPLOAD_RAW_FILES:"UPLOAD_RAW_FILES",REPORT_CONTACT:"REPORT_CONTACT"}},PJQ.logging.Debug=function(){function s(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};_classCallCheck(this,s),this.action=e,this.data=t,this.options=_.defaults(i,{isIncludeUrl:!0,isSave:!0,onSave:_.noop}),this.options.isSave&&this.save()}return _createClass(s,[{key:"save",value:function(){"object"!==PJQ.helpers.objectHelpers.refinedType(this.data)&&(this.data={data:this.data}),this.options.isIncludeUrl&&(this.data=_.defaults(this.data,{SESSION_URL:window.location.href})),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"logging"},{endpoint:"debug"}]),data:{auditAction:this.action,data:this.data}}).post().done(_.bind(function(){"function"==typeof this.options.onSave&&this.options.onSave(this)},this))}}]),s}(),PJQ.maps={},PJQ.maps.GoogleMap=function(){function i(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,i),this.options=_.defaults(t,{mapId:"map_"+_.uniqueId(),zoom:4,center:new google.maps.LatLng(38.6159,-100.7456),mapTypeId:google.maps.MapTypeId.ROADMAP}),this.$el=e,this.$el.attr("id",this.options.mapId),this.initMap()}return _createClass(i,[{key:"initMap",value:function(){this.mapObjects={},this.map=new google.maps.Map(this.$el[0],{zoom:this.options.zoom,center:this.options.center,mapTypeId:this.options.mapTypeId,gestureHandling:"cooperative"})}},{key:"addMarker",value:function(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},s=_.uniqueId(),n=new google.maps.Marker({position:new google.maps.LatLng(e,t),map:this.map,title:i.title,animation:google.maps.Animation.DROP});if(this.mapObjects[s]=n,0<_.size(i.infoWindowContent)){var o=new google.maps.InfoWindow({content:i.infoWindowContent});n.addListener("click",function(){o.open(this.map,n)})}}},{key:"addKMLStatesLayer",value:function(e){var t=_.uniqueId(),i=PJQ.helpers.urlHelpers.buildAPIURL("/workareas/kml?states="+e.join(","),!1,!1,!0);return this.mapObjects[t]=new google.maps.KmlLayer(i,{suppressInfoWindows:!0,preserveViewport:!0,map:this.map}),t}},{key:"addKMLCountiesLayer",value:function(e){var t=_.uniqueId(),i=PJQ.compression.encode.runLength(PJQ.compression.encode.delta(e)),s=PJQ.helpers.urlHelpers.buildAPIURL("/workareas/kml?countyIds="+i.join(","),!1,!1,!0);return this.mapObjects[t]=new google.maps.KmlLayer(s,{suppressInfoWindows:!0,preserveViewport:!0,map:this.map}),t}},{key:"removeMapObject",value:function(e){var t=this.mapObjects[e];null!=t&&t.setMap(null)}},{key:"resize",value:function(){google.maps.event.trigger(this.map,"resize")}},{key:"setCenter",value:function(e){this.map.setCenter(e)}},{key:"setZoom",value:function(e){this.map.setZoom(e)}}]),i}(),PJQ.views.SuperMap=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Super-Map"),mapZoom:4,isDetail:!1,isActive:!0},events:{"click .btn-edit-super":"editSuper","click .btn-go-to-super":"goToSuper","click .user-edit-text-map":"infoWindowEditSuper","keyup .datatable-search":"search","click .clear-filters":"clearFilters"},beforeFirstRender:function(){null==this.collection&&(this.collection=new PJQ.collections.users.Users(null,{isDetail:this.options.isDetail})),this.customFields=null,this.options.isFetched?this.render():this.collection.fetch({success:_.bind(function(){PJQ.app.session.fetchUserCustomFields(PJQ.app.session.user.get("masterUserId"),_.bind(function(e){this.customFields=e,this.options.isFetched=!0,this.render(),"function"==typeof this.options.onFetch&&this.options.onFetch()},this))},this)})},beforeRender:function(){this.renderData={isDetail:this.options.isDetail,options:this.options,collection:this.collection},this.filtered=[],_.each(this.collection.models,function(e){396!==e.attributes.userTypeId&&3738!==e.attributes.userTypeId||this.options.isActive&&!e.attributes.isActive||this.filtered.push(e)},this)},afterRender:function(){var e=[];e=this.options.isDetail?(this.statusSelectPicker=new PJQ.inputs.Selectpicker({el:this.$("select.status-filter"),defaultValue:[10,12,16,15,13,14,11,17,18],isMultiple:!0,isIntChoices:!0,onChange:_.bind(function(){this.statusFilterChanged()},this)}),[{data:"attributes.contactName",title:"Name"},{data:"attributes.phone",title:"Phone",render:function(e){return PJQ.helpers.formatHelpers.formatPhoneNumber(e)}},{data:"attributes.cell",title:"Cell",render:function(e){return PJQ.helpers.formatHelpers.formatPhoneNumber(e)}},{data:"attributes.email",title:"Email",render:function(e){return'<a href="mailto:'+e+'">'+e+"</a>"}},{data:"attributes",title:"Address",render:function(e,t,i){var s=i.get("address1");return 0<_.size(i.get("address2"))&&(s+=" "+i.get("address2")),s}},{data:"attributes.city",title:"City"},{data:"attributes.state",title:"State"},{data:"attributes.zip",title:"Zip",render:_.bind(function(e){return e.length<5?"":e})},{data:"attributes.fieldValue1",title:"Last Safety",render:_.bind(function(e,t,i){var s=this.getUserCustomFieldValue(i,1);return s?PJQ.helpers.dateHelpers.getDateString(new Date(s),PJQ.helpers.dateHelpers.dateFormats.DATE,!0):""},this)},{data:"attributes.fieldValue2",title:"Last Proc.",render:_.bind(function(e,t,i){var s=this.getUserCustomFieldValue(i,2);return s?PJQ.helpers.dateHelpers.getDateString(new Date(s),PJQ.helpers.dateHelpers.dateFormats.DATE,!0):""},this)},{data:"attributes.fieldValue6",title:"OSHA",render:_.bind(function(e,t,i){var s=this.getUserCustomFieldValue(i,6);return this.getUserCustomFieldChoice(s,6)},this)},{data:"attributes.fieldValue12",title:"Status",render:_.bind(function(e,t,i){var s=this.getUserCustomFieldValue(i,12);return this.getUserCustomFieldChoice(s,12)},this)},{data:"attributes.fieldValue16",title:"Pref. PM",render:_.bind(function(e,t,i){return this.getUserCustomFieldValue(i,16)},this)},{data:"attributes.fieldValue17",title:"Insurance",render:_.bind(function(e,t,i){var s=this.getUserCustomFieldValue(i,17);return this.getUserCustomFieldChoice(s,17)},this)},{data:"attributes.zip",title:"",orderable:!1,searchable:!1,width:"80px",render:_.bind(function(e){var t=PJQ.app.session.hasPermission("settings.canManageUsers")?'<button type="button" class="btn btn-info btn-edit-super ht-30p wd-35p mr-1"><span class="fas fa-pencil"></span></button>':"";return 5===e.length?'<div class="text-align-right show-on-row-hover">'+t+'<button type="button" class="btn btn-orange btn-go-to-super ht-30p wd-35p"><span class="fas fa-map-marked-alt"></span></button></div>':0<_.size(t)?'<div class="text-align-right show-on-row-hover">'+t+"</div>":""},this)}]):[{data:"attributes.contactName",title:"Name"},{data:"attributes.phone",title:"Phone",render:function(e){return PJQ.helpers.formatHelpers.formatPhoneNumber(e)}},{data:"attributes.email",title:"Email",render:function(e){return'<a href="mailto:'+e+'">'+e+"</a>"}},{data:"attributes",title:"Address",render:function(e,t,i){var s=i.get("address1");return 0<_.size(i.get("address2"))&&(s+=" "+i.get("address2")),s}},{data:"attributes.city",title:"City"},{data:"attributes.zip",title:"Zip",render:_.bind(function(e){return e.length<5?"":e})},{data:"attributes.state",title:"State"},{data:"attributes.zip",title:"",orderable:!1,searchable:!1,width:"80px",render:_.bind(function(e){var t=PJQ.app.session.hasPermission("settings.canManageUsers")?'<button type="button" class="btn btn-info btn-edit-super ht-30p wd-35p mr-1"><span class="fas fa-pencil"></span></button>':"";return 5===e.length?'<div class="text-align-right show-on-row-hover">'+t+'<button type="button" class="btn btn-orange btn-go-to-super ht-30p wd-35p"><span class="fas fa-map-marked-alt"></span></button></div>':0<_.size(t)?'<div class="text-align-right show-on-row-hover">'+t+"</div>":""},this)}],this.superMapDataTable=new PJQ.views.dataTables.DataTable({el:this.$(".super-map-data-table"),data:this.filtered,language:{emptyTable:"No Superintendents exist",zeroRecords:"No Superintendents match this criteria"},paging:!1,info:!1,rowId:"cid",deferRender:!0,columns:e,isHideSearch:!0,dom:"t"}),this.collection.isFetched&&(this.renderMap(),this.renderCounts(this.filtered))},clearFilters:function(){this.$(".datatable-search").val(""),this.options.isDetail?(this.statusSelectPicker.setValue([10,12,16,15,13,14,11,17,18]),this.statusFilterChanged()):this.search()},statusFilterChanged:function(){var t=this.statusSelectPicker.getValue();this.filtered=[],_.each(this.collection.models,function(e){396!==e.attributes.userTypeId&&3738!==e.attributes.userTypeId||this.options.isActive&&!e.attributes.isActive||-1===t.indexOf(parseInt(this.getUserCustomFieldValue(e,12)))&&(9!==t.length||0!==_.size(this.getUserCustomFieldValue(e,12)))||this.filtered.push(e)},this),this.superMapDataTable.dataTable.clear(),this.superMapDataTable.dataTable.rows.add(this.filtered),this.search()},search:function(){this.superMapDataTable.dataTable.search(this.$(".datatable-search").val()).draw()},getUserCustomFieldValue:function(e,t){var i=_.find(e.get("userCustomFieldValues"),function(e){return e.fieldNumber===t});return i?i.value:null},getUserCustomFieldChoice:function(t,i){var e=_.find(this.customFields.models,function(e){return e.get("fieldNumber")===i}),s="";return e&&_.each(e.choices.models,function(e){e.id===t&&(s=e.get("
1choiceName"))}),s},renderCounts:function(e){var t=0,i=0,s=0,n=0,o=0,a=0,r=0,l=0,c=0;_.each(e,function(e){_.each(e.get("userCustomFieldValues"),function(e){if(12===e.fieldNumber)switch(e.value){case 10:t++;break;case 12:i++;break;case 16:s++;break;case 15:n++;break;case 13:o++;break;case 14:a++;break;case 11:r++;break;case 17:l++;break;case 18:c++}})}),this.$(".total-retired").text(t),this.$(".total-active").text(i),this.$(".total-active-new").text(s),this.$(".total-retired-office").text(n),this.$(".total-active-sub").text(o),this.$(".total-never-use").text(a),this.$(".total-retired-sub").text(r),this.$(".total-inactive-sub").text(l),this.$(".total-inactive-super").text(c)},renderMap:function(){this.map=new PJQ.maps.GoogleMap(this.$(".super-map"),{zoom:this.options.mapZoom}),this.renderMarkers(this.filtered),this.watchSearch()},makeInfoWindow:function(e){return'<div class="fs-18 user-edit-text-map text-primary font-weight-light mb-n3 mt-n1" id=\''+e.get("userId")+"'>"+e.get("contactName")+"</div><p><br /><b>Phone:</b> "+PJQ.helpers.formatHelpers.formatPhoneNumber(e.get("phone"))+"<br /><b>Email:</b> "+e.get("email")+"<br /><b>Address:</b> "+e.get("address1")+"<br/><b>City:</b> "+e.get("city")+"<br /><b>State:</b> "+e.get("state")+"<br /><b>Zip:</b> "+e.get("zip")+"</p>"},renderMarkers:function(e){_.each(e,function(e){var t=e.get("latitude"),i=e.get("longitude");0!==t&&0!==i&&this.map.addMarker(t,i,{infoWindowContent:this.makeInfoWindow(e),title:e.get("contactName")})},this)},removeMarkers:function(){_.each(this.map.mapObjects,function(e){e.setMap(null)})},infoWindowEditSuper:function(e){if(PJQ.app.session.hasPermission("settings.canManageUsers")){var t=$(e.currentTarget),i=parseInt(t.context.id);_.each(this.filtered,function(e){e.get("userId")===i&&new PJQ.views.contacts.BaseEditContactModal({model:e,onSave:_.bind(function(){this.superMapDataTable.refresh(),this.removeMarkers(),this.renderMarkers(this.filtered)},this)})},this)}},editSuper:function(e){var t=$(e.currentTarget),i=this.superMapDataTable.getRow(t.closest("tr")).data();new PJQ.views.contacts.BaseEditContactModal({model:i,onSave:_.bind(function(){this.superMapDataTable.refresh(),this.removeMarkers(),this.renderMarkers(this.filtered)},this)})},goToSuper:function(e){var t=$(e.currentTarget),i=this.superMapDataTable.getRow(t.closest("tr")).data();this.map.setCenter({lat:i.get("latitude"),lng:i.get("longitude")}),this.map.setZoom(8),_.each(this.map.mapObjects,function(e){0!==i.get("longitude")&&0!==i.get("latitude")&&e.getPosition().lng().toFixed(5)===i.get("longitude").toFixed(5)&&e.getPosition().lat().toFixed(5)===i.get("latitude").toFixed(5)&&(this.infoWindow&&this.infoWindow.close(),this.infoWindow=new google.maps.InfoWindow({content:this.makeInfoWindow(i)}),this.infoWindow.open(this.map,e))},this)},watchSearch:function(){this.superMapDataTable.dataTable.on("search.dt",_.bind(function(){this.filterArray=[];var e=this;this.superMapDataTable.dataTable.rows({filter:"applied"}).every(function(){e.filterArray.push(this.data())}),this.removeMarkers(),this.renderMarkers(this.filterArray),this.renderCounts(this.filterArray)},this))}}),PJQ.app.addRoutes([{route:"supermap",name:"supermap",callback:function(){new PJQ.views.SuperMap({el:$("#pjq-main")})}},{route:"supermapall",name:"supermapall",callback:function(){new PJQ.views.SuperMap({el:$("#pjq-main"),isDetail:!0,isActive:!1})}}]),PJQ.menus={activeMenus:[],closeActiveMenus:function(){_.each(PJQ.menus.activeMenus,function(e){e.close()})}},PJQ.menus.ContextMenu=PJQ.views.BaseView.extend({defaults:{fetchElementData:_.noop,menuSource:"mouse",menuPosition:"belowLeft",menuEvent:"right-click",actionsGroups:[],noActionsMessage:"No available actions",isHideNoActions:!1,_actionSelectEvent:"click",isWrapInFixedContainer:!1,onOpen:_.noop,onClose:_.noop},events:{},beforeFirstRender:function(){return this.namespace=_.uniqueId(".ContextMenu_"),this.closeNamespace=_.uniqueId(".ContextMenuClose_"),this.$menu=this.renderMenu(this),this.$menuList=this.$menu.children(),this.$menu.hide().appendTo(this.$el),this.$openTarget=null,this.openEvent=null,this.setupOpenEventListeners(),this.setupActionsEventListeners(),PJQ.menus.activeMenus.push(this),!1},updatePosition:function(){var e=null,t=null,i=null;switch(this.options.menuSource){case"element":t=this.$openTarget;break;case"mouse":t=this.openEvent;break;default:throw new Error("Unknown ContextMenu 'menuSource' option")}switch(this.options.menuPosition){case"belowRight":e="right top",i="right bottom";break;case"belowLeft":e="left top",i="left bottom";break;case"aboveRight":e="right bottom",i="right top";break;case"aboveLeft":e="left bottom",i="left top";break;default:throw new Error("Unknown ContextMenu 'menuPosition' option")}this.$menu.css({display:"block"}),this.$menu.css({height:this.$menuList.height(),width:this.$menuList.width()}),this.$menu.position({my:e,at:i,of:t})},open:function(e){var a=this;PJQ.menus.closeActiveMenus(),a.$openTarget=e,a.openEvent=event;var r=a.options.fetchElementData(a.$openTarget),t=a.$menu.find("[data-action]"),i=a.$menu.find(".noActionsMessage");t.show(),i.hide();var l=0;
1t.each(function(){var e=$(this),t=e.find(".actionName"),i=e.data("action"),s=a.options.actions[i],n=e.attr("class");0<_.size(s.itemClasses)&&(n+=" "+s.itemClasses),s.isDanger&&(n+=" danger-item"),e.attr("class",n);var o=t.attr("class");0<_.size(s.textClasses)&&(o=o+" "+s.textClasses),t.attr("class",o),"function"!=typeof s.isShown||!0===s.isShown(r)?(l++,t.html(_.isFunction(s.name)&&s.name(r)||s.name),s.isEnabled&&!1===s.isEnabled(r)&&e.addClass("disabled")):e.hide()}),0===l&&i.show(),this.updatePosition(),0===l&&this.options.isHideNoActions?this.$menu.hide():(this.$menu.show(),this.setupCloseEventListeners(),this.options.onOpen(r))},close:function(){this.$menu.hide(),this.clearCloseEventListeners(),this.options.onClose()},destroy:function(){this.close(),this.clearOpenEventListeners(),this.clearActionsEventListeners()},renderMenu:function(n){var e=$('<div class="dropdown context-menu"/>'),i=$('<ul class="dropdown-menu"/>'),o=[];o[0]=[],_.each(n.options.actionsGroups,function(e,t){o[t+1]=[]});var a=!1;_.each(n.options.actions,function(e,i){var s=!1;_.each(n.options.actionsGroups,function(e,t){_.contains(e,i)&&(o[t+1].push(i),s=!0)}),!1===s&&o[0].push(i),void 0!==e.iconClass&&(a=!0)});var t=!0;_.each(o,function(e){0!=e.length&&(!1===t&&i.append('<li class="divider"></li>'),t=!1,_.each(e,function(e){var t=n.options.actions[e];"function"==typeof t.isHidden&&t.isHidden()||(!0===a?i.append('<li role="presentation" class="menu-item" data-action="'+e+'"><a href="javascript:void(0)" role="menuitem" class="menu-item-link"><i class="'+(t.iconClass||"")+'"></i> <span class="actionName"></span></a></li>'):i.append('<li role="presentation" class="menu-item" data-action="'+e+'"><a href="javascript:void(0)" role="menuitem" class="menu-item-link"><span class="actionName"></span></a></li>'))}),i.append('<li role="presentation" class="noActionsMessage disabled"><a href="javascript:void(0)" role="menuitem"><span>'+n.options.noActionsMessage+"</span></a></li>"))});var s=e.append(i);this.options.isWrapInFixedContainer&&(s=$('<div style="position:fixed;overflow:visible;width:100%;z-index:10000;"/>').append(e));return s},setupOpenEventListeners:function(){var t=this,e=null;switch(t.options.menuEvent){case"click":e="click";break;case"right-click":e="contextmenu";break;case"hover":e="mouseenter";break;default:throw new Error("Unknown ContextMenu 'menuEvent' option")}t.$el.on(e+t.namespace,t.options.selector,function(e){return t.open($(this),e),!1})},clearOpenEventListeners:function(){this.$el.off(this.namespace)},setupActionsEventListeners:function(){var n=this,e=n.options._actionSelectEvent+n.namespace;this.$menu.on(e,function(e){e.preventDefault(),e.stopPropagation();var t=$(e.target).closest("[data-action]");if(t&&t.length&&!t.is(".disabled")){var i=t.data("action"),s=n.options.fetchElementData(n.$openTarget);n.options.actions[i].onClick(s),n.close()}})},clearActionsEventListeners:function(){this.$menu.off(this.namespace)},setupCloseEventListeners:function(){var e=this;switch(e.options.menuEvent){case"click":case"right-click":break;default:throw new Error("Unknown ContextMenu 'menuEvent' option")}$("html").on("click"+e.closeNamespace,function(){e.close()})},clearCloseEventListeners:function(){this.$el.off(this.closeNamespace)}}),PJQ.helpers.mobile={getDevice:function(){var e=window.navigator.userAgent,t=null;return null!=e.match(/android/i)?t="android":null==e.match(/iPhone/i)&&null==e.match(/iPod/i)&&null==e.match(/iPad/i)||(t="ios"),t}},PJQ.views.mobile={},PJQ.views.mobile.AppDownloadModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-App-Download"),cookie:"PANTERA_APP_DOWNLOAD",isVerticalCenter:!0},events:{"click .open-in-app":"openInApp","click .no-thanks":"setCookie"},beforeModalCreated:function(){if(null!=PJQ.helpers.cookieHelpers.getCookie(this.options.cookie))return!1},openInApp:function(){this.setCookie(),PJQ.app.session.project.openInApp()},setCookie:function(){PJQ.helpers.cookieHelpers.setCookie(this.options.cookie,!0,3)}}),PJQ.views.modals={},PJQ.views.modals.YesNo=PJQ.views.BaseModal.extend({beforeModalCreated:function(){this.options=_.defaults({isShowOkButton:!0,okButtonText:"Yes",onOk:_.bind(function(){0<_.size(this.options.cookie)&&PJQ.helpers.cookieHelpers.setCo
1okie(this.options.cookie,!0),"function"==typeof this.options.onYes&&this.options.onYes()},this),isShowSecondaryButton:!0,secondaryButtonText:"No",onSecondary:_.bind(function(){"function"==typeof this.options.onNo&&this.options.onNo()},this)},this.options)}}),PJQ.views.modals.SaveDontSave=PJQ.views.BaseModal.extend({beforeModalCreated:function(){this.options=_.defaults({isShowOkButton:!0,okButtonText:"Save",onOk:_.bind(function(){"function"==typeof this.options.onSave&&this.options.onSave()},this),isShowSecondaryButton:!(!1===this.options.isShowDontSaveButton),secondaryButtonText:"Don't Save",onSecondary:_.bind(function(){"function"==typeof this.options.onDontSave&&this.options.onDontSave()},this),isShowCancelButton:!0,cancelButtonColorClass:this.options.declineButtonColorClass?this.options.declineButtonColorClass:"secondary",cancelButtonText:"Cancel",onClose:_.bind(function(){"function"==typeof this.options.onCancel&&this.options.onCancel()},this)},this.options)}}),PJQ.views.modals.DeleteCancel=PJQ.views.BaseModal.extend({beforeModalCreated:function(){this.options=_.defaults({isShowOkButton:!0,okButtonText:this.options.deleteButtonText?this.options.deleteButtonText:"Delete",okButtonColorClass:this.options.deleteButtonColorClass?this.options.deleteButtonColorClass:"danger",onOk:_.bind(function(){"function"==typeof this.options.onDelete&&this.options.onDelete()},this),isShowCancelButton:!0,cancelButtonColorClass:this.options.declineButtonColorClass?this.options.declineButtonColorClass:"secondary",cancelButtonText:this.options.declineButtonText?this.options.declineButtonText:"Cancel",onClose:_.bind(function(){"function"==typeof this.options.onCancel&&this.options.onCancel()},this)},this.options)}}),PJQ.views.modals.CopyDelete=PJQ.views.BaseModal.extend({beforeModalCreated:function(){this.options=_.defaults({isShowOkButton:!0,secondaryButtonColorClass:"danger",okButtonText:"Copy All User Types",onOk:_.bind(function(){"function"==typeof this.options.onYes&&this.options.onYes()},this),isShowSecondaryButton:!0,secondaryButtonText:"Delete All User Types",onSecondary:_.bind(function(){"function"==typeof this.options.onNo&&this.options.onNo()},this)},this.options)}}),PJQ.views.modals.ErrorModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Error")}}),PJQ.nav={getDataForOldProjectModules:function(i){window.pjqWallContext="project",new PJQ.ajax.Request({endpoint:"/session/project/"+PJQ.app.session.project.id.toString()}).get().done(_.bind(function(){if(PJQ.app.session.project.get("masterUserId")===PJQ.app.session.get("masterUserId")){var e=window.pjqSessionId?window.pjqSessionId:PJQ.app.session.id;PanteraScript.PanteraScriptService.GetProjectWallAdminSettings(e,null!=window.projectContactTemp?window.projectContactTemp:"",function(e){window.settings=$.parseJSON(e),window.settings.projectId=PJQ.app.session.project.id,null!=window.settings.LayoutCompany&&(window.pjqITBLayoutDefault=window.settings.LayoutCompany),null!=window.settings.LayoutGroupCompany&&(window.pjqITBLayoutGroupCompany=window.settings.LayoutGroupCompany),null!=window.settings.FieldMappingContact&&(window.pjqFMContact=window.settings.FieldMappingContact);var t="/DesktopModules/PJQProjectWallAdmin/GetProjectMessageTemplates.aspx?sessionid="+PJQ.app.session.id+"&x="+(new Date).getTime();jQuery.ajax({type:"GET",url:t,dataType:"json",success:_.bind(function(e){window.settings.ProjectMessageTemplates=e,PanteraScript.PanteraScriptService.GetProjectInfo(PJQ.app.session.id,function(e){window.project=$.parseJSON(e),i()},onScriptError)},this)})},onScriptError)}else new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"settings"},{endpoint:"getsubwallsettings"}]),isPascal:!0}).get().done(_.bind(function(e){window.settings=e,PanteraScript.PanteraScriptService.GetProjectInfo(PJQ.app.session.id,function(e){window.project=$.parseJSON(e),i()},onScriptError)},this)).fail(onScriptError)},this))}},PJQ.nav.NavItem=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,t),this.id=e.id,this.title=e.title,this.isBeta=!0===e.isBeta,this.isLegacy=e.isLegacy,this.requiresDirectory=!0===e.requiresDirectory,this.isPrimaryProjectManagerCheckExempt=!0===e.isPrimaryProjectManagerCheckExempt,this.sortOrder=e.sortOrder,this.icon=e.icon,this.iconImage=e.iconImage,this.iconImageActive=e.iconImageActive,this.feature=e.feature,this.isActive=e.isActive,this.hasRoute=e.hasRoute,this.hasPrecedingSeparator=e.hasPrecedingSeparator,this.extraMarkup=e.extraMarkup,this.includeMarkup=e.includeMarkup,this.outsideRoute=e.outsideRoute,this.isAdmin=e.isAdmin,null!=e.route&&(this.route=e.route),null!=e.count&&(this.count=e.count),null!=e.render&&(this.render=e.render),null!=e.hasPermission&&(this.hasPermission=e.hasPermission),null!=e.path&&(this.path="function"==typeof e.path?e.path:_.noop),null!=e.isDisabled&&(this.isDisabled=e.isDisabled),null!=e.requireSignUp&&(this.requireSignUp=e.requireSignUp),null!=e.leaveView&&(this.leaveView=e.leaveView)}return _createClass(t,[{key:"path",value:function(){return this.id}},{key:"routeToRoot",value:function(){null==PJQ.app.session.project?PJQ.app.router.routeToRoot():PJQ.app.router.navigate("projects/"+PJQ.app.session.project.id.toString(),{trigger:!0})}},{key:"route",value:function(e){var t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;return this.hasPermission()&&this.hasFeature()&&!this.getIsDisabled()?e&&e.noRoute?void 0:0<_.size(i)&&this.requiresDirectory&&PJQ.app.session.isPanteraPortal()&&null==PJQ.app.session.contact?(null!=PJQ.app.session.user&&"SUB"===PJQ.app.session.user.get("companyType")?new PJQ.views.nav.RegisterDirectory({el:i,onRegister:_.bind(function(){this.render(i,e)},this),onClose:_.bind(function(){this.routeToRoot()},this)}):this.routeToRoot(),!1):void PJQ.app.router.navigate("function"==typeof this.path?this.path(e):this.path,{trigger:t}):(this.routeToRoot(),!1)}},{key:"getNavPref",value:function(){if(null==this.navPref){var e,t=(e=null!=PJQ.app.session.project?PJQ.app.session.project.preferences:PJQ.app.session.preferences).getPref(PJQ.constants.preferenceTypes.APP_NAV_ITEMS),i=e.getPref(PJQ.constants.preferenceTypes.PORTAL_APP_NAV_ITEMS);this.navPref=_.findWhere(_.union(null!=i?i:[],null!=t?t:[]),{id:this.id})}return this.navPref}},{key:"getDocumentTitle",value:function(){var e="",t=this.getNavPref();if(e=null!=t&&null!=t.title?t.title:"function"==typeof this.title?this.title():this.title,null!=PJQ.app.session.project&&PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PROJECT_NAME_PAGE_TITLE)){var i=PJQ.app.session.project.get("projectName"),s=PJQ.app.session.project.get("city"),n=PJQ.app.session.project.get("state"),o="";0<_.size(s)&&(o+=s),0<_.size(n)&&(0<_.size(n)&&(o+=", "),o+=n),e=o+" - "+i}return e}},{key:"getTitle",value:function(){var e=!(0<arguments.length&&void 0!==arguments[0])||arguments[0],t="",i=this.getNavPref();return t=null!=i&&null!=i.title?i.title:"function"==typeof this.title?this.title():this.title,this.isBeta?t+=e?"<span class='ml-1 fs-12 font-weight-medium'>beta</span>":" - beta":("function"==typeof this.isLegacy&&this.isLegacy()||!0===this.isLegacy)&&(t+=e?"<span class='ml-1 fs-12 font-weight-medium'>legacy</span>":" - legacy"),t}},{key:"getSortOrder",value:function(){var e=this.getNavPref();return null!=e&&null!=e.sortOrder?e.sortOrder:this.sortOrder}},{key:"getIsAdmin",value:function(){var e=this.getNavPref();return null!=e&&null!=e.isAdmin?e.isAdmin:this.isAdmin}},{key:"getIsDisabled",value:function(){var e=this.getNavPref();return null!=e&&e.isDisabled?e.isDisabled:"function"==typeof this.isDisabled?this.isDisabled():this.isDisabled}},{key:"hasPermission",value:function(){return!0}},{key:"hasFeature",value:function(){return!(0<_.size(this.feature))||(null!=PJQ.app.session.project&&null!=PJQ.app.session.project.subscription?PJQ.app.session.project.subscription.hasFeature(this.feature):PJQ.app.session.hasFeature(this.feature))}},{key:"isDisabled",value:function(){return!1}},{key:"count",value:function(){return 0}}]),t}(),PJQ.nav.NavItemGroup=function(){return _createClass(function e(t,i){_classCallCheck(this,e),this.items=t,this.options=i||{}})}(),PJQ.nav.itemGroups={main:new PJQ.nav.NavItemGroup([new PJQ.nav.NavItem({id:"myprojects",title:"My Projects",sortOrder:10,icon:"fa-hammer",feature:"projects",hasRoute:!0,render:function(e){new PJQ.views.projects.MyProjectList({el:e})},isDisabled:function(){return!PJQ.app.session.get("ownsPortal")}}),new PJQ.nav.NavItem({id:"biddingprojects",title:function(){return PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.BIDDING_PROJECTS_TAB_NAME)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.BIDDING_PROJECTS_TAB_NAME):"Bidding Projects"},sortOrder:20,icon:"fa-hammer",hasRoute:!0,render:function(e){new PJQ.views.projects.BiddingProjectsList({el:e})},isDisabled:function(){return PJQ.app.session.get("ownsPortal")||PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_BIDDING_PROJECTS)}}),new PJQ.nav.NavItem({id:"projectinvites",title:"Project Invites",sortOrder:30,icon:"fa-envelope",hasRoute:!0,render:function(e){new PJQ.views.projects.ProjectInvitesList({el:e})},isDisabled:function(){return"GC"===PJQ.app.session.user.get("companyType")&&null==PJQ.app.session.contact||PJQ.app.session.get("ownsPortal")&&!PJQ.app.session.isPanteraPortal()}}),new PJQ.nav.NavItem({id:"contacts",title:"Contacts",sortOrder:40,isLegacy:!0,icon:"fa-users",feature:"contacts",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("contacts.canView")},render:function(e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"session"},{endpoint:"project",value:0}])}).get().done(_.bind(function(){PJQ.app.session.project=null,window.pjqSessionId=PJQ.app.session.id,window.pjqABContext="",initAddressBook(e)},this))},count:function(){return PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS)?PJQ.app.session.hasPermission("contacts.canApprove")?PJQ.app.session.get("unApprovedContactsCount"):0:PJQ.app.session.get("unApprovedContactsCount")},isDisabled:function(){return!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_OLD_ADDRESSBOOK)&&(PJQ.app.session.get("portalId")===PJQ.constants.panteraPortalId||!PJQ.app.session.get("ownsPortal")||PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_OLD_ADDRESSBOOK))}}),new PJQ.nav.NavItem({id:"contactsnew",title:"Contacts",sortOrder:40,icon:"fa-users",feature:"contacts",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("contacts.canView")},render:function(e,t){new PJQ.views.addressbook.AddressBook(_.defaults({el:e},t))},count:function(){return PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS)?PJQ.app.session.hasPermission("contacts.canApprove")?PJQ.app.session.get("unApprovedContactsCount"):0:PJQ.app.session.get("unApprovedContactsCount")},isDisabled:function(){return!PJQ.app.session.get("ownsPortal")||PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_ADDRESSBOOK)}}),new PJQ.nav.NavItem({id:"documents",title:"Documents",sortOrder:50,icon:"fa-folder",feature:"documents",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("documents.canView")},route:function(){if(PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_DOCUMENTS)){if(window.location.hash.toLowerCase()!=="#"+this.path())return window.location.href="#"+this.path(),window.location.reload(),!1}else PJQ.app.router.navigate(this.path(),{trigger:!0})},render:function(e){PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_DOCUMENTS)?e.append($("<iframe/>",{src:"/Default.aspx?tabid="+PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.DOCUMENTS_TAB_ID).toString(),style:"border:0;width:100%;height:"+e.height()+"px;"})):new PJQ.views.files.FileNavigator({el:e})},isDisabled:function(){return!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DOCUMENTS_TAB_ID)&&PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_DOCUMENTS)||null==PJQ.app.session.user||!PJQ.app.session.get("ownsPortal")}}),new PJQ.nav.NavItem({id:"bidfiler",title:"Bid Filer",sortOrder:60,icon:"fa-file-import",feature:"bidFiler",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("bidFiler.isAdmin")},render:function(e){new PJQ.views.BidFiler({el:e})},isDisabled:function(){return!PJQ.app.session.isPanteraPortal()&&(!PJQ.app.session.get("ownsPortal")||!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_BID_FILER))}}),new PJQ.nav.NavItem({id:"printondemand",title:"Order Prints",sortOrder:70,icon:"fa-print",hasRoute:!0,render:function(e){initPrintOnDemand(e)},isDisabled:function(){return!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PRINT_ON_DEMAND)}}),new PJQ.nav.NavItem({id:"profile",title:"Profile",sortOrder:80,icon:"fa-user",hasRoute:!0,requiresDirectory:!0,render:function(e,t){new PJQ.views.profile.CompanyProfile({el:e,key:t?t.key:null,activateTab:t?t.tab:null})},isDisabled:function(){var e=null;return null!=PJQ.app.session.user&&(e=PJQ.app.session.user.get("companyType")),!PJQ.app.session.isPanteraPortal()||"SUB"!=e}}
1),new PJQ.nav.NavItem({id:"prequal",title:"Prequalification",sortOrder:80,icon:"fa-align-justify",hasRoute:!0,hasPermission:function(){return PJQ.app.session.isPanteraPortal()||PJQ.app.session.hasPermission("prequal.canView")},requiresDirectory:!0,render:function(t){var e=new PJQ.collections.screenings.ScreeningTerms,i=function(){var e=new PJQ.collections.screenings.ScreeningClients(null,{contact:PJQ.app.session.contact,masterUserId:PJQ.app.session.preferences.hasPref("portalOwner")?PJQ.app.session.preferences.getPref("portalOwner"):PJQ.constants.publicUserId});e.fetch({success:function(){new PJQ.views.screenings.ScreeningDashboard({el:t,collection:e})},error:function(e,t){new PJQ.logging.Debug(PJQ.logging.LoggingActions.PJQPROFILE_GET_SCREENINGS,{model:e,result:t})}})};e.fetch({success:function(){null!=_.find(e.models,function(e){return e.get("isActive")&&!e.get("isAccepted")})?new PJQ.views.screenings.ScreeningTermsModal({collection:e,onComplete:function(){i()}}):i()}})},isDisabled:function(){var e=null,t=PJQ.app.session.isPanteraPortal();return null!=PJQ.app.session.user&&(e=PJQ.app.session.user.get("companyType")),PJQ.app.session.get("ownsPortal")&&!t||"SUB"!==e&&t||PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_PREQUAL)}}),new PJQ.nav.NavItem({id:"screenings",title:"Screenings",sortOrder:90,icon:"fa-user",hasRoute:!0,hasPermission:function(){return PJQ.app.session.isPanteraPortal()||PJQ.app.session.hasPermission("prequal.canView")},render:function(t,e){var i=new PJQ.collections.screenings.ScreeningTerms,s=function(){var e=new PJQ.collections.screenings.ScreeningClients(null,{contact:PJQ.app.session.contact,masterUserId:PJQ.app.session.preferences.hasPref("portalOwner")?PJQ.app.session.preferences.getPref("portalOwner"):PJQ.constants.publicUserId});e.fetch({success:function(){new PJQ.views.screenings.ScreeningDashboard({el:t,collection:e})},error:function(e,t){new PJQ.logging.Debug(PJQ.logging.LoggingActions.PJQPROFILE_GET_SCREENINGS,{model:e,result:t})}})};i.fetch({success:function(){null!=_.find(i.models,function(e){return e.get("isActive")&&!e.get("isAccepted")})?new PJQ.views.screenings.ScreeningTermsModal({collection:i,onComplete:function(){s()}}):s()}})},isDisabled:function(){return!0}}),new PJQ.nav.NavItem({id:"calendar",title:"Calendar",sortOrder:100,icon:"fa-calendar-alt",feature:"calendar",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("calendar.canView")},render:function(e){PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_OLD_CALENDAR)?initScheduler(e):new PJQ.views.calendars.SystemCalendar({el:e})},isDisabled:function(){return null==PJQ.app.session.user}}),new PJQ.nav.NavItem({id:"resources",title:"Resources",sortOrder:105,icon:"fa-person-carry",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("resources.isAdmin")},render:function(e){new PJQ.views.resources.ResourceAllocation({el:e})},isDisabled:function(){return!PJQ.app.session.get("ownsPortal")}}),new PJQ.nav.NavItem({id:"timecards",title:"Time Cards",sortOrder:106,icon:"fa-user-clock",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("timeCards.canView")||PJQ.app.session.hasPermission("timeCards.isAdmin")},render:function(e){new PJQ.views.timecards.TimeCardMain({el:e})},isDisabled:function(){return!PJQ.app.session.get("ownsPortal")}}),new PJQ.nav.NavItem({id:"invoices",title:"Invoices",sortOrder:107,icon:"fa-file-invoice-dollar",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("invoices.canView")||PJQ.app.session.hasPermission("invoices.isAdmin")||!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_INVOICES)},render:function(e,t){PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_INVOICES)?new PJQ.views.invoices.Invoices(_.defaults({el:e},t)):new PJQ.views.invoices.InvoicePreview({el:e})},isDisabled:function(){return PJQ.app.session.get("onAccount")||null==PJQ.app.session.subscription||PJQ.app.session.subscription.id!==PJQ.constants.subscriptions.types.PRO&&PJQ.app.session.subscription.id!==PJQ.constants.subscriptions.types.ENTE
1RPRISE}}),new PJQ.nav.NavItem({id:"erpadmin",sortOrder:108,title:"ERP Admin",icon:"fa-check-to-slot",feature:"erpAdmin",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("settings.canManageERPAdmin")},path:function(e){return e?"erpadmin/"+e.feature:"erpadmin"},render:function(e,t){new PJQ.views.erpAdmin.ERPAdminManagement({el:e,feature:t.feature})},isDisabled:function(){return!PJQ.app.session.get("ownsPortal")||null==PJQ.app.session.erpIntegration||null==PJQ.app.session.erpIntegration.id}}),new PJQ.nav.NavItem({id:"reports",sortOrder:110,title:"Reports",icon:"fa-chart-line",feature:"reports",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("reports.canView")},render:function(e){initSystemReports(e)},isDisabled:function(){return!PJQ.app.session.get("ownsPortal")}}),new PJQ.nav.NavItem({id:"reportsadhoc",sortOrder:110,title:"Ad Hoc Reports",icon:"fa-chart-line",feature:"reports",hasRoute:!0,hasPermission:function(){return PJQ.app.session.hasPermission("reports.canView")},render:function(e){PJQ.app.ReportView=new PJQ.views.reporting.NewReportView({el:e})},isDisabled:function(){return!PJQ.app.session.get("ownsPortal")||!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_REPORTS_NEW)&&!new RegExp("://sandbox.").test(window.location.href)}}),new PJQ.nav.NavItem({id:"settings",title:"Settings",sortOrder:120,icon:"fa-cog",hasRoute:!0,render:function(e,t){PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_SETTINGS)?initSystemSettings(e):(PJQ.helpers.urlHelpers.cleanRouteParams(),new PJQ.views.settings.SettingsNav({el:e,procoreCode:t.procoreCode,subscriptionId:t.subscriptionId,initView:t.initView}))}}),new PJQ.nav.NavItem({id:"signout",title:"Sign Out",sortOrder:130,icon:"fa-sign-out",hasPrecedingSeparator:!0,route:function(){PJQ.app.options.isK8?window.location.href="/signout":window.location.href="/Signout.aspx"}}),new PJQ.nav.NavItem({id:"resourcecenter",title:"Resource Center",sortOrder:125,isAdmin:!0,marginTop:"50px",iconImage:"/assets/modules2/global/images/wrench_icon.png",hasPermission:function(){return!0},outsideRoute:"https://www.panteratools.com/support/resource-center/",isDisabled:function(){return PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.HIDE_RESOURCE_CENTER)},includeMarkup:'<div class="d-flex justify-content-end"><div style="margin-top:-12px !important;font-weight: 400;font-size: 12px;" class="p-0 m-0 ht-20p lh-20 wd-85p">Click here for Tutorials ></div></div>'})]),project:new PJQ.nav.NavItemGroup([new PJQ.nav.NavItem({id:"dashboard",title:"Dashboard",sortOrder:10,icon:"fa-tachometer-alt-fast",hasRoute:!0,path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/dashboard"},render:function(e,t){new PJQ.views.projects.ProjectDashboard(_.defaults({el:e,model:PJQ.app.session.project},t))},isDisabled:function(){if(PJQ.app.session.project)return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")}}),new PJQ.nav.NavItem({id:"details",title:"Project Details",sortOrder:20,icon:"fad fa-asterisk",hasRoute:!0,path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/details"},render:function(e,t){this.projectDetails=new PJQ.views.projects.ProjectDetails(_.defaults({el:e,model:PJQ.app.session.project},t))},leaveView:function(){null!=this.projectDetails&&this.projectDetails.cancelEdit()},hasPermission:function(){var e=PJQ.app.session.project;return!e.get("isDetailsAdminOnly")||e.get("masterUserId")===PJQ.app.session.get("masterUserId")}}),new PJQ.nav.NavItem({id:"locations",title:"Locations",sortOrder:25,icon:"fa-map-pin",hasRoute:!0,path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/locations"},render:function(e,t){new PJQ.views.projects.LocationManagement(_.defaults({el:e,project:PJQ.app.session.project},t))},hasPermission:function(){return PJQ.app.session.project.hasPermission("base.canEdit")},isDisabled:function(){return!PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PROJECT_LOCATIONS)}}),new PJQ.nav.NavItem({id:"mall",title:"Mall",sortOrder:20,isAdmin:!0,icon:"fa-building",hasRoute:!0,path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/mall"},render:function(e,t){var i=new PJQ.Loader(e);PJQ.nav.getDataForOldProjectModules(function(){window.pjqIsNewProjContainer=!0,null!=i&&i.remove(),e.html('<div><button type="button" id="project-save" onclick="SaveProjContainer()" class="btn btn-primary mb-2">Save Changes</button><div id="project-container-home"></div></div>'),PanteraScript.PanteraScriptService.GetProjectContainerInfo(PJQ.app.session.id,ProjContainerInfoC,onScriptError)})},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||!PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PROJECT_CONTAINERS)}}),new PJQ.nav.NavItem({id:"messaging",title:function(){return PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_MESSAGING_TAB_NAME)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_MESSAGING_TAB_NAME):"Messaging"},sortOrder:30,icon:"fa-poll-people",isLegacy:function(){return!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_PROJECT_WALL_MESSAGING_NEW_PORTAL)},feature:"projectMessaging",isAdmin:!0,hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("messaging.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/messaging"},render:function(s,e){if(PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_PROJECT_WALL_MESSAGING_NEW_PORTAL)){var t=PJQ.app.session.get("masterUserId");PJQ.app.session.fetchCompanyCustomFields(t,_.bind(function(){PJQ.app.session.fetchContactCustomFields(t,_.bind(function(){PJQ.app.session.fetchProjectMessageEmailTemplates(_.bind(function(){new PJQ.views.projects.ProjectMessaging(_.defaults({el:s,project:PJQ.app.session.project,copyProjectMessageId:e.copyProjectMessageId},e))},this))},this))},this))}else{null!=window.dlgPM&&(window.dlgPM.dialog("destroy"),window.dlgPM=null),window.msgEditor=null,window.searchGroupList="",window.filterGroupTree=null,window.filterUnsent=!1,window.validator=jQuery("Form[name='Form']").validate({onsubmit:!1,onkeyup:!1,showErrors:function(e,t){for(var i=0;t[i];i++){var s=this.errorList[i].element;this.errorsFor(s).remove()}this.defaultShowErrors()},errorPlacement:function(e,t){e.html("<br />"+e.text()),"select"==t.attr("tagName")||t.hasClass("pjq-numeric-field-width")?e.appendTo(t.parent().parent()):e.appendTo(t.parent())},errorClass:"pjq-errortext",ignore:"pjq-validate-ignore"});var i=new PJQ.Loader(s),n=function(t){$(".ui-dialog").remove();var i=$("<div />",{id:"project-itb"});s.html(i),PJQ.templating.TemplateRenderer.renderTemplate(!1,new PJQ.templating.Template(PJQ.constants.modules.PROJECTWALLADMIN,"ITB",{isOldModule:!0}),i,{}
1,function(){var e=$("<div />",{id:"project-documents",class:"hidden"});s.append(e),PJQ.templating.TemplateRenderer.renderTemplate(!1,new PJQ.templating.Template(PJQ.constants.modules.PROJECTWALLADMIN,"ProjectDocuments",{isOldModule:!0}),e,{},function(){gridITB=null,PJQProjectWallAdminITBInitialize(),InitializeGridITB(gridITBGroupBy,_.bind(function(){t.viewProjectMessageId?HandleViewProjectMessage(t.viewProjectMessageId):t.copyProjectMessageId?CopyProjectMsg(t.copyProjectMessageId):t.deleteProjectMessageId&&(selectedCommentId=t.deleteProjectMessageId,showInfoDialog("Delete Message","Are you sure you want to delete this Project Message?","ui-icon-alert","delete-project-message"))},this)),i.find(".btn-new-message").attr("id","create-new-itb").removeClass("hidden")})})};null==window.settings||null==window.settings.ProjectUser1Label||null==window.project||window.settings.projectId!==PJQ.app.session.project.id?PJQ.nav.getDataForOldProjectModules(function(){n(e),null!=i&&i.remove()}):(n(e),null!=i&&i.remove())}},isDisabled:function(){return!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_PROJECT_WALL_MESSAGING_NEW_PORTAL)&&("ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_PROJECT_WALL_MESSAGING_OLD))}}),new PJQ.nav.NavItem({id:"messagingnew",title:function(){return PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_MESSAGING_TAB_NAME)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_MESSAGING_TAB_NAME):"Messaging"},sortOrder:30,icon:"fa-poll-people",feature:"projectMessaging",isAdmin:!0,hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("messaging.canView")},path:function(e){return"projects/"+PJQ.app.session.project.id.toString()+"/messagingnew"+(e&&e.viewProjectMessageId?"/"+e.viewProjectMessageId:"")},render:function(e,t){PJQ.app.session.fetchCompanyCustomFields(PJQ.app.session.get("masterUserId"),_.bind(function(){PJQ.app.session.fetchContactCustomFields(PJQ.app.session.get("masterUserId"),_.bind(function(){PJQ.app.session.fetchProjectMessageEmailTemplates(_.bind(function(){new PJQ.views.projects.ProjectMessaging(_.defaults({el:e,project:PJQ.app.session.project,copyProjectMessageId:t.copyProjectMessageId},t))},this))},this))},this))},isDisabled:function(){return!!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_PROJECT_WALL_MESSAGING_NEW_PORTAL)||("ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||!PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.IS_PROJECT_WALL_MESSAGING_NEW))}}),new PJQ.nav.NavItem({id:"privatemessaging",title:"Private Messages",sortOrder:40,icon:"fa-comments-alt",feature:"privateMessaging",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("privateMessaging.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/privatemessaging"},render:function(e,t){new PJQ.views.projects.UserMessages({el:e,project:PJQ.app.session.project,userMessageId:t.viewUserMessageId,view:t.view?t.view:"inbox"})},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||null===PJQ.app.session.user&&null===PJQ.app.session.contact||PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_PROJECT_PRIVATE_MESSAGES)}}),new PJQ.nav.NavItem({id:"bidforms",title:"Bid Forms",sortOrder:50,icon:"fa-file-invoice-dollar",feature:"bidForms",isAdmin:!0,hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.get("masterUserId")===PJQ.app.session.get("masterUserId")&&PJQ.app.session.project.hasPermission("bidForms.canView")},path:function(e){return e&&0<e.groupId?"projects/"+PJQ.app.session.project.id.toString()+"/bidforms/"+e.groupId.toString():"projects/"+PJQ.app.session.project.id.toString()+"/bidforms"},render:function(e,t){PJQ.app.BidFormEditor=new PJQ.views.bidForms.BidFormEditorSelector(_.defaults({el:e,project:PJQ.app.session.project,collection:new PJQ.collections.bidForms.GroupBidForms([]),initProposalId:t.proposalId,initGroupId:t.groupId},t))},isDisabled:function(){var e=PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_BID_FORMS)||PJQ.app.session.isPanteraPortal();return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||!e||!PJQ.app.session.project.get("featureSettings").isBidFormsEnabled}}
1),new PJQ.nav.NavItem({id:"proposals",title:"Proposals",sortOrder:60,icon:"fa-file-invoice-dollar",isAdmin:!1,hasRoute:!0,path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/proposals"},hasPermission:function(){return PJQ.app.session.project.hasPermission("bidForms.canView")},render:function(e,t){new PJQ.views.bidForms.ProposalSelector({el:e,model:new PJQ.models.bidForms.Bidder({contactId:PJQ.app.session.contact.id})})},isDisabled:function(){if(null==PJQ.app.session.contact)return!0;var e=this.getNavPref();if(null!=e&&null!=e.isDisabled)return e.isDisabled;var t=PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_BID_FORMS)||PJQ.app.session.isPanteraPortal()&&4===PJQ.app.session.project.get("portalId");return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||!t||!PJQ.app.session.project.get("featureSettings").isBidFormsEnabled||null==PJQ.app.session.contact}}),new PJQ.nav.NavItem({id:"projectcontacts",title:"Project Contacts",sortOrder:70,icon:"fa-users-class",isAdmin:!0,hasRoute:!0,isPrimaryProjectManagerCheckExempt:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("projectContacts.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/contacts"},render:function(e,t){PJQ.app.projectContactsManagement=new PJQ.views.projectContacts.ProjectContactsManagement(_.defaults({el:e,project:PJQ.app.session.project},t))},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_PROJECT_CONTACTS)}}),new PJQ.nav.NavItem({id:"projectdocuments",title:"Documents",sortOrder:80,icon:"fa-folder-tree",feature:"projectAttachments",isAdmin:!0,hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("attachments.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/documents"},render:function(t,e){var i=new PJQ.Loader(t),s=function(){var e=$
1("<div />",{id:"project-documents"});t.append(e),PJQ.templating.TemplateRenderer.renderTemplate(!1,new PJQ.templating.Template(PJQ.constants.modules.PROJECTWALLADMIN,"ProjectDocuments",{isOldModule:!0}),e,{},function(){window.loPDocs=null,PJQProjectWallAdminProjectDocumentsInitialize()})};null==window.settings?PJQ.nav.getDataForOldProjectModules(function(){s(),null!=i&&i.remove()}):(s(),null!=i&&i.remove())},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||!PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_DOCUMENTS)}}),new PJQ.nav.NavItem({id:"drawings",title:"Drawings",sortOrder:90,icon:"fa-ruler",feature:"drawings",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("drawings.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/drawings"},render:function(e,t){new PJQ.views.drawings.Dashboard({el:e,project:PJQ.app.session.project,isReadOnly:"ARCHIVE"===PJQ.app.session.project.get("status"),initOptions:t})},isDisabled:function(){var e=PJQ.app.session.project;return"NEW"===e.get("status")||e.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_DRAWINGS)||!e.get("hasDrawings")&&(null==PJQ.app.session.user||e.get("masterUserId")!==PJQ.app.session.user.get("masterUserId"))}}),new PJQ.nav.NavItem({id:"attachments",title:"Attachments",sortOrder:100,icon:"fa-paperclip",feature:"projectAttachments",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("attachments.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/attachments"},render:function(e){new PJQ.views.projects.Attachments({el:e,expandSharedFolders:PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.EXPAND_PROJECT_ROOT_SHARED_FOLDERS),project:PJQ.app.session.project,isReadOnly:"ARCHIVE"===PJQ.app.session.project.get("status")})},isDisabled:function(){return"NEW"===PJQ.app.session.project.get("status")||PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_PROJECT_ATTACHMENTS)}}),new PJQ.nav.NavItem({id:"projectphotos",title:"Photo Gallery",sortOrder:110,icon:"fa-images",feature:"projectPhotos",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("photoGallery.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/photos"},render:function(e,t){PJQ.app.ProjectPhotoGallery=new PJQ.views.photos.PhotoGallery(_.defaults({el:e,project:PJQ.app.session.project},t))},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_PROJECT_PHOTOS)}}),new PJQ.nav.NavItem({id:"meetings",title:"Meetings",sortOrder:108,icon:"fa-people-group",feature:"meetings",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("meetings.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/meetings"},render:function(e,t){new PJQ.views.meetings.MeetingsList({el:e,project:PJQ.app.session.project,meetingId:t.meetingId})},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")}}),new PJQ.nav.NavItem({id:"projectschedule",title:"Schedule",category:PJQ.constants.navigation.categories.FIELD_TOOLS,sortOrder:105,icon:"fad fa-tasks-alt",feature:"schedule",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("schedule.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/schedule"},render:function(e,t){new PJQ.views.schedule.ScheduleDashboard({el:e,project:PJQ.app.session.project,model:t.model,initTaskId:t.taskId,initLookAheadId:t.lookAheadId,shareKey:t.shareKey})},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_SCHEDULING)}}),new PJQ.nav.NavItem({id:"rfi",title:"RFI",sortOrder:120,icon:"fa-question",feature:"rfi",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("rfi.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/rfi"},render:function(t,i){PJQ.app.session.project.fetchRFISettings(_.bind(function(e){PJQ.app.RFIManagement=new PJQ.views.rfi.RFIManagement(_.defaults({el:t,settings:e,project:PJQ.app.session.project},i))},this))},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_RFI)||null===PJQ.app.session.user&&null===PJQ.app.session.contact}}),new PJQ.nav.NavItem({id:"submittals",title:"Submittals",sortOrder:130,icon:"fa-conveyor-belt-alt",feature:"submittals",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("submittals.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/submittals"},render:function(e,t){new PJQ.views.submittals.SubmittalsView({el:e,project:PJQ.app.session.project,initSubmittalId:t.submittalId})},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")}}),new PJQ.nav.NavItem({id:"dailyreports",title:"Daily Reports",sortOrder:140,icon:"fa-calendar-day",feature:"dailyReports",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("dailyReports.canView")},path:function(e){var t="projects/"+PJQ.app.session.project.id+"/dailyreports";return null!=e&&null!=e.date&&(t+="/"+PJQ.helpers.dateHelpers.getDateString(e.date,PJQ.helpers.dateHelpers.dateFormats.URL_DATE)),t},render:function(e,t){PJQ.app.DailyReportsManagement=new PJQ.views.dailyReports.DailyReportsNavigator(_.defaults({el:e,project:PJQ.app.session.project},t))},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_DAILY_REPORTS)}}),new PJQ.nav.NavItem({id:"timecardsProject",title:"Time Cards",sortOrder:144,icon:"fa-user-clock",hasRoute:!0,hasPermission:function(){return null==PJQ.app.session.contact&&PJQ.app.session.hasPermission("timeCards.canView")||PJQ.app.session.project.hasPermission("timeCards.canView")&&PJQ.app.session.project.get("isProjectContact")||PJQ.app.session.project.hasPermission("timeCards.canViewAll")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/timecards"},render:function(e){var t=null;t=null===PJQ.app.session.contact&&PJQ.app.session.hasPermission("timeCards.canView")||PJQ.app.session.project.hasPermission("timeCards.canViewAll")?null:PJQ.app.session.project.hasPermission("timeCards.canView")?PJQ.app.session.user:PJQ.app.session.contact,new PJQ.views.timecards.TimeCardMain({el:e,project:PJQ.app.session.project,contact:t})}}),new PJQ.nav.NavItem({id:"punchlists",title:"Punch List",sortOrder:150,icon:"fa-clipboard-check",feature:"punchList",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("punchList.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/punchlists"},render:function(e,t){PJQ.app.PunchlistView=new PJQ.views.punchlists.PunchlistView(_.defaults({el:e,project:PJQ.app.session.project},t))},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")}}),new PJQ.nav.NavItem({id:"actionitems",title:"Action Items",sortOrder:150,icon:"fa-clipboard-check",feature:"actionItems",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("actionItems.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/actionitems"},render:function(e,t){PJQ.app.ActionItemsView=new PJQ.views.actionItems.ActionItemView(_.defaults({el:e,project:PJQ.app.session.project},t))},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")}}),new PJQ.nav.NavItem({id:"projectreports",title:"Reports",sortOrder:160,icon:"fa-chart-pie",feature:"projectReports",isAdmin:!0,hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("reports.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/reports"},render:function(e,t){var i=function(){PJQ.templating.TemplateRenderer.renderTemplate(!1,new PJQ.templating.Template(PJQ.constants.modules.PROJECTWALLADMIN,"ProjectReports",{isOldModule:!0}),e,{},function(){PJQProjectWallAdminProjectReportsInitialize(),BuildReportProject()})};null==window.settings||window.settings.projectId!==PJQ.app.session.project.id?PJQ.nav.getDataForOldProjectModules(function(){i()}):i()},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")}}),new PJQ.nav.NavItem({id:"projectreportsadhoc",title:"Ad Hoc Reports",sortOrder:160,icon:"fa-chart-pie",feature:"projectReports",isAdmin:!0,hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("reports.canView")},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/reportsadhoc"},render:function(e,t){PJQ.app.ReportView=new PJQ.views.reporting.NewReportView({el:e,project:PJQ.app.session.project})},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_REPORTS_NEW)&&!new RegExp("://sandbox.").test(window.location.href)}}),new PJQ.nav.NavItem({id:"rsvpautoreport",title:function(){var e=PJQ.app.session.project.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_RSVP_AUTO_REPORT);return-1!==e.indexOf("|")&&(e=e.substring(0,e.indexOf("|"))),e},sortOrder:165,icon:"fa-info",isAdmin:!1,route:function(){new PJQ.views.projects.AutoReport(_.defaults({project:PJQ.app.session.project},{}))},isDisabled:function(){return!PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_RSVP_AUTO_REPORT)}}),new PJQ.nav.NavItem({id:"costcodes",title:"Cost Codes",sortOrder:169,icon:"fa-money-check-dollar",feature:"budget",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("budget.isAdmin")&&null!=PJQ.app.session.user},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/costcodes"},render:function(e,t){this.costCodeSettings=new PJQ.views.budget.ProjectCostCodeSettings({el:e,project:PJQ.app.session.project})},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")}}),new PJQ.nav.NavItem({id:"budget",title:"Budget",sortOrder:170,icon:"fa-clipboard-check",feature:"budget",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("budget.canView")&&null!=PJQ.app.session.user},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/budget"},render:function(e,t){PJQ.app.BudgetView=new PJQ.views.budget.ProjectBudget(_.defaults({el:e,project:PJQ.app.session.project},t))}}),new PJQ.nav.NavItem({id:"primecontracts",title:"Contracts",sortOrder:170,icon:"fa-signature",feature:"primecontracts",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("primeContracts.canView")&&null!=PJQ.app.session.user},path:function(e){return e?"projects/"+PJQ.app.session.project.id.toString()+"/contracts/"+e.view:"projects/"+PJQ.app.session.project.id.toString()+"/contracts"},render:function(e,t){new PJQ.views.primeContracts.PrimeContractManagement(_.defaults({el:e,project:PJQ.app.session.project},t))}}),new PJQ.nav.NavItem({id:"commitments",title:"Commitments",sortOrder:170,icon:"fa-money-bill",feature:"budget",hasRoute:!0,requireSignUp:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("commitments.canView")&&null!=PJQ.app.session.user},path:function(e){return e?"projects/"+PJQ.app.session.project.id.toString()+"/commitments/"+e.view:"projects/"+PJQ.app.session.project.id.toString()+"/commitments"},render:function(e,t){new PJQ.views.commitments.CommitmentManagement(_.defaults({el:e,project:PJQ.app.session.project},t))}}),new PJQ.nav.NavItem({id:"changerequests",title:"Change Requests",sortOrder:172,icon:"fa-money-bill-transfer",feature:"changerequests",hasRoute:!0,requireSignUp:!0,hasPermission:function(){return null!=PJQ.app.session.user&&(PJQ.app.session.project.hasPermission("changeRequests.canView")||PJQ.app.session.project.hasPermission("changeRequests.canViewRFQs"))},path:function(e){return e?"projects/"+PJQ.app.session.project.id.toString()+"/changerequests/"+e.view:"projects/"+PJQ.app.session.project.id.toString()+"/changerequests"},render:function(e,t){new PJQ.views.changeRequests.ChangeRequestsList(_.defaults({el:e,project:PJQ.app.session.project},t))},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")}}
1),new PJQ.nav.NavItem({id:"directcosts",title:"Direct Costs",sortOrder:175,icon:"fa-envelope-open-dollar",feature:"budget",hasRoute:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("directCosts.canView")&&null!=PJQ.app.session.user},path:function(){return"projects/"+PJQ.app.session.project.id.toString()+"/directcosts"},render:function(e,t){new PJQ.views.directcosts.ProjectDirectCosts(_.defaults({el:e,project:PJQ.app.session.project},t))}}),new PJQ.nav.NavItem({id:"invoicing",title:"Invoicing",sortOrder:180,icon:"fa-file-invoice-dollar",feature:"invoicing",hasRoute:!0,hasPermission:function(){return(PJQ.app.session.project.hasPermission("payableInvoices.isAdmin")||PJQ.app.session.project.hasPermission("receivableInvoices.isAdmin"))&&null!=PJQ.app.session.user},path:function(e){return e?"projects/"+PJQ.app.session.project.id.toString()+"/invoicing/"+e.view:"projects/"+PJQ.app.session.project.id.toString()+"/invoicing"},render:function(e,t){new PJQ.views.invoicing.InvoicingManagement(_.defaults({el:e,project:PJQ.app.session.project},t))}})],{hasHeader:!0}),nonAdminExtras:new PJQ.nav.NavItemGroup([new PJQ.nav.NavItem({id:"cloneproject",title:"Clone Project",sortOrder:300,icon:"fa-clone",isAdmin:!1,hasPrecedingSeparator:!0,route:function(){var t=new PJQ.views.modals.YesNo({header:"Clone Project",body:"Are you sure you want to clone this into your projects?",onYes:function(){new PJQ.Loader(t.$(".modal-content")),PJQ.app.session.project.clone(function(e){t.remove(),PJQ.modules.projectWall.initProjectNavigator(e.id,"dashboard"),PJQ.notifications.notify.successNotify({message:"Project cloned successfully"})})}})},isDisabled:function(){return!PJQ.app.session.isLoggedIn()||!PJQ.app.session.get("ownsPortal")}}),new PJQ.nav.NavItem({id:"followproject",title:"Follow Project",sortOrder:310,icon:"fa-bell",isAdmin:!1,hasPrecedingSeparator:!0,route:function(){new PJQ.views.contacts.BaseEditContactModal({model:new PJQ.models.projectContacts.ProjectContact({id:PJQ.app.session.contact.id,projectId:PJQ.app.session.project.id}),alert:"Please review and update your contact details before registering your account",onSave:function(){new PJQ.views.auth.AuthModal({contactId:PJQ.app.session.contact.id,mode:0<PJQ.app.session.contact.get("userId")?"SIGN_IN":"SIGN_UP",isShowCloseButton:!0})}})},isDisabled:function(){return PJQ.app.session.isLoggedIn()||null==PJQ.app.session.contact}})]),adminExtras:new PJQ.nav.NavItemGroup([new PJQ.nav.NavItem({id:"copyproject",title:"Copy Project",sortOrder:320,icon:"fa-clone",isAdmin:!0,hasPrecedingSeparator:!0,hasPermission:function(){return PJQ.app.session.project.hasPermission("base.canCopy")},route:function(){var t=new PJQ.views.modals.YesNo({header:"Copy Project",body:"Are you sure you want to copy this project?",onYes:function(){new PJQ.Loader(t.$(".modal-content")),PJQ.app.session.project.copy(function(e){t.remove(),PJQ.modules.projectWall.initProjectNavigator(e.id,"dashboard"),PJQ.notifications.notify.successNotify({message:"Project copied successfully"})})}})},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||!PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_COPY_PROJECT)}}),new PJQ.nav.NavItem({id:"orderprints",title:"Order Prints",sortOrder:325,icon:"fa-shopping-cart",isAdmin:!0,hasPermission:function(){return!0},route:function(){new PJQ.views.files.OrderPrintsModal({mode:PJQ.constants.files.modes.ALT_PRINT,project:PJQ.app.session.project})},isDisabled:function(){return!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PLAN_EXPRESS_PORTAL)}}),new PJQ.nav.NavItem({id:"bluebookpublish",title:"Message The Blue Book",sortOrder:325,isAdmin:!0,iconImage:"/assets/modules2/global/images/thebluebook.png",hasPermission:function(){return PJQ.app.session.project.hasPermission("messaging.canManage")},route:function(){new PJQ.views.projects.BlueBookPublishModal({project:PJQ.app.session.project})},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_BLUE_BOOK_PUBLISH)},extraMarkup:'<li class="nav-item"><div class="d-flex justify-content-end"><a style="margin-top:-8px !important;font-weight: 400;font-size: 14px;" class="nav-button-label nav-link p-0 m-0 mr-4 ht-20p lh-20 wd-85p" target="_blank" href="https://www.panteratools.com/the-blue-book-network/">See Details ></a></div></li>'}
1),new PJQ.nav.NavItem({id:"procorepublish",title:"Publish to Procore",sortOrder:330,isAdmin:!0,iconImage:"/assets/modules2/global/images/procore.png",route:function(){var o=new PJQ.Loader($("div.nav-body"));new PJQ.ajax.Request({endpoint:"/procore/settings/-1"}).get().done(_.bind(function(e){null!=o&&o.remove();var t=function(e,t){new PJQ.views.projects.ProcorePublishModal({settings:e,procoreProjectNumber:t})};if(PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROCORE_PROJECT_NUMBER_CUSTOM_FIELD)){var i="",s="",n=parseInt(PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROCORE_PROJECT_NUMBER_CUSTOM_FIELD));_.each(PJQ.app.session.project.customFields.models,function(e){e.get("id")==n&&(i=e.get("fieldName"))}),_.each(PJQ.app.session.project.attributes.customFields,function(e){e.id==n&&(s=e.value)}),0==_.size(s)?PJQ.notifications.notify.errorNotify({message:i+" must be entered in order to Publish to Procore"}):t(e,s)}else t(e)},this)).fail(_.bind(function(e,t,i){PJQ.notifications.notify.errorNotify({message:"Unable to retrieve Procore settings!"})},this))},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROCORE_CLIENT_ID)||!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROCORE_ACCESS_REFRESH_TOKEN)||0<_.size(PJQ.app.session.project.get("externalProjectId"))}}),new PJQ.nav.NavItem({id:"procoreview",title:"View in Procore",sortOrder:340,isAdmin:!0,iconImage:"/assets/modules2/global/images/procore.png",route:function(){var e=PJQ.app.session.project.get("externalProjectId").substring(8);new PJQ.views.BaseModal({header:"Procore Project",body:'<a href="https://api.procore.com/'+e+'/project/home" target="_blank">Click here</a> to open your Procore project in a new window.'})},isDisabled:function(){return"ARCHIVE"===PJQ.app.session.project.get("status")||"NEW"===PJQ.app.session.project.get("status")||!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROCORE_CLIENT_ID)||!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROCORE_ACCESS_REFRESH_TOKEN)||0===_.size(PJQ.app.session.project.get("externalProjectId"))||!PJQ.app.session.project.get("externalProjectId").startsWith("PROCORE:")}})])},PJQ.views.nav={},PJQ.views.nav.AppNavigator=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"App-Navigator"),subTemplates:{commands:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"App-Navigator-Commands"),signUpMessage:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"app-navigator-sign-up-message")},itemGroups:[],isAdmin:!0},events:{"click .nav-link":"navigate","click .btn-to-top":"backToTop","click .btn-start-tour":"startTour"},beforeInit:function(){null==PJQ.app.options.isNavExpanded&&(PJQ.app.options.isNavExpanded=768<window.innerWidth),this.$el.off()},expandNav:function(e){var t=this.$(".app-navigator");t.toggleClass("expanded"),PJQ.app.options.isNavExpanded=t.hasClass("expanded")},beforeFirstRender:function(){this.renderHeaderNavExpandButton(),this.renderHeaderSubscription()}
1,renderHeaderNavExpandButton:function(){var e=$(".skin-header");if(0<_.size(e)&&0===_.size($(".btn-expand-nav"))){var t=e.css("background-color"),i=0<_.size(t)?PJQ.helpers.colorHelpers.idealLinkColorForBackground(PJQ.helpers.colorHelpers.getHexFromRGB(t)):"#fff",s=$('<i style="color:'+i+';" class="fad fa-bars btn-expand-nav fa-2x ml-3"></i>');e.prepend(s),s.on("click",_.bind(this.expandNav,this))}},renderHeaderSubscription:function(){if(null!=PJQ.app.session.user&&!PJQ.app.session.get("onAccount")&&PJQ.app.session.get("portalId")===PJQ.constants.panteraPortalId){$(".subscription-name").remove(),$(".start-tour").remove();var e=$(".skin-header"),t=PJQ.app.session.subscription.get("isFreeTrial")&&null!=PJQ.app.session.subscription.newSubscription&&PJQ.app.session.subscription.newSubscription.id===PJQ.constants.subscriptions.types.FREE,i=$('<span class="fs-14 subscription-name"> '+PJQ.helpers.formatHelpers.upperCaseFirstLetterEachWord(PJQ.app.session.subscription.get("name").toLowerCase())+(t?" Trial":"")+"</span>");if(e.append(i),t){var s=PJQ.helpers.dateHelpers.getDateDiff(new Date(PJQ.app.session.subscription.get("trialExpiresOn")),new Date,"days")+1,n=$('<span class="fs-12"> ('+s.toString()+"d remaining)</span>");i.append(n)}if(PJQ.app.session.user.get("tourDone")&&!PJQ.app.session.get("onAccount")&&1<PJQ.app.session.subscription.get("subscriptionId")){var o=$('<div class="start-tour" style="position: absolute; right: 0; margin-right: 20px;"><button type="button" class="btn btn-link text-light btn-start-tour">Start Tour</button></div>');e.append(o),$(".btn-start-tour").on("click",_.bind(function(){this.startTour()},this))}}},beforeRender:function(){if(null!=this.options.activeItem){null!=(null==PJQ.nav.itemGroups.main?null:_.findWhere(PJQ.nav.itemGroups.main.items,{id:this.options.activeItem}))&&(PJQ.app.session.project=null)}else{var e=_.find(PJQ.nav.itemGroups.main.items,function(e){return!e.getIsDisabled()&&e.hasPermission()&&e.hasFeature()});null!=e&&(this.options.activeItem=e.id)}this.user=PJQ.app.session.user,this.project=PJQ.app.session.project},renderData:function(){return{project:this.project,context:this.options.context,isExpanded:PJQ.app.options.isNavExpanded}},afterRender:function(){if($(".dhtmlXTooltip").remove(),this.determineCommands(),PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_TOP_OF_PAGE_BUTTON)&&($(".scroll-to-top").append('<a id="btntotop" class="btn-to-top" style="display: none;">\n<span class="fas fa-chevron-up"></span>\n</a>'),this.$("div.nav-content").on("scroll",_.bind(function(){100<this.$("div.nav-content")[0].scrollTop?$(".btn-to-top").fadeIn(300):$(".btn-to-top").fadeOut(300)},this))),this.setActiveItem(this.options.activeItem),this.options.activeItem=null,this.renderCommands(),this.renderHeader(),this.renderActiveItem(!1),null!=PJQ.app.session.user&&!PJQ.app.session.get("onAccount")&&PJQ.app.session.get("portalId")===PJQ.constants.panteraPortalId){var e=PJQ.constants.cookies.SUBSCRIPTION_FREE_TRIAL+"-"+PJQ.app.session.user.id.toString();null==PJQ.app.session.subscription.get("trialExpiresOn")&&PJQ.helpers.cookieHelpers.getCookie(e),!this.options.preventTour&&!PJQ.app.navInit&&!PJQ.app.session.user.get("tourDone")&&1<PJQ.app.session.subscription.get("subscriptionId")&&(PJQ.app.navInit=!0,PJQ.helpers.tours.initTour());var t=PJQ.constants.cookies.SUBSCRIPTION_EXPIRES_ALERT+"-"+PJQ.app.session.user.id.toString();if(null!=PJQ.app.session.subscription.newSubscription&&!PJQ.helpers.cookieHelpers.getCookie(t)){var i=PJQ.helpers.dateHelpers.getDateDiff(new Date(PJQ.app.session.subscription.get("expiresOn")),new Date,"days")+1;if(i<=14&&0<i){var s,n=PJQ.app.session.subscription.newSubscription.id!==PJQ.constants.subscriptions.types.FREE;if(n)s="Your current plan will be downgraded in "+i.toString()+(1===i?" day":" days")+".  Upgrade your account to keep your current features!  <a class='btn-change-sub no-trial' href='#settings'>Upgrade Now</a>";else s="Your "+(PJQ.app.session.subscription.get("isFreeTrial")?"free trial":"current plan")+" will expire in "+i.toString()+(1===i?" day":" days")+".  Upgrade your account to keep your project progress!  <a class='btn-change-sub no-trial' href='#settings'>Upgrade Now</a>";new PJQ.Alert(this.$(".nav-content"),{type:"sub-expiration",text:s,isPrepend:!0,cookie
1:t,cookieExpirationDays:1===i?1:i/(n?1.5:2)})}}PJQ.app.session.contact&&PJQ.app.session.contact.get("isBlacklisted")&&!PJQ.app.session.contact.get("isApprovalRequired")&&new PJQ.views.BaseModal({header:"Directory Information Required",body:"Additional information is required in order to be included in the Pantera Directory and begin receiving Project Invites.  Please ensure all information is accurate and complete.",isShowSecondaryButton:!0,okButtonText:"Update Information",secondaryButtonText:"Cancel",onOk:_.bind(function(){window.location.href="https://app.panteratools.com/?cg="+PJQ.app.session.contact.get("updateGuid")+"/#register"},this)})}},startTour:function(){new PJQ.views.tours.SubscriptionTourIntro},determineCommands:function(){var e;if(null!=this.project)if(this.projectMenuItems=[],(e=this.projectMenuItems).push.apply(e,_toConsumableArray(PJQ.nav.itemGroups.project.items)),this.project.get("masterUserId")===PJQ.app.session.get("masterUserId")){var t;(t=this.projectMenuItems).push.apply(t,_toConsumableArray(PJQ.nav.itemGroups.adminExtras.items))}else{var i;if(null!=this.project.userMessageTypes){var s=PJQ.app.session.contact?PJQ.app.session.contact.get("userTypeId"):PJQ.app.session.user?PJQ.app.session.user.get("userTypeId"):null,n=_.filter(this.project.userMessageTypes.models,function(e){return 0<_.size(e.get("actionButtonText"))&&"bid submittal"!==e.get("userMessageType").toLowerCase()&&(!e.get("userTypeId")||e.get("userTypeId")===s)}),o=300;_.each(n,function(e,t){var i=new PJQ.nav.NavItem({id:"msg_"+e.id.toString(),title:e.get("actionButtonText"),sortOrder:o,icon:"fa-clone",isAdmin:!1,hasPrecedingSeparator:0===t,route:_.bind(function(){new PJQ.views.projects.UserMessageModal({project:this.project,userMessageTypeId:e.id})},this)});this.projectMenuItems.push(i),o+=10},this)}(i=this.projectMenuItems).push.apply(i,_toConsumableArray(PJQ.nav.itemGroups.nonAdminExtras.items))}},refreshCommands:function(){this.determineCommands(),this.renderCommands()},renderCommands:function(){this.renderSubTemplate(!1,this.options.subTemplates.commands,this.$(".nav-commands-container"),{project:this.project,projectMenuItems:this.projectMenuItems,activeItem:this.activeItem,context:this.options.context?this.options.context:""})},setActiveItem:function(e){var t=null==PJQ.nav.itemGroups.main?null:_.findWhere(PJQ.nav.itemGroups.main.items,{id:e});if(null!=t?(PJQ.app.session.project=null,this.project=null,t.hasRoute&&(this.activeItem=t)):null!=this.project?null!=(t=_.findWhere(this.projectMenuItems,{id:e}))&&t.hasRoute&&(this.activeItem=t):this.activeItem=null,PJQ.app.session.project&&(null==this.activeItem||this.activeItem.getIsDisabled()))if(null!=this.project){var i=PJQ.app.session.get("masterUserId")===this.project.get("masterUserId");this.activeItem=_.find(PJQ.nav.itemGroups.project.items,function(e){return e.hasFeature()&&e.hasPermission()&&!e.getIsDisabled()&&(null==e.getIsAdmin()||i===e.getIsAdmin())})}else this.activeItem=_.find(PJQ.nav.itemGroups.main.items,function(e){return e.hasFeature()&&e.hasPermission()&&!e.getIsDisabled()});return t},renderHeader:function(){null!=this.user?this.userHeader=new PJQ.views.nav.UserHeader({el:this.$(".app-nav-user-header"),model:this.user}):null!=this.userHeader&&this.userHeader.remove(),null!=this.project?this.projectHeader=new PJQ.views.nav.ProjectHeader({el:this.$(".app-nav-project-header"),model:this.project}):null!=this.projectHeader&&this.projectHeader.remove()},renderActiveItem:function(e){var t=this.$(".nav-body");if(null!=this.activeItem){if(!1===this.activeItem.route(this.options.viewOptions,e,t))return;if("dashboard"===this.activeItem.id?t.addClass("module-content-gray"):t.removeClass("module-content-gray"),this.activeItem.render(t,null!=this.options.viewOptions?this.options.viewOptions:{}),null!=this.project&&PJQ.app.session.get("masterUserId")===this.project.get("masterUserId")&&!0!==this.activeItem.isPrimaryProjectManagerCheckExempt&&PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_WALL_PRIMARY_PROJECT_MANAGER_REQUIRED)&&!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_DOCUMENT_CLERK)){var i=_.bind(function(){PJQ.app.session.project.fetchProjectContacts(_.bind(function(){var i=null;_.each(PJQ.app.session.project.projectContacts.models,_.bind(function(t){t.get("isPrimary")&&_.each(PJQ.app.session.userTypes.models,_.bind(function(e){e.get("userTypeId")===t.get("userTypeId")&&e.get("isProjectManager")&&(i=t)},this))},this)),i||new PJQ.views.BaseModal({header:"Primary Project Manager Required",body:"Please add or select a Primary Project Manager in the Project Contacts list.",isShowCancelButton:!1,onOk:_.bind(function(){PJQ.app.router.navigate("projects/"+PJQ.app.session.project.get("projectId")+"/contacts",{trigger:!0})},this)})},this))},this),s=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_WALL_PRIMARY_PROJECT_MANAGER_REQUIRED);if("true"==s)i();else{var n=s.split("|")[0],o=s.split("|")[1].split(",");_.each(PJQ.app.session.project.get("customFields"),_.bind(function(e){parseInt(n)===e.id&&-1!==o.indexOf(e.value.toString())&&i()},this))}}if(document.title=this.activeItem.getDocumentTitle(),null!=this.options.viewOptions&&!1===this.options.viewOptions.shouldDoFirstRoute)return void(this.options.viewOptions.shouldDoFirstRoute=null);this.options.viewOptions=null}},renderSignUpMessage:function(e){this.renderSubTemplate(!1,this.options.subTemplates.signUpMessage,e)},backToTop:function(){this.$("div.nav-content").animate({scrollTop:0},500)},navigate:function(e){if(null!=this.activeItem.leaveView&&"function"==typeof this.activeItem.leaveView&&this.activeItem.leaveView(),!this.$(e.currentTarget).hasClass("disabled")){var t=this.$(e.currentTarget).data("action");if(0<_.size(t)&&(null==this.activeItem||t!==this.activeItem.id)){var i=this.setActiveItem(t);null!=i&&(i.hasRoute||("function"==typeof i.route?i.route():"function"==typeof i.render&&this.render()))}}}}),PJQ.views.nav.UserHeader=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Nav-User-Header")},beforeFirstRender:function(){},beforeRender:function(){this.renderData={model:this.model}}}),PJQ.views.nav.ProjectHeader=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Nav-Project-Header")},events:{"click .btn-favorite-project":"favoriteProject","change .input-project-online":"projectOnlineChanged","click .btn-project-map":"projectMap"},beforeFirstRender:function(){this.listenTo(this.model,"sync change:projectName change:address1 change:address2 change:city change:state change:zip change:isFavorite change:bidsDue change:isOnline",this.render)},beforeRender:function(){this.renderData={model:this.model}},projectMap:function(){new PJQ.views.projects.ProjectMapModal},favoriteProject:function(){this.model.set("isFavorite",!1===this.model.get("isFavorite"),{silent:!0}),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.model.id},{endpoint:"favorite"}],[{parameter:"isFavorite",value:this.model.get("isFavorite")}]),data:{cloudFlareFix:!0}}).put().done(_.bind(function(){this.render()},this))},projectOnlineChanged:function(){var t=this.$(".input-project-online").prop("checked");this.model.set("isOnline",t),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.model.id}],[{parameter:"isOnline",value:t}])}).patch().done(_.bind(function(){var e;e=t?"Project set to online":"Project set to offline",PJQ.notifications.notify.successNotify({message:e})},this))}}),PJQ.views.nav.RegisterDirectory=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"register-directory")},events:{"click .btn-join-directory":"joinDirectory"},joinDirectory:function(){PJQ.app.session.joinDirectory(_.bind(function(){"function"==typeof this.options.onRegister&&this.options.onRegister()},this))}}),PJQ.views.modals.RegisterDirectoryModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-register-directory")},beforeModalCreated:function(){this.options=_.defaults({onOk:_.bind(function(){PJQ.app.session.joinDirectory(_.bind(function(){"function"==typeof this.options.onRegister&&this.options.onRegister(),this.removeModal()},this))},this)},this.options)}}),PJQ.views.notifications={},PJQ.views.notifications.NotificationHistory=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Notification-History"),width:1e3,maxWidth:"90%"},events:{"click .btn-notification-link":"copyNotificationLink","click .btn-notification-resend":"resendNotification"},afterRender:function(){this.dataTable=new PJQ.views.dataTables.DataTable({el:".notifications-data-table",data:this.collection.models,isHideSearch:!0,rowId:"cid",order:[0,"desc"],language:{zeroRecords:"No notifications have been sent yet"},columns:this.getColumns()})},getColumns:function(){if(this.collection instanceof PJQ.collections.rfi.Notifications)return[{data:{_:"attributes.lastSent",display:function(e){return PJQ.helpers.dateHelpers.getDateString(new Date(e.attributes.lastSent),PJQ.helpers.dateHelpers.dateFormats.DATE_TIME,!1)},filter:function(e){return PJQ.helpers.dateHelpers.getDateString(new Date(e.attributes.lastSent),"MM/dd/yyyy hh:mm:ss TT",!1)}},title:"Last Sent",width:"150px"},{data:"",title:"Type",width:"20%",render:function(e,t,i){return i.getTypeName()}},{data:"recipient",title:"Recipient",render:function(e){return null!=e?PJQ.helpers.contacts.getContactAnchor({contact:e}):""}},{data:"attributes.status",title:"Status",width:"80px"},{data:"attributes.sentCount",title:"Times Sent",width:"40px"},{data:"",title:"",orderable:!1,searchable:!1,width:"100px",render:function(e,t,i){return i.get("wasResent")?'<div class="text-align-right"><button type="button" title="Copy Link" data-id="'+i.id.toString()+'" class="btn btn-primary btn-notification-link wd-35p ht-30p"><i class="fal fa-link"></i></button><button type="button" title="Resend" data-id="'+i.id.toString()+'" class="btn btn-success btn-notification-resend ml-1 wd-35p ht-30p" disabled><i class="fal fa-check"></i></button></div>':'<div class="text-align-right"><button type="button" title="Copy Link" data-id="'+i.id.toString()+'" class="btn btn-primary btn-notification-link wd-35p ht-30p"><i class="fal fa-link"></i></button><button type="button" title="Resend" data-id="'+i.id.toString()+'" class="btn btn-share btn-notification-resend ml-1 wd-35p ht-30p"><i class="fal fa-share"></i></button></div>'}}];var t=[{data:{_:"attributes.createdOn",display:function(e){return PJQ.helpers.dateHelpers.getDateString(new Date(e.attributes.createdOn),PJQ.helpers.dateHelpers.dateFormats.DATE_TIME,!1)},filter:function(e){return PJQ.helpers.dateHelpers.getDateString(new Date(e.attributes.createdOn),"MM/dd/yyyy hh:mm:ss TT",!1)}},title:"Sent",width:"150px"},{data:"",title:"Type",width:"20%",render:function(e,t,i){return i.getTypeName()}},{data:"recipient",title:"Recipient",render:function(e){return null!=e?PJQ.helpers.contacts.getContactAnchor({contact:e}):""}},{data:"attributes.status",title:"Status",width:"80px"}];return 0<_.size(this.options.extraColumns)&&_.each(this.options.extraColumns,function(e){null==e.index||e.index>=t.length-1?t.push(e):t=[].concat(_toConsumableArray(t.slice(0,e.index)),[e],_toConsumableArray(t.slice(e.index)))}),t.push({data:"",title:"",orderable:!1,searchable:!1,width:"100px",render:function(e,t,i){return'<div class="text-align-right"><button type="button" title="Copy Link" data-id="'+i.id.toString()+'" class="btn btn-primary btn-notification-link wd-35p ht-30p"><i class="fal fa-link"></i></button><button type="button" title="Resend" data-id="'+i.id.toString()+'" class="btn btn-share btn-notification-resend ml-1 wd-35p ht-30p"><i class="fal fa-share"></i></button></div>'}}),t},copyNotificationLink:function(e){var t=$(e.currentTarget).data("id"),i=this.collection.get(t),s="h_input_"+_.uniqueId(),n=$("<input>",{value:i.get("url"),style:"position: absolute;
1left:-2000px;top:-2000px",id:s});this.$el.append(n),n[0].select(),document.execCommand("copy"),n.remove()},resendNotification:function(e){var t=$(e.currentTarget),i=$(e.currentTarget).data("id"),s=this.collection.get(i),n=this.dataTable.getRow(s.cid);s.resend(),this.collection instanceof PJQ.collections.rfi.Notifications?(s.set({sentCount:s.get("sentCount")+1,lastSent:new Date,wasResent:!0}),n.data(s).draw()):(t.find("i").removeClass("fa-share").addClass("fa-check"),t.removeClass("btn-share").addClass("btn-success").prop("disabled",!0))}}),PJQ.models.notifications={},PJQ.models.notifications.Notification=PJQ.models.BaseModel.extend({parse:function(e){return e&&(this.recipient=new PJQ.models.projectContacts.ProjectContact(e.recipient)),e},getTypeName:function(){return this.notificationTypeNames[this.get("type")]||""},resend:function(){new PJQ.ajax.Request({endpoint:this.endpoint()+"/resend"}).post().success(_.bind(function(e){PJQ.notifications.notify.successNotify({message:"Notification Resent"})},this)).fail(_.bind(function(){PJQ.notifications.notify.errorNotify({message:"Encountered an error resending notification."})},this))}}),PJQ.collections.notifications={},PJQ.collections.notifications.Notifications=PJQ.collections.BaseCollection.extend({model:PJQ.models.notifications.Notification}),PJQ.models.notificationSettings={},PJQ.models.notificationSettings.NotificationSetting=PJQ.models.BaseModel.extend(),PJQ.models.notificationSettings.ContactNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.ProjectsNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.MessagingNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.PrivateMessagingNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.BidFormNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.DrawingNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.AttachmentNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.ProjectContactNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.RFINotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.DailyReportNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.PunchListNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.ActionItemNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.SubmittalNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.ScheduleNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.MeetingNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.PayableInvoiceNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.CommitmentNotifications=PJQ.models.notificationSettings.NotificationSetting.extend(),PJQ.models.notificationSettings.NotificationSettings=PJQ.models.BaseModel.extend({idAttribute:"notificationSettingsId",endpoint:function(){return 0<this.id?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"notificationsettings",value:this.id}]):null!=this.get("id")&&0<this.get("projectId")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.get("projectId")},{endpoint:"contacts",value:this.get("id")},{endpoint:"notificationsettings"}]):this.get("id")<0?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users",value:this.get("id")},{endpoint:"projects"},{endpoint:"notificationsettings"}]):0<this.get("id")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("id")},{endpoint:"projects"},{endpoint:"notificationsettings"}]):0<this.get("userTypeId")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usertypes",value:this.get("userTypeId")}
1,{endpoint:"projects"},{endpoint:"notificationsettings"}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:0<this.get("projectId")?this.get("projectId"):null},{endpoint:"notificationsettings"}])},hasNotificationSetting:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=null,s=_.bind(function(e){var t=e.split("."),i=_.size(t),s=this,n=!1;return _.each(t,function(e,t){null!=s&&(t+1===i?n=!0===s.get(e):s=s[e])},this),n},this);return"array"===PJQ.helpers.objectHelpers.refinedType(e)?_.each(e,function(e){i=t.or?s(e)||null!=i&&i:s(e)&&(null==i||i)}):i=s(e),null!=i&&i},parse:function(s){return null!=s&&(null!=PJQ.app.session&&null!=s.userTypeId?this.userType=PJQ.app.session.userTypes.get(s.userTypeId):null!=s.userType&&(s.userTypeId=s.userType.id,this.userType=s.userType),_.each(this.subItems,function(e,t){var i=s[t];null!=i&&(this[t]=new e(i))},this)),s},beforeSave:function(){_.each(this.subItems,function(e,t){var i=this[t];null!=i&&i instanceof PJQ.models.notificationSettings.NotificationSetting&&this.set(t,i.toJSON())},this)}}),PJQ.models.notificationSettings.SystemNotificationSettings=PJQ.models.notificationSettings.NotificationSettings.extend({subItems:{projects:PJQ.models.notificationSettings.ProjectsNotifications,contacts:PJQ.models.notificationSettings.ContactNotifications},endpoint:function(){return 0<this.id?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"notificationsettings",value:this.id}]):this.get("id")<0?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users",value:this.get("id")},{endpoint:"notificationsettings"}]):0<this.get("id")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("id")},{endpoint:"notificationsettings"}]):0<this.get("userTypeId")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usertypes",value:this.get("userTypeId")},{endpoint:"notificationsettings"}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"notificationsettings"}])}}),PJQ.models.notificationSettings.ProjectNotificationSettings=PJQ.models.notificationSettings.NotificationSettings.extend({subItems:{messaging:PJQ.models.notificationSettings.MessagingNotifications,privateMessaging:PJQ.models.notificationSettings.PrivateMessagingNotifications,bidForms:PJQ.models.notificationSettings.BidFormNotifications,drawings:PJQ.models.notificationSettings.DrawingNotifications,attachments:PJQ.models.notificationSettings.AttachmentNotifications,projectContacts:PJQ.models.notificationSettings.ProjectContactNotifications,rfi:PJQ.models.notificationSettings.RFINotifications,dailyReports:PJQ.models.notificationSettings.DailyReportNotifications,punchList:PJQ.models.notificationSettings.PunchListNotifications,submittals:PJQ.models.notificationSettings.SubmittalNotifications,schedule:PJQ.models.notificationSettings.ScheduleNotifications,actionItems:PJQ.models.notificationSettings.ActionItemNotifications,meetings:PJQ.models.notificationSettings.MeetingNotifications,payableInvoices:PJQ.models.notificationSettings.PayableInvoiceNotifications,commitments:PJQ.models.notificationSettings.CommitmentNotifications},endpoint:function(){return 0<this.id?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"notificationsettings",value:this.id}]):null!=this.get("id")&&0<this.get("projectId")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.get("projectId")},{endpoint:"contacts",value:this.get("id")},{endpoint:"notificationsettings"}]):this.get("id")<0?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users",value:this.get("id")},{endpoint:"projects"},{endpoint:"notificationsettings"}]):0<this.get("id")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("id")},{endpoint:"projects"},{endpoint:"notificationsettings"}]):0<this.get("userTypeId")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usertypes",value:this.get("userTypeId")},{endpoint:"projects"},{endpoint:"notificationsettings"}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:0<this.get("projectId")?this.get("projectId"):null},{endpoint:"notificationsettings"}])}}),PJQ.views.notificationSettings={},PJQ.views.notificationSettings.NotificationSettingsEditorModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Notification-Settings-Editor"),minWidth:700},defaultEvents:{"click .btn-save":"save","click .btn-cancel":"cancel"},renderData:function(){return{model:this.model,project:this.options.project}},afterRender:function(){this.notificationSettingsEditor=new PJQ.views.notificationSettings.NotificationSettingsEditor({el:this.$(".notification-settings"),model:this.model,project:this.options.project})},save:function(){new PJQ.Loader(this.$(".modal-content")),this.notificationSettingsEditor.save(_.bind(function(){this.removeModal(),PJQ.notifications.notify.successNotify({message:"Notification settings saved"})},this))},cancel:function(){this.removeModal()}}),PJQ.views.notificationSettings.NotificationSettingsEditor=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Notification-Settings-Editor"),hasTooltips:!0},events:{"click .btn-system-notification-settings-override":"overrideSystem","click .btn-system-notification-settings-revert":"revertSystem","click .btn-project-notification-settings-override":"overrideProject","click .btn-project-notification-settings-revert":"revertProject"},beforeFirstRender:function(){this.fetchNotificationSettings()},fetchNotificationSettings:function(){null!=this.options.project?this.fetchProjectNotificationSettings(_.bind(function(){this.render()},this)):this.fetchSystemNotificationSettings(_.bind(function(){this.fetchProjectNotificationSettings(_.bind(function(){this.render()},this))},this))},fetchSystemNotificationSettings:function(t){this.model.fetchSystemNotificationSettings(_.bind(function(e){this.systemNotificationSettings=e,"function"==typeof t&&t(e)},this))},fetchProjectNotificationSettings:function(t){this.model instanceof PJQ.models.userTypes.UserType?this.model.fetchProjectNotificationSettings(_.bind(function(e){this.projectNotificationSettings=e,"function"==typeof t&&t(e)},this)):this.model.fetchProjectNotificationSettings(this.options.project?this.options.project.id:null,_.bind(function(e){this.projectNotificationSettings=e,"function"==typeof t&&t(e)},this))},renderData:function(){return{model:this.options.model,project:this.options.project,systemNotificationSettings:this.systemNotificationSettings,projectNotificationSettings:this.projectNotificationSettings}},afterRender:function(){var t=_.bind(function(e,s){var t=$(e),i=t.data("notificationSetting"),n=s[i];null!=n&&new PJQ.Binder(t,n,{setDefaultValues:!0,watchElements:["input"],afterChange:_.bind(function(e,t,i){this.notificationSettingChanged(e,t,i),s.isDirty=!0},this)})},this);null!=this.systemNotificationSettings&&_.each(this.$(".system-notification-setting-container"),function(e){t(e,this.systemNotificationSettings)},this),null!=this.projectNotificationSettings&&_.each(this.$(".project-notification-setting-container"),function(e){t(e,this.projectNotificationSettings)},this)},notificationSettingChanged:function(e,i,s){var n=e.data("level");
1if(null!=n){var t=e.closest(".notification-setting-container").find("input");if(s&&1<n)_.each(t,function(e){var t=$(e),i=t.data("level");null!=i&&i<n&&(t.prop("checked",s),t.trigger("change"))});else if(!s){if(null!=_.find(t,function(e){var t=$(e).data("pBind");return $(e).data("level")===n&&i!==t&&$(e).prop("checked")}))return;_.each(t,function(e){var t=$(e),i=t.data("level");null!=i&&n<i&&(t.prop("checked",s),t.trigger("change"))})}}},overrideSystem:function(){this.systemNotificationSettings.set({notificationSettingsId:null,userTypeId:null,id:this.model.get("id"),override:!0}),this.render()},revertSystem:function(){var e=_.bind(function(){this.fetchSystemNotificationSettings(_.bind(function(){this.render()},this))},this);this.systemNotificationSettings.isNew()?e():this.systemNotificationSettings.destroy({success:_.bind(function(){this.systemNotificationSettings=null,e()},this)})},overrideProject:function(){this.projectNotificationSettings.set({notificationSettingsId:null,userTypeId:null,id:this.model.get("id"),projectId:this.options.project?this.options.project.id:null,override:!0}),this.render()},revertProject:function(){var e=_.bind(function(){this.fetchProjectNotificationSettings(_.bind(function(){this.render()},this))},this);this.projectNotificationSettings.isNew()?e():this.projectNotificationSettings.destroy({success:_.bind(function(){this.projectNotificationSettings=null,e()},this)})},save:function(e){var t=_.bind(function(){this.fetchProjectNotificationSettings(_.bind(function(){this.render()},this))},this),i=_.bind(function(){null!=this.projectNotificationSettings&&this.projectNotificationSettings.hasChanged()?this.projectNotificationSettings.save(null,{success:_.bind(function(){"function"==typeof e&&e()},this)}):"function"==typeof e&&e()},this);null!=this.systemNotificationSettings&&this.systemNotificationSettings.hasChanged()?this.systemNotificationSettings.save(null,{success:function(){i(),t()}}):i()}}),PJQ.notifications={createNotifyModal:function(e){return(null==e.cookie||!PJQ.helpers.cookieHelpers.getCookie(e.cookie))&&(new PJQ.notifications.NotifyModal(e),!0)}},PJQ.notifications.NotifyModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Notify")},events:{"click .btn-dont-show":"setDontShowCookie"},setDontShowCookie:function(){0<_.size(this.options.cookie)&&PJQ.helpers.cookieHelpers.setCookie(this.options.cookie,!0)}}),PJQ.notifications.notify={defaultNotifySettings:{placement:{from:"bottom",align:"right"},animate:{enter:"animated fadeInDown",exit:"animated fadeOutRight"},allow_dismiss:!0,delay:5e3,z_index:1e7},getTemplate:function(e,t){PJQ.templating.TemplateRenderer.parseTemplate(new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Notify"),e,function(e){t(e.outerHTML())})},notify:function(e,t){var i={},s={};"object"===PJQ.helpers.objectHelpers.refinedType(e)&&(i=e),"object"===PJQ.helpers.objectHelpers.refinedType(t)&&(s=_.defaults(t,this.defaultNotifySettings)),this.getTemplate({options:i,settings:s},function(e){s.template=e,$.notify(i,s)})},successNotify:function(e,t){var i={icon:"fal fa-check"},s={type:"notify-success"};"object"===PJQ.helpers.objectHelpers.refinedType(e)&&(i=_.defaults(e,i)),"object"===PJQ.helpers.objectHelpers.refinedType(t)&&(s=_.defaults(t,s)),this.notify(i,s)},warningNotify:function(e,t){var i={icon:"fal fa-lightbulb"},s={type:"notify-warning"};"object"===PJQ.helpers.objectHelpers.refinedType(e)&&(i=_.defaults(e,i)),"object"===PJQ.helpers.objectHelpers.refinedType(t)&&(s=_.defaults(t,s)),this.notify(i,s)},errorNotify:function(e,t){var i={icon:"fal fa-exclamation-triangle",title:"Something went wrong!"},s={type:"notify-error"};"object"===PJQ.helpers.objectHelpers.refinedType(e)&&(i=_.defaults(e,i)),"object"===PJQ.helpers.objectHelpers.refinedType(t)&&(s=_.defaults(t,s)),this.notify(i,s)}},PJQ.Pagination=function(){function i(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,i),this.$el=e,this.options=_.defaults(t,{callback:_.bind(function(e){this.$paginationData.empty(),_.each(e,function(e){this.renderPageItem(e)},this)},this)}),this.createElement(),this.render(t.dataSource)}return _createClass(i,[{key:"createElement",value:function(){0===_.size(this.$el.find(".pagination-controller"))&&this.$el.append($("<div>",{class:"pagination-controller"})),0===_.size(this.$el.find(".pagination-data"))&&this.$el.append($("<div>",{class:"pagination-data mt-2"})),this.$paginationController=this.$el.find(".pagination-controller"),this.$paginationData=this.$el.find(".pagination-data")}},{key:"render",value:function(e){null!=e&&(this.options.dataSource=e),this.$paginationController.pagination(this.options)}},{key:"reload",value:function(e){this.render(e)}},{key:"renderPageItem",value:function(e){"function"==typeof this.options.renderPageItem?this.options.renderPageItem(e):null!=_typeof(this.options.pageItemTemplate)&&PJQ.templating.TemplateRenderer.renderTemplate(!0,this.options.pageItemTemplate,this.$paginationData,_.extend({model:e},this.options.renderData))}}]),i}(),PJQ.views.payment={},PJQ.views.payment.PaymentModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Payment"),onSave:_.noop,minWidth:700,maxWidth:800},events:{"click .payment-complete":"paymentCompleteClicked","click .payment-cancel":"paymentCancelClicked"},errors:{FORM_NOT_COMPLETE:"All required fields (*) must be filled out",INVALID_ACCOUNT:"The card number you entered is invali
1d",DECLINED:"The card you entered was declined.  This can be due to an incorrect address, expiration date, security code, or insufficient funds.",ERROR:"Unable to process payment right now.  Please try again later or contact customer service."},beforeModalCreated:function(){this.options.product instanceof PJQ.models.payment.Product&&(this.options.products instanceof PJQ.collections.payment.Products||(this.options.products=new PJQ.collections.payment.Products),this.options.products.add(this.options.product)),this.options.contact instanceof PJQ.models.contacts.Contact||(this.options.contact=new PJQ.models.contacts.Contact),_.size(this.options.products.models),this.model=new PJQ.models.payment.Transaction({cardholderName:this.options.contact.get("contactName"),address1:this.options.contact.get("address1"),address2:this.options.contact.get("address2"),city:this.options.contact.get("city"),state:this.options.contact.get("state"),zip:this.options.contact.get("zip"),country:0<_.size(this.options.contact.get("country"))?this.options.contact.get("country"):"US",cardNumber:null,expirationMonth:null,expirationYear:null,securityCode:null,products:this.options.products}),null!=this.options.endpoint&&(this.model.endpoint=this.options.endpoint)},beforeRender:function(){this.renderData={model:this.model}},afterRender:function(){new PJQ.Binder(this.$(".payment-container"),this.model,{watchElements:["input"],afterChange:_.bind(function(e){this.validateField(e,!0)},this)}),new PJQ.inputs.Selectpicker({el:this.$("select.payment-expiration-month"),hideDisabled:!1,onChange:_.bind(function(e){this.model.set("expirationMonth",e),this.validateField(this.$("select.payment-expiration-month"),!0)},this)}),new PJQ.inputs.Selectpicker({el:this.$("select.payment-expiration-year"),hideDisabled:!1,onChange:_.bind(function(e){this.model.set("expirationYear",e),this.validateField(this.$("select.payment-expiration-year"),!0)},this)});var e=new PJQ.inputs.StatePicker({el:this.$("select.payment-state"),country:this.model.get("country")?this.model.get("country").toUpperCase():null,defaultValue:this.model.get("state")?this.model.get("state").toUpperCase():null,onChange:_.bind(function(e){this.model.set("state",e),this.validateField(this.$("select.payment-state"),!0)},this)});new PJQ.inputs.CountryPicker({el:this.$(".payment-country"),defaultValue:this.model.get("country")?this.model.get("country").toUpperCase():null,statePicker:e,zipInput:this.$(".payment-zip"),onChange:_.bind(function(e){this.model.set("country",e),this.validateField(this.$("select.payment-country"),!0)},this)})},paymentCompleteClicked:function(){this.validateForm()&&(null!=this.model.endpoint?(this.$(".payment-cancel").prop("disabled",!0),this.$(".payment-complete").prop("disabled",!0).text("Processing..."),this.model.save(null,{success:_.bind(function(e,t){if(t.result)this.removeModal(),"function"==typeof this.options.onComplete&&this.options.onComplete(this.model);else{var i=t.error;0!==_.size(i)&&"ERROR"!==i||(i="ERROR",new PJQ.logging.Debug(PJQ.logging.LoggingActions.PAYMENT_ERROR,{result:t,endpoint:"function"==typeof this.model.endpoint?this.model.endpoint():this.model.endpoint})),this.renderFormError(this.errors[i]),this.$(".payment-cancel").prop("disabled",!1),this.$(".payment-complete").prop("disabled",!1).text("Complete Order")}},this)})):"function"==typeof this.options.onComplete&&this.options.onComplete(this.model))},validateForm:function(){var e=this,t=!0,i=[];if(this.$(".payment-container").find(":required").each(function(){e.validateField($(this))||(t=!1,i.push($(this).data("pBind")))}),0<_.size(this.$formError)&&this.$formError.remove(),!t){var s=this.errors.FORM_NOT_COMPLETE;1===_.size(i)&&-1!==i.indexOf("cardNumber")&&(s=this.errors.INVALID_ACCOUNT),this.renderFormError(s)}return t},renderFormError:function(e){0<_.size(this.$formError)&&this.$formError.remove(),this.$formError=$("<div>",{class:"text-danger fs-14 p-absolute left-1d25rem wd-70"}).text(e),this.$(".modal-footer").append(this.$formError)},validateField:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=e.data("pBind"),s=this.model.get(i),n=!0;if("zip"===i){var o=5;0<_.size(this.model.get("country"))&&"ca"===this.model.get("country").toLowerCase()&&(o=7),n=_.size(s)===o}else"cardNumber"===i?n=PJQ.helpers.paymentHelpers.validateCreditCard(s):s&&0!==_.size(s.toString())||(n=!1);return!n&&t||PJQ.helpers.inputHelpers.setInputError(e,n),n},paymentCancelClicked:function(){"function"==typeof this.options.onCancel&&this.options.onCancel()}}),PJQ.views.payment.PaySimplePaymentModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-paysimple-payment-settings"),minWidth:500,onSave:null,onError:null,isVerticalCenter:!0}
1,events:{"click .btn-save":"save","keyup .input-cardholder-name":"cardholderNameChanged","keyup .input-card-number":"setCardIssuer"},beforeModalCreated:function(){PJQ.app.session.fetchBillingInfo(_.bind(function(e){this.model=e,this.render()},this))},renderData:function(){return{model:this.model}},afterRender:function(){null!=this.model?(new PJQ.Binder(this.$el,this.model),PJQ.helpers.inputHelpers.inputMaskCreditCard(this.$(".input-card-number")),this.monthPicker=new PJQ.inputs.Selectpicker({el:this.$(".select-card-expiration-month"),noneSelectedText:"",onChange:_.bind(function(e){this.model.set("cardExpirationMonth",e)},this)}),this.yearPicker=new PJQ.inputs.Selectpicker({el:this.$(".select-card-expiration-year"),noneSelectedText:"",onChange:_.bind(function(e){this.model.set("cardExpirationYear",e)},this)})):new PJQ.Loader(this.$(".modal-content"))},cardholderNameChanged:function(e){var t,i,s=$(e.currentTarget).val().trim(),n=s.indexOf(" ");i=-1!==n?(t=s.substr(0,n),s.substr(n+1,_.size(s)-n)):(t=s,""),this.model.set({firstName:t,lastName:i})},setCardIssuer:function(){var e=PJQ.helpers.paymentHelpers.getCardIssuer(this.model.get("cardNumber")),t=PJQ.helpers.paymentHelpers.getCardIssuerIconFAClass(e);this.$(".card-issuer").addClass("fs-30 "+t)},validate:function(){var e=!0,t=0<_.size(this.model.get("firstName"))&&0<_.size(this.model.get("lastName"));PJQ.helpers.inputHelpers.setInputError(this.$(".input-cardholder-name"),t),e=t&&e;var i=4<_.size(this.model.get("zip").trim());PJQ.helpers.inputHelpers.setInputError(this.$(".input-cardholder-zip"),i),e=i&&e;var s=PJQ.helpers.paymentHelpers.validateCreditCard(this.model.get("cardNumber"));PJQ.helpers.inputHelpers.setInputError(this.$(".input-card-number"),s),e=s&&e;var n=null!=this.yearPicker.getValue();e=n&&e,this.$(".select-expiration-year").removeClass("p-field-error"),n||this.$(".select-expiration-year").addClass("p-field-error");var o=null!=this.monthPicker.getValue();return e=o&&e,this.$(".select-expiration-month").removeClass("p-field-error"),o||this.$(".select-expiration-month").addClass("p-field-error"),e},saveBillingInfo:function(t,e){this.model.save(null,{success:_.bind(function(e){"function"==typeof t&&t(this.model)},this),error:_.bind(function(){"function"==typeof e&&e(this.model)},this)})},save:function(){var e=new PJQ.Loader(this.$(".modal-content"));this.validate()?this.saveBillingInfo(_.bind(function(){"function"==typeof this.options.onSave&&this.options.onSave(this.model),this.removeModal()},this),_.bind(function(){"function"==typeof this.options.onError&&this.options.onError(this.model),this.removeModal()},this)):e.remove()}}),PJQ.views.payment.SubscriptionPaymentModal=PJQ.views.payment.PaySimplePaymentModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-subscription-payment"),subTemplates:{selectSubscription:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"subscription-payment-select-subcription")},minWidth:500,onSave:null,onError:null,isVerticalCenter:!0,isShowCloseButton:!0,selectedSubscriptionId:null},events:{"click .btn-save":"save","keyup .input-cardholder-name":"cardholderNameChanged","keyup .input-card-number":"setCardIssuer","click .sub-option":"subscriptionSelected"},beforeModalCreated:function(){this.selectedSubscriptionId=0<this.options.selectedSubscriptionId?this.options.selectedSubscriptionId:PJQ.app.session.subscription.id,PJQ.app.session.subscription.getCostsPerUser(_.bind(function(e){this.changeCosts=e;var t=PJQ.app.session.subscription.get("cost");this.changeCosts.basic=this.changeCosts.basic-t,this.changeCosts.basic<0&&(this.changeCosts.basic=0),this.changeCosts.pro=this.changeCosts.pro-t,this.changeCosts.pro<0&&(this.changeCosts.pro=0),this.changeCosts.enterprise=this.changeCosts.enterprise-t,this.changeCosts.enterprise<0&&(this.changeCosts.enterprise=0),PJQ.app.session.fetchBillingInfo(_.bind(function(e){this.model=e,this.hasCardOnFile=null!=this.model.get("cardNumber"),this.render()},this))},this))},renderData:function(){return{model:this.model,hasCardOnFile:this.hasCardOnFile,selectedSubscriptionId:this.selectedSubscriptionId,error:this.error}},afterRender:function(){null!=this.model?(this.hasCardOnFile||(new PJQ.Binder(this.$el,this.model),PJQ.helpers.inputHelpers.inputMaskCreditCard(this.$(".input-card-number")),this.monthPicker=new PJQ.inputs.Selectpicker({el:this.$(".select-card-expiration-month"),noneSelectedText:"",defaultValue:this.model.get("cardExpirationMonth"),onChange:_.bind(function(e){this.model.set("cardExpirationMonth",e)},this)}),this.yearPicker=new PJQ.inputs.Selectpicker({el:this.$(".select-card-expiration-year"),noneSelectedText:"",defaultValue:this.model.get("cardExpirationYear"),onChange:_.bind(function(e){this.model.set("cardExpirationYear",e)},this)})),this.renderSelectedSubscription()):new PJQ.Loader(this.$(".modal-content"))},subscriptionSelected:function(e){this.selectedSubscriptionId=parseInt($(e.currentTarget).data("subId")),this.renderSelectedSubscription()},renderSelectedSubscription:function(){this.renderSubTemplate(!1,this.options.subTemplates.selectSubscription,this.$(".subscription-select"),{selectedSubscriptionId:this.selectedSubscriptionId}),this.renderTotal()},renderTotal:function(){var e;switch(this.selectedSubscriptionId){case PJQ.constants.subscriptions.types.BASIC:e=this.changeCosts.basic;break;case PJQ.constants.subscriptions.types.PRO:e=this.changeCosts.pro;break;
1case PJQ.constants.subscriptions.types.ENTERPRISE:e=this.changeCosts.enterprise;break;default:e=0}this.$(".payment-total").html(PJQ.helpers.formatHelpers.formatCurrency(e*PJQ.app.session.subscription.get("userSeats"),2,!0))},save:function(){var t=this.$(".payment-error"),i=new PJQ.Loader(this.$(".modal-content"));t.empty();var s=this.model.get("cardNumber"),e=_.bind(function(){PJQ.app.session.changeSubscription(this.selectedSubscriptionId,_.bind(function(e){null==e||null==e.subscription?(i.remove(),PJQ.notifications.notify.errorNotify({message:"Encountered an error upgrading your subscription.  Please contact customer service."})):(PJQ.notifications.notify.successNotify({message:"Subscription successfully updated"}),this.removeModal())},this),_.bind(function(e){null!=e.responseJSON&&0<_.size(e.responseJSON.message)?(this.error=e.responseJSON.message,this.hasCardOnFile?(this.model=new PJQ.models.billing.BillingInfo,this.hasCardOnFile=!1):this.model.set("cardNumber",s),this.render()):(t.html("An error occurred processing the payment.  Please contact customer service."),i.remove(),this.$(".btn-save").prop("disabled",!0))},this))},this);this.hasCardOnFile?e():this.validate()&&this.saveBillingInfo(_.bind(function(){e()},this),_.bind(function(){"function"==typeof this.options.onError&&this.options.onError(this.model)},this))}}),PJQ.models.payment={},PJQ.models.payment.Transaction=PJQ.models.BaseModel.extend(),PJQ.models.payment.Product=PJQ.models.BaseModel.extend(),PJQ.collections.payment={},PJQ.collections.payment.Products=PJQ.collections.BaseCollection.extend({model:PJQ.models.payment.Product}),PJQ.views.paysimple={},PJQ.views.paysimple.SignUpOpenedModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-paysimple-sign-up-opened"),maxWidth:500,isShowCloseButton:!0,isVerticalCenter:!0}}),PJQ.models.permissions={},PJQ.models.permissions.Permission=PJQ.models.BaseModel.extend(),PJQ.models.permissions.ProjectsPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.ContactPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.DocumentPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.BidFilerPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.CalendarPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.ReportPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.SettingsPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.PrequalPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.ResourcePermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.TimeCardPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.InvoicePermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.UserPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.ProjectBasePermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.MessagingPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.PrivateMessagingPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.BidFormPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.DrawingPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.AttachmentPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.ProjectContactPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.PhotoGalleryPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.RFIPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.DailyReportPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.PunchListPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.ActionItemPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.SubmittalPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.ReportPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.SchedulePermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.BudgetPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.CommitmentPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.CommitmentChangeOrderPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.PrimeContractPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.PrimeContractChangeOrderPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.DirectCostPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.PayableInvoicePermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.ReceivableInvoicePermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.MeetingPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.ChangeRequestPermissions=PJQ.models.permissions.Permission.extend(),PJQ.models.permissions.Permissions=PJQ.models.BaseModel.extend({idAttribute:"permissionId",afterInit:function(){this.on("change:userTypeId",function(){var e=this.get("userTypeId");null!=PJQ.app.session&&null!=e?(this.userType=PJQ.app.session.userTypes.get(e),null!=this.userType&&(this.userType.permissions=this)):this.userType=null})},hasPermission:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=null,s=_.bind(function(e){var t=e.split("."),i=_.size(t),s=this,n=!1;return _.each(t,function(e,t){null!=s&&(t+1===i?n=!0===s.get(e):s=s[e])},this),n},this);return"array"===PJQ.helpers.objectHelpers.refinedType(e)?_.each(e,function(e){i=t.or?s(e)||null!=i&&i:s(e)&&(null==i||i)}):i=s(e),null!=i&&i},parse:function(s){return null!=s&&(null!=PJQ.app.session&&null!=s.userTypeId?this.userType=PJQ.app.session.userTypes.get(s.userTypeId):null!=s.userType&&(s.userTypeId=s.userType.id,this.userType=s.userType),_.each(this.subItems,function(e,t){var i=s[t];null!=i&&(this[t]=new e(i))},this)),s},beforeSave:function(){_.each(this.subItems,function(e,t){var i=this[t];null!=i&&i instanceof PJQ.models.permissions.Permission&&this.set(t,i.toJSON())},this)}}),PJQ.models.permissions.SystemPermissions=PJQ.models.permissions.Permissions.extend({subItems:{projects:PJQ.models.permissions.ProjectsPermissions,contacts:PJQ.models.permissions.ContactPermissions,documents:PJQ.models.permissions.DocumentPermissions,bidFiler:PJQ.models.permissions.BidFilerPermissions,calendar:PJQ.models.permissions.CalendarPermissions,reports:PJQ.models.permissions.ReportPermissions,settings:PJQ.models.permissions.SettingsPermissions,prequal:PJQ.models.permissions.PrequalPermissions,resources:PJQ.models.permissions.ResourcePermissions,timeCards:PJQ.models.permissions.TimeCardPermissions,invoices:PJQ.models.permissions.InvoicePermissions,users:PJQ.models.permissions.UserPermissions},endpoint:function(){return 0<this.id?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"permissions",value:this.id}]):this.get("id")<0?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users",value:this.get("id")},{endpoint:"permissions"}]):0<this.get("id")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("id")},{endpoint:"permissions"}]):0<this.get("userTypeId")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usertypes",value:this.get("userTypeId")}
1,{endpoint:"permissions"}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"permissions"}])}}),PJQ.models.permissions.ProjectPermissions=PJQ.models.permissions.Permissions.extend({subItems:{base:PJQ.models.permissions.ProjectBasePermissions,messaging:PJQ.models.permissions.MessagingPermissions,privateMessaging:PJQ.models.permissions.PrivateMessagingPermissions,bidForms:PJQ.models.permissions.BidFormPermissions,drawings:PJQ.models.permissions.DrawingPermissions,attachments:PJQ.models.permissions.AttachmentPermissions,projectContacts:PJQ.models.permissions.ProjectContactPermissions,photoGallery:PJQ.models.permissions.PhotoGalleryPermissions,rfi:PJQ.models.permissions.RFIPermissions,dailyReports:PJQ.models.permissions.DailyReportPermissions,punchList:PJQ.models.permissions.PunchListPermissions,actionItems:PJQ.models.permissions.ActionItemPermissions,submittals:PJQ.models.permissions.SubmittalPermissions,reports:PJQ.models.permissions.ReportPermissions,schedule:PJQ.models.permissions.SchedulePermissions,timeCards:PJQ.models.permissions.TimeCardPermissions,budget:PJQ.models.permissions.BudgetPermissions,commitments:PJQ.models.permissions.CommitmentPermissions,commitmentChangeOrders:PJQ.models.permissions.CommitmentChangeOrderPermissions,primeContracts:PJQ.models.permissions.PrimeContractPermissions,primeContractChangeOrders:PJQ.models.permissions.PrimeContractChangeOrderPermissions,directCosts:PJQ.models.permissions.DirectCostPermissions,payableInvoices:PJQ.models.permissions.PayableInvoicePermissions,receivableInvoices:PJQ.models.permissions.ReceivableInvoicePermissions,meetings:PJQ.models.permissions.MeetingPermissions,changeRequests:PJQ.models.permissions.ChangeRequestPermissions},endpoint:function(){return 0<this.id?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"permissions",value:this.id}]):null!=this.get("id")&&0<this.get("projectId")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.get("projectId")},{endpoint:"contacts",value:this.get("id")},{endpoint:"permissions"}]):this.get("id")<0?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users",value:this.get("id")},{endpoint:"projects"},{endpoint:"permissions"}]):0<this.get("id")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("id")},{endpoint:"projects"},{endpoint:"permissions"}]):0<this.get("userTypeId")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usertypes",value:this.get("userTypeId")},{endpoint:"projects"},{endpoint:"permissions"}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:0<this.get("projectId")?this.get("projectId"):null},{endpoint:"permissions"}])}}),PJQ.views.permissions={},PJQ.views.permissions.PermissionsEditorModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Permissions-Editor"),minWidth:800},defaultEvents:{"click .btn-save":"save","click .btn-cancel":"cancel"},renderData:function(){return{model:this.model,project:this.options.project}},afterRender:function(){this.permissionEditor=new PJQ.views.permissions.PermissionsEditor({el:this.$(".permissions"),model:this.model,project:this.options.project})},save:function(){new PJQ.Loader(this.$(".modal-content")),this.permissionEditor.save(_.bind(function(){if(this.removeModal(),PJQ.notifications.notify.successNotify({message:"Permissions saved"}),null!=PJQ.app.session.user){var e=function(){PJQ.app.session.fetchSystemPermissions(function(){PJQ.app.navigator.refreshCommands()})};this.model.get("id")===PJQ.app.session.user.get("id")?e():null==this.model.get("id")&&this.model.get("userTypeId")===PJQ.app.session.user.get("userTypeId")&&e()}},this))},cancel:function(){this.removeModal()}}),PJQ.views.permissions.PermissionsEditor=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Permissions-Editor"),hasTooltips:!0},events:{"click .btn-system-permissions-override":"overrideSystem","click .btn-system-permissions-revert":"revertSystem","click .btn-project-permissions-override":"overrideProject","click .btn-project-permissions-revert":"revertProject"},beforeFirstRender:function(){this.fetchPermissions()},fetchPermissions:function(){null!=this.options.project?this.fetchProjectPermissions(_.b
1ind(function(){this.render()},this)):this.fetchSystemPermissions(_.bind(function(){this.fetchProjectPermissions(_.bind(function(){this.render()},this))},this))},fetchSystemPermissions:function(t){this.model.fetchSystemPermissions(_.bind(function(e){this.systemPermissions=e,"function"==typeof t&&t(e)},this))},fetchProjectPermissions:function(t){this.model instanceof PJQ.models.userTypes.UserType?this.model.fetchProjectPermissions(_.bind(function(e){this.projectPermissions=e,"function"==typeof t&&t(e)},this)):this.model.fetchProjectPermissions(this.options.project?this.options.project.id:null,_.bind(function(e){this.projectPermissions=e,"function"==typeof t&&t(e)},this))},renderData:function(){return{model:this.model,project:this.options.project,systemPermissions:this.systemPermissions,projectPermissions:this.projectPermissions,hasFeature:this.hasFeature,hasApproval:!!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_APPROVAL_REQUIRED)&&PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_APPROVAL_REQUIRED),newAddressBook:!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_ADDRESSBOOK)}},afterRender:function(){var t=_.bind(function(e,s){var t=$(e),i=t.data("permission"),n=s[i];null!=n&&new PJQ.Binder(t,n,{setDefaultValues:!0,watchElements:["input"],afterChange:_.bind(function(e,t,i){this.permissionChanged(e,t,i),s.isDirty=!0},this)})},this);null!=this.systemPermissions&&_.each(this.$(".system-permission-container"),function(e){t(e,this.systemPermissions)},this),null!=this.projectPermissions&&_.each(this.$(".project-permission-container"),function(e){t(e,this.projectPermissions)},this)},hasFeature:function(e){return PJQ.app.session.hasFeature(e)},permissionChanged:function(e,i,s){var n=e.data("level");if(null!=n){var t=e.closest(".perm-container").find("input");if(s&&1<n)_.each(t,function(e){var t=$(e),i=t.data("level");null!=i&&i<n&&(t.prop("checked",s),t.trigger("change"))});else if(!s){if(null!=_.find(t,function(e){var t=$(e).data("pBind");return $(e).data("level")===n&&i!==t&&$(e).prop("checked")}))return;_.each(t,function(e){var t=$(e),i=t.data("level");null!=i&&n<i&&(t.prop("checked",s),t.trigger("change"))})}}},overrideSystem:function(){this.systemPermissions.set({permissionId:null,userTypeId:null,id:this.model.get("id"),override:!0}),this.render()},revertSystem:function(){var e=_.bind(function(){this.fetchSystemPermissions(_.bind(function(){this.render()},this))},this);this.systemPermissions.isNew()?e():this.systemPermissions.destroy({success:_.bind(function(){this.systemPermissions=null,e()},this)})},overrideProject:function(){this.projectPermissions.set({permissionId:null,userTypeId:null,id:this.model.get("id"),projectId:this.options.project?this.options.project.id:null,override:!0}),this.render()},revertProject:function(){var e=_.bind(function(){this.fetchProjectPermissions(_.bind(function(){this.render()},this))},this);this.projectPermissions.isNew()?e():this.projectPermissions.destroy({success:_.bind(function(){this.projectPermissions=null,e()},this)})},save:function(e){var t=_.bind(function(){this.fetchProjectPermissions(_.bind(function(){this.render()},this))},this),i=_.bind(function(){null!=this.projectPermissions&&this.projectPermissions.hasChanged()?this.projectPermissions.save(null,{success:_.bind(function(){"function"==typeof e&&e()},this)}):"function"==typeof e&&e()},this);null!=this.systemPermissions&&this.systemPermissions.hasChanged()?this.systemPermissions.save(null,{success:function(){i(),t()}}):i()}}),PJQ.views.photos={},PJQ.views.photos.PhotoGallery=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Photo-Gallery"),subTemplates:{dateGroup:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Photo-Gallery-Date-Group"),photo:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Photo-Gallery-Photo")},canExport:!0,previewImageDimension:160,showCreatedByLink:!0},events:{"click .gallery-photo-image":"viewPhoto","click .gallery-photo-download":"downloadPhoto","keyup .gallery-search":"filter","click .select-photo":"selectPhoto","click .select-date-group":"selectDateGroup","click .group-by":"selectGroupBy"},beforeFirstRender:function(){if(null==this.collection&&null!=this.options.project)return this.options.canExport=this.options.project.hasPermission("photoGallery.canExport"),this.options.project.fetchGalleryPhotos(_.bind(function(e){this.collection=e,this.render()},this)),!1},beforeRender:function(){this.groupBy="day",this.renderData={collection:this.collection,groupByDefault:this.groupBy,groupByOptions:["Year","Month","Week","Day"]}},afterRender:function(){null==this.collection?new PJQ.Loader(this.$(".photo-gallery")):this.renderPhotos(),this.filesToolbar=ne
1w PJQ.views.toolbars.FilesToolbar({el:this.$el,isPhotos:!0,onClose:_.bind(function(){this.deselectAll()},this)}),this.startDatePicker=new PJQ.inputs.Datepicker({el:this.$(".gallery-filter-start-date"),isShowTimezone:!1,datepickerOptions:{format:PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE},onChange:_.bind(function(){this.filter()},this)}),this.endDatePicker=new PJQ.inputs.Datepicker({el:this.$(".gallery-filter-end-date"),isShowTimezone:!1,datepickerOptions:{format:PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE},onChange:_.bind(function(){this.filter()},this)})},renderPhotos:function(){if(0===_.size(this.collection.models))this.$(".photos-container .list-empty").removeClass("hidden");else{var e;switch(this.groupBy){case"year":case"month":case"day":var t;"year"===this.groupBy?t="yyyy":"month"===this.groupBy?t="MMMM":"day"===this.groupBy&&(t="ddd, MMM dd, yyyy"),e=_.groupBy(this.collection.models,function(e){return PJQ.helpers.dateHelpers.getDateString(e.get("createdOn"),t)});break;case"week":e=_.groupBy(this.collection.models,function(e){var t=PJQ.helpers.dateHelpers.getWeekBounds(e.get("createdOn"));return PJQ.helpers.dateHelpers.getDateString(t.start,"MMM dd")+" - "+PJQ.helpers.dateHelpers.getDateString(t.end,"MMM dd, yyyy")})}this.$(".photos-container").empty(),_.each(e,_.bind(function(e,t){var i=PJQ.templating.TemplateRenderer.parseTemplate(this.options.subTemplates.dateGroup,{date:t,canExport:this.options.canExport}),s=i.find(".date-group-photos");_.each(e,_.bind(function(e){this.renderPhoto(s,e)},this)),this.$(".photos-container").append(i)},this)),PJQ.app.lazyLoad().update()}},filter:function(){var o=this,a=this.$(".gallery-search").val().toLowerCase(),r=this.startDatePicker.getValue(),l=this.endDatePicker.getValue();
1this.$(".gallery-date-group").each(function(){var e=$(this),n=0;e.find(".gallery-photo-container").each(function(){var e=$(this),t=$(this).data("cid"),i=o.collection.get(t);if(0<_.size(a)&&-1===i.get("name").toLowerCase().indexOf(a))e.addClass("hidden");else if(null!=r||null!=l){var s=i.get("createdOn");null!=r&&s<r?e.addClass("hidden"):null!=l&&l<s?e.addClass("hidden"):(e.removeClass("hidden"),n++)}else e.removeClass("hidden"),n++}),0===n?e.addClass("hidden"):e.removeClass("hidden")})},selectGroupBy:function(e){var t=$(e.currentTarget);this.$(".group-by").not(t).removeClass("selected"),t.addClass("selected"),this.groupBy=t.data("groupBy"),this.filesToolbar.close(),this.renderPhotos()},renderPhoto:function(e,t){var i=PJQ.templating.TemplateRenderer.parseTemplate(this.options.subTemplates.photo,{model:t,canExport:this.options.canExport,previewImageDimension:this.options.previewImageDimension,showCreatedByLink:this.options.showCreatedByLink});return e.append(i),i},viewPhoto:function(e){var t=this.collection.get($(e.currentTarget).closest(".gallery-photo-container").data("cid"));PJQ.app.view.renderPhotoViewer({model:t,canDownload:this.options.canExport})},downloadPhoto:function(e){this.collection.get($(e.currentTarget).closest(".gallery-photo-container").data("cid")).download()},selectPhoto:function(e){var t=$(e.currentTarget).closest(".gallery-photo-container"),i=t.data("cid"),s=this.collection.get(i);null!=this.filesToolbar.collection.get(i)?(this.filesToolbar.removeFiles(s),t.removeClass("selected"),t.find(".select-photo").removeClass("fa-check-square").addClass("fa-square")):(this.filesToolbar.addFiles(s),t.addClass("selected"),t.find(".select-photo").removeClass("fa-square").addClass("fa-check-square"));var n=t.closest(".gallery-date-group");0<_.size(n.find(".gallery-photo-container:not(.selected)"))?(n.find(".select-date-group").removeClass("fa-check-square").addClass("fa-square"),n.removeClass("selected")):(n.find(".select-date-group").removeClass("fa-square").addClass("fa-check-square"),n.addClass("selected"))},selectDateGroup:function(e){var i=this,s=$(e.currentTarget).closest(".gallery-date-group"),n=s.hasClass("selected"),o=[];
1s.find(".gallery-photo-container").each(function(){var e=$(this),t=e.data("cid");o.push(i.collection.get(t)),n?(s.find(".select-date-group, .select-photo").removeClass("fa-check-square").addClass("fa-square"),e.removeClass("selected")):(s.find(".select-date-group, .select-photo").removeClass("fa-square").addClass("fa-check-square"),e.addClass("selected"))}),n?(this.filesToolbar.removeFiles(o),s.removeClass("selected")):(this.filesToolbar.addFiles(o),s.addClass("selected"))},deselectAll:function(){this.$(".gallery-photo-container.selected,.gallery-date-group.selected").removeClass("selected"),this.$(".select-date-group, .select-photo").removeClass("fa-check-square").addClass("fa-square")}}),PJQ.collections.photos={},PJQ.collections.photos.PhotoShare=PJQ.collections.files.FileShare.extend({model:PJQ.models.files.File,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"photos"},{endpoint:"share",value:this.options.shareGuid}])}}),PJQ.modules.photos={routes:[{route:"photos/share/:id",name:"sharePhotos",callback:function(e){var t=new PJQ.collections.photos.PhotoShare(null,{shareGuid:e});t.fetch({success:function(){PJQ.app.view.renderView(PJQ.views.photos.PhotoGallery,{collection:t})}})}},{route:"projects/:projectId/photos",name:"projectPhotos",callback:function(e){PJQ.modules.projectWall.initProjectNavigator(parseInt(e),"projectphotos")}},{route:"projects/:projectId/photos/:photoId",name:"projectPhotos",callback:function(e,t){PJQ.modules.projectWall.initProjectNavigator(parseInt(e),"projectphotos")}}]},PJQ.app.addRoutes(PJQ.modules.photos.routes),$(function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e){var t=(new Date).getTime(),i=Math.max(0,16-(t-n)),s=window.setTimeout(function(){e(t+i)},i);return n=t+i,s}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}),PJQ.helpers.photoHelpers={easeOutQuart:function(e,t,i,s){return e/=s,-i*(--e*e*e*e-1)+t}},PJQ.views.photos.PhotoViewer=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Photo-Viewer"),elementId:"iv-outer",zoomValue:100,snapView:!0,maxZoom:500,refreshOnResize:!0,canDownload:!0,zoomOnMouseWheel:!0,triggerRoute:!1,onDelete:_.noop,shouldCreateCanvas:!1,keyListeners:[{which:27,keys:["Escape","Esc"],callback:function(){this.destroy()}},{which:37,callback:function(){this.previous()}},{which:39,callback:function(){this.next()}},{which:68,shiftKey:!0,callback:function(){this.downloadFile(),$(window).focus()}},{which:82,shiftKey:!0,callback:function(){this.destroy()}}]},events:{"click .iv-prev":"previous","click .iv-next":"next","click .iv-rotate-neg-90":"rotateNeg90","click .iv-rotate-90":"rotate90"},beforeFirstRender:function(){var e=document.querySelector('meta[name="viewport"]');e&&(e.content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0");var t=$("body");if(this.setElement($("#"+this.options.elementId)),0===_.size(this.$el)){var i=$("<div>",{id:this.options.elementId});t.append(i),this.setElement(i)}t.css("overflow","hidden"),this.ZOOM_CONSTANT=40,this.MOUSE_WHEEL_COUNT=5,this.zoomValue=100,this.options.previousRoute=PJQ.app.router.getCurrentRoute(),this.options.route&&PJQ.app.router.navigate(this.options.route)},renderData:function(){return{model:this.model,options:this.options}}
1,setContainerDimensions:function(){var e=$(window);this.$el.css({"max-width":e.width(),"max-height":e.height()})},afterRender:function(){var e=this.$(".iv-container");this.setElement(e),this.setContainerDimensions(),this.options.canDownload&&this.$(".iv-download").removeClass("hidden"),this.options.canDelete&&this.$(".iv-delete").removeClass("hidden"),"static"===this.$el.css("position")&&this.$el.css("position","relative"),this.snapView=this.$(".iv-snap-view"),this.snapImageWrap=this.$(".iv-snap-image-wrap"),this.imageView=this.$(".iv-image-view"),this.imageWrap=this.$(".iv-image-wrap"),this.snapHandle=this.$(".iv-snap-handle"),this.zoomHandle=this.$(".iv-zoom-handle"),this.createdOnDate=this.$(".photo-created-date"),this._viewerId="iv_"+_.uniqueId(),this.keydownListener=_.bind(function(t){if(!$(t.target).is(":input")){t=t||window.event;var e=_.find(this.options.keyListeners,function(e){return(-1!==_.indexOf(e.keys,t.key)||e.which===t.which)&&(!e.shiftKey||t.shiftKey)});null!=e&&"function"==typeof e.callback&&_.bind(e.callback,this)()}},this);var t="."+this._viewerId;$(document).on("keydown"+t,this.keydownListener),this.prevButton=this.$(".iv-prev"),this.nextButton=this.$(".iv-next"),this.init(),this.initViewer()},downloadFile:function(){this.model.download()},initViewer:function(){null!=this.model?(this.initPaging(),this.renderPage()):this.options.image&&this.show(this.options.image)},initPaging:function(){this.pagingModels=_.sortBy(_.filter(this.model.collection.models,function(e){return"function"==typeof e.isImage&&e.isImage()}),function(e){return e.id?-e.id:0}),this.pageIndex=null,_.each(this.pagingModels,function(e,t){e.cid===this.model.cid&&(this.pageIndex=t)},this),null!=this.pageIndex&&(this.$(".iv-paging").removeClass("hidden"),this.pagingDisplay=this.$(".iv-paging-display"),this.renderPaging())},renderPaging:function(){var e=_.size(this.pagingModels);this.pagingDisplay.html((this.pageIndex+1).toString()+" of "+e.toString()),0===this.pageIndex?this.prevButton.addClass("disabled"):this.prevButton.removeClass("disabled"),this.pageIndex+1===e?this.nextButton.addClass("disabled"):this.nextButton.removeClass("disabled")},renderPage:function(){this.model=this.pagingModels[this.pageIndex];var e=this.model.get("url");0<_.size(e)?this.show(this.model.get("url")):null!=this.model.file&&null!=this.model.file.dataURL&&this.show(this.model.file.dataURL)},previous:function(){0<this.pageIndex&&(--this.pageIndex,this.renderPaging(),this.renderPage())},next:function(){this.pageIndex+1<_.size(this.pagingModels)&&(++this.pageIndex,this.renderPaging(),this.renderPage())},rotate:function(e){var t=null!=this.model.get("rotation")?this.model.get("rotation"):0;0===t&&e<0?t=360:360===t&&0<e&&(t=0),this.model.set("rotation",(t+e)%360),this.renderPage()},rotate90:function(){this.rotate(90)},rotateNeg90:function(){this.rotate(-90)},canDrag:function(){return!0},canZoom:function(){return!0},shouldCreateCanvas:function(){return!0===this.options.shouldCreateCanvas},init:function(){var p=this,a=this.options,e="."+p._viewerId,u=this.snapHandle,t=this.snapImageWrap,i=this.imageWrap,r=new PJQ.views.photos.Slider(t,{sliderId:p._viewerId,onStart:function(){if(!p.loaded)return!1;this.curHandleTop=parseFloat(u.css("top")),this.curHandleLeft=parseFloat(u.css("left")),this.handleWidth=parseFloat(u.width()),this.handleHeight=parseFloat(u.height()),this.width=t.width(),this.height=t.height(),clearInterval(s.slideMomentumCheck),cancelAnimationFrame(s.sliderMomentumFrame)},onMove:function(e,t){var i=Math.max(this.width-this.handleWidth,this.curHandleLeft),s=Math.max(this.height-this.handleHeight,this.curHandleTop),n=Math.min(0,this.curHandleLeft),o=Math.min(0,this.curHandleTop),a=PJQ.helpers.mathHelpers.clamp(this.curHandleLeft+t.dx,n,i),r=PJQ.helpers.mathHelpers.clamp(this.curHandleTop+t.dy,o,s),l=p.imgWidth<p.containerDim.w?(p.containerDim.w-p.imgWidth)/2:-a*p.imgWidth/this.width,c=p.imgHeight<p.containerDim.h?(p.containerDim.h-p.imgHeight)/2:-r*p.imgHeight/this.height;if(u.css({top:r+"px",left:a+"px"}),p.currentImg.css({left:l,top:c}),p.shouldCreateCanvas()){p.$canvas.css({left:l,top:c}),p.$activeCanvas.css({left:l,top:c}),p.$tooltips.css({left:l,top:c});var d=p.$canvas.offset();p.canvas.x=d.left,p.canvas.y=d.top}}}).init(),s=p._imageSlider=new PJQ.views.photos.Slider(i,{viewer:p,sliderId:p._viewerId,onStart:function(e,t){if(!p.loaded)return!1;if(!p.zooming){var i=this;r.onStart(),i.positions=[t,t],i.startPosition=t,p._clearFrames(),i.slideMomentumCheck=setInterval(function(){i.currentPos&&(i.positions.shift(),i.positions.push({x:i.currentPos.mx,y:i.currentPos.my}))},30)}},onMove:function(e,t){p.zooming||(this.currentPos=t,r.onMove(e,{dx:-t.dx*r.width/p.imgWidth,dy:-t.dy*r.height/p.imgHeight}))},onEnd:function(){if(!p.zooming){var t=this,i=this.positions[1].x-this.positions[0].x,s=this.positions[1].y-this.positions[0].y,n=0,o=0,a=1;if(30<Math.abs(i)||30<Math.abs(s)){n=t.currentPos.dx,o=t.currentPos.dy,function e(){a<=60&&(t.sliderMomentumFrame=requestAnimationFrame(e)),n+=PJQ.helpers.photoHelpers.easeOutQuart(a,i/3,-i/3,60),o+=PJQ.helpers.photoHelpers.easeOutQuart(a,s/3,-s/3,60),r.onMove(null,{dx:-n*r.width/p.imgWidth,dy:-o*r.height/p.imgHeight}),a++}()}}}}).init(),l=0,c=this;i.on("mousewheel"+e+" DOMMouseScroll"+e,function(e){if(p.loaded&&a.zoomOnMouseWheel&&c.canZoom()){p._clearFrames();var t=Math.max(-1,Math.min(1,e.originalEvent.wheelDelta||-e.originalEvent.detail)),i=p.zoomValue*(100+t*p.ZOOM_CONSTANT)/100;if(100<=i&&i<=a.maxZoom?l=0:l+=Math.abs(t),!(l>p.MOUSE_WHEEL_COUNT)){e.preventDefault();var s=c.$el.offset(),n=(e.pageX||e.originalEvent.pageX)-s.left,o=(e.pageY||e.originalEvent.pageY)-s.top;p.zoom(i,{x:n,y:o}),f()}}}),i.on("touchstart"+e,function(e){if(c.canDrag()&&p.loaded){var t=e.originalEvent.touches[0],i=e.originalEvent.touches[1];if(t&&i){p.zooming=!0;var s=c.$el.offset(),o=Math.sqrt(Math.pow(i.pageX-t.pageX,2)+Math.pow(i.pageY-t.pageY,2)),a=p.zoomValue,r={x:(i.pageX+t.pageX)/2-s.left,y:(i.pageY+t.pageY)/2-s.top},n=$(document),l=function(e){e.preventDefault();var t=e.originalEvent.touches[0],i=e.originalEvent.touches[1],s=Math.sqrt(Math.pow(i.pageX-t.pageX,2)+Math.pow(i.pageY-t.pageY,2)),n=a+(s-o)/2;p.zoom(n,r)};n.on("touchmove",l),n.on("touchend",function e(){n.off("touchmove",l),n.off("touchend",e),p.zooming=!1})}}});var n,o=0;i.on("click"+e,function(e){c.canDrag()&&(0===o?(o=Date.now(),n={x:e.pageX,y:e.pageY}):o=(Date.now()-o<500&&Math.abs(e.pageX-n.x)<50&&Math.abs(e.pageY-n.y)<50&&(p.zoomValue===a.zoomValue?p.zoom(200):p.resetZoom()),0))});var d,h,m=p.snapView.find(".iv-zoom-slider");function f(e){a.snapView&&(h||p.zoomValue<=100||!p.loaded||(clearTimeout(d),h=!0,p.snapView.css("opacity",1),e||(d=setTimeout(function(){p.snapView.css("opacity",0),h=!1},4e3))))}new PJQ.views.photos.Slider(m,{viewer:p,sliderId:p._viewerId,onStart:function(e){if(!p.loaded)return!1;this.leftOffset=m.offset().left,this.handleWidth=p.zoomHandle.width(),this.onMove(e)},onMove:function(e){var t=(e.pageX||e.originalEvent.touches[0].pageX)-this.leftOffset-this.handleWidth/2;t=Math.max(0,t),t=Math.min(p._zoomSliderLength,t);var i=100+(a.maxZoom-100)*t/p._zoomSliderLength;p.zoom(i)}}).init(),i.on("touchmove"+e+" mousemove"+e,function(){f()});var g={};g["mouseenter"+e+" touchstart"+e]=function(){f(!(h=!1))},g["mouseleave"+e+" touchend"+e]=function(){h=!1,f()},p.snapView.on(g),a.refreshOnResize&&$(window).on("resize"+e,function(){p.refresh()}),this.imageView.on("touchmove"+e+" mousewheel"+e+" DOMMouseScroll"+e,function(e){e.preventDefault()}
1),this.$el.find(".iv-close").on("click"+e,function(){p.destroy()}),this.$el.find(".iv-delete").on("click"+e,function(){p.delete()}),this.$el.find(".iv-download").on("click"+e,function(e){p.download(e)})},zoom:function(d,p){d=Math.round(Math.max(100,d)),d=Math.min(this.options.maxZoom,d),p=p||{x:this.containerDim.w/2,y:this.containerDim.h/2},this.lastZoomPoint=p;var u=this.options.maxZoom,h=this.zoomValue,m=this.currentImg,f=parseFloat(m.css("left")),g=parseFloat(m.css("top")),P=0;this._clearFrames();var e=this.containerDim,t=this.imageDim,v=(e.w-t.w)/2,b=(e.h-t.h)/2,C=e.w-v,y=e.h-b,S=_.bind(function(){++P<5&&(this._zoomFrame=requestAnimationFrame(S));var e=PJQ.helpers.photoHelpers.easeOutQuart(P,h,d-h,5),t=e/h,i=this.imageDim.w*e/100,s=this.imageDim.h*e/100,n=-((p.x-f)*t-p.x),o=-((p.y-g)*t-p.y);if(this.prevItemInfo&&5===P){var a=this.prevItemInfo.canvas.width/this.canvas.width*100,r=this.prevItemInfo.canvas.height/this.canvas.height*100;n=100!==a?this.prevItemInfo.position.left/a*100:this.prevItemInfo.position.left,o=100!==r?this.prevItemInfo.position.top/r*100:this.prevItemInfo.position.top,this.prevItemInfo=null}else n=Math.min(n,v),o=Math.min(o,b);n+i<C&&(n=C-i),o+s<y&&(o=y-s);var l={height:s+"px",width:i+"px",left:n+"px",top:o+"px"};if(m.css(l),this.shouldCreateCanvas()){this.$canvas[0].height=s,this.$canvas[0].width=i,this.$canvas.css(l),this.$activeCanvas.css(l),this.$activeCanvas[0].height=s,this.$activeCanvas[0].width=i,this.$tooltips.css(l);var c=this.$canvas.offset();this.canvas={width:i,height:s,x:c.left,y:c.top}}this.zoomValue=e,this._resizeHandle(i,s,n,o),this.zoomHandle.css("left",(e-100)*this._zoomSliderLength/(u-100)+"px")},this);S()},_clearFrames:function(){clearInterval(this._imageSlider.slideMomentumCheck),cancelAnimationFrame(this._imageSlider.sliderMomentumFrame),cancelAnimationFrame(this._zoomFrame)},resetZoom:function(){this.lastZoomPoint=null,this.zoom(this.options.zoomValue)},_calculateDimensions:function(){this.setContainerDimensions();var e=this.currentImg.width(),t=this.currentImg.height(),i=this.$(".iv-image-view"),s=i.width(),n=i.height(),o=this.snapView.innerWidth(),a=this.snapView.innerHeight();if(this.containerDim={w:s,h:n},this.currentImg.hasClass("transform-rotate-90")||this.currentImg.hasClass("transform-rotate-270")){var r=t/e,l=t<e&&s<=n||s<r*n?s:r*n,c=l/r;this.imageDim={w:c-120,h:l-120*r},this.snapImg.css({width:this.imageDim.w>this.imageDim.h?a:this.imageDim.w*a/this.imageDim.h,height:this.imageDim.h>this.imageDim.w?o:this.imageDim.h*o/this.imageDim.w})}else{var d=e/t,p=t<e&&s<=n||s<d*n?s:d*n,u=p/d;this.imageDim={h:u-120,w:p-120*d},this.snapImg.css({width:this.imageDim.w>this.imageDim.h?o:this.imageDim.w*a/this.imageDim.h,height:this.imageDim.h>this.imageDim.w?a:this.imageDim.h*o/this.imageDim.w})}this.imgWidth=this.imageDim.w*this.zoomValue/100,this.imgHeight=this.imageDim.h*this.zoomValue/100;var h=(s-this.imageDim.w)/2,m=(n-this.imageDim.h)/2,f={width:this.imageDim.w+"px",height:this.imageDim.h+"px",left:h+"px",top:m+"px","max-width":"none","max-height":"none"};if(this.currentImg.css(f),this.shouldCreateCanvas()){this.$canvas.css(f),this.$activeCanvas.css(f),this.$tooltips.css(f);var g=this.$canvas.offset();this.canvas={width:this.imageDim.w,height:this.imageDim.h,x:g.left,y:g.top}}this._zoomSliderLength=o-this.zoomHandle.outerWidth()},refresh:function(e){this.loaded&&(this._calculateDimensions(),this.resetZoom())},_resizeHandle:function(e,t,i,s){this.imgWidth=e||this.imageDim.w*this.zoomValue/100,this.imgHeight=t||this.imageDim.h*this.zoomValue/100;var n=Math.max(100*-(i||parseFloat(this.currentImg.css("left")))/this.imgWidth,0),o=Math.max(100*-(s||parseFloat(this.currentImg.css("top")))/this.imgHeight,0),a=Math.min(100*this.containerDim.w/this.imgWidth,100),r=Math.min(100*this.containerDim.h/this.imgWidth,100);this.snapHandle.css({top:o+"%",left:n+"%",width:a+"%",height:r+"%"}),this.loaded&&this.afterDimensionChange()},afterDimensionChange:function(){},show:function(e,t){this.$el.show(),e&&this.load(e,t)},options:function(e,t){if(!t)return this.options[e];this.options[e]=t},destroy:function(){this.options.route&&(PJQ.app.router.navigate(this.options.previousRoute,{trigger:this.options.triggerRoute}),this.options.triggerRoute=!1,this.options.route=null),$(window).off("."+this._viewerId),$(document).off("."+this._viewerId),this.$el.off(),this.$el.remove(),this.onClose(),$("body").css("overflow","auto")},onClose:function(){"function"==typeof this.options.onClose&&this.options.onClose()},delete:function(){this.model.destroy(),this.collection.remove(this.model),this.options.onDelete(this.model),this.destroy()},download:function(){this.model.download()},load:function(e){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{persistZoom:!1};this.$(".iv-snap-image,.iv-large-image").remove(),this.loader=new PJQ.Loader(this.imageView),this.snapImg=$("<img>",{class:"iv-snap-image",src:e,style:"display:none;"}),this.$(".iv-snap-image-wrap").prepend(this.snapImg),this.imageWrap.empty(),this.imageWrap.prepend($("<img>",{class:"iv-large-image noselect",src:e,style:"display:none;"})),this.shouldCreateCanvas()&&(this.imageWrap.prepend($("<div>",{class:"iv-tooltips-outer noselect"})),this.imageWrap.prepend($("<canvas>",{class:"iv-canvas noselect"})),this.imageWrap.append($("<canvas>",{class:"iv-active-canvas noselect"})),this.$canvas=this.$(".iv-canvas"),this.ctx=this.$canvas[0].getContext("2d"),this.$activeCanvas=this.$(".iv-active-canvas"),this.activeCtx=this.$activeCanvas[0].getContext("2d"),this.$tooltips=this.$(".iv-tooltips-outer")),this.currentImg=this.$(".iv-large-image"),this.loaded=!1,this.model&&this.model.get("createdOn")?(this.createdOnDate.attr("hidden",!1),this.createdOnDate.html(PJQ.helpers.dateHelpers.getDateString(this.model.get("createdOn"),PJQ.helpers.dateHelpers.dateFormats.DATE))):this.createdOnDate.attr("hidden",!0);var t=_.bind(function(){this.afterImageDownload();var e=_.bind(function(){this.loader.remove(),this.loaded=!0;var e=this.zoomValue,t=this.lastZoomPoint;this.zoomValue=100,this.refresh(i),i.persistZoom&&this.prevItemInfo?this.zoom(e,t):this.resetZoom(),this.afterLoad(),this.currentImg.show(),this.snapImg.show()},this),t=PJQ.helpers.browserHelpers.getChromeVersion();!this.model||null==this.model.get("rotation")||this.model instanceof PJQ.models.drawings.Drawing?null==t||81<=t?e():PJQ.helpers.imageHelpers.rotateByExif(this.currentImg.add(this.snapImg),_.bind(function(){e()},this)):(PJQ.helpers.imageHelpers.rotateElement(this.currentImg.add(this.snapImg),this.model.get("rotation")),e())},this),s=this.currentImg[0];
1!s.complete||void 0!==s.naturalWidth&&0===s.naturalWidth?$(s).on("load",t):t()},afterImageDownload:function(){},afterLoad:function(){}}),PJQ.views.files.FileViewer=PJQ.views.photos.PhotoViewer.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"File-Viewer"),zoomValue:100,snapView:!0,maxZoom:500,refreshOnResize:!0,zoomOnMouseWheel:!0,triggerRoute:!1,isDisableDownload:!0},events:{"click .iv-prev":"previous","click .iv-next":"next","contextmenu .iv-image-view":"preventRightClick"},initPaging:function(){this.pageCount=this.model.get("pages"),0<this.pageCount||(this.pageCount=1),this.pageIndex=0,this.renderPaging()},renderPaging:function(){1<this.pageCount?(this.$(".iv-paging").removeClass("hidden"),this.pagingDisplay=this.$(".iv-paging-display"),this.pagingDisplay.html((this.pageIndex+1).toString()+" of "+this.pageCount.toString()),0===this.pageIndex?this.prevButton.addClass("disabled"):this.prevButton.removeClass("disabled"),this.pageIndex+1===this.pageCount?this.nextButton.addClass("disabled"):this.nextButton.removeClass("disabled")):this.$(".iv-paging").addClass("hidden")},renderPage:function(){0<this.$(".iv-image-view").length&&this.show(this.model.renderUrl(this.pageIndex+1))},previous:function(){0<this.pageIndex&&(--this.pageIndex,this.renderPaging(),this.renderPage())},next:function(){this.pageIndex+1<this.pageCount&&(++this.pageIndex,this.renderPaging(),this.renderPage())},afterImageDownload:function(){0<this.model.get("pages")?this.renderPaging():new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"files",value:this.model.get("entryId")},{endpoint:"pages"}])}).get().done(_.bind(function(e){this.model.set("pages",e.pages),this.initPaging()},this))},preventRightClick:function(){return!1}}),PJQ.views.photos.Slider=function(){function i(e,t){_classCallCheck(this,i),this.container=e,this.onStart=t.onStart||_.noop,this.onMove=t.onMove||_.noop,this.onEnd=t.onEnd||_.noop,this.sliderId=t.sliderId||"slider"+Math.ceil(1e6*Math.random()),this.viewer=t.viewer?t.viewer:null}return _createClass(i,[{key:"init",value:function(){var r=this,l="."+this.sliderId,c=$(document);return this.container.on("touchstart"+l+" mousedown"+l,function(e){var t=function(e){e.preventDefault();var t=("touchstart"===e.type?"touchmove":"mousemove")+l,i=("touchstart"===e.type?"touchend":"mouseup")+l,s=e.originalEvent,n=s.clientX||s.touches[0].clientX,o=s.clientY||s.touches[0].clientY;if(!1!==r.onStart(e,{x:n,y:o})){var a=function(e){e.preventDefault();var t=(s=e.originalEvent).clientX||s.touches[0].clientX,i=s.clientY||s.touches[0].clientY;r.onMove(e,{dx:t-n,dy:i-o,mx:t,my:i})};c.on(t,a),c.on(i,function e(){c.off(t,a),c.off(i,e),r.onEnd()})}};(!r.viewer||"function"!=typeof r.viewer.onMouseDown||!1!==r.viewer.canDrag()&&!1!==r.viewer.onMouseDown(e,t))&&t(e)}),this}}]),i}(),PJQ.models.preferences={},PJQ.models.preferences.Preferences=PJQ.models.BaseModel.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"preferences"}])},afterInit:function(){null==this.get("preferences")&&this.set("preferences",{})},getPref:function(e){return this.get("preferences")[e]},hasPref:function(e){return void 0!==this.get("preferences")[e]},setPref:function(e,t){this.get("preferences")[e]=t},deletePref:function(e){delete this.get("preferences")[e]}}),PJQ.constants.preferenceTypes={ACTION_ITEM_WORK_COMPLETED_STATUS_OVERRIDE:"actionItemWorkCompletedStatusOverride",ADD_PARTICIPANTS_BID_PACKAGE_RADIUS:"projectScopeRadius",ADDRESS_BOOK_DEFAULT_DISPLAY_DIRECTORY:"addressBookDefaultDisplayDirectory",ADDRESS_BOOK_COLOR_COLUMNS:"addressBookColorColumns",ADDRESS_BOOK_CONTACT_COMPANY_ID_LABEL:"addressBookContactCompanyIdLabel",ADDRESS_BOOK_CONTACT_ID_LABEL:"addressBookContactIdLabel",ADDRESS_BOOK_SHOW_PREQUAL_URL:"addressBookShowPrequalURL",ADDRESS_BOOK_SHOW_PREQUAL_EDITOR:"addressBookShowPrequalEditor",ADDRESS_BOOK_HIDE_DEFAULT_SEARCH:"addressBookHideDefaultSearch",ADDRESS_BOOK_HIDE_MINORITY_STATUS:"addressBookHideMinorityStatus",ADDRESS_BOOK_HIDE_SECTOR:"addressBookHideSector",ADDRESS_BOOK_APPROVAL_REQUIRED:"addressBookSelfAddApprovalRequired",ADDRESS_BOOK_CONTACT_UPDATER_ENABLED:"addressBookContactUpdaterEnabled",ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_RSVP:"addressBookEnableAdminRequiredFields",ADDRESS_BOOK_ENABLE_ADMIN_REQUIRED_FIELDS_CORE:"addressBookEnableAdminRequiredFieldsCore",ADDRESS_BOOK_HIDE_INACTIVE_CONTACTS:"addressBookHideInactiveContacts",ADDRESS_BOOK_DEFAULT_COUNTRY:"addressBookDefaultCountry",ADDRESS_BOOK_DEFAULT_FILTERS:"addressBookDefaultFilters",ADDRESS_BOOK_DEFAULT_LOCATION_FILTERS:"addressBookDefaultLocationFilters",ADDRESS_BOOK_PREVENT_DEFAULT_USER_TYPE:"addressBookPreventDefaultUserType",ALLOW_SUB_GROUP_EDIT:"addressBookAllowSubGroupEdit",PJQ_REGISTRATION_WORKAREAS_OPTIONAL:"pjqRegistrationWorkAreasOptional",ALLOW_SUB_GROUP_EDIT_REQUIRED:"addressBookAllowSubGroupEditRequired",APP_NAV_ITEMS:"appNavItems",ASAP_SCHEDULE_CONTRAINT_ENABLED:"asapScheduleConstraintEnabled",BIDDING_PROJECTS_REQUIRE_APPROVAL:"biddingProjectsRequireApproval",BIDDING_PROJECTS_TAB_NAME:"biddingProjectsTabName",DISABLE_BIDDING_PROJECTS:"disableBiddingProjects",BIDDING_PROJECTS_INCLUDE_COLUMNS:"biddingProjectsIncludeColumns",BID_FORM_NOT_SUBMITTED_STATUS_NAME_OVERRIDE:"bidFormNotSubmittedStatusNameOverride",PORTAL_APP_NAV_ITEMS:"portalAppNavItems",CAN_EDIT_MINORITY_CLASS_SUB:"rsvpEditMinorityClassification",CAN_EDIT_UNION_STATUS_SUB:"rsvpEditUnionStatus",CAN_ORDER_ON_ACCOUNT:"canOrderOnAccount",COPY_SCOPES_GRID_LAYOUT:"copyProjectScopesGridLayout",DAILY_REPORT_ATTACHMENTS_NAME:"dailyReportAttachmentsName",DAILY_REPORT_SURVEY_NAME:"dailyReportSurveyName",DAILY_REPORT_NAV_ORDER:"dailyReportNavOrder",DAILY_REPORT_IS_
1LOCKED_AFTER_SUBMIT:"isLockReportAfterSubmit",DAILY_REPORT_NEW_WORK_LOG_REPORT:"dailyReportNewWorkLogReport",DRAWING_SHARE_PREVENT_EXPIRATION:"drawingSharePreventExpiration",DRAWING_HIDE_TITLE:"drawingsHideTitle",DRAWING_HIDE_TAG:"drawingsHideTag",DEFAULT_AUTO_SELECT_DISABLED:"defaultAutoSelectDisabled",DIRECTORY_REPORT_REMOVE_FROM_PROJECT:"directoryReportRemoveFromProject",DISABLE_BLUE_BOOK_PUBLISH:"isBlueBookPublishDisabled",DISABLE_DAILY_REPORTS:"isDailyReportsDisabled",DISABLE_DAILY_REPORT_EXPENSES:"isDisableDailyReportExpenses",DISABLE_PREQUAL:"disablePrequal",DISABLE_PROJECT_PRIVATE_ATTACHMENTS:"disableProjectPrivateAttachments",DISABLE_PROJECT_PRIVATE_MESSAGES:"projectWallHidePrivateMessages",DISABLE_PROJECT_CONTACTS:"disableProjectContacts",DISABLE_PROJECT_DOCUMENTS:"disableProjectDocuments",DISABLE_PROJECT_PHOTOS:"disableProjectPhotos",DISABLE_RFI:"isRFIDisabled",DISABLE_SIMPLE_SEARCH:"disableSimpleSearch",DOCUMENTS_TAB_ID:"appDocumentsTabId",DRAWINGS_CURRENT_SET_DEFAULT_OFF:"drawingsCurrentSetDefaultOff",DOWNLOAD_CONTACT_UPDATE_REQ:"rsvpContactInfoRequired",DOWNLOAD_RESPONSE_REQ:"preventDownloadUntilResponse",DOWNLOAD_TERMS_PROJECT_CF:"rsvpDownloadTermsProjectCustomField",DOWNLOAD_TERMS_PROJECT:"rsvpDownloadTermsProject",DOWNLOAD_TERMS_SIGNATURE_REQ:"rsvpDownloadTermsSignatureRequired",DOWNLOAD_TERMS:"rsvpDownloadTerms",EMAIL_LOGO_URL:"emailLogoURL",ENABLE_AB_PREQUAL_EDIT:"enableAbPrequalEdit",ENABLE_ADMIN_PAID_DOWNLOADS:"enableAdminPaidDownloads",ENABLE_BID_FILER:"isBidFilerEnabled",ENABLE_BID_FORMS:"isBidFormsEnabled",ENABLE_BID_FORM_SEALING:"enableBidFormSealing",ENABLE_BID_PACKAGES:"enableBidPackages",ENABLE_BID_PACKAGES_COUNT:"enableBidPackagesCount",ENABLE_CONTACT_FIELD_SETTINGS:"enableContactFieldSettings",ENABLE_USER_FIELD_SETTINGS:"enableUserFieldSettings",ENABLE_COPY_PROJECT:"enableCopyProject",ENABLE_DATA_TABLE_FIXED_HEADER:"enableDataTableFixedHeader",ENABLE_DELIVER_BY_LOCAL:"enableDeliverByLocal",ENABLE_DELIVER_BY_PICKUP:"enableDeliverByPickup",ENABLE_DIRECTORY:"isDirectoryEnabled",ENABLE_DIRECTORY_EDIT:"isAllowDirectoryEdit",DISABLE_DRAWINGS:"isDrawingsDisabled",ENABLE_DRAWING_ANNOTATIONS:"isDrawingAnnotationsEnabled",ENABLE_DRAWING_ANNOTATION_REFS:"enableDrawingAnnotationRefs",ENABLE_FAX:"enableFax",ENABLE_FIELD_REPORTS:"fieldReportEnabled",ENABLE_GANTT_COLUMN_SORTING:"enableGanttColumnSorting",ENABLE_INVOICES:"enableInvoices",ENABLE_MEETINGS:"enableMeetings",ENABLE_MEETING_TRANSCRIPTIONS:"enableMeetingTranscriptions",DISABLE_OLD_SUBMITTALS:"disableOldSubmittals",DISABLE_OLD_ADDRESSBOOK:"disableOldAddressBook",ENABLE_NEW_ADDRESSBOOK:"enableNewAddressBook",ENABLE_OLD_ADDRESSBOOK:"enableOldAddressBook",ENABLE_FINANCES:"enableFinances",ENABLE_NEW_FILES:"isNewFilesEnabled",ENABLE_NEW_FILE_VIEWER:"enableNewFileViewer",ENABLE_NEW_GANTT:"enableNewGantt",ENABLE_PERMISSIONS:"enablePermissions",ENABLE_PERMISSIONS_PORTAL:"enablePermissionsPortal",ENABLE_PREQUAL_AUDITLOG:"enablePrequalAuditLog",ENABLE_PREQUAL_COMMENTS:"enablePrequalComments",ENABLE_PROJECT_CONTAINERS:"projectContainerEnabled",ENABLE_PROJECT_LOCATIONS:"enableProjectLocations",ENABLE_PROJECT_MESSAGE_DECLINE_QUESTION:"enableProjectMessageDeclineQuestion",ENABLE_PROJECT_NDA_DECLINE:"enableProjectNDADecline",ENABLE_NEW_PROJECT_CONTACTS_MANAGEMENT:"enableNewProjectContactsManagement",ENABLE_NEW_PROJECT_HISTORY:"enableNewProjectHistory",ENABLE_NEW_PROJECT_WALL:"enableNewProjectWall",ENABLE_NEW_SUBMITTALS:"enableNewSubmittals",ENABLE_NEW_UPLOAD_BID_DOCS:"enableNewUploadBidDocs",ENABLE_RAW_FILE_UPLOAD_BILLING:"enableRawFileUploadBilling",ENABLE_RESOURCE_ALLOCATION:"enableResourceAllocation",ENABLE_SCREENINGS:"screeningEnabled",ENABLE_TIME_CARDS:"enableTimeCards",ENABLE_TIMECARDS_SIGNATURE:"enableTimeCardsSignature",ENABLE_USER_GROUPS:"enableUserGroups",ENABLE_WORK_LOG_OVERTIME:"enableWorkLogOvertime",FILE_UPLOADER_SIDE_BY_SIDE:"fileUploaderSideBySide",EXPAND_PROJECT_ROOT_SHARED_FOLDERS:"expandProjectRootSharedFolders",DISABLE_PREQUAL_ATTACHMENT_DELETE:"disablePrequalAttachmentDelete",DISABLE_PREQUAL_CONTACT_ATTACHMENT_LINK:"disablePrequalContactAttachmentLink",DISABLE_PROJECT_ATTACHMENTS:"isProjAttDisabled",DISABLE_PROJECT_WALL_MESSAGING_OLD:"disableOldProjectWallProjectMessaging",ENABLE_NEW_CONTACT_IMPORT:"enableNewContactImport",DISABLE_NEW_ADDRESSBOOK:"isNewAddressBookDisabled",DISABLE_NEW_DOCUMENTS:"isNewDocumentsDisabled",ENABLE_NEW_RAW_FILE_UPLOAD:"enableNewRawFileUpload",DISABLE_NEW_SETTINGS:"isNewSettingsDisabled",DISABLE_SHARE_PEI:"disableSharePEI",DISABLE_WORK_AREAS:"disableWorkAreas",ENABLE_ACTION_ITEMS:"enableActionItems",ENABLE_ERP_ADMIN:"enableERPAdmin",ENABLE_PREQUAL_PRIVATE_GROUPS:"enablePrequalPrivateGroups",ENABLE_SUB_RESPONSE:"projectMessagingAllowIndecisiveSubs",ENABLE_PROJECT_NAME_PAGE_TITLE:"enableProjectNamePageTitle",ENABLE_PRINT_ON_DEMAND:"enablePrintOnDemand",ENABLE_PUNCH_LISTS:"isPunchListsEnabled",ENABLE_REGIONS_MAP:"enableRegionsMap",ENABLE_RFI_NEW:"isRFINewEnabled",ENABLE_RFI:"isRFIEnabled",DISABLE_SCHEDULING:"isSchedulingDisabled",ENABLE_SCHEDULING:"isSchedulingEnabled",ENABLE_SCHEDULE_TASK_NOTIFICATION_SETTINGS:"enableScheduleTaskNotificationSettings",ENABLE_REPORTS_NEW:"enableNewReports",ENABLE_OLD_CALENDAR:"enableOldCalendar",ENABLE_PROJECT_STATUS_ID:"enableNewProjectStatusId",ENABLE_SCOPES:"enableProjectScope",ENABLE_SUBMITTALS:"submittalEnabled",ENABLE_SUBMITTAL_WORKFLOW:"enableSubmittalWorkflow",ENABLE_TOP_OF_PAGE_BUTTON:"isEnableTopOfPageButton",ENABLE_WORK_AREAS_ZIP_RADIUS_COUNTY_PICKER:"enableWorkAreasZipRadiusCountyPicker",ENABLE_WORK_AREAS:"enableWorkAreas",EXPAND_PROJECT_ATTACHMENTS:"expandProjectAttachments",FILE_NAVIGATOR_VIEW_ON_CLICK:"fileNavigatorViewOnClick",FLATTEN_DL_ALL_PROJECT_ATTACHMENTS:"flattenDLAllProjAtt",GROUP_LABEL:"addressBookGroupLabel",GROUP_LEVELS:"addressBookGroupLevels",HAS_GROUPS_LINKED:"hasGroupsLinked",HIDE_DAILY_REPORT_UNSUBMIT:"hideDailyReportUnsubmit",HIDE_SAVE_PAYMENT_INFO:"hideSavePaymentInfo",HIDE_VERSION_SELECTOR_ISSUED_ON:"hideDrawingVersionSelectorIssuedOn",HIDE_SUBMITTAL_ITEM_TYPE:"hideSubmittalItemType",IS_DISABLE_PARENT_GROUPS:"isDisableParentGroups",IS_DOCUMENT_CLERK:"isDocumentClerk",IS_DOCUMENT_CLERK_COMPANY:"isDocumentClerkCompany",IS_DODGE_CRM:"dodgeCRMPortal",IS_DODGE_WG:"dodgeWhiteGlovePortal",IS_ENABLE_NEW_DOWNLOADS:"isEnableNewDownloads",IS_HIDE_UNION_STATUS:"addressBookHideUnionStatus",IS_PROJECT_HOME_READONLY:"isProjectHomeReadonly",IS_PROJECT_WALL_MESSAGING_NEW:"enableNewProjectWallProjectMessaging",IS_PROJECT_WALL_MESSAGING_NEW_PORTAL:"portalEnableNewProjectWallProjectMessaging",IS_PROQUAL_CUSTOMER:"isProqualCustomer",IS_PROQUAL_PORTAL:"proQualPortal",IS_REQUIRE_BIDFORM_ATTACHMENT:"isRequireBidformAttachment",ITB_RESUME_LABEL:"itbResumeLabel",ITB_SEND_NEW_LABEL:"itbSendNewLabel",IS_SSO_ENABLED:"isSSOEnabled",ITB_TAB_LABEL:"itbTabLabel",MESSAGE_RESPONSE_DUE_LABEL:"messageResponseDueLabel",MESSAGE_STATUS_LIST:"messageStatusList",NEW_APP_PORTAL:"portalNewApp",NO_REQUIRE_UNION_SUB:"addressBookUnionStatusNotRequired",ORDER_DELIVER_BY:"orderDeliverBy",ORDER_LARGE_FORMAT_BINDING_TYPE:"orderLargeFormatBindingType",ORDER_LARGE_FORMAT_PAPER_TYPE:"orderLargeFormatPaperType",ORDER_LARGE_FORMAT_PRINT_SIZE:"orderLargeFormatPrintSize",ORDER_LARGE_FORMAT_QUANTITY:"orderLargeFormatQuantity",ORDER_PO_REQUIRED:"orderPORequired",ORDER_SMALL_FORMAT_BINDING_TYPE:"orderSmallFormatBindingType",ORDER_SMALL_FORMAT_PAPER_TYPE:"orderSmallFormatPaperType",ORDER_SMALL_FORMAT_QUANTITY:"orderSmallFormatQuantity",PLAN_EXPRESS_PORTAL:"planExpressPortal",PREQUAL_HEADER:"prequalHeader",PREQUAL_ALLOW_SIGNATURE_ALWAYS:"prequalAllowSignatureAlways",PREQUAL_HELP_CONTACT_DETAILS:"prequalHelpContactDetails",PREQUAL_PROJECT_REFERENCE_COUNT:"prequalProjectReferenceCount",PREQUAL_PROJECT_REFS_GC_COL_NAME:"prequalProjectRefsGcColName",PREQUAL_SIGN_AND_SAVE:"prequalSignAndSave",PREQUAL_SIGNATURE_ALERT:"prequalSignatureAlert",PREQUAL_TAX_ID_MASK:"prequalTaxIdMask",PREQUAL_TERMS:"prequalTerms",PREVAILING_WAGE_LABEL:"prevailingWageLabel",PREVENT_NATIONWIDE_WORK_AREAS:"preventNationwideWorkAreas",PREVENT_NATIONWIDE_WORK_AREAS_PORTAL:"portalPreventNationwideWorkAreas",PREVENT_NATIONWIDE_WORK_AREAS_SUB:"portalPreventNationwideWorkAreas_Sub",PRIVATE_MESSAGING_USER_ID_DEFAULT:"internalMessageUserIdDefault",PROCORE_ACCESS_REFRESH_TOKEN:"proCoreAccessRefreshToken",PROCORE_CLIENT_ID:"proCoreClientId",PROCORE_CLIENT_REDIRECT:"proCoreClientRedirect",PROCORE_PROJECT_NUMBER_CUSTOM_FIELD:"procoreProjectNumberCustomFieldId",PROCORE_URL_API:"proCoreURL",PROCORE_URL_AUTH:"proCoreAuthURL",PROJ_DASHBOARD_SELECT_ALL_ATTACHMENTS:"rsvpSelectAllDocuments",PROJECT_ACTIVITY_RANK_STATUS_LIST:"projectActivityRankStatusList",PROJECT_DEFAULT_BID_DUE_TIME:"projectDefaultBidDueTime",PROJECT_DEFAULT_BID_DUE_TIME_AMPM:"projectDefaultBidDueTimeAMPM",PROJECT_DETAILS_EXPORT:"projectDetailsExport",PROJECT_MANAGEMENT_CONTACTS_ENABLE_PRIMARY:"projectManagementContactsEnablePrimary",PROJECT_MESSAGING_DEFAULT_TEMPLATE:"projectMessagingDefaultTemplateKey",PROJECT_MESSAGING_DISABLE_QUICKADD:"projectMessagingDisableQuickAdd",PROJECT_MESSAGING_DISABLE_RESPONSE_DUE:"projectMessagingDisableResponseDue",PROJECT_MESSAGING_DISTANCE_ICON_THRESHOLD:"projectMessagingDistanceIconThreshold",PROJECT_MESSAGING_ENABLE_REPLYTO_OVERRIDE:"projectMessagingEnableReplyToOverride",PROJECT_MESSAGING_MAX_GROUP_DISPLAY:"projectMessagingMaxGroupDisplay",PROJECT_MESSAGING_SEND_OPTIONS_EMAIL_ALWAYS:"sendEmail",PROJECT_MESSAGING_SEND_OPTIONS_FAX_ALWAYS:"sendFax",PROJECT_MESSAGING_SEND_OPTIONS_FAX_EMAIL_FAILED:"sendFaxIfEmailFailed",PROJECT_MESSAGING_SEND_OPTIONS_FAX_NO_EMAIL:"sendFaxOnlyIfNoEmail",PROJECT_MESSAGING_RESTRICT_TO_EXISTING_GROUPS:"projectMessagingRestrictToExistingGroups",PROJECT_NAV_HEADER_CUSTOM_MARKUP:"projectNavHeaderCustomMarkup",PROJECT_NDA_CHECKED_DEFAULT:"projectNDACheckedDefault",PROJECT_NDA_MODAL_TITLE:"projectNDAModalTitle",PROJECT_NOTES_LABEL:"projectNotesLabel",PROJECT_SHARED_FOLDER_NAME_OVERRIDE:"projectSharedFolderNameOverride",PROJECT_STATUS_LIST:"projectStatusList",PROJECT_STATUS_NON_DEFAULT_REQUIRED:"projectStatusNonDefaultRequired",PROJECT_USER_1_LABEL:"projectUser1Label",PROJECT_USER_2_HIDE:"projectUser2Hide",PROJECT_USER_2_LABEL:"projectUser2Label",PROJECT_WALL_ADMIN_BID_DUE_DATE_REQUIRED:"projectWallAdminBidDueDateRequired",PROJECT_WALL_ADMIN_NOTES_HIDDEN:"projectWallAdminNotesHidden",PROJECT_WALL_ADMIN_NOTES_REQUIRED:"projectWallAdminNotesRequired",PROJECT_WALL_ADMIN_USER_2_REQUIRED:"projectWallAdminUser2Required",PROJECT_WALL_ADMIN_VIEW_BID_PACKAGES:"enableProjectWallViewBidPackages",PROJECT_WALL_ADMIN_VIEW_COMPANY:"enableProjectWallViewCompany",PROJECT_WALL_ADMIN_VIEW_CONTACT:"enableProjectWallViewContact",PROJECT_WALL_ADMIN_VIEW_GROUP_COMPANY:"enableProjectWallViewGroupCompany",PROJECT_WALL_ADMIN_VIEW_GROUP_CONTACT:"enableProjectWallViewGroupContact",PROJECT_WALL_ADMIN_ZIP_REQUIRED:"projectWallAdminPostalCodeRequired",PROJECT_WALL_MESSAGING_SHOW_TEMPLATES:"projectWallMessagingShowTemplates",PROJECT_WALL_RSVP_AUTO_REPORT:"rsvpAutoReportTab",PROJECT_WALL_DEFAULT_MODULE:"projectWallDefaultModule",PROJECT_WALL_DEFAULT_PRIVATE_FOL
1DERS:"projectDefaultPrivateRootFolderTemplate",PROJECT_WALL_DEFAULT_PUBLIC_FOLDERS:"projectDefaultPublicRootFolderTemplate",PROJECT_WALL_MESSAGING_TAB_NAME:"projectWallMessagingTabName",PROJECT_WALL_PRIMARY_PROJECT_MANAGER_REQUIRED:"projectWallPrimaryProjectManagerRequired",PROJECT_WALL_SORT_GROUPS_BY_RESPONSE:"projectWallAdminSortGroupsByResponse",PROJECT_WALL_HIDE_BIDS_DUE:"projectWallHideBidsDue",PROJECT_WALL_TAB_ID:"projectWallTabId",PROJECT_SCHEDULE_FILTER_USER_ID:"projectScheduleFilterUserId",PUBLIC_PROJECTS_REQ_REG:"publicProjectsRequireRegistration",PUBLIC_PROJECTS_EMPTY_MESSAGE:"publicProjectsEmptyMessage",PUNCH_LIST_WORK_COMPLETED_STATUS_OVERRIDE:"punchListWorkCompletedStatusOverride",QUIKBID_GROUP_IDS:"quikBidGroupIds",QUIKBID_ZIP_CODES:"quikBidZipCodes",REGISTRATION_REDIRECT:"registrationRedirect",REGISTRATION_TAB_ID:"registrationTabId",RESOURCE_ALLOCATION_PRIMARY_ONLY:"resourceAllocationPrimaryOnly",RESPONSE_DUE_LABEL:"responseDueLabel",PROJECT_START_LABEL:"projectStartLabel",PROJECT_FINISH_LABEL:"projectFinishLabel",REQUIRE_PROJECT_START_FINISH:"requireProjectStartFinish",RESTRICT_GROUP_COUNT:"addressBookGroupsRestrictChoiceCount",RESOURCE_ALLOCATION_PROJECT_CUSTOM_FIELD_COLOR_BAR:"resourceAllocationProjectCustomFieldColorBar",RFI_DEFAULT_PUBLIC:"rfiDefaultPublic",RFI_DEFAULT_NOTIFY_PROJECT_CONTACTS:"rfiDefaultNotifyProjectContacts",RFI_DEFAULT_NOTIFY_PARTICIPANTS:"rfiDefaultNotifyParticipants",RFI_LOCATION_LABEL:"rfiLocationLabel",RFI_NAME_OVERRIDE:"rfiNameOverride",RFI_RESPONSE_NAME_OVERRIDE:"rfiResponseNameOverride",RSVP_DISABLE_PER_GROUP:"rsvpDisablePerGroup",RSVP_FOLDER_CHECKBOXES_ONLY:"rsvpFolderCheckboxesOnly",SETTINGS_LOCK:"settingsLock",PROJECT_DETAILS_PROJECT_ID:"projectDetailsProjectId",PROJECT_GANTT_HEADER_CUSTOM_MARKUP:"projectGanttHeaderCustomMarkup",HIDE_RESOURCE_CENTER:"hideResourceCenter",SIMPLE_SEARCH_DEFAULT_ADDRESS_BOOK:"simpleSearchDefaultAddressBook",SIMPLE_SEARCH_DEFAULT_RADIUS:"simpleSearchDefaultRadius",SORT_USER_ATTACHMENTS:"sortUserAttachments",SORT_COMPANY_ATTACHMENTS:"sortCompanyAttachments",SQUARE_TAKEOFF_ENABLED:"enableSquareTakeoff",STACK_TAKEOFF_ENABLED:"enableStackTakeoff",START_END_HIDE:"startEndHide",SUB_ADDRESS_REQUIRED:"rsvpAddressRequired",SUB_RESTRICT_SINGLE_EMAIL:"addressBookForceSingleEmail",SUB_ZIP_REQUIRED:"rsvpPostalCodeRequired",TIMECARD_WEEKLY_EXPORT_TEMPLATE:"timeCardWeeklyExportTemplate",ENABLE_WORK_LOG_WORK_ITEMS:"enableWorkLogWorkItems",ENABLE_WORK_LOG_PROGRESS:"enableWorkLogProgress",WORK_LOG_WORK_ITEM_LABEL:"workLogWorkItemLabel",WORK_LOG_WORK_ITEM_SUB_TEXT:"workLogWorkItemSubText"},PJQ.progress={},PJQ.progress.ProgressBar=function(){function i(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,i),this.$outer=e,this.options=_.defaults(t,{isStriped:!1,height:20,width:"auto",isShowPercentage:!1,progress:0,borderRadius:null}),null!=this.$el&&0<this.$el.length&&this.renderProgressBar()}return _createClass(i,[{key:"makeProgressBar",value:function(){var e,t,i=null!==(e=this.options.colorClass)&&void 0!==e?e:this.getCompletionColorClass(),s=$("<div>",{class:"progress",style:"height: ".concat(this.options.height,"px; width: ").concat("number"==typeof this.options.width?"".concat(this.options.width,"px"):this.options.width,"; border-radius: ").concat(null!==(t=this.options.borderRadius)&&void 0!==t?t:".25rem",";")});return s.append($("<div>",{class:"progress-bar font-weight-light fs-14 bg-"+i+" text-"+("warning"===i?"dark":"light"),role:"progressbar",style:"width:"+this.options.progress+"%;"}).text(this.options.isShowPercentage?this.options.progress+"%":"")),s}},{key:"getCompletionColorClass",value:function(){var e="danger";return 100===this.options.progress?e="success":60<this.options.progress&&(e="warning"),e}},{key:"renderProgressBar",value:function(){0<_.size(this.$el)&&this.$el.remove(),this.$el=this.makeProgressBar(),this.$outer.append(this.$el)}},{key:"updateProgress",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:PJQ.views.prequal.PrequalEditor.prototype.getCompletionColorClass(e);this.options=_.defaults({progress:e,colorClass:t},this.options),this.renderProgressBar()}}]),i}(),PJQ.models.projectContacts={},PJQ.models.projectContacts.ProjectContact=PJQ.models.contacts.Contact.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.get("projectId")},{endpoint:"contacts",value:this.get("id")}])},parse:function(e){return PJQ.models.contacts.Contact.prototype.parseContactData.call(this,e),PJQ.models.contacts.Contact.prototype.parseAttachmentData.call(this,e),e},fetchProjectNotificationSettings:function(e,t){var i=null;(i=this.isNew()?new PJQ.models.notificationSettings.ProjectNotificationSettings({userTypeId:this.get("userTypeId")}
1):new PJQ.models.notificationSettings.ProjectNotificationSettings({id:this.get("id"),projectId:this.get("projectId")})).fetch({success:_.bind(function(){t(i)},this)})},updateIsPrimary:function(e,t){this.set("isPrimary",e),new PJQ.ajax.Request({endpoint:this.endpoint()+"?isPrimary="+e.toString()}).patch().success(_.bind(function(){"function"==typeof t&&t(!0)},this)).fail(_.bind(function(){"function"==typeof t&&t(!1)},this))},beforeSave:function(){PJQ.models.contacts.Contact.prototype.beforeSave.call(this),this.set({attachments:this.attachments.getChangedModels()})}}),PJQ.collections.projectContacts={},PJQ.collections.projectContacts.ProjectContacts=PJQ.collections.BaseCollection.extend({idAttribute:"id",model:PJQ.models.projectContacts.ProjectContact,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"contacts"}])},addContactsToProject:function(e,t){new PJQ.ajax.Request({endpoint:this.endpoint()+"/ids",data:{ids:e}}).post().success(_.bind(function(e){this.reset(e),t()},this)).fail(_.bind(function(e){t()},this))}}),PJQ.views.projectContacts={},PJQ.views.projectContacts.ProjectContactsManagement=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Project-Contacts-Management")},events:{"click .btn-edit-pc-perms":"editPermissionsClicked","click .btn-edit-pc-notification-settings":"notificationSettingsClicked","click .edit-project-contact":"editClicked","click .remove-project-contact":"removeClicked","click .project-contacts-new-contact":"newContactClicked","click .project-contacts-add-from-bid-participants":"addFromBidParticipants","click .project-contacts-add-from-address-book":"addFromAddressBook","click .project-contacts-quick-search":"quickSearch","click .project-contacts-add-from-project":"addFromProject","click .project-contacts-new-user":"newUserClicked","click .project-contacts-add-from-company":"addFromCompany","change .cb-primary":"changeIsPrimary","click .export-pdf":"exportPDF","click .export-excel":"exportExcel","click .btn-copy-email":"copyEmail","click .btn-copy-phone":"copyPhone"},beforeFirstRender:function(){this.options.isAdmin=this.options.project.hasPermission("projectContacts.isAdmin"),this.options.canEdit=PJQ.app.session.hasPermission("settings.canManageUsers"),null!=this.options.project.projectContacts?this.collection=this.options.project.projectContacts:this.collection=this.options.project.projectContacts=new PJQ.collections.projectContacts.ProjectContacts(null,{project:this.options.project}),PJQ.app.session.fetchUserGroups(this.options.project.get("masterUserId"),_.bind(function(e){this.groups=e,this.listenTo(this.collection,"reset update",_.bind(function(){this.renderDataTable()},this)),this.listenTo(this.collection,"sync",_.bind(function(){this.dataTable.refresh("page")},this)),this.collection.fetchReset()},this))},renderData:function(){return{canEdit:this.options.canEdit,isAdmin:this.options.isAdmin}},afterRender:function(){this.renderDataTable()},renderDataTable:function(){var e=[{title:"Type",width:"120px",orderable:!0,searchable:!1,render:_.bind(function(e,t,i){return null!=i.userType?"sort"===t?i.userType.get("sortOrder"):'<span style="color:'+i.userType.get("color")+';">'+i.userType.get("name")+"</span>":""},this)},{data:"attributes.companyName",title:"Company Name"},{data:"attributes.contactName",title:"Contact Name"},{data:"attributes.email",title:"Email",orderable:!0,searchable:!0,render:function(e,t,i){var s=1200<$(window).width()?225:100,n='<div style="max-width:'+(null!=s?s.toString()+"px;":"auto")+'" class="d-flex align-items-center wd-100">',o=i.get("email")?'<a title="'+i.get("email")+'" style="color: inherit;" href="mailto:'+i.get("email")+'">'+i.get("email")+"</a>":"";return""!==i.get("email")&&(n+='<button type="button" class="btn btn-transparent-dark btn-copy-email" title="Copy Email" data-email="'+i.get("email")+'"><i class="far fa-envelope text-dark"></i></button>'),n+='<div class="flex-fill of-hidden tof-ellipsis no-wrap'+(i.get("email")?"":"text-muted")+'">'+o+"</div></div>"}},{data:"attributes.phone",title:"Phone",orderable:!0,searchable:!0,render:_.bind(function(e,t,i){var s='<div style="min-width:100px;" class="d-flex align-items-center">',n=i.get("phone")?PJQ.helpers.formatHelpers.formatPhoneNumber(i.get("phone"),!0)+(0===_.size(i.get("phoneExtension"))?"":" x"+i.get("phoneExtension")):"N/A";return s+='<div class="flex-fill '+(i.get("phone")?"":"text-muted")+'">'+n+"</div>",s+="</div>"},this)},{data:"attributes.cell",title:"Cell",orderable:!0,searchable:!0,render:_.bind(function(e,t,i){var s='<div style="min-width:100px;" class="d-flex align-items-center">',n=i.get("cell")?PJQ.helpers.formatHelpers.formatPhoneNumber(i.get("cell"),!0):"N/A";return s+='<div class="flex-fill '+(i.get("cell")?"":"text-muted")+'">'+n+"</div>",s+="</div>"},this)},{data:"attributes.projectGroups",title:"Groups",orderable:!0,searchable:!0,render:_.bind(function(e,t,i){if(0<i.id){var s=[];return _.each(e,function(e){var t=this.groups?this.groups.get(e):null;null!=t&&s.push(t)},this),_.map(_.sortBy(s,function(e){return e.get("sortOrder")}),function(e){return e.get("groupName")}).join(", ")}return""},this)}];(0===PJQ.app.session.get("portalId")||PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MANAGEMENT_CONTACTS_ENABLE_PRIMARY))&&e.push({data:"attributes.isPrimary",title:"Primary",width:"80px",orderable:!0,searchable:!1,render:_.bind(function(e,t,i){return 0<i.get("id")?"":"sort"===t?e:'<
1div class="pretty p-switch ml-3"><input type="checkbox" '+(e?"checked":"")+' class="cb-primary" /><div class="state p-success"><label>&nbsp;</label></div></div>'},this)}),e.push.apply(e,[{data:"",title:"",orderable:!1,searchable:!1,width:120+(this.options.isAdmin?40:0)+"px",render:_.bind(function(e,t,i){var s="",n='<button type="button" title="Notifications" class="btn btn-purple btn-edit-pc-notification-settings mr-1"><span class="fal fa-bell"></span></button>';return s+='<button type="button" title="Permissions" class="btn btn-dark btn-edit-pc-perms mr-1"><span class="fal fa-key"></span></button>',this.options.isAdmin?s+=i.get("userId")===PJQ.app.session.user.get("userId")||PJQ.app.session.hasPermission("users.canModifyNotifications")?n:"":this.options.isAdmin&&(s+=n),this.options.canEdit?s+='<button type="button" title="Edit" class="btn btn-info edit-project-contact mr-1"><span class="fal fa-pencil"></span></button>':s+='<button type="button" title="View" class="btn btn-info edit-project-contact mr-1"><span class="fal fa-search"></span></button>',this.options.isAdmin&&(s+='<button type="button" title="Remove" class="btn btn-danger remove-project-contact"><span class="fal fa-trash"></span></button>'),'<div class="text-align-center show-on-row-hover" style="min-width: 140px">'+s+"</div>"},this)}]);var i=this,t={el:this.$(".project-contacts-data-table-container"),data:this.collection.models,pageLengthCookie:PJQ.constants.cookies.PROJECT_CONTACT_LIST_PAGE_LENGTH,language:{emptyTable:"No project contacts have been added to this project",zeroRecords:"No project contacts match the search criteria"},subTemplates:{header:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Data-Table-Header-Project-Contacts")},headerData:function(){return{userTypes:PJQ.app.session.userTypes.models,isAdmin:i.options.isAdmin}},initComplete:function(e,t){this.wrap("<div style='overflow:auto; width:100%;position:relative;'></div>")},afterHeaderRender:function(t,e){new PJQ.inputs.Selectpicker({el:e.find(".user-type-filter"),onChange:function(e){t.setFilter("userType",e)},isMultiple:!0,isIntChoices:!0,noneSelectedText:"No Filters",defaultValue:i.userTypeFilter})},getFilterData:function(e,t){var i=e.getFilter("userType");return 0===_.size(i)?t:_.filter(t,function(e){return _.contains(i,e.userType.id)})},onRowDoubleClick:_.bind(function(e){e.data()&&this.editContact(e.data())},this),contextMenuOptions:{actions:[{name:"Edit",iconClass:"fal fa-pencil",isShown:_.bind(function(e){return this.options.canEdit},this),onClick:_.bind(function(e){this.editContact(e.data())},this)},{name:"View",iconClass:"fal fa-search",isShown:_.bind(function(e){return!this.options.canEdit},this),onClick:_.bind(function(e){this.editContact(e.data())},this)},{name:"Manage Trades",iconClass:"fal fa-hard-hat",onClick:_.bind(function(t){new PJQ.views.projects.ManageProjectParticipantTradesModal({contactId:t.data().get("contactId"),onSave:_.bind(function(e){t.data().set("projectGroups",_.map(_.filter(e.models,function(e){return e.get("isSelected")}),function(e){return{groupId:e.get("groupId")}})),t.invalidate().draw()},this)})},this),isShown:_.bind(function(e){return PJQ.app.session.project.hasPermission("messaging.canManage")&&this.options.view!==PJQ.constants.projectMessaging.views.MSGCONT_CONT&&0<e.data().id},this)},{name:"Permissions",iconClass:"fal fa-key",isShown:_.bind(function(e){return this.options.isAdmin},this),onClick:_.bind(function(e){this.editPermissions(e.data())},this)},{name:"Notifications",iconClass:"fal fa-bell",isShown:_.bind(function(e){return this.options.isAdmin&&PJQ.app.session.hasPermission("users.canModifyNotifications")},this),onClick:_.bind(function(e){this.editNotificationsSettings(e.data())},this)},{name:"Remove",iconClass:"fal fa-trash",isDanger:!0,isShown:_.bind(function(e){return this.options.isAdmin},this),onClick:_.bind(function(e){this.removeContact(e)},this)}]},columns:e};this.dataTable=new PJQ.views.dataTables.DataTable(t)},copyEmail:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr")).data();navigator&&navigator.clipboard&&(navigator.clipboard.writeText(i.get("email")),PJQ.notifications.notify.successNotify({message:"Email copied to clipboard"}))},copyPhone:function(e){var t="h_input_"+_.uniqueId(),i=$("<input>",{value:$(e.currentTarget).data("phone").replace(/ /g,""),style:"position: absolute;
1left:-2000px;top:-2000px",id:t});this.$el.append(i),i[0].select(),document.execCommand("copy"),i.remove(),PJQ.notifications.notify.successNotify({message:"Number copied to clipboard."})},changeIsPrimary:function(e){var t=$(e.currentTarget),i=t.prop("checked"),s=this.dataTable.getRow(t.closest("tr")).data();null!=s&&s.updateIsPrimary(i)},editPermissionsClicked:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr")).data();this.editPermissions(i)},editPermissions:function(e){new PJQ.views.permissions.PermissionsEditorModal({model:e,project:this.options.project})},notificationSettingsClicked:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr")).data();this.editNotificationsSettings(i)},editNotificationsSettings:function(e){new PJQ.views.notificationSettings.NotificationSettingsEditorModal({model:e,project:this.options.project})},editClicked:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr")).data();this.editContact(i)},editContact:function(e){new PJQ.views.contacts.BaseEditContactModal({model:e})},removeClicked:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr"));this.removeContact(i)},removeContact:function(e){var t=e.data();new PJQ.views.modals.DeleteCancel({header:"Confirm Remove",deleteButtonText:"Remove",body:"Are you sure you want to remove this contact from the project?",onDelete:_.bind(function(){this.collection.remove(t),t.destroy()},this)})},addFromBidParticipants:function(){this.options.project.fetchParticipants(_.bind(function(e){new PJQ.views.contacts.SelectContactsModal({contacts:e,hideContacts:this.collection.models,context:PJQ.constants.contacts.contexts.PARTICIPANTS,isSingleChoice:!1,subtitle:"Add Project Contacts from Bid Participants",onSave:_.bind(function(e){this.collection.addContactsToProject(_.map(e,function(e){return e.id}),_.bind(function(){this.renderDataTable()},this))},this)})},this))},addFromAddressBook:function(){$('form[name="modal-add-participants"]').remove();var e={onSave:_.bind(function(e,t){this.collection.addContactsToProject(e,_.bind(function(){this.renderDataTable()},this))},this),disableContacts:_.map(this.collection.models,function(e){return e.id})};PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_ADDRESSBOOK)||(e.isWrapForm=!1,e.wrapFormName=null,e.isUseNewAddressBook=!0,e.isMultipleProjects=!0),new PJQ.views.projects.AddParticipantsDetailedModal(e)},quickSearch:function(){new PJQ.views.contacts.SelectContactsModal({context:PJQ.constants.contacts.contexts.CONTACTS,isSingleChoice:!1,project:this.options.project,subtitle:"Add Project Contacts From Address Book",onSave:_.bind(function(e){this.collection.addContactsToProject(_.map(e,function(e){return e.id}),_.bind(function(){this.renderDataTable()},this))},this)})},addFromProject:function(){},addFromCompany:function(){new PJQ.views.contacts.SelectContactsModal({context:PJQ.constants.contacts.contexts.USERS,isSingleChoice:!1,hideContacts:this.collection.models,subtitle:"Add Project Contacts from My Company Users",onSave:_.bind(function(e){this.collection.addContactsToProject(_.map(e,function(e){return-e.id}),_.bind(function(){this.renderDataTable()},this))},this)})},newContactClicked:function(){new PJQ.views.contacts.BaseEditContactModal({model:new PJQ.models.projectContacts.ProjectContact({projectId:PJQ.app.session.project.id,country:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_DEFAULT_COUNTRY)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_DEFAULT_COUNTRY):"US"})})},newUserClicked:function(){new PJQ.views.contacts.BaseEditContactModal({model:new PJQ.models.projectContacts.ProjectContact({projectId:PJQ.app.session.project.id})})},exportProjectContacts:function(){new PJQ.ajax.Request({endpoint:this.options.project.endpoint(!1)+"/contacts/export",data:{isApi2:!0}}).post().done(_.bind(function(e){PJQ.files.downloadFile(e.url,{isEndpoint:!1})},this)).fail(_.bind(function(e,t,i){},this))},exportExcel:function(){if(null!=this.options.project){var e={},t=this.dataTable.getFilter("userType");0<_.size(t)&&(e.userTypes=t);var i=this.dataTable.dataTable.order()[0];new PJQ.models.reports.NewReport({type:"projectContacts",projectId:this.options.project.id,options:{filters:e,columns:["userType","companyName","contactName","email","phone","cell","trades"],columnOrder:i}}).export({format:"excel"}).then(function(){})}},exportPDF:function(){if(null!=this.options.project){var e={},t=this.dataTable.getFilter("userType");0<_.size(t)&&(e.userTypes=t);var i=this.dataTable.dataTable.order()[0];new PJQ.models.reports.NewReport({type:"projectContacts",projectId:this.options.project.id,options:{filters:e,columns:["userType","companyName","contactName","email","phone","cell","trades"],columnOrder:i}}).export({format:"pdf"}).then(function(){})}}}),PJQ.modules.projectContacts={routes:[{route:"projects/:projectId/contacts",name:"projectContacts",callback:function(e){PJQ.modules.projectWall.initProjectNavigator(parseInt(e),"projectcontacts")}
1},{route:"projects/:projectId/contacts/:id",name:"projectContact",callback:function(e,t){PJQ.modules.projectWall.initProjectNavigator(parseInt(e),"projectcontacts",{id:t})}}]},PJQ.app.addRoutes(PJQ.modules.projectContacts.routes),PJQ.views.projectInvites={},PJQ.views.projectInvites.ProjectInvite=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Project-Invite"),project:null,emailTemplates:[],onChange:_.noop,isShowQuickAdd:!1,isShowAttachments:!1,defaultTemplateKey:null},beforeRender:function(){this.options.project.inviteSettings||(this.options.project.inviteSettings={sendEmail:!0,sendFaxIfNoEmail:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_NO_EMAIL),sendFaxIfEmailFails:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_EMAIL_FAILED),sendFaxAlways:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_ALWAYS),responseDue:"ASAP"===this.options.project.get("responseDueDate")?"ASAP":this.options.project.get("bidsDue")?PJQ.helpers.dateHelpers.getDateString(new Date(this.options.project.get("bidsDue")),PJQ.helpers.dateHelpers.dateFormats.DATE_YMD,!1):null,responseDueLabel:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.MESSAGE_RESPONSE_DUE_LABEL)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.MESSAGE_RESPONSE_DUE_LABEL):"Response Due",quickAdd:"",attachments:new PJQ.collections.files.Files,uploaderGuid:PJQ.helpers.guid(),privateFolders:new PJQ.collections.files.Files,templateKey:this.options.defaultTemplateKey,replyTo:null}),this.options.project.inviteSettings.emailTemplate||(this.options.project.inviteSettings.emailTemplate=this.options.emailTemplates[0],this.options.project.inviteSettings.templateKey&&_.each(this.options.emailTemplates,_.bind(function(e){e.get("templateKey")===this.options.project.inviteSettings.templateKey&&(this.options.project.inviteSettings.emailTemplate=e)},this))),this.renderData={emailTemplates:this.options.emailTemplates,replyToContacts:this.options.replyToContacts,isShowQuickAdd:this.options.isShowQuickAdd,isShowAttachments:this.options.isShowAttachments,responseDueLabel:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.MESSAGE_RESPONSE_DUE_LABEL)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.MESSAGE_RESPONSE_DUE_LABEL):"Response Due",activeView:""}},afterRender:function(){this.options.isShowQuickAdd&&(this.$("input.quick-add-list").val(this.options.project.inviteSettings.quickAdd),this.$("input.quick-add-list").on("change keyup paste",_.bind(function(){this.options.project.inviteSettings.quickAdd=this.$("input.quick-add-list").val(),"function"==typeof this.options.onChange&&_typeof(this.options.onChange())},this))),0<_.size(this.options.replyToContacts)&&(this.replyToSelectPicker=new PJQ.inputs.Selectpicker({el:this.$(".reply-to"),isIntChoices:!0,defaultValue:this.options.project.inviteSettings.replyTo?this.options.project.inviteSettings.replyTo:0,onChange:_.bind(function(e){this.options.project.inviteSettings.replyTo=e||null},this)})),this.$("input.message-subject").val(this.options.project.inviteSettings.messageSubject),this.$("input.message-subject").on("change keyup",_.bind(function(){this.options.project.inviteSettings.messageSubject=this.$("input.message-subject").val(),"function"==typeof this.options.onChange&&_typeof(this.options.onChange()),this.queuePreview()},this)),"ASAP"===this.options.project.inviteSettings.responseDue?this.$("input.response-due").val("").prop("disabled",!0):this.options.project.inviteSettings&&"1970-01-01"===this.options.project.inviteSettings.responseDue?this.$("input.response-due").val(""):this.$("input.response-due").val(this.options.project.inviteSettings.responseDue),this.$("input.response-due").on("change keyup",_.bind(function(){this.options.project.inviteSettings.responseDue=this.$("input.response-due").val(),"function"==typeof this.options.onChange&&_typeof(this.options.onChange()),this.queuePreview()},this)),this.$("input.response-due-asap").prop("checked","ASAP"===this.options.project.inviteSettings.responseDue),this.$("input.response-due-asap").on("click",_.bind(function(){this.options.project.inviteSettings.responseDue=this.$("input.response-due-asap").prop("checked")?"ASAP":this.$("input.response-due").val(),this.$("input.response-due").val("").prop("disabled",this.$("input.response-due-asap").prop("checked")),"function"==typeof this.options.onChange&&_typeof(this.options.onChange()),this.renderPreview()},this)),PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_DISABLE_RESPONSE_DUE)&&this.$("input.response-due, input.response-due-asap").prop("disabled",!0),this.messageType=new PJQ.inputs.Selectpicker({el:this.$("select.message-type"),defaultValue:this.options.project.inviteSettings.emailTemplate?this.options.project.inviteSettings.emailTemplate.get("templateKey"):this.options.emailTemplates[0].get("templateKey"),dropupAuto:!1,onChange:_.bind(function(){this.messageTypeSelected(this.messageType.getValue())},this)}),this.responseType=new PJQ.inputs.Selectpicker({el:this.$("select.response-type"),defaultValue:this.options.project.inviteSettings.responseType?this.options.project.inviteSettings.responseType:"NONE",onChange:_.bind(function(e){"NONE"===e&&(e=""),this.options.project.inviteSettings.responseType=e,"function"==typeof this.options.onChange&&_typeof(this.options.onChange()),this.renderPreview()},this)}),PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_FAX)?(this.$('select.send-options option[value="2"]').prop("selected",PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_NO_EMAIL)),this.$('select.send-options option[value="3"]').prop("selected",PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_EMAIL_FAILED)),this.$('select.send-options option[value="4"]').prop("selected",PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_ALWAYS))):(this.$('select.send-options option[value="2"]').prop("hidden",!0),this.$('select.send-options option[value="3"]').prop("hidden",!0),this.$('select.send-options option[value="4"]').prop("hidden",!0));var e=["1"];this.options.project.inviteSettings.sendFaxIfNoEmail&&e.push("2"),this.options.project.inviteSettings.sendFaxIfEmailFails&&e.push("3"),this.options.project.inviteSettings.sendFaxAlways&&e.push("4"),new PJQ.inputs.SelectpickerProjectMessageSendOptions({el:this.$("select.send-options"),onChange:_.bind(function(e){this.options.project.inviteSettings.sendFaxIfNoEmail
1=-1!==e.indexOf("2"),this.options.project.inviteSettings.sendFaxIfEmailFails=-1!==e.indexOf("3"),this.options.project.inviteSettings.sendFaxAlways=-1!==e.indexOf("4"),"function"==typeof this.options.onChange&&_typeof(this.options.onChange())},this),isMultiple:!0,isIntChoices:!1,hideDisabled:!1,noneSelectedText:"No Options Selected",defaultValue:e,exclusiveChoices:["4"]}),this.messageBodyEditor=new PJQ.inputs.HTMLEditor({el:this.$("div.invite-message"),defaultValue:this.options.project.inviteSettings.messageBody,onInit:_.bind(function(){$('<div class="note-file btn-group"><button type="button" class="btn btn-default btn-sm btn-small tokenBtn" title="Token List" data-event="something" tabindex="-1">Tokens</button></div>').prependTo(this.$(".note-toolbar")),this.$(".tokenBtn").tooltip({container:"body",placement:"bottom"}),this.$(".tokenBtn").click(function(e){})},this),onChange:_.bind(function(e){this.options.project.inviteSettings.messageBody=e,"function"==typeof this.options.onChange&&_typeof(this.options.onChange()),this.queuePreview()},this)}),this.options.isShowAttachments&&(this.uploader=new PJQ.views.files.FileUploaderGrid({el:this.$(".uploader"),collection:this.options.project.inviteSettings.attachments,uuid:this.options.project.inviteSettings.uploaderGuid}),this.options.project.fetchAttachments({isShared:!1,includeDrawings:!1},_.bind(function(e){this.privateFolders=e,1<_.size(e.models)&&this.$(".private-folders").closest("div.form-group").show(),new PJQ.views.projects.ProjectAttachments({el:this.$(".private-folders"),collection:e,project:this.options.project,isHideDownload:!0,isHideDrawings:!0,preventSelectAll:!0,selectedAttachments:this.options.project.inviteSettings.privateFolders,onChange:_.bind(function(e){this.options.project.inviteSettings.privateFolders=e},this)})},this))),this.options.project.inviteSettings.messageType?this.renderPreview():this.messageTypeSelected(this.options.project.inviteSettings.templateKey?this.options.project.inviteSettings.templateKey:this.options.emailTemplates[0].get("templateKey"))},messageTypeSelected:function(t){var e=_.filter(this.options.emailTemplates,function(e){return e.get("templateKey")===t})[0];this.options.project.inviteSettings.emailTemplate=e,this.options.project.inviteSettings.messageType=e.get("templateKey"),this.options.project.inviteSettings.messageSubject=e.get("subjectTemplate"),this.options.project.inviteSettings.messageBody=e.get("defaultTextTemplate"),this.options.project.inviteSettings.responseType=e.get("projectMessageType"),this.$(".message-subject").val(this.options.project.inviteSettings.messageSubject),this.responseType.setValue(e.get("projectMessageType")?e.get("projectMessageType"):"NONE"),this.messageBodyEditor.setValue(e.get("defaultTextTemplate")),"function"==typeof this.options.onChange&&_typeof(this.options.onChange()),this.renderPreview()},queuePreview:function(){clearTimeout(this.saveTimeout),this.saveTimeout=setTimeout(_.bind(function(){this.renderPreview()},this),500)},renderPreview:function(){var e=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.get("projectId")},{endpoint:"projectmessagepreview"}],[{parameter:"templateKey",value:this.options.project.inviteSettings.emailTemplate.get("templateKey")}]);new PJQ.ajax.Request({endpoint:e}).post().done(_.bind(function(e){this.options.tokens=e;var t=this.options.project.inviteSettings.messageSubject,i=this.options.project.inviteSettings.emailTemplate.get("bodyTemplate");this.options.tokens.projectMessage.responseType="N/A","PROJECT"===this.options.project.inviteSettings.responseType?this.options.tokens.projectMessage.responseType="ACCEPT/DECLINE":"MESSAGE"===this.options.project.inviteSettings.responseType&&(this.options.tokens.projectMessage.responseType="YES/NO"),this.options.tokens.projectMessage.bidDueDate=this.options.project.inviteSettings.responseDue,this.options.tokens.projectMessage.responseDueDate=this.options.project.inviteSettings.responseDue,this.options.tokens.projectMessage.responseDueDateWithBy="&nbsp;by&nbsp;"+(this.options.project.inviteSettings.responseDue?this.options.project.inviteSettings.responseDue:"N/A"),this.options.tokens.projectMessage.messageBody=this.translateTokens(this.options.project.inviteSettings.messageBody),this.$(".message-preview-subject").html(this.translateTokens(t)),this.$(".message-preview-body").html(this.translateTokens(i)).scrollTop(0)},this)).fail(function(){})}
1,translateTokens:function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/\[Sender.Username\]/g,this.options.tokens.sender.username)).replace(/\[Sender.Company\]/g,this.options.tokens.sender.company)).replace(/\[Sender.Contact\]/g,this.options.tokens.sender.contact)).replace(/\[Sender.Address1\]/g,this.options.tokens.sender.address1)).replace(/\[Sender.Address2\]/g,this.options.tokens.sender.address2)).replace(/\[Sender.City\]/g,this.options.tokens.sender.city)).replace(/\[Sender.State\]/g,this.options.tokens.sender.state)).replace(/\[Sender.Zip\]/g,this.options.tokens.sender.zip)).replace(/\[Sender.Country\]/g,this.options.tokens.sender.country)).replace(/\[Sender.Phone\]/g,this.options.tokens.sender.phone)).replace(/\[Sender.PhoneExtension\]/g,this.options.tokens.sender.phoneExtension)).replace(/\[Sender.Fax\]/g,this.options.tokens.sender.fax)).replace(/\[Sender.Cell\]/g,this.options.tokens.sender.cell)).replace(/\[Sender.Email\]/g,this.options.tokens.sender.email)).replace(/\[Sender.EmailLogoURL\]/g,this.options.tokens.sender.emailLogoURL)).replace(/\[Sender.FullAddress\]/g,this.options.tokens.sender.fullAddress)).replace(/\[Sender.Email2\]/g,this.options.tokens.sender.email2)).replace(/\[Sender.Signature\]/g,this.options.tokens.sender.signature)).replace(/\[Sender.UserType\]/g,this.options.tokens.sender.userType)).replace(/\[Sender.CustomFieldLabel1\]/g,this.options.tokens.sender.customFieldLabel1)).replace(/\[Sender.CustomFieldValue1\]/g,this.options.tokens.sender.customFieldValue1)).replace(/\[Sender.CustomFieldLabel2\]/g,this.options.tokens.sender.customFieldLabel2)).replace(/\[Sender.CustomFieldValue2\]/g,this.options.tokens.sender.customFieldValue2)).replace(/\[Sender.CustomFieldLabel3\]/g,this.options.tokens.sender.customFieldLabel3)).replace(/\[Sender.CustomFieldValue3\]/g,this.options.tokens.sender.customFieldValue3)).replace(/\[Sender.CustomFieldLabel4\]/g,this.options.tokens.sender.customFieldLabel4)).replace(/\[Sender.CustomFieldValue4\]/g,this.options.tokens.sender.customFieldValue4)).replace(/\[Sender.CustomFieldLabel5\]/g,this.options.tokens.sender.customFieldLabel5)).replace(/\[Sender.CustomFieldValue5\]/g,this.options.tokens.sender.customFieldValue5)).replace(/\[Sender.CustomFieldLabel6\]/g,this.options.tokens.sender.customFieldLabel6)).replace(/\[Sender.CustomFieldValue6\]/g,this.options.tokens.sender.customFieldValue6)).replace(/\[Sender.CustomFieldLabel7\]/g,this.options.tokens.sender.customFieldLabel7)).replace(/\[Sender.CustomFieldValue7\]/g,this.options.tokens.sender.customFieldValue7)).replace(/\[Sender.CustomFieldLabel8\]/g,this.options.tokens.sender.customFieldLabel8)).replace(/\[Sender.CustomFieldValue8\]/g,this.options.tokens.sender.customFieldValue8)).replace(/\[Sender.CustomFieldLabel9\]/g,this.options.tokens.sender.customFieldLabel9)).replace(/\[Sender.CustomFieldValue9\]/g,this.options.tokens.sender.customFieldValue9)).replace(/\[Sender.CustomFieldLabel10\]/g,this.options.tokens.sender.customFieldLabel10)).replace(/\[Sender.CustomFieldValue10\]/g,this.options.tokens.sender.customFieldValue10)).replace(/\[Sender.CustomFieldValue1_CLBR\]/g,this.options.tokens.sender.customFieldValue1_CLBR)).replace(/\[Sender.CustomFieldValue2_CLBR\]/g,this.options.tokens.sender.customFieldValue2_CLBR)).replace(/\[Sender.CustomFieldValue3_CLBR\]/g,this.options.tokens.sender.customFieldValue3_CLBR)).replace(/\[Sender.CustomFieldValue4_CLBR\]/g,this.options.tokens.sender.customFieldValue4_CLBR)).replace(/\[Sender.CustomFieldValue5_CLBR\]/g,this.options.tokens.sender.customFieldValue5_CLBR)).replace(/\[Sender.CustomFieldValue6_CLBR\]/g,this.options.tokens.sender.customFieldValue6_CLBR)).replace(/\[Sender.CustomFieldValue7_CLBR\]/g,this.options.tokens.sender.customFieldValue7_CLBR)).replace(/\[Sender.CustomFieldValue8_CLBR\]/g,this.options.tokens.sender.customFieldValue8_CLBR)).replace(/\[Sender.CustomFieldValue9_CLBR\]/g,this.options.tokens.sender.customFieldValue9_CLBR)).replace(/\[Sender.CustomFieldValue10_CLBR\]/g,this.options.tokens.sender.customFieldValue10_CLBR)).replace(/\[SenderPM.Username\]/g,this.options.tokens.senderPM.username)).replace(/\[SenderPM.Company\]/g,this.options.tokens.senderPM.company)).replace(/\[SenderPM.Contact\]/g,this.options.tokens.senderPM.contact)).replace(/\[SenderPM.Address1\]/g,this.options.tokens.senderPM.address1)).replace(/\[SenderPM.Address2\]/g,this.options.tokens.senderPM.address2)).replace(/\[SenderPM.City\]/g,this.options.tokens.senderPM.city)).replace(/\[SenderPM.State\]/g,this.options.tokens.senderPM.state)).replace(/\[SenderPM.Zip\]/g,this.options.tokens.senderPM.zip)).replace(/\[SenderPM.Country\]/g,this.options.tokens.senderPM.country)).replace(/\[SenderPM.Phone\]/g,this.options.tokens.senderPM.phone)).replace(/\[SenderPM.PhoneExtension\]/g,this.options.tokens.senderPM.phoneExtension)).replace(/\[SenderPM.Fax\]/g,this.options.tokens.senderPM.fax)).replace(/\[SenderPM.Cell\]/g,this.options.tokens.senderPM.cell)).replace(/\[SenderPM.Email\]/g,this.options.tokens.senderPM.email)).replace(/\[SenderPM.EmailLogoURL\]/g,this.options.tokens.senderPM.emailLogoURL)).replace(/\[SenderPM.FullAddress\]/g,this.options.tokens.senderPM.fullAddress)).replace(/\[SenderPM.Email2\]/g,this.options.tokens.senderPM.email2)).replace(/\[SenderPM.UserType\]/g,this.options.tokens.senderPM.userType)).replace(/\[SenderPM.CustomFieldLabel1\]/g,this.options.tokens.senderPM.customFieldLabel1)).replace(/\[SenderPM.CustomFieldValue1\]/g,this.options.tokens.senderPM.customFieldValue1)).replace(/\[SenderPM.CustomFieldLabel2\]/g,this.options.tokens.senderPM.customFieldLabel2)).replace(/\[SenderPM.CustomFieldValue2\]/g,this.options.tokens.senderPM.customFieldValue2)).replace(/\[SenderPM.CustomFieldLabel3\]/g,this.options.tokens.senderPM.customFieldLabel3)).replace(/\[SenderPM.CustomFieldValue3\]/g,this.options.tokens.senderPM.customFieldValue3)).replace(/\[SenderPM.CustomFieldLabel4\]/g,this.options.tokens.senderPM.customFieldLabel4)).replace(/\[SenderPM.CustomFieldValue4\]/g,this.options.tokens.senderPM.customFieldValue4)).replace(/\[SenderPM.CustomFieldLabel5\]/g,this.options.tokens.senderPM.customFieldLabel5)).replace(/\[SenderPM.CustomFieldValue5\]/g,this.options.tokens.senderPM.customFieldValue5)).replace(/\[SenderPM.CustomFieldLabel6\]/g,this.options.tokens.senderPM.customFieldLabel6)).replace(/\[SenderPM.CustomFieldValue6\]/g,this.options.tokens.senderPM.customFieldValue6)).replace(/\[SenderPM.CustomFieldLabel7\]/g,this.options.tokens.senderPM.customFieldLabel7)).replace(/\[SenderPM.CustomFieldValue7\]/g,this.options.tokens.senderPM.customFieldValue7)).replace(/\[SenderPM.CustomFieldLabel8\]/g,this.options.tokens.senderPM.customFieldLabel8)).replace(/\[SenderPM.CustomFieldValue8\]/g,this.options.tokens.senderPM.customFieldValue8)).replace(/\[SenderPM.CustomFieldLabel9\]/g,this.options.tokens.senderPM.customFieldLabel9)).replace(/\[SenderPM.CustomFieldValue9\]/g,this.options.tokens.senderPM.customFieldValue9)).replace(/\[SenderPM.CustomFieldLabel10\]/g,this.options.tokens.senderPM.customFieldLabel10)).replace(/\[SenderPM.CustomFieldValue10\]/g,this.options.tokens.senderPM.customFieldValue10)).replace(/\[SenderPM.CustomFieldValue1_CLBR\]/g,this.options.tokens.senderPM.customFieldValue1_CLBR)).replace(/\[SenderPM.CustomFieldValue2_CLBR\]/g,this.options.tokens.senderPM.customFieldValue2_CLBR)).replace(/\[SenderPM.CustomFieldValue3_CLBR\]/g,this.options.tokens.senderPM.customFieldValue3_CLBR)).replace(/\[SenderPM.CustomFieldValue4_CLBR\]/g,this.options.tokens.senderPM.customFieldValue4_CLBR)).replace(/\[SenderPM.CustomFieldValue5_CLBR\]/g,this.options.tokens.senderPM.customFieldValue5_CLBR)).replace(/\[SenderPM.CustomFieldValue6_CLBR\]/g,this.options.tokens.senderPM.customFieldValue6_CLBR)).replace(/\[SenderPM.CustomFieldValue7_CLBR\]/g,this.options.tokens.senderPM.customFieldValue7_CLBR)).replace(/\[SenderPM.CustomFieldValue8_CLBR\]/g,this.options.tokens.senderPM.customFieldValue8_CLBR)).replace(/\[SenderPM.CustomFieldValue9_CLBR\]/g,this.options.tokens.senderPM.customFieldValue9_CLBR)).replace(/\[SenderPM.CustomFieldValue10_CLBR\]/g,this.options.tokens.senderPM.customFieldValue10_CLBR)).replace(/\[ProjectContact2.Username\]/g,this.options.tokens.projectContact2.username)).replace(/\[ProjectContact2.Company\]/g,this.options.tokens.projectContact2.company)).replace(/\[ProjectContact2.Contact\]/g,this.options.tokens.projectContact2.contact)).replace(/\[ProjectContact2.Address1\]/g,this.options.tokens.projectContact2.address1)).replace(/\[ProjectContact2.Address2\]/g,this.options.tokens.projectContact2.address2)).replace(/\[ProjectContact2.City\]/g,this.options.tokens.projectContact2.city)).replace(/\[ProjectContact2.State\]/g,this.options.tokens.projectContact2.state)).replace(/\[ProjectContact2.Zip\]/g,this.options.tokens.projectContact2.zip)).replace(/\[ProjectContact2.Country\]/g,this.options.tokens.projectContact2.country)).replace(/\[ProjectContact2.Phone\]/g,this.options.tokens.projectContact2.phone)).replace(/\[ProjectContact2.PhoneExtension\]/g,this.options.tokens.projectContact2.phoneExtension)).replace(/\[ProjectContact2.Fax\]/g,this.options.tokens.projectContact2.fax)).replace(/\[ProjectContact2.Cell\]/g,this.options.tokens.projectContact2.cell)).replace(/\[ProjectContact2.Email\]/g,this.options.tokens.projectContact2.email)).replace(/\[ProjectContact2.EmailLogoURL\]/g,this.options.tokens.projectContact2.emailLogoURL)).replace(/\[ProjectContact2.FullAddress\]/g,this.options.tokens.projectContact2.fullAddress)).replace(/\[ProjectContact2.Email2\]/g,this.options.tokens.projectContact2.email2)).replace(/\[ProjectContact2.Signature\]/g,this.options.tokens.projectContact2.signature)).replace(/\[ProjectContact2.UserType\]/g,this.options.tokens.projectContact2.userType)).replace(/\[ProjectContact2.CustomFieldLabel1\]/g,this.options.tokens.projectContact2.customFieldLabel1)).replace(/\[ProjectContact2.CustomFieldValue1\]/g,this.options.tokens.projectContact2.customFieldValue1)).replace(/\[ProjectContact2.CustomFieldLabel2\]/g,this.options.tokens.projectContact2.customFieldLabel2)).replace(/\[ProjectContact2.CustomFieldValue2\]/g,this.options.tokens.projectContact2.customFieldValue2)).replace(/\[ProjectContact2.CustomFieldLabel3\]/g,this.options.tokens.projectContact2.customFieldLabel3)).replace(/\[ProjectContact2.CustomFieldValue3\]/g,this.options.tokens.projectContact2.customFieldValue3)).replace(/\[ProjectContact2.CustomFieldLabel4\]/g,this.options.tokens.projectContact2.customFieldLabel4)).replace(/\[ProjectContact2.CustomFieldValue4\]/g,this.options.tokens.projectContact2.customFieldValue4)).replace(/\[ProjectContact2.CustomFieldLabel5\]/g,this.options.tokens.projectContact2.customFieldLabel5)).replace(/\[ProjectContact2.CustomFieldValue5\]/g,this.options.tokens.projectContact2.customFieldValue5)).replace(/\[ProjectContact2.CustomFieldLabel6\]/g,this.options.tokens.projectContact2.customFieldLabel6)).replace(/\[ProjectContact2.CustomFieldValue6\]/g,this.options.tokens.projectContact2.customFieldValue6)).replace(/\[ProjectContact2.CustomFieldLabel7\]/g,this.options.tokens.projectContact2.customFieldLabel7)).replace(/\[ProjectContact2.CustomFieldValue7\]/g,this.options.tokens.projectContact2.customFieldValue7)).replace(/\[ProjectContact2.CustomFieldLabel8\]/g,this.options.tokens.projectContact2.customFieldLabel8)).replace(/\[ProjectContact2.CustomFieldValue8\]/g,this.options.tokens.projectContact2.customFieldValue8)).replace(/\[ProjectContact2.CustomFieldLabel9\]/g,this.options.tokens.projectContact2.customFieldLabel9)).replace(/\[ProjectContact2.CustomFieldValue9\]/g,this.options.tokens.projectContact2.customFieldValue9)).replace(/\[ProjectContact2.CustomFieldLabel10\]/g,this.options.tokens.projectContact2.customFieldLabel10)).replace(/\[ProjectContact2.CustomFieldValue10\]/g,this.options.tokens.projectContact2.customFieldValue10)).replace(/\[ProjectContact2.CustomFieldValue1_CLBR\]/g,this.options.tokens.projectContact2.customFieldValue1_CLBR)).replace(/\[ProjectContact2.CustomFieldValue2_CLBR\]/g,this.options.tokens.projectContact2.customFieldValue2_CLBR)).replace(/\[ProjectContact2.CustomFieldValue3_CLBR\]/g,this.options.tokens.projectContact2.customFieldValue3_CLBR)).replace(/\[ProjectContact2.CustomFieldValue4_CLBR\]/g,this.options.tokens.projectContact2.customFieldValue4_CLBR)).replace(/\[ProjectContact2.CustomFieldValue5_CLBR\]/g,this.options.tokens.projectContact2.customFieldValue5_CLBR)).replace(/\[ProjectContact2.CustomFieldValue6_CLBR\]/g,this.options.tokens.projectContact2.customFieldValue6_CLBR)).replace(/\[ProjectContact2.CustomFieldValue7_CLBR\]/g,this.options.tokens.projectContact2.customFieldValue7_CLBR)).replace(/\[ProjectContact2.CustomFieldValue8_CLBR\]/g,this.options.tokens.projectContact2.customFieldValue8_CLBR)).replace(/\[ProjectContact2.CustomFieldValue9_CLBR\]/g,this.options.tokens.projectContact2.customFieldValue9_CLBR)).replace(/\[ProjectContact2.CustomFieldValue10_CLBR\]/g,this.options.tokens.projectContact2.customFieldValue10_CLBR)).replace(/\[Recipient.Company\]/g,this.options.tokens.recipient.company)).replace(/\[Recipient.Contact\]/g,this.options.tokens.recipient.contact)).replace(/\[Recipient.FirstName\]/g,this.options.tokens.recipient.firstName)).replace(/\[Recipient.Title\]/g,this.options.tokens.recipient.title)).replace(/\[Recipient.Address1\]/g,this.options.tokens.recipient.address1)).replace(/\[Recipient.Address2\]/g,this.options.tokens.recipient.address2)).replace(/\[Recipient.City\]/g,this.options.tokens.recipient.city)).replace(/\[Recipient.State\]/g,this.options.tokens.recipient.state)).replace(/\[Recipient.Zip\]/g,this.options.tokens.recipient.zip)).replace(/\[Recipient.Country\]/g,this.options.tokens.recipient.country)).replace(/\[Recipient.Phone\]/g,this.options.tokens.recipient.phone)).replace(/\[Recipient.PhoneExtension\]/g,this.options.tokens.recipient.phoneExtension)).replace(/\[Recipient.Fax\]/g,this.options.tokens.recipient.fax)).replace(/\[Recipient.Email\]/g,this.options.tokens.recipient.email)).replace(/\[Recipient.EmailLogoURL\]/g,this.options.tokens.recipient.emailLogoURL)).replace(/\[Recipient.FullAddress\]/g,this.options.tokens.recipient.fullAddress)).replace(/\[Portal.URL\]/g,this.options.tokens.portal.url)).replace(/\[Portal.Domain\]/g,this.options.tokens.portal.domain)).replace(/\[DateTime.Today\]/g,this.options.tokens.dateTime.today)).replace(/\[ProjectMessage.AccessKey\]/g,this.options.tokens.projectMessage.accessKey)).replace(/\[ProjectMessage.RSVPURL\]/g,this.options.tokens.projectMessage.rsvpurl)).replace(/\[ProjectMessage.RecipientGroupList\]/g,this.options.tokens.projectMessage.recipientGroupList)).replace(/\[ProjectMessage.RecipientGroupListComma\]/g,this.options.tokens.projectMessage.recipientGroupListComma)).replace(/\[ProjectMessage.ResponseDueLabel\]/g,this.options.tokens.projectMessage.responseDueLabel)).replace(/\[ProjectMessage.MessageResponseDueLabel\]/g,this.options.tokens.projectMessage.messageResponseDueLabel)).replace(/\[ProjectMessage.ResponseDueDate\]/g,this.options.tokens.projectMessage.responseDueDate)).replace(/\[ProjectMessage.ResponseDueDateWithBy\]/g,this.options.tokens.projectMessage.responseDueDateWithBy?this.options.tokens.projectMessage.responseDueDateWithBy:"")).replace(/\[ProjectMes
1sage.ResponseDueTime\]/g,this.options.tokens.projectMessage.responseDueTime)).replace(/\[ProjectMessage.MessageSubject\]/g,this.options.tokens.projectMessage.messageSubject)).replace(/\[ProjectMessage.MessageBody\]/g,this.options.tokens.projectMessage.messageBody)).replace(/\[ProjectMessage.SentOnDate\]/g,this.options.tokens.projectMessage.sentOnDate)).replace(/\[ProjectMessage.EstCompleteDate\]/g,this.options.tokens.projectMessage.estCompleteDate)).replace(/\[ProjectMessage.EstStartDate\]/g,this.options.tokens.projectMessage.estStartDate)).replace(/\[ProjectMessage.MessageType\]/g,this.options.tokens.projectMessage.messageType)).replace(/\[ProjectMessage.ResponseType\]/g,this.options.tokens.projectMessage.responseType)).replace(/\[ProjectMessage.MessageName\]/g,this.options.tokens.projectMessage.messageName)).replace(/\[Project.ProjectId\]/g,this.options.tokens.project.projectId)).replace(/\[Project.Name\]/g,this.options.tokens.project.name)).replace(/\[Project.Address1\]/g,this.options.tokens.project.address1)).replace(/\[Project.Address2\]/g,this.options.tokens.project.address2)).replace(/\[Project.City\]/g,this.options.tokens.project.city)).replace(/\[Project.State\]/g,this.options.tokens.project.state)).replace(/\[Project.Zip\]/g,this.options.tokens.project.zip)).replace(/\[Project.Country\]/g,this.options.tokens.project.country)).replace(/\[Project.Notes\]/g,this.options.tokens.project.notes)).replace(/\[Project.ResponseDueLabel\]/g,this.options.tokens.project.responseDueLabel)).replace(/\[Project.MessageResponseDueLabel\]/g,this.options.tokens.project.messageResponseDueLabel)).replace(/\[Project.ResponseDueDate\]/g,this.options.tokens.project.responseDueDate)).replace(/\[Project.ResponseDueTime\]/g,this.options.tokens.project.responseDueTime)).replace(/\[Project.ResponseDueShortTime\]/g,this.options.tokens.project.responseDueShortTime)).replace(/\[Project.ResponseDueTimeZone\]/g,this.options.tokens.project.responseDueTimeZone)).replace(/\[Project.ResponseDueDateWithBy\]/g,this.options.tokens.project.responseDueDateWithBy)).replace(/\[Project.StartDate\]/g,this.options.tokens.project.startDate)).replace(/\[Project.EndDate\]/g,this.options.tokens.project.endDate)).replace(/\[Project.ProjectStatus\]/g,this.options.tokens.project.projectStatus)).replace(/\[Project.CustomFieldLabel1\]/g,this.options.tokens.project.customFieldLabel1)).replace(/\[Project.CustomFieldValue1\]/g,this.options.tokens.project.customFieldValue1)).replace(/\[Project.CustomFieldLabel2\]/g,this.options.tokens.project.customFieldLabel2)).replace(/\[Project.CustomFieldValue2\]/g,this.options.tokens.project.customFieldValue2)).replace(/\[Project.CustomFieldLabel3\]/g,this.options.tokens.project.customFieldLabel3)).replace(/\[Project.CustomFieldValue3\]/g,this.options.tokens.project.customFieldValue3)).replace(/\[Project.CustomFieldLabel4\]/g,this.options.tokens.project.customFieldLabel4)).replace(/\[Project.CustomFieldValue4\]/g,this.options.tokens.project.customFieldValue4)).replace(/\[Project.CustomFieldLabel5\]/g,this.options.tokens.project.customFieldLabel5)).replace(/\[Project.CustomFieldValue5\]/g,this.options.tokens.project.customFieldValue5)).replace(/\[Project.CustomFieldLabel6\]/g,this.options.tokens.project.customFieldLabel6)).replace(/\[Project.CustomFieldValue6\]/g,this.options.tokens.project.customFieldValue6)).replace(/\[Project.CustomFieldLabel7\]/g,this.options.tokens.project.customFieldLabel7)).replace(/\[Project.CustomFieldValue7\]/g,this.options.tokens.project.customFieldValue7)).replace(/\[Project.CustomFieldLabel8\]/g,this.options.tokens.project.customFieldLabel8)).replace(/\[Project.CustomFieldValue8\]/g,this.options.tokens.project.customFieldValue8)).replace(/\[Project.CustomFieldLabel9\]/g,this.options.tokens.project.customFieldLabel9)).replace(/\[Project.CustomFieldValue9\]/g,this.options.tokens.project.customFieldValue9)).replace(/\[Project.CustomFieldLabel10\]/g,this.options.tokens.project.customFieldLabel10)).replace(/\[Project.CustomFieldValue10\]/g,this.options.tokens.project.customFieldValue10)).replace(/\[Project.CustomFieldLabel11\]/g,this.options.tokens.project.customFieldLabel11)).replace(/\[Project.CustomFieldValue11\]/g,this.options.tokens.project.customFieldValue11)).replace(/\[Project.CustomFieldLabel12\]/g,this.options.tokens.project.customFieldLabel12)).replace(/\[Project.CustomFieldValue12\]/g,this.options.tokens.project.customFieldValue12)).replace(/\[Project.CustomFieldLabel13\]/g,this.options.tokens.project.customFieldLabel13)).replace(/\[Project.CustomFieldValue13\]/g,this.options.tokens.project.customFieldValue13)).replace(/\[Project.CustomFieldLabel14\]/g,this.options.tokens.project.customFieldLabel14)).replace(/\[Project.CustomFieldValue14\]/g,this.options.tokens.project.customFieldValue14)).replace(/\[Project.CustomFieldLabel15\]/g,this.options.tokens.project.customFieldLabel15)).replace(/\[Project.CustomFieldValue15\]/g,this.options.tokens.project.customFieldValue15)).replace(/\[Project.CustomFieldLabel16\]/g,this.options.tokens.project.customFieldLabel16)).replace(/\[Project.CustomFieldValue16\]/g,this.options.tokens.project.customFieldValue16)).replace(/\[Project.CustomFieldLabel17\]/g,this.options.tokens.project.customFieldLabel17)).replace(/\[Project.CustomFieldValue17\]/g,this.options.tokens.project.customFieldValue17)).replace(/\[Project.CustomFieldLabel18\]/g,this.options.tokens.project.customFieldLabel18)).replace(/\[Project.CustomFieldValue18\]/g,this.options.tokens.project.customFieldValue18)).replace(/\[Project.CustomFieldLabel19\]/g,this.options.tokens.project.customFieldLabel19)).replace(/\[Project.CustomFieldValue19\]/g,this.options.tokens.project.customFieldValue19)).replace(/\[Project.CustomFieldLabel20\]/g,this.options.tokens.project.customFieldLabel20)).replace(/\[Project.CustomFieldValue20\]/g,this.options.tokens.project.customFieldValue20)).replace(/\[Project.CustomFieldLabel21\]/g,this.options.tokens.project.customFieldLabel21)).replace(/\[Project.CustomFieldValue21\]/g,this.options.tokens.project.customFieldValue21)).replace(/\[Project.CustomFieldLabel22\]/g,this.options.tokens.project.customFieldLabel22)).replace(/\[Project.CustomFieldValue22\]/g,this.options.tokens.project.customFieldValue22)).replace(/\[Project.CustomFieldLabel23\]/g,this.options.tokens.project.customFieldLabel23)).replace(/\[Project.CustomFieldValue23\]/g,this.options.tokens.project.customFieldValue23)).replace(/\[Project.CustomFieldLabel24\]/g,this.options.tokens.project.customFieldLabel24)).replace(/\[Project.CustomFieldValue24\]/g,this.options.tokens.project.customFieldValue24)).replace(/\[Project.CustomFieldLabel25\]/g,this.options.tokens.project.customFieldLabel25)).replace(/\[Project.CustomFieldValue25\]/g,this.options.tokens.project.customFieldValue25)).replace(/\[Project.CustomFieldLabel26\]/g,this.options.tokens.project.customFieldLabel26)).replace(/\[Project.CustomFieldValue26\]/g,this.options.tokens.project.customFieldValue26)).replace(/\[Project.CustomFieldLabel27\]/g,this.options.tokens.project.customFieldLabel27)).replace(/\[Project.CustomFieldValue27\]/g,this.options.tokens.project.customFieldValue27)).replace(/\[Project.CustomFieldLabel28\]/g,this.options.tokens.project.customFieldLabel28)).replace(/\[Project.CustomFieldValue28\]/g,this.options.tokens.project.customFieldValue28)).replace(/\[Project.CustomFieldLabel29\]/g,this.options.tokens.project.customFieldLabel29)).replace(/\[Project.CustomFieldValue29\]/g,this.options.tokens.project.customFieldValue29)).replace(/\[Project.CustomFieldLabel30\]/g,this.options.tokens.project.customFieldLabel30)).replace(/\[Project.CustomFieldValue30\]/g,this.options.tokens.project.customFieldValue30)).replace(/\[Project.CustomFieldLabel31\]/g,this.options.tokens.project.customFieldLabel31)).replace(/\[Project.CustomFieldValue31\]/g,this.options.tokens.project.customFieldValue31)).replace(/\[Project.CustomFieldLabel32\]/g,this.options.tokens.project.customFieldLabel32)).replace(/\[Project.CustomFieldValue32\]/g,this.options.tokens.project.customFieldValue32)).replace(/\[Project.CustomFieldLabel33\]/g,this.options.tokens.project.customFieldLabel33)).replace(/\[Project.CustomFieldValue33\]/g,this.options.tokens.project.customFieldValue33)).replace(/\[Project.CustomFieldLabel34\]/g,this.options.tokens.project.customFieldLabel34)).replace(/\[Project.CustomFieldValue34\]/g,this.options.tokens.project.customFieldValue34)).replace(/\[Project.CustomFieldLabel35\]/g,this.options.tokens.project.customFieldLabel35)).replace(/\[Project.CustomFieldValue35\]/g,this.options.tokens.project.customFieldValue35)).replace(/\[Project.CustomFieldLabel36\]/g,this.options.tokens.project.customFieldLabel36)).replace(/\[Project.CustomFieldValue36\]/g,this.options.tokens.project.customFieldValue36)).replace(/\[Project.CustomFieldLabel37\]/g,this.options.tokens.project.customFieldLabel37)).replace(/\[Project.CustomFieldValue37\]/g,this.options.tokens.project.customFieldValue37)).replace(/\[Project.CustomFieldLabel38\]/g,this.options.tokens.project.customFieldLabel38)).replace(/\[Project.CustomFieldValue38\]/g,this.options.tokens.project.customFieldValue38)).replace(/\[Project.CustomFieldLabel39\]/g,this.options.tokens.project.customFieldLabel39)).replace(/\[Project.CustomFieldValue39\]/g,this.options.tokens.project.customFieldValue39)).replace(/\[Project.CustomFieldValue26_CompanyName\]/g,this.options.tokens.project.customFieldValue26_CompanyName)).replace(/\[Project.CustomFieldValue26_ContactName\]/g,this.options.tokens.project.customFieldValue26_ContactName)).replace(/\[Project.CustomFieldValue26_ContactTitle\]/g,this.options.tokens.project.customFieldValue26_ContactTitle)).replace(/\[Project.CustomFieldValue26_Address26\]/g,this.options.tokens.project.customFieldValue26_Address26)).replace(/\[Project.CustomFieldValue26_Address2\]/g,this.options.tokens.project.customFieldValue26_Address2)).replace(/\[Project.CustomFieldValue26_City\]/g,this.options.tokens.project.customFieldValue26_City)).replace(/\[Project.CustomFieldValue26_StateProvince\]/g,this.options.tokens.project.customFieldValue26_StateProvince)).replace(/\[Project.CustomFieldValue26_PostalCode\]/g,this.options.tokens.project.customFieldValue26_PostalCode)).replace(/\[Project.CustomFieldValue26_Country\]/g,this.options.tokens.project.customFieldValue26_Country)).replace(/\[Project.CustomFieldValue26_Phone\]/g,this.options.tokens.project.customFieldValue26_Phone)).replace(/\[Project.CustomFieldValue26_Fax\]/g,this.options.tokens.project.customFieldValue26_Fax)).replace(/\[Project.CustomFieldValue26_Cell\]/g,this.options.tokens.project.customFieldValue26_Cell)).replace(/\[Project.CustomFieldValue26_Email\]/g,this.options.tokens.project.customFieldValue26_Email)).replace(/\[Project.CustomFieldValue27_CompanyName\]/g,this.options.tokens.project.customFieldValue27_CompanyName)).replace(/\[Project.CustomFieldValue27_ContactName\]/g,this.options.tokens.project.customFieldValue27_ContactName)).replace(/\[Project.CustomFieldValue27_ContactTitle\]/g,this.options.tokens.project.customFieldValue27_ContactTitle)).replace(/\[Project.CustomFieldValue27_Address27\]/g,this.options.tokens.project.customFieldValue27_Address27)).replace(/\[Project.CustomFieldValue27_Address2\]/g,this.options.tokens.project.customFieldValue27_Address2)).replace(/\[Project.CustomFieldValue27_City\]/g,this.options.tokens.project.customFieldValue27_City)).replace(/\[Project.CustomFieldValue27_StateProvince\]/g,this.options.tokens.project.customFieldValue27_StateProvince)).replace(/\[Project.CustomFieldValue27_PostalCode\]/g,this.options.tokens.project.customFieldValue27_PostalCode)).replace(/\[Project.CustomFieldValue27_Country\]/g,this.options.tokens.project.customFieldValue27_Country)).replace(/\[Project.CustomFieldValue27_Phone\]/g,this.options.tokens.project.customFieldValue27_Phone)).replace(/\[Project.CustomFieldValue27_Fax\]/g,this.options.tokens.project.customFieldValue27_Fax)).replace(/\[Project.CustomFieldValue27_Cell\]/g,this.options.tokens.project.customFieldValue27_Cell)).replace(/\[Project.CustomFieldValue27_Email\]/g,this.options.tokens.project.customFieldValue27_Email)).replace(/\[Project.CustomFieldValue1_CLBR\]/g,this.options.tokens.project.customFieldValue1_CLBR)).replace(/\[Project.CustomFieldValue2_CLBR\]/g,this.options.tokens.project.customFieldValue2_CLBR)).replace(/\[Project.CustomFieldValue3_CLBR\]/g,this.options.tokens.project.customFieldValue3_CLBR)).replace(/\[Project.CustomFieldValue4_CLBR\]/g,this.options.tokens.project.customFieldValue4_CLBR)).replace(/\[Project.CustomFieldValue5_CLBR\]/g,this.options.tokens.project.customFieldValue5_CLBR)).replace(/\[Project.CustomFieldValue6_CLBR\]/g,this.options.tokens.project.customFieldValue6_CLBR)).replace(/\[Project.CustomFieldValue7_CLBR\]/g,this.options.tokens.project.customFieldValue7_CLBR)).replace(/\[Project.CustomFieldValue8_CLBR\]/g,this.options.tokens.project.customFieldValue8_CLBR)).replace(/\[Project.CustomFieldValue9_CLBR\]/g,this.options.tokens.project.customFieldValue9_CLBR)).replace(/\[Project.CustomFieldValue10_CLBR\]/g,this.options.tokens.project.customFieldValue10_CLBR)).replace(/\[Project.CustomFieldValue11_CLBR\]/g,this.options.tokens.project.customFieldValue11_CLBR)).replace(/\[Project.CustomFieldValue12_CLBR\]/g,this.options.tokens.project.customFieldValue12_CLBR)).replace(/\[Project.CustomFieldValue13_CLBR\]/g,this.options.tokens.project.customFieldValue13_CLBR)).replace(/\[Project.CustomFieldValue14_CLBR\]/g,this.options.tokens.project.customFieldValue14_CLBR)).replace(/\[Project.CustomFieldValue15_CLBR\]/g,this.options.tokens.project.customFieldValue15_CLBR)).replace(/\[Project.CustomFieldValue16_CLBR\]/g,this.options.tokens.project.customFieldValue16_CLBR)).replace(/\[Project.CustomFieldValue17_CLBR\]/g,this.options.tokens.project.customFieldValue17_CLBR)).replace(/\[Project.CustomFieldValue18_CLBR\]/g,this.options.tokens.project.customFieldValue18_CLBR)).replace(/\[Project.CustomFieldValue19_CLBR\]/g,this.options.tokens.project.customFieldValue19_CLBR)).replace(/\[Project.CustomFieldValue20_CLBR\]/g,this.options.tokens.project.customFieldValue20_CLBR)).replace(/\[Project.CustomFieldValue21_CLBR\]/g,this.options.tokens.project.customFieldValue21_CLBR)).replace(/\[Project.CustomFieldValue22_CLBR\]/g,this.options.tokens.project.customFieldValue22_CLBR)).replace(/\[Project.CustomFieldValue23_CLBR\]/g,this.options.tokens.project.customFieldValue23_CLBR)).replace(/\[Project.CustomFieldValue24_CLBR\]/g,this.options.tokens.project.customFieldValue24_CLBR)).replace(/\[Project.CustomFieldValue25_CLBR\]/g,this.options.tokens.project.customFieldValue25_CLBR)).replace(/\[Project.CustomFieldValue26_CLBR\]/g,this.options.tokens.project.customFieldValue26_CLBR)).replace(/\[Project.CustomFieldValue27_CLBR\]/g,this.options.tokens.project.customFieldValue27_CLBR)).replace(/\[Project.CustomFieldValue28_CLBR\]/g,this.options.tokens.project.customFieldValue28_CLBR)).replace(/\[Project.CustomFieldValue29_CLBR\]/g,this.options.tokens.project.customFieldValue29_CLBR)).replace(/\[Project.CustomFieldValue30_CLBR\]/g,this.options.tokens.project.customFieldValue30_CLBR)).replace(/\[Project.CustomFieldValue31_CLBR\]/g,this.options.tokens.project.customFieldValue31_CLBR)).replace(/\[Project.CustomFieldValue32_CLBR\]/g,this.options.tokens.project.customFieldValue32_CLBR)).replace(/\[Project.CustomFieldValue33_CLBR\]/g,this.options.tokens.project.customFieldValue33_CLBR)).replace(/\[Project.CustomFieldValue34_CLBR\]/g,this.options.tokens.project.customFieldValue34_CLBR)).replace(/\[Project.CustomFieldValue35_CLBR\]/g,this.options.tokens.project.customFieldValue35_CLBR)).replace(/\[Project.CustomFieldValue36_CLBR\]/g,this.options.tokens.project.customFieldValue36_CLBR)).replace(/\[Project.CustomFieldValue37_CLBR\]/g,this.options.tokens.project.customFieldValue37_CLBR)).replace(/\[Project.CustomFieldValue38_CLBR\]/g,this.options.tokens.project.customFieldValue38_CLBR)).replace(/\[Project.CustomFieldValue39_CLBR\]/g,this.options.tokens.project.customFieldValue39_CLBR)).replace(/\[BidForms.GroupDueDates\]/g,this.options.tokens.bidForms.groupDueDates)).replace(/\[ProjectContacts.UserType395_CompanyName\]/g,this.options.tokens.projectContacts.userType395_CompanyName)).replace(/\[ProjectContacts.UserType395_ContactName\]/g,this.options.tokens.projectCont
1acts.userType395_ContactName)).replace(/\[ProjectContacts.UserType395_ContactTitle\]/g,this.options.tokens.projectContacts.userType395_ContactTitle)).replace(/\[ProjectContacts.UserType395_Address26\]/g,this.options.tokens.projectContacts.userType395_Address)).replace(/\[ProjectContacts.UserType395_Address2\]/g,this.options.tokens.projectContacts.userType395_Address2)).replace(/\[ProjectContacts.UserType395_City\]/g,this.options.tokens.projectContacts.userType395_City)).replace(/\[ProjectContacts.UserType395_StateProvince\]/g,this.options.tokens.projectContacts.userType395_StateProvince)).replace(/\[ProjectContacts.UserType395_PostalCode\]/g,this.options.tokens.projectContacts.userType395_PostalCode)).replace(/\[ProjectContacts.UserType395_Country\]/g,this.options.tokens.projectContacts.userType395_Country)).replace(/\[ProjectContacts.UserType395_Phone\]/g,this.options.tokens.projectContacts.userType395_Phone)).replace(/\[ProjectContacts.UserType395_Fax\]/g,this.options.tokens.projectContacts.userType395_Fax)).replace(/\[ProjectContacts.UserType395_Cell\]/g,this.options.tokens.projectContacts.userType395_Cell)).replace(/\[ProjectContacts.UserType395_Email\]/g,this.options.tokens.projectContacts.userType395_Email)).replace(/\[ProjectContacts.UserType396_CompanyName\]/g,this.options.tokens.projectContacts.userType396_CompanyName)).replace(/\[ProjectContacts.UserType396_ContactName\]/g,this.options.tokens.projectContacts.userType396_ContactName)).replace(/\[ProjectContacts.UserType396_ContactTitle\]/g,this.options.tokens.projectContacts.userType396_ContactTitle)).replace(/\[ProjectContacts.UserType396_Address26\]/g,this.options.tokens.projectContacts.userType396_Address)).replace(/\[ProjectContacts.UserType396_Address2\]/g,this.options.tokens.projectContacts.userType396_Address2)).replace(/\[ProjectContacts.UserType396_City\]/g,this.options.tokens.projectContacts.userType396_City)).replace(/\[ProjectContacts.UserType396_StateProvince\]/g,this.options.tokens.projectContacts.userType396_StateProvince)).replace(/\[ProjectContacts.UserType396_PostalCode\]/g,this.options.tokens.projectContacts.userType396_PostalCode)).replace(/\[ProjectContacts.UserType396_Country\]/g,this.options.tokens.projectContacts.userType396_Country)).replace(/\[ProjectContacts.UserType396_Phone\]/g,this.options.tokens.projectContacts.userType396_Phone)).replace(/\[ProjectContacts.UserType396_Fax\]/g,this.options.tokens.projectContacts.userType396_Fax)).replace(/\[ProjectContacts.UserType396_Cell\]/g,this.options.tokens.projectContacts.userType396_Cell)).replace(/\[ProjectContacts.UserType396_Email\]/g,this.options.tokens.projectContacts.userType396_Email)}}),PJQ.views.projectInvites.ProjectInviteModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Project-Invite"),minWidth:"90%",onSend:_.noop,onCancel:_.noop,onAddFromThisProject:_.noop,onViewSelected:_.noop,projectMessagingView:null,project:null,emailTemplates:[],isShowQuickAdd:!1,isShowAttachments:!1,isShowAddParticipants:!1},events:{"click .preview-invite":"previewInvite","click .invite-send":"sendInvite","click .invite-preview":"previewInvite","click .invite-close":"closeInvite","click .btn-add-participants-from-project":"addParticipantsFromProject","click .btn-add-participants-from-this-project":"addParticipantsFromThisProject","click .btn-detailed-search":"detailedSearch","click .btn-detailed-search-new":"detailedSearch","click .btn-simple-search":"simpleSearch","click .btn-quick-search":"quickSearch","click .view-selected-contacts":"viewSelected","click .preview-export":"export"},beforeRender:function(){this.renderData={}},afterRender:function(){this.$(".count-selected-contacts").html(_.size(this.options.projectMessagingView.options.selectedContacts)),this.projectInvite=new PJQ.views.projectInvites.ProjectInvite({el:this.$(".project-invite"),project:this.options.project,emailTemplates:this.options.emailTemplates,replyToContacts:this.options.replyToContacts,defaultTemplateKey:this.options.defaultTemplateKey,onChange:_.bind(function(){this.$(".invite-send").prop("disabled",0===_.size(this.options.project.inviteSettings.messageSubject)||0===_.size(this.options.project.inviteSettings.messageBody)||0===_.size(this.options.projectMessagingView.options.selectedContacts)&&!PJQ.helpers.validators.validateEmail(this.options.project.inviteSettings.quickAdd,!0).success)}
1,this),isShowQuickAdd:this.options.isShowQuickAdd,isShowAttachments:this.options.isShowAttachments})},previewInvite:function(){var e=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.get("projectId")},{endpoint:"projectmessagepreview"}],[{parameter:"templateKey",value:this.options.project.inviteSettings.emailTemplate.get("templateKey")}]);new PJQ.ajax.Request({endpoint:e}).post().done(_.bind(function(e){new PJQ.views.projectInvites.ProjectInvitePreviewModal({tokens:e,inviteSettings:this.options.project.inviteSettings,project:this.options.project})},this)).fail(function(){})},export:function(){var e="N/A";"PROJECT"===this.options.project.inviteSettings.responseType?e="ACCEPT/DECLINE":"MESSAGE"===this.options.project.inviteSettings.responseType&&(e="YES/NO"),this.$(".preview-export").prop("disabled",!0),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.get("projectId")},{endpoint:"projectmessagepreview"},{endpoint:"export"}]),data:{templateKey:this.options.project.inviteSettings.emailTemplate.get("templateKey"),responseType:encodeURIComponent(e),bidDueDate:this.options.project.inviteSettings.responseDue,responseDueDate:this.options.project.inviteSettings.responseDue,messageSubject:encodeURIComponent(this.projectInvite.translateTokens(this.options.project.inviteSettings.messageSubject)),messageBody:encodeURIComponent(this.projectInvite.translateTokens(this.options.project.inviteSettings.messageBody))}}).post().success(_.bind(function(e){this.$(".preview-export").prop("disabled",!1),PJQ.files.downloadFile(e.url,{isEndpoint:!1})},this))},closeInvite:function(){"function"==typeof this.options.onCancel&&this.options.onCancel(),this.removeModal()},sendInvite:function(){var i=this.$(".invite-send");if(i.attr("disabled",!0),this.options.project.inviteSettings.attachments&&0<_.size(this.options.project.inviteSettings.attachments.models)){var t=0;if(_.each(this.options.project.inviteSettings.attachments.models,_.bind(function(e){t+=e.file?e.file.size:e.get("size")},this)),15728640<t)return PJQ.notifications.notify.warningNotify({message:"The total size of uploaded attachments exceeds the 15mb limit."}),void i.attr("disabled",!1)}this.options.project.inviteSettings.messageBody=this.options.project.inviteSettings.messageBody.replace(/[\u200B-\u200D\uFEFF]/g,"");var s=[{projectId:this.options.project.get("projectId"),messageSubject:this.options.project.inviteSettings.messageSubject,messageBody:this.options.project.inviteSettings.messageBody,responseType:this.options.project.inviteSettings.responseType,templateKey:this.options.project.inviteSettings.messageType,responseDue:this.options.project.inviteSettings.responseDue,sendEmail:!0,sendFax:this.options.project.inviteSettings.sendFaxAlways,sendFaxIfNoEmail:this.options.project.inviteSettings.sendFaxIfNoEmail,sendFaxIfEmailFails:this.options.project.inviteSettings.sendFaxIfEmailFails,quickAdd:this.options.project.inviteSettings.quickAdd,attachments:this.options.project.inviteSettings.attachments.models,privateFolders:this.options.project.inviteSettings.privateFolders.models,replyTo:this.options.project.inviteSettings.replyTo}],e=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"sendprojectmessages"},{endpoint:"checkrecipients"}]);new PJQ.ajax.Request({endpoint:e,data:{isAddAllGroups:!1,contacts:this.options.projectMessagingView.options.selectedContacts,projectMessageSendOptions:s},isApi2:!0}).post().done(_.bind(function(e){var t=_.bind(function(){var e=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"sendprojectmessages"}]);new PJQ.ajax.Request({endpoint:e,data:{isAddAllGroups:!1,contacts:this.options.projectMessagingView.options.selectedContacts,projectMessageSendOptions:s},isApi2:!0}).post().done(_.bind(function(e){"function"==typeof this.options.onSend&&this.options.onSend(),this.options.project.inviteSettings=null,PJQ.notifications.notify.successNotify({message:"Message queued for sending"}),this.removeModal()},this)).fail(function(){PJQ.notifications.notify.errorNotify({message:"Something went wrong."}),i.attr("disabled",!1)})},this);
10<e.nonPendingCount?new PJQ.views.modals.YesNo({header:"Project Status Warning",body:"Participants in your selection have a non-PENDING status.  If you send this message, it will reset their status back to PENDING.  Do you want to continue?",onYes:_.bind(function(){t()},this)}):t()},this)).fail(function(){i.attr("disabled",!1),PJQ.notifications.notify.errorNotify({message:"Something went wrong."})})},addSelectedContacts:function(e){this.options.projectMessagingView.addSelectedContacts(e),this.$(".count-selected-contacts").html(this.options.projectMessagingView.options.selectedContacts.length),this.options.projectMessagingView.stats.unsentCount+=_.size(e),this.options.projectMessagingView.renderContactStats(),this.options.projectMessagingView.renderView(),this.$(".invite-send").prop("disabled",0===this.options.projectMessagingView.options.selectedContacts.length)},addParticipantsFromThisProject:function(){this.options.onAddFromThisProject(this.options.project.inviteSettings),this.removeModal()},addParticipantsFromProject:function(){var e=this.options.project.getProjectStatusList();new PJQ.views.projectParticipants.AddParticipantsFromProjectModal({model:this.options.project,isBidFormsEnabled:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_BID_FORMS),projectResponses:e,isReturnContactIds:!0,onSave:_.bind(function(e){this.addSelectedContacts(e)},this)})},simpleSearch:function(){var e=!0;PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_HIDE_UNION_STATUS)&&(e=!PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.IS_HIDE_UNION_STATUS)),new PJQ.views.projectParticipants.AddParticipantsModal({model:this.options.project,isDirectoryEnabled:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_DIRECTORY),isUnionStatusEnabled:e,isReturnContactIds:!0,onSave:_.bind(function(e){this.addSelectedContacts(e)},this)})},quickSearch:function(){new PJQ.views.contacts.SelectContactsModal({isSingleChoice:!1,onSave:_.bind(function(e){this.options.project.addParticipantsById(e,_.bind(function(){this.addSelectedContacts(_.map(e,function(e){return e.get("contactId")}))},this))},this)})},detailedSearch:function(e){$('form[name="modal-add-participants"]').remove();var t={onSave:_.bind(function(e){this.addSelectedContacts(e)},this)};$(e.currentTarget).hasClass("btn-detailed-search-new")&&!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_ADDRESSBOOK)&&(t.isWrapForm=!1,t.wrapFormName=null,t.isUseNewAddressBook=!0),new PJQ.views.projects.AddParticipantsDetailedModal(t)},viewSelected:function(){0<_.size(this.options.projectMessagingView.options.selectedContacts)&&(this.options.onViewSelected(),this.removeModal())}}),PJQ.views.projectInvites.ProjectInvitesModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Project-Invites"),minWidth:"60%",onSend:_.noop,onClose:_.noop,projects:[],emailTemplates:[]},events:{"click .project-invites-add-contacts":"addContacts","click .btn-remove-contact":"removeContact","click .project-invites-jump-step":"jumpStep","click .preview-invite":"previewInvite","click .remove-invite":"removeInvite","click .invites-close":"onClose","click .invites-send":"onSend","click .btn-detailed-search-new":"detailedSearch"},beforeModalCreated:function(){this.contacts=[],this.selectedContacts=[],this.selectedCompanies=[],this.selectedGroups=[]},beforeRender:function(){this.renderData={projects:this.options.projects,emailTemplates:this.options.emailTemplates,responseDueLabel:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.MESSAGE_RESPONSE_DUE_LABEL)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.MESSAGE_RESPONSE_DUE_LABEL):"Response Due"}},afterRender:function(){this.contactTable=new PJQ.views.dataTables.DataTable({el:this.$(".contact-list"),data:[],isHideSearch:!0,order:[],columns:[{data:"attributes.companyName",title:"Company Name",orderable:!1},{data:"attributes.contactName",title:"Contact Name",orderable:!1},{data:"attributes.phone",title:"Phone",orderable:!1},{data:"attributes.email",title:"Email",orderable:!1},{title:"",render:function(){return'<button type="button" class="btn btn-danger btn-remove-contact ml-2" title="Remove Contact"><i class="fal fa-trash"></i></button>'},width:"120px",orderable:!1,searchable:!1,className:"text-center",visible:!0}],dom:'<"top"<"clear">>rt<"bottom"p<"clear">>',language:{emptyTable:"No contacts have been selected"}}),$("#project-invite-step-2").on("shown.bs.collapse",_.bind(function(){this.manageButtonStates(_.size(this.contactTable.dataTable.data())),2===this.step&&0===this.$("#projectInvitesAccordion div.collapse.show").length&&this.$("#project-accordion-"+this.options.projects[0].get("projectId")).collapse("show")},this)),$("div.collapse.project-accordion-step").on("shown.bs.collapse",_.bind(function(e){var i=parseInt($(e.currentTarget).data("projectId")),t=_.filter(this.options.projects,_.bind(function(e,t){return i===e.get("projectId")},this))[0];t.inviteSettings.isShown||(t.inviteSettings.isShown=!0,"ASAP"===t.get("rDueText")?(t.inviteSettings.responseDueAsapCheckbox.prop("checked",!0),t.inviteSettings.responseDueInput.val("").prop("disabled",!0)):0<_.size(t.get("rDueText"))&&t.inviteSettings.responseDueInput.val(PJQ.helpers.dateHelpers.getDateString(PJQ.helpers.dateHelpers.parseDateString(t.get("rDueText"),!1),PJQ.helpers.dateHelpers.dateFormats.DATE_YMD)),this.messageTypeSelected(t.get("projectId"),this.options.emailTemplates[0].get("templateKey")))},this)),_.each(this.options.projects,_.bind(function(t){t.inviteSettings={},t.inviteSettings.isShown=!1,t.inviteSettings.messageSubject=this.options.emailTemplates[0].get("subjectTemplate"),t.inviteSettings.messageType=this.options.emailTemplates[0].get("templateKey"),t.inviteSettings.responseType=this.options.emailTemplates[0].get("projectMessageType"),t.inviteSettings.sendOptions={},t.inviteSettings.sendOptions.sendEmail=!0,t.inviteSettings.sendOptions.sendFaxIfNoEmail
1=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_NO_EMAIL),t.inviteSettings.sendOptions.sendFaxIfEmailFails=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_EMAIL_FAILED),t.inviteSettings.sendOptions.sendFaxAlways=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_ALWAYS),t.inviteSettings.messageBody=this.options.emailTemplates[0].get("defaultTextTemplate"),t.inviteSettings.responseDue="ASAP"===t.get("rDueText")?"ASAP":t.get("rDueText"),t.inviteSettings.messageSubjectInput=this.$("#project-accordion-"+t.get("projectId")+" input.message-subject"),t.inviteSettings.messageSubjectInput.on("change",_.bind(function(){t.inviteSettings.messageSubject=t.inviteSettings.messageSubjectInput.val()},this)),t.inviteSettings.responseDueInput=this.$("#project-accordion-"+t.get("projectId")+" input.response-due"),t.inviteSettings.responseDueInput.on("change",_.bind(function(){t.inviteSettings.responseDue=t.inviteSettings.responseDueAsapCheckbox.prop("checked")?"ASAP":t.inviteSettings.responseDueInput.val()},this)),t.inviteSettings.responseDueAsapCheckbox=this.$("#project-accordion-"+t.get("projectId")+" input.response-due-asap"),t.inviteSettings.responseDueAsapCheckbox.on("click",_.bind(function(){t.inviteSettings.responseDue=t.inviteSettings.responseDueAsapCheckbox.prop("checked")?"ASAP":t.inviteSettings.responseDueInput.val(),t.inviteSettings.responseDueInput.val("").prop("disabled",t.inviteSettings.responseDueAsapCheckbox.prop("checked"))},this)),t.inviteSettings.messageTypeSelectPicker=new PJQ.inputs.Selectpicker({el:this.$("#project-accordion-"+t.get("projectId")+" select.message-type"),dropupAuto:!1,onChange:_.bind(function(){this.messageTypeSelected(t.get("projectId"),t.inviteSettings.messageTypeSelectPicker.getValue())},this)}),t.inviteSettings.responseTypeSelectPicker=new PJQ.inputs.Selectpicker({el:this.$("#project-accordion-"+t.get("projectId")+" select.response-type"),onChange:_.bind(function(e){t.inviteSettings.responseType=e},this)});var e=["1"];PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_FAX)?(PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_NO_EMAIL)&&(this.$("#project-accordion-"+t.get("projectId")+' select.send-options option[value="2"]').prop("selected",!0),e.push("2")),PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_EMAIL_FAILED)&&(this.$("#project-accordion-"+t.get("projectId")+' select.send-options option[value="3"]').prop("selected",!0),e.push("3")),PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_MESSAGING_SEND_OPTIONS_FAX_ALWAYS)&&(this.$("#project-accordion-"+t.get("projectId")+' select.send-options option[value="4"]').prop("selected",!0),e.push("4"))):(this.$("#project-accordion-"+t.get("projectId")+' select.send-options option[value="2"]').prop("hidden",!0),this.$("#project-accordion-"+t.get("projectId")+' select.send-options option[value="3"]').prop("hidden",!0),this.$("#project-accordion-"+t.get("projectId")+' select.send-options option[value="4"]').prop("hidden",!0)),t.inviteSettings.sendOptionsSelectPicker=new PJQ.inputs.SelectpickerProjectMessageSendOptions({el:this.$("#project-accordion-"+t.get("projectId")+" select.send-options"),onChange:_.bind(function(e){t.inviteSettings.sendFaxIfNoEmail=-1!==e.indexOf("2"),t.inviteSettings.sendFaxIfEmailFails=-1!==e.indexOf("3"),t.inviteSettings.sendFaxAlways=-1!==e.indexOf("4")},this),isMultiple:!0,isIntChoices:!1,hideDisabled:!1,noneSelectedText:"No Options Selected",defaultValue:["1"],exclusiveChoices:["4"]}),t.inviteSettings.messageBodyHTMLEditor=new PJQ.inputs.HTMLEditor({el:this.$("#project-accordion-"+t.get("projectId")+" div.invite-message"),onInit:_.bind(function(){$('<div class="note-file btn-group"><button type="button" class="btn btn-default btn-sm btn-small tokenBtn" title="Token List" data-event="something" tabindex="-1">Tokens</button></div>').prependTo(this.$(".note-toolbar")),this.$(".tokenBtn").tooltip({container:"body",placement:"bottom"}),this.$(".tokenBtn").click(function(e){})},this),onChange:_.bind(function(e){t.inviteSettings.messageBody=e},this),defaultValue:this.options.emailTemplates[0].get("defaultTextTemplate")})},this)),this.$(".project-invites-selected-project-count").text(_.size(this.options.projects)),this.manageButtonStates(0),this.goToStep(1)},onClose:function(){"function"==typeof this.options.onClose&&this.options.onClose(),this.removeModal()},detailedSearch:function(e){$('form[name="modal-add-participants"]').remove();var t={onSave:_.bind(function(e,t){this.selectedContacts=_.union(this.selectedContacts,t.selectedContacts),this.selectedCompanies=_.union(this.selectedCompanies,t.selectedCompanies),this.selectedGroups=_.union(this.selectedGroups,t.selectedGroups),0<_.size(e)&&new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts"},{endpoint:"list"}],[{parameter:"contactIds",value:e}])}).get().done(_.bind(function(e){0<_.size(e)&&(_.each(e,function(e){this.contacts.push(new PJQ.models.contacts.Contact(e))},this),this.contactTable.resetData(this.contacts),this.contactTable.dataTable.draw(),this.manageButtonStates(_.size(this.contactTable.dataTable.data())))},this)).fail(function(e,t,i){})},this),disableContacts:_.map(this.contactTable.dataTable.data(),function(e){return e.attributes.contactId})};$(e.currentTarget).hasClass("btn-detailed-search-new")&&!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_NEW_ADDRESSBOOK)&&(t.isWrapForm=!1,t.wrapFormName=null,t.isUseNewAddressBook=!0,t.isMultipleProjects=!0,t.projects=this.options.projects),new PJQ.views.projects.AddParticipantsDetailedModal(t)},onSend:function(){var i=[];_.each(this.options.projects,_.bind(function(e){var t={};t.projectId=e.get("projectId"),t.messageSubject=e.inviteSettings.messageSubject,t.messageBody=e.inviteSettings.messageBody,t.responseType=e.inviteSettings.responseType,t.templateKey=e.inviteSettings.messageType,t.responseDue=e.inviteSettings.responseDue,t.sendEmail=!0,t.sendFax=e.inviteSettings.sendFaxAlways,t.sendFaxIfNoEmail
1=e.inviteSettings.sendFaxIfNoEmail,t.sendFaxIfEmailFails=e.inviteSettings.sendFaxIfEmailFails,i.push(t)},this));var e=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"sendprojectmessages"}]);new PJQ.ajax.Request({endpoint:e,data:{contacts:_.map(this.contactTable.dataTable.data(),function(e){return e.get("contactId")}),projectMessageSendOptions:i}}).post().done(_.bind(function(e){"function"==typeof this.options.onSend&&this.options.onSend(),new PJQ.views.BaseModal({header:"Project Invites Sent",body:"Your project invites are now being processed for broadcast.",isShowCancelButton:!1}),this.removeModal()},this)).fail(function(){})},jumpStep:function(e){var t=parseInt($(e.currentTarget).data("step").toString());this.goToStep(t)},goToStep:function(e){this.step=e;var t=$(".step-"+this.step.toString()),i=$(".step-header-"+this.step.toString());this.$("[class*=step-]").not(t).collapse("hide"),this.$("[class*=step-header-]").not(i).removeClass("text-primary").addClass("text-dark op-4"),i.removeClass("text-dark op-4").addClass("text-primary"),1===this.step?(this.$(".project-invites-selected-contact-count").parent().removeClass("text-dark op-4").addClass("text-info"),this.$(".project-invites-selected-project-count").parent().removeClass("text-info").addClass("text-dark op-4")):2===this.step&&(this.$(".project-invites-selected-contact-count").parent().removeClass("text-info").addClass("text-dark op-4"),this.$(".project-invites-selected-project-count").parent().removeClass("text-dark op-4").addClass("text-info")),t.collapse("show")},addContacts:function(){new PJQ.views.contacts.SelectContactsModal({context:PJQ.constants.contacts.contexts.CONTACTS,isSingleChoice:!1,subtitle:"Add Contacts to Project Invites",disableContacts:_.map(this.contactTable.dataTable.data(),function(e){return{id:e.attributes.contactId}}),onSave:_.bind(function(e){this.contactTable.dataTable.rows.add(e),this.contactTable.dataTable.draw(),this.manageButtonStates(_.size(this.contactTable.dataTable.data()))},this)})},removeContact:function(e){var t=this.contactTable.getRow($(e.currentTarget).closest("tr")),i="Are you sure you want to remove "+t.data().get("companyName")+" from the list?";1===this.contactTable.dataTable.data().length&&(i+=" This is the last contact in the invite list, and if you remove it it will cancel this process."),new PJQ.views.BaseModal({header:"Confirm Remove Contact",okButtonText:"Remove",body:i,isShowCancelButton:!0,onOk:_.bind(function(){t.remove().draw(),this.manageButtonStates(_.size(this.contactTable.dataTable.data())),0===this.contactTable.dataTable.data().length&&this.onClose()},this)})},manageButtonStates:function(e){this.$(".project-invites-selected-contact-count").text(e),this.$(".invites-send").prop("disabled",0===e||1===this.step),this.$(".project-invites-jump-step").prop("disabled",0===e)},messageTypeSelected:function(t,i){var e=_.filter(this.options.emailTemplates,function(e){return e.get("templateKey")===i})[0],s=_.filter(this.options.projects,function(e){return e.get("projectId")===t})[0];s.inviteSettings.emailTemplate=e,s.inviteSettings.messageType=e.get("templateKey"),s.inviteSettings.messageSubject=e.get("subjectTemplate"),s.inviteSettings.messageSubjectInput.val(e.get("subjectTemplate")),s.inviteSettings.responseTypeSelectPicker.setValue(e.get("projectMessageType")?e.get("projectMessageType"):"NONE"),s.inviteSettings.messageBodyHTMLEditor.setValue(e.get("defaultTextTemplate")),s.inviteSettings.messageBody=e.get("defaultTextTemplate")},previewInvite:function(e){var t=parseInt($(e.currentTarget).closest("div.project-accordion-step").data("projectId")),i=_.filter(this.options.projects,_.bind(function(e){return e.get("projectId")===t},this))[0],s=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:i.get("projectId")},{endpoint:"projectmessagepreview"}],[{parameter:"templateKey",value:i.inviteSettings.emailTemplate.get("templateKey")}]);new PJQ.ajax.Request({endpoint:s}).post().done(_.bind(function(e){new PJQ.views.projectInvites.ProjectInvitePreviewModal({tokens:e,inviteSettings:i.inviteSettings,project:i})},this)).fail(function(){PJQ.notifications.notify.errorNotify({message:"Something went wrong."})})},removeInvite:function(e){var t=this.$(e.currentTarget).closest("div.project-accordion-step").data("projectId"),i=_.filter(this.options.projects,_.bind(function(e){return e.get("projectId")===t},this))[0],s="Are you sure you want to remove this project from the invite list?";1===_.size(this.options.projects)&&(s+=" This is the last project in the invite list, and if you remove it it will cancel this process."),new PJQ.views.BaseModal({header:"Confirm Remove",okButtonText:"Remove",body:s,isShowCancelButton:!0,onOk:_.bind(function(){this.options.projects=_.filter(this.options.projects,_.bind(function(e){return e.get("projectId")!==t},this)),this.$("#project-accordion-"+i.get("projectId")).parent().remove(),0===_.size(this.options.projects)?this.onClose():this.$("#project-accordion-"+this.options.projects[0].get("projectId")).collapse("show")},this)})}}),PJQ.views.projectInvites.ProjectInvitePreviewModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Project-Invite-Preview"),minWidth:"60%",tokens:null,inviteSettings:null,project:null},events:{"click .preview-export":"export"},afterRender:function(){var e=this.options.inviteSettings.messageSubject,t=this.options.inviteSettings.emailTemplate.get("bodyTemplate");this.options.tokens.projectMessage.responseType="N/A","PROJECT"===this.options.inviteSettings.responseType?this.options.tokens.projectMessage.responseType="ACCEPT/DECLINE":"MESSAGE"===this.options.inviteSettings.responseType&&(this.options.tokens.projectMessage.responseType="YES/NO"),this.options.tokens.projectMessage.bidDueDate=this.options.inviteSettings.responseDue,this.options.tokens.projectMessage.responseDueDate=this.options.inviteSettings.responseDue,this.options.tokens.projectMessage.messageBody=this.translateTokens(this.options.inviteSettings.messageBody),this.$(".message-subject").html(this.translateTokens(e)),this.$(".message-body").html(this.translateTokens(t))}
1,translateTokens:function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/\[Sender.Username\]/g,this.options.tokens.sender.username)).replace(/\[Sender.Company\]/g,this.options.tokens.sender.company)).replace(/\[Sender.Contact\]/g,this.options.tokens.sender.contact)).replace(/\[Sender.Address1\]/g,this.options.tokens.sender.address1)).replace(/\[Sender.Address2\]/g,this.options.tokens.sender.address2)).replace(/\[Sender.City\]/g,this.options.tokens.sender.city)).replace(/\[Sender.State\]/g,this.options.tokens.sender.state)).replace(/\[Sender.Zip\]/g,this.options.tokens.sender.zip)).replace(/\[Sender.Country\]/g,this.options.tokens.sender.country)).replace(/\[Sender.Phone\]/g,this.options.tokens.sender.phone)).replace(/\[Sender.PhoneExtension\]/g,this.options.tokens.sender.phoneExtension)).replace(/\[Sender.Fax\]/g,this.options.tokens.sender.fax)).replace(/\[Sender.Cell\]/g,this.options.tokens.sender.cell)).replace(/\[Sender.Email\]/g,this.options.tokens.sender.email)).replace(/\[Sender.EmailLogoURL\]/g,this.options.tokens.sender.emailLogoURL)).replace(/\[Sender.FullAddress\]/g,this.options.tokens.sender.fullAddress)).replace(/\[Sender.Email2\]/g,this.options.tokens.sender.email2)).replace(/\[Sender.Signature\]/g,this.options.tokens.sender.signature)).replace(/\[Sender.UserType\]/g,this.options.tokens.sender.userType)).replace(/\[SenderPM.Username\]/g,this.options.tokens.senderPM.username)).replace(/\[SenderPM.Company\]/g,this.options.tokens.senderPM.company)).replace(/\[SenderPM.Contact\]/g,this.options.tokens.senderPM.contact)).replace(/\[SenderPM.Address1\]/g,this.options.tokens.senderPM.address1)).replace(/\[SenderPM.Address2\]/g,this.options.tokens.senderPM.address2)).replace(/\[SenderPM.City\]/g,this.options.tokens.senderPM.city)).replace(/\[SenderPM.State\]/g,this.options.tokens.senderPM.state)).replace(/\[SenderPM.Zip\]/g,this.options.tokens.senderPM.zip)).replace(/\[SenderPM.Country\]/g,this.options.tokens.senderPM.country)).replace(/\[SenderPM.Phone\]/g,this.options.tokens.senderPM.phone)).replace(/\[SenderPM.PhoneExtension\]/g,this.options.tokens.senderPM.phoneExtension)).replace(/\[SenderPM.Fax\]/g,this.options.tokens.senderPM.fax)).replace(/\[SenderPM.Cell\]/g,this.options.tokens.senderPM.cell)).replace(/\[SenderPM.Email\]/g,this.options.tokens.senderPM.email)).replace(/\[SenderPM.EmailLogoURL\]/g,this.options.tokens.senderPM.emailLogoURL)).replace(/\[SenderPM.FullAddress\]/g,this.options.tokens.senderPM.fullAddress)).replace(/\[SenderPM.Email2\]/g,this.options.tokens.senderPM.email2)).replace(/\[SenderPM.UserType\]/g,this.options.tokens.senderPM.userType)).replace(/\[ProjectContact2.Username\]/g,this.options.tokens.projectContact2.username)).replace(/\[ProjectContact2.Company\]/g,this.options.tokens.projectContact2.company)).replace(/\[ProjectContact2.Contact\]/g,this.options.tokens.projectContact2.contact)).replace(/\[ProjectContact2.Address1\]/g,this.options.tokens.projectContact2.address1)).replace(/\[ProjectContact2.Address2\]/g,this.options.tokens.projectContact2.address2)).replace(/\[ProjectContact2.City\]/g,this.options.tokens.projectContact2.city)).replace(/\[ProjectContact2.State\]/g,this.options.tokens.projectContact2.state)).replace(/\[ProjectContact2.Zip\]/g,this.options.tokens.projectContact2.zip)).replace(/\[ProjectContact2.Country\]/g,this.options.tokens.projectContact2.country)).replace(/\[ProjectContact2.Phone\]/g,this.options.tokens.projectContact2.phone)).replace(/\[ProjectContact2.PhoneExtension\]/g,this.options.tokens.projectContact2.phoneExtension)).replace(/\[ProjectContact2.Fax\]/g,this.options.tokens.projectContact2.fax)).replace(/\[ProjectContact2.Cell\]/g,this.options.tokens.projectContact2.cell)).replace(/\[ProjectContact2.Email\]/g,this.options.tokens.projectContact2.email)).replace(/\[ProjectContact2.EmailLogoURL\]/g,this.options.tokens.projectContact2.emailLogoURL)).replace(/\[ProjectContact2.FullAddress\]/g,this.options.tokens.projectContact2.fullAddress)).replace(/\[ProjectContact2.Email2\]/g,this.options.tokens.projectContact2.email2)).replace(/\[ProjectContact2.Signature\]/g,this.options.tokens.projectContact2.signature)).replace(/\[ProjectContact2.UserType\]/g,this.options.tokens.projectContact2.userType)).replace(/\[Recipient.Company\]/g,this.options.tokens.recipient.company)).replace(/\[Recipient.Contact\]/g,this.options.tokens.recipient.contact)).replace(/\[Recipient.FirstName\]/g,this.options.tokens.recipient.firstName)).replace(/\[Recipient.Title\]/g,this.options.tokens.recipient.title)).replace(/\[Recipient.Address1\]/g,this.options.tokens.recipient.address1)).replace(/\[Recipient.Address2\]/g,this.options.tokens.recipient.address2)).replace(/\[Recipient.City\]/g,this.options.tokens.recipient.city)).replace(/\[Recipient.State\]/g,this.options.tokens.recipient.state)).replace(/\[Recipient.Zip\]/g,this.options.tokens.recipient.zip)).replace(/\[Recipient.Country\]/g,this.options.tokens.recipient.country)).replace(/\[Recipient.Phone\]/g,this.options.tokens.recipient.phone)).replace(/\[Recipient.PhoneExtension\]/g,this.options.tokens.recipient.phoneExtension)).replace(/\[Recipient.Fax\]/g,this.options.tokens.recipient.fax)).replace(/\[Recipient.Email\]/g,this.options.tokens.recipient.email)).replace(/\[Recipient.EmailLogoURL\]/g,this.options.tokens.recipient.emailLogoURL)).replace(/\[Recipient.FullAddress\]/g,this.options.tokens.recipient.fullAddress)).replace(/\[Portal.URL\]/g,this.options.tokens.portal.url)).replace(/\[Portal.Domain\]/g,this.options.tokens.portal.domain)).replace(/\[DateTime.Today\]/g,this.options.tokens.dateTime.today)).replace(/\[ProjectMessage.AccessKey\]/g,this.options.tokens.projectMessage.accessKey)).replace(/\[ProjectMessage.RSVPURL\]/g,this.options.tokens.projectMessage.rsvpurl)).replace(/\[ProjectMessage.RecipientGroupList\]/g,this.options.tokens.projectMessage.recipientGroupList)).replace(/\[ProjectMessage.RecipientGroupListComma\]/g,this.options.tokens.projectMessage.recipientGroupListComma)).replace(/\[ProjectMessage.ResponseDueLabel\]/g,this.options.tokens.projectMessage.responseDueLabel)).replace(/\[ProjectMessage.MessageResponseDueLabel\]/g,this.options.tokens.projectMessage.messageResponseDueLabel)).replace(/\[ProjectMessage.ResponseDueDate\]/g,this.options.tokens.projectMessage.responseDueDate)).replace(/\[ProjectMessage.ResponseDueTime\]/g,this.options.tokens.projectMessage.ResponseDueTime)).replace(/\[ProjectMessage.MessageSubject\]/g,this.options.tokens.projectMessage.messageSubject)).replace(/\[ProjectMessage.MessageBody\]/g,this.options.tokens.projectMessage.messageBody)).replace(/\[ProjectMessage.SentOnDate\]/g,this.options.tokens.projectMessage.sentOnDate)).replace(/\[ProjectMessage.EstCompleteDate\]/g,this.options.tokens.projectMessage.estCompleteDate)).replace(/\[ProjectMessage.EstStartDate\]/g,this.options.tokens.projectMessage.estStartDate)).replace(/\[ProjectMessage.MessageType\]/g,this.options.tokens.projectMessage.messageType)).replace(/\[ProjectMessage.ResponseType\]/g,this.options.tokens.projectMessage.responseType)).replace(/\[ProjectMessage.MessageName\]/g,this.options.tokens.projectMessage.messageName)).replace(/\[Project.ProjectId\]/g,this.options.tokens.project.projectId)).replace(/\[Project.Name\]/g,this.options.tokens.project.name)).replace(/\[Project.Address1\]/g,this.options.tokens.project.address1)).replace(/\[Project.Address2\]/g,this.options.tokens.project.address2)).replace(/\[Project.City\]/g,this.options.tokens.project.city)).replace(/\[Project.State\]/g,this.options.tokens.project.state)).replace(/\[Project.Zip\]/g,this.options.tokens.project.zip)).replace(/\[Project.Country\]/g,this.options.tokens.project.country)).replace(/\[Project.Notes\]/g,this.options.tokens.project.notes)).replace(/\[Project.ResponseDueLabel\]/g,this.options.tokens.project.responseDueLabel)).replace(/\[Project.MessageResponseDueLabel\]/g,this.options.tokens.project.messageResponseDueLabel)).replace(/\[Project.ResponseDueDate\]/g,this.options.tokens.project.responseDueDate)).replace(/\[Project.ResponseDueTime\]/g,this.options.tokens.project.responseDueTime)).replace(/\[Project.ResponseDueShortTime\]/g,this.options.tokens.project.responseDueShortTime)).replace(/\[Project.ResponseDueTimeZone\]/g,this.options.tokens.project.responseDueTimeZone)).replace(/\[Project.ResponseDueDateWithBy\]/g,this.options.tokens.project.responseDueDateWithBy)).replace(/\[Project.StartDate\]/g,this.options.tokens.project.startDate)).replace(/\[Project.EndDate\]/g,this.options.tokens.project.endD
1ate)).replace(/\[Project.ProjectStatus\]/g,this.options.tokens.project.projectStatus)).replace(/\[Project.CustomFieldLabel1\]/g,this.options.tokens.project.customFieldLabel1)).replace(/\[Project.CustomFieldValue1\]/g,this.options.tokens.project.customFieldValue1)).replace(/\[Project.CustomFieldLabel2\]/g,this.options.tokens.project.customFieldLabel2)).replace(/\[Project.CustomFieldValue2\]/g,this.options.tokens.project.customFieldValue2)).replace(/\[Project.CustomFieldLabel3\]/g,this.options.tokens.project.customFieldLabel3)).replace(/\[Project.CustomFieldValue3\]/g,this.options.tokens.project.customFieldValue3)).replace(/\[Project.CustomFieldLabel4\]/g,this.options.tokens.project.customFieldLabel4)).replace(/\[Project.CustomFieldValue4\]/g,this.options.tokens.project.customFieldValue4)).replace(/\[Project.CustomFieldLabel5\]/g,this.options.tokens.project.customFieldLabel5)).replace(/\[Project.CustomFieldValue5\]/g,this.options.tokens.project.customFieldValue5)).replace(/\[Project.CustomFieldLabel6\]/g,this.options.tokens.project.customFieldLabel6)).replace(/\[Project.CustomFieldValue6\]/g,this.options.tokens.project.customFieldValue6)).replace(/\[Project.CustomFieldLabel7\]/g,this.options.tokens.project.customFieldLabel7)).replace(/\[Project.CustomFieldValue7\]/g,this.options.tokens.project.customFieldValue7)).replace(/\[Project.CustomFieldLabel8\]/g,this.options.tokens.project.customFieldLabel8)).replace(/\[Project.CustomFieldValue8\]/g,this.options.tokens.project.customFieldValue8)).replace(/\[Project.CustomFieldLabel9\]/g,this.options.tokens.project.customFieldLabel9)).replace(/\[Project.CustomFieldValue9\]/g,this.options.tokens.project.customFieldValue9)).replace(/\[Project.CustomFieldLabel10\]/g,this.options.tokens.project.customFieldLabel10)).replace(/\[Project.CustomFieldValue10\]/g,this.options.tokens.project.customFieldValue10)).replace(/\[Project.CustomFieldLabel11\]/g,this.options.tokens.project.customFieldLabel11)).replace(/\[Project.CustomFieldValue11\]/g,this.options.tokens.project.customFieldValue11)).replace(/\[Project.CustomFieldLabel12\]/g,this.options.tokens.project.customFieldLabel12)).replace(/\[Project.CustomFieldValue12\]/g,this.options.tokens.project.customFieldValue12)).replace(/\[Project.CustomFieldLabel13\]/g,this.options.tokens.project.customFieldLabel13)).replace(/\[Project.CustomFieldValue13\]/g,this.options.tokens.project.customFieldValue13)).replace(/\[Project.CustomFieldLabel14\]/g,this.options.tokens.project.customFieldLabel14)).replace(/\[Project.CustomFieldValue14\]/g,this.options.tokens.project.customFieldValue14)).replace(/\[Project.CustomFieldLabel15\]/g,this.options.tokens.project.customFieldLabel15)).replace(/\[Project.CustomFieldValue15\]/g,this.options.tokens.project.customFieldValue15)).replace(/\[Project.CustomFieldLabel16\]/g,this.options.tokens.project.customFieldLabel16)).replace(/\[Project.CustomFieldValue16\]/g,this.options.tokens.project.customFieldValue16)).replace(/\[Project.CustomFieldLabel17\]/g,this.options.tokens.project.customFieldLabel17)).replace(/\[Project.CustomFieldValue17\]/g,this.options.tokens.project.customFieldValue17)).replace(/\[Project.CustomFieldLabel18\]/g,this.options.tokens.project.customFieldLabel18)).replace(/\[Project.CustomFieldValue18\]/g,this.options.tokens.project.customFieldValue18)).replace(/\[Project.CustomFieldLabel19\]/g,this.options.tokens.project.customFieldLabel19)).replace(/\[Project.CustomFieldValue19\]/g,this.options.tokens.project.customFieldValue19)).replace(/\[Project.CustomFieldLabel20\]/g,this.options.tokens.project.customFieldLabel20)).replace(/\[Project.CustomFieldValue20\]/g,this.options.tokens.project.customFieldValue20)).replace(/\[Project.CustomFieldLabel21\]/g,this.options.tokens.project.customFieldLabel21)).replace(/\[Project.CustomFieldValue21\]/g,this.options.tokens.project.customFieldValue21)).replace(/\[Project.CustomFieldLabel22\]/g,this.options.tokens.project.customFieldLabel22)).replace(/\[Project.CustomFieldValue22\]/g,this.options.tokens.project.customFieldValue22)).replace(/\[Project.CustomFieldLabel23\]/g,this.options.tokens.project.customFieldLabel23)).replace(/\[Project.CustomFieldValue23\]/g,this.options.tokens.project.customFieldValue23)).replace(/\[Project.CustomFieldLabel24\]/g,this.options.tokens.project.customFieldLabel24)).replace(/\[Project.CustomFieldValue24\]/g,this.options.tokens.project.customFieldValue24)).replace(/\[Project.CustomFieldLabel25\]/g,this.options.tokens.project.customFieldLabel25)).replace(/\[Project.CustomFieldValue25\]/g,this.options.tokens.project.customFieldValue25)).replace(/\[Project.CustomFieldLabel26\]/g,this.options.tokens.project.customFieldLabel26)).replace(/\[Project.CustomFieldValue26\]/g,this.options.tokens.project.customFieldValue26)).replace(/\[Project.CustomFieldLabel27\]/g,this.options.tokens.project.customFieldLabel27)).replace(/\[Project.CustomFieldValue27\]/g,this.options.tokens.project.customFieldValue27)).replace(/\[Project.CustomFieldLabel28\]/g,this.options.tokens.project.customFieldLabel28)).replace(/\[Project.CustomFieldValue28\]/g,this.options.tokens.project.customFieldValue28)).replace(/\[Project.CustomFieldLabel29\]/g,this.options.tokens.project.customFieldLabel29)).replace(/\[Project.CustomFieldValue29\]/g,this.options.tokens.project.customFieldValue29)).replace(/\[Project.CustomFieldLabel30\]/g,this.options.tokens.project.customFieldLabel30)).replace(/\[Project.CustomFieldValue30\]/g,this.options.tokens.project.customFieldValue30)).replace(/\[Project.CustomFieldLabel31\]/g,this.options.tokens.project.customFieldLabel31)).replace(/\[Project.CustomFieldValue31\]/g,this.options.tokens.project.customFieldValue31)).replace(/\[Project.CustomFieldLabel32\]/g,this.options.tokens.project.customFieldLabel32)).replace(/\[Project.CustomFieldValue32\]/g,this.options.tokens.project.customFieldValue32)).replace(/\[Project.CustomFieldLabel33\]/g,this.options.tokens.project.customFieldLabel33)).replace(/\[Project.CustomFieldValue33\]/g,this.options.tokens.project.customFieldValue33)).replace(/\[Project.CustomFieldLabel34\]/g,this.options.tokens.project.customFieldLabel34)).replace(/\[Project.CustomFieldValue34\]/g,this.options.tokens.project.customFieldValue34)).replace(/\[Project.CustomFieldLabel35\]/g,this.options.tokens.project.customFieldLabel35)).replace(/\[Project.CustomFieldValue35\]/g,this.options.tokens.project.customFieldValue35)).replace(/\[Project.CustomFieldLabel36\]/g,this.options.tokens.project.customFieldLabel36)).replace(/\[Project.CustomFieldValue36\]/g,this.options.tokens.project.customFieldValue36)).replace(/\[Project.CustomFieldLabel37\]/g,this.options.tokens.project.customFieldLabel37)).replace(/\[Project.CustomFieldValue37\]/g,this.options.tokens.project.customFieldValue37)).replace(/\[Project.CustomFieldLabel38\]/g,this.options.tokens.project.customFieldLabel38)).replace(/\[Project.CustomFieldValue38\]/g,this.options.tokens.project.customFieldValue38)).replace(/\[Project.CustomFieldLabel39\]/g,this.options.tokens.project.customFieldLabel39)).replace(/\[Project.CustomFieldValue39\]/g,this.options.tokens.project.customFieldValue39)).replace(/\[Project.CustomFieldValue26_CompanyName\]/g,this.options.tokens.project.customFieldValue26_CompanyName)).replace(/\[Project.CustomFieldValue26_ContactName\]/g,this.options.tokens.project.customFieldValue26_ContactName)).replace(/\[Project.CustomFieldValue26_ContactTitle\]/g,this.options.tokens.project.customFieldValue26_ContactTitle)).replace(/\[Project.CustomFieldValue26_Address26\]/g,this.options.tokens.project.customFieldValue26_Address26)).replace(/\[Project.CustomFieldValue26_Address2\]/g,this.options.tokens.project.customFieldValue26_Address2)).replace(/\[Project.CustomFieldValue26_City\]/g,this.options.tokens.project.customFieldValue26_City)).replace(/\[Project.CustomFieldValue26_StateProvince\]/g,this.options.tokens.project.customFieldValue26_StateProvince)).replace(/\[Project.CustomFieldValue26_PostalCode\]/g,this.options.tokens.project.customFieldValue26_PostalCode)).replace(/\[Project.CustomFieldValue26_Country\]/g,this.options.tokens.project.customFieldValue26_Country)).replace(/\[Project.CustomFieldValue26_Phone\]/g,this.options.tokens.project.customFieldValue26_Phone)).replace(/\[Project.CustomFieldValue26_Fax\]/g,this.options.tokens.project.customFieldValue26_Fax)).replace(/\[Project.CustomFieldValue26_Cell\]/g,this.options.tokens.project.customFieldValue26_Cell)).replace(/\[Project.CustomFieldValue26_Email\]/g,this.options.tokens.project.customFieldValue26_Email)).replace(/\[Project.CustomFieldValue27_CompanyName\]/g,this.options.tokens.project.customFieldValue27_CompanyName)).replace(/\[Project.CustomFieldValue27_ContactName\]/g,this.options.tokens.project.customFieldValue27_ContactName)).replace(/\[Project.CustomFieldValue27_ContactTitle\]/g,this.options.tokens.project.customFieldValue27_ContactTitle)).replace(/\[Project.CustomFieldValue27_Address27\]/g,this.options.tokens.project.customFieldValue27_Address27)).replace(/\[Project.CustomFieldValue27_Address2\]/g,this.options.tokens.project.customFieldValue27_Address2)).replace(/\[Project.CustomFieldValue27_City\]/g,this.options.tokens.project.customFieldValue27_City)).replace(/\[Project.CustomFieldValue27_StateProvince\]/g,this.options.tokens.project.customFieldValue27_StateProvince)).replace(/\[Project.CustomFieldValue27_PostalCode\]/g,this.options.tokens.project.customFieldValue27_PostalCode)).replace(/\[Project.CustomFieldValue27_Country\]/g,this.options.tokens.project.customFieldValue27_Country)).replace(/\[Project.CustomFieldValue27_Phone\]/g,this.options.tokens.project.customFieldValue27_Phone)).replace(/\[Project.CustomFieldValue27_Fax\]/g,this.options.tokens.project.customFieldValue27_Fax)).replace(/\[Project.CustomFieldValue27_Cell\]/g,this.options.tokens.project.customFieldValue27_Cell)).replace(/\[Project.CustomFieldValue27_Email\]/g,this.options.tokens.project.customFieldValue27_Email)).replace(/\[Project.CustomFieldValue1_CLBR\]/g,this.options.tokens.project.customFieldValue1_CLBR)).replace(/\[Project.CustomFieldValue2_CLBR\]/g,this.options.tokens.project.customFieldValue2_CLBR)).replace(/\[Project.CustomFieldValue3_CLBR\]/g,this.options.tokens.project.customFieldValue3_CLBR)).replace(/\[Project.CustomFieldValue4_CLBR\]/g,this.options.tokens.project.customFieldValue4_CLBR)).replace(/\[Project.CustomFieldValue5_CLBR\]/g,this.options.tokens.project.customFieldValue5_CLBR)).replace(/\[Project.CustomFieldValue6_CLBR\]/g,this.options.tokens.project.customFieldValue6_CLBR)).replace(/\[Project.CustomFieldValue7_CLBR\]/g,this.options.tokens.project.customFieldValue7_CLBR)).replace(/\[Project.CustomFieldValue8_CLBR\]/g,this.options.tokens.project.customFieldValue8_CLBR)).replace(/\[Project.CustomFieldValue9_CLBR\]/g,this.options.tokens.project.customFieldValue9_CLBR)).replace(/\[Project.CustomFieldValue10_CLBR\]/g,this.options.tokens.project.customFieldValue10_CLBR)).replace(/\[Project.CustomFieldValue11_CLBR\]/g,this.options.tokens.project.customFieldValue11_CLBR)).replace(/\[Project.CustomFieldValue12_CLBR\]/g,this.options.tokens.project.customFieldValue12_CLBR)).replace(/\[Project.CustomFieldValue13_CLBR\]/g,this.options.tokens.project.customFieldValue13_CLBR)).replace(/\[Project.CustomFieldValue14_CLBR\]/g,this.options.tokens.project.customFieldValue14_CLBR)).replace(/\[Project.CustomFieldValue15_CLBR\]/g,this.options.tokens.project.customFieldValue15_CLBR)).replace(/\[Project.CustomFieldValue16_CLBR\]/g,this.options.tokens.project.customFieldValue16_CLBR)).replace(/\[Project.CustomFieldValue17_CLBR\]/g,this.options.tokens.project.customFieldValue17_CLBR)).replace(/\[Project.CustomFieldValue18_CLBR\]/g,this.options.tokens.project.customFieldValue18_CLBR)).replace(/\[Project.CustomFieldValue19_CLBR\]/g,this.options.tokens.project.customFieldValue19_CLBR)).replace(/\[Project.CustomFieldValue20_CLBR\]/g,this.options.tokens.project.customFieldValue20_CLBR)).replace(/\[Project.CustomFieldValue21_CLBR\]/g,this.options.tokens.project.customFieldValue21_CLBR)).replace(/\[Project.CustomFieldValue22_CLBR\]/g,this.options.tokens.project.customFieldValue22_CLBR)).replace(/\[Project.CustomFieldValue23_CLBR\]/g,this.options.tokens.project.customFieldValue23_CLBR)).replace(/\[Project.CustomFieldValue24_CLBR\]/g,this.options.tokens.project.customFieldValue24_CLBR)).replace(/\[Project.CustomFieldValue25_CLBR\]/g,this.options.tokens.project.customFieldValue25_CLBR)).replace(/\[Project.CustomFieldValue26_CLBR\]/g,this.options.tokens.project.customFieldValue26_CLBR)).replace(/\[Project.CustomFieldValue27_CLBR\]/g,this.options.tokens.project.customFieldValue27_CLBR)).replace(/\[Project.CustomFieldValue28_CLBR\]/g,this.options.tokens.project.customFieldValue28_CLBR)).replace(/\[Project.CustomFieldValue29_CLBR\]/g,this.options.tokens.project.customFieldValue29_CLBR)).replace(/\[Project.CustomFieldValue30_CLBR\]/g,this.options.tokens.project.customFieldValue30_CLBR)).replace(/\[Project.CustomFieldValue31_CLBR\]/g,this.options.tokens.project.customFieldValue31_CLBR)).replace(/\[Project.CustomFieldValue32_CLBR\]/g,this.options.tokens.project.customFieldValue32_CLBR)).replace(/\[Project.CustomFieldValue33_CLBR\]/g,this.options.tokens.project.customFieldValue33_CLBR)).replace(/\[Project.CustomFieldValue34_CLBR\]/g,this.options.tokens.project.customFieldValue34_CLBR)).replace(/\[Project.CustomFieldValue35_CLBR\]/g,this.options.tokens.project.customFieldValue35_CLBR)).replace(/\[Project.CustomFieldValue36_CLBR\]/g,this.options.tokens.project.customFieldValue36_CLBR)).replace(/\[Project.CustomFieldValue37_CLBR\]/g,this.options.tokens.project.customFieldValue37_CLBR)).replace(/\[Project.CustomFieldValue38_CLBR\]/g,this.options.tokens.project.customFieldValue38_CLBR)).replace(/\[Project.CustomFieldValue39_CLBR\]/g,this.options.tokens.project.customFieldValue39_CLBR)).replace(/\[BidForms.GroupDueDates\]/g,this.options.tokens.bidForms.groupDueDates)).replace(/\[ProjectContacts.UserType395_CompanyName\]/g,this.options.tokens.projectContacts.userType395_CompanyName)).replace(/\[ProjectContacts.UserType395_ContactName\]/g,this.options.tokens.projectContacts.userType395_ContactName)).replace(/\[ProjectContacts.UserType395_ContactTitle\]/g,this.options.tokens.projectContacts.userType395_ContactTitle)).replace(/\[ProjectContacts.UserType395_Address26\]/g,this.options.tokens.projectContacts.userType395_Address)).replace(/\[ProjectContacts.UserType395_Address2\]/g,this.options.tokens.projectContacts.userType395_Address2)).replace(/\[ProjectContacts.UserType395_City\]/g,this.options.tokens.projectContacts.userType395_City)).replace(/\[ProjectContacts.UserType395_StateProvince\]/g,this.options.tokens.projectContacts.userType395_StateProvince)).replace(/\[ProjectContacts.UserType395_PostalCode\]/g,this.options.tokens.projectContacts.userType395_PostalCode)).replace(/\[ProjectContacts.UserType395_Country\]/g,this.options.tokens.projectContacts.userType395_Country)).replace(/\[ProjectContacts.UserType395_Phone\]/g,this.options.tokens.projectContacts.userType395_Phone)).replace(/\[ProjectContacts.UserType395_Fax\]/g,this.options.tokens.projectContacts.userType395_Fax)).replace(/\[ProjectContacts.UserType395_Cell\]/g,this.options.tokens.projectContacts.userType395_Cell)).replace(/\[ProjectContacts.UserType395_Email\]/g,this.options.tokens.projectContacts.userType395_Email)).replace(/\[ProjectContacts.UserType396_CompanyName\]/g,this.options.tokens.projectContacts.userType396_CompanyName)).replace(/\[ProjectContacts.UserType396_ContactName\]/g,this.options.tokens.projectContacts.userType396_ContactName)).replace(/\[ProjectContacts.UserType396_ContactTitle\]/g,this.options.tokens.projectContacts.userType396_ContactTitle)).replace(/\[ProjectContacts.UserType396_Address26\]/g,this.options.tokens.projectContacts.userType396_Address)).replace(/\[ProjectContacts.UserType396_Address2\]/g,this.options.tokens.projectContacts.userType396_Address2)).replace(/\[ProjectContacts.UserType396_City\]/g,this.options.tokens.projectContacts.userType396_City)).replace(/\[ProjectContacts.UserType396_StateProvince\]/g,this.options.tokens.projectContacts.userType396_StateProvince)).replace(/\[ProjectContacts.UserType396_PostalCode\]/g,this.options.tokens.projectContacts.userType396_PostalCode)).replace(/\[ProjectContacts.UserType396_Country\]/g,thi
1s.options.tokens.projectContacts.userType396_Country)).replace(/\[ProjectContacts.UserType396_Phone\]/g,this.options.tokens.projectContacts.userType396_Phone)).replace(/\[ProjectContacts.UserType396_Fax\]/g,this.options.tokens.projectContacts.userType396_Fax)).replace(/\[ProjectContacts.UserType396_Cell\]/g,this.options.tokens.projectContacts.userType396_Cell)).replace(/\[ProjectContacts.UserType396_Email\]/g,this.options.tokens.projectContacts.userType396_Email)},export:function(){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.get("projectId")},{endpoint:"projectmessagepreview"},{endpoint:"export"}]),data:{templateKey:this.options.project.inviteSettings.emailTemplate.get("templateKey"),responseType:encodeURIComponent(this.options.tokens.projectMessage.responseType),bidDueDate:this.options.tokens.projectMessage.bidDueDate,responseDueDate:this.options.tokens.projectMessage.responseDueDate,messageSubject:encodeURIComponent(this.options.inviteSettings.messageSubject),messageBody:encodeURIComponent(this.options.tokens.projectMessage.messageBody)}}).post().success(_.bind(function(e){PJQ.files.downloadFile(e.url,{isEndpoint:!1})},this))}}),PJQ.models.projectMessages={},PJQ.models.projectMessages.ProjectMessagesResponse=PJQ.models.BaseModel.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.get("projectId")},{endpoint:"projectmessages"}])},parse:function(e){return this.messages=new PJQ.collections.projectMessages.ProjectMessages(e.messages),this.contactGroups=new PJQ.collections.projectMessages.ProjectContactGroups(e.contactGroups),e},getContextMessage:function(){var e=null;if(0<_.size(this.messages.models)){var t=this.messages.findWhere({accessKey:PJQ.app.session.get("accessKey").toUpperCase()});if(null!=t&&t.canChangeStatus()&&(e=t),null==e){var i=this.messages.getChangeableMessages();e=0<_.size(i)?_.max(i,function(e){return PJQ.helpers.dateHelpers.getDateDiff(new Date,new Date(e.get("createdOn")))}):null}}return e}}),PJQ.models.projectMessages.ProjectMessage=PJQ.models.BaseModel.extend({idAttribute:"projectMessageId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.get("projectId")},{endpoint:"projectmessages",value:this.id}])},parse:function(e){return e.attachments?this.attachments=new PJQ.collections.files.Files(e.attachments):this.attachments=new PJQ.collections.files.Files,e},canChangeStatus:function(){return"PROJECT"===this.get("type")&&this.get("canChange")||"MESSAGE"===this.get("type")&&(this.get("canChange")||0===_.size(this.get("status"))||"PENDING"===this.get("status"))}}),PJQ.models.projectMessages.ProjectContactGroup=PJQ.models.BaseModel.extend({idAttribute:"groupId",parse:function(e){return e}}),PJQ.collections.projectMessages={},PJQ.collections.projectMessages.ProjectMessages=PJQ.collections.BaseCollection.extend({model:PJQ.models.projectMessages.ProjectMessage,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"projectmessages"}])},getChangeableMessages:function(){return this.models.filter(function(e){return"PROJECT"===e.get("type")&&(e.get("canChange")||0===_.size(e.get("status"))||"PENDING"===e.get("status"))})}}),PJQ.collections.projectMessages.ProjectContactGroups=PJQ.collections.BaseCollection.extend({model:PJQ.models.projectMessages.ProjectContactGroup,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:PJQ.app.session.project.id},{endpoint:"projectmessages"},{endpoint:"accesskey",value:this.accessKey},{endpoint:"response"}])}}),PJQ.models.projectParticipants={},PJQ.models.projectParticipants.ProjectParticipant=PJQ.models.contacts.Contact.extend({endpoint:function(){var e=[{endpoint:"projects",value:this.project?this.project.id:this.get("projectId")},{endpoint:"participants",value:this.get("id")}];return this.get("isUpdateBidAmount")&&e.push({endpoint:"bidamount"}),PJQ.helpers.urlHelpers.generateEndpoint(e)},parse:function(e){return e&&e.project&&(this.project=e.project),PJQ.models.contacts.Contact.prototype.parseContactData.call(this,e),PJQ.models.contacts.Contact.prototype.parseAttachmentData.call(this,e),e},getCompanyCustomField:function(t){return _.find(this.get("companyCustomFieldValues"),function(e){return e.id===t})},getContactCustomField:function(t){return _.find(this.get("contactCustomFieldValues"),function(e){return e.id===t})},beforeSave:function(){PJQ.models.contacts.Contact.prototype.beforeSave.call(this),this.set({attachments:this.attachments.getChangedModels()})}}),PJQ.collections.projectParticipants={},PJQ.collections.projectParticipants.ProjectParticipants=PJQ.collections.BaseCollection.extend({idAttribute:"id",model:PJQ.models.projectContacts.ProjectContact,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"participants"}],[{parameter:"includeGroups",value:!0}])}}),PJQ.views.projectParticipants={}
1,PJQ.views.projectParticipants.AddParticipantsModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Add-Participants"),addButtonText:"Add Participants",isDirectoryEnabled:!1,isUnionStatusEnabled:!1,isReturnContactIds:!1,defaultDirectoryFilter:[1],defaultRadius:50,defaultZip:"",groupSelectorOptions:{},onSave:_.noop,onCancel:_.noop},events:{"click .add-participants-cancel":"onCancel","click .add-participants-save":"onSave","keyup .add-participants-radius":"radiusChanged","keyup .add-participants-zip":"zipChanged","keydown .add-participants-radius":"numbersOnly","click .send-message-save":"sendMessage"},beforeModalCreated:function(){this.options.isWorkAreasEnabled=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_WORK_AREAS);var e=this.model.get("zip");0<_.size(e)&&(this.options.defaultZip=e),this.model.fetchBidPackages(_.bind(function(e){this.bidPackages=e,this.render()},this))},renderData:function(){return{options:this.options}},zipChanged:function(){var e=this.$(".add-participants-zip");PJQ.helpers.validators.validateZip(e.val())&&PJQ.helpers.inputHelpers.setInputError(e,!0)},afterRender:function(){if(this.options.isDirectoryEnabled){var e=this.options.defaultDirectoryFilter?this.options.defaultDirectoryFilter:[];if(PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.SIMPLE_SEARCH_DEFAULT_ADDRESS_BOOK)){var t=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.SIMPLE_SEARCH_DEFAULT_ADDRESS_BOOK).toLowerCase();-1!==t.indexOf("private")&&e.push(1),-1!==t.indexOf("public")&&e.push(2)}this.directoryFilterSelectPicker=new PJQ.inputs.Selectpicker({el:this.$(".add-participants-directory-filter"),isIntChoices:!0,isMultiple:!0,defaultValue:e,onChange:_.bind(function(){this.renderGroups(),this.directoryFilterSelectPicker.hideError()},this)})}this.unionFilterSelectPicker=new PJQ.inputs.Selectpicker({el:this.$(".add-participants-union-filter"),isIntChoices:!0,isMultiple:!0,onChange:_.bind(function(){this.unionFilterSelectPicker.hideError()},this)}),this.renderGroups(),PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_BID_PACKAGES)&&this.renderBidPackages(),this.options.isWorkAreasEnabled&&(null==this.locationFilter&&PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_DEFAULT_LOCATION_FILTERS)&&(this.locationFilter=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.ADDRESS_BOOK_DEFAULT_LOCATION_FILTERS)),this.locationTypeSelector=new PJQ.inputs.Selectpicker({el:this.$(".add-participants-location-filter"),isIntChoices:!0,isMultiple:!0,defaultValue:this.locationFilter?this.locationFilter.split(","):[1,2],onChange:_.bind(function(e){var t=this.$(".radius-outer"),i=this.$(".boundaries-outer");-1===e.indexOf(2)?(t.addClass("hidden"),i.addClass("hidden")):(t.removeClass("hidden"),i.removeClass("hidden"))},this)}));var i=this.options.defaultRadius;PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.SIMPLE_SEARCH_DEFAULT_RADIUS)&&(i=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.SIMPLE_SEARCH_DEFAULT_RADIUS)),this.radiusSlider=new PJQ.Slider(this.$(".add-participants-radius-slider"),{ticks:[1,50,100,150,200,250,300],ticks_labels:[1,50,100,150,200,250,300],value:i,onChange:_.bind(function(e){this.setRadius(e.newValue)},this)}),this.setRadius(i)},renderBidPackages:function(){this.bidPackageSelector=new PJQ.views.bidPackages.BidPackageSelector({el:this.$(".bid-package-selector"),project:PJQ.app.session.project,isIncludeGroups:!0,onSelected:_.bind(function(e,t){this.selectedGroupIds=e,this.selectedBidPackageIds=t},this)})},renderGroups:function(){var e=!0,t=!1,i=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED),s=null!=this.bidPackages&&0<_.size(this.bidPackages.models);if(this.options.isDirectoryEnabled){var n=this.directoryFilterSelectPicker.getValue();e=0===_.size(n)||-1<_.indexOf(n,1),t=-1<_.indexOf(n,2)}var o=this.$('a[href="#addParticipantsGroupsPublic"]'),a=o.closest("li"),r=this.$('a[href="#addParticipantsGroupsPrivate"]'),l=r.closest("li"),c=this.$('a[href="#addParticipantsBidPackages"]'),d=c.closest("li");null!=this.groupSelectorPrivate&&(this.groupSelectorPrivate.remove(),this.groupSelectorPrivate=null),null!=this.groupSelectorPublic&&(this.groupSelectorPublic.remove(),this.groupSelectorPublic=null),s||e&&t&&!i?(this.$(".add-participants-groups-nav-bar").removeClass("hidden"),s?(d.removeClass("hidden"),c.tab("show")):d.addClass("hidden"),t&&!i?(a.removeClass("hidden"),o.tab("show")):a.addClass("hidden"),e||t&&i?(l.removeClass("hidden"),r.tab("show")):l.addClass("hidden")):(this.$(".add-participants-groups-nav-bar").addClass("hidden"),i?r.tab("show"):e?r.tab("show"):o.tab("show"));var p=null;this.model.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_BID_FORMS)&&this.model.hasPermission("bidForms.canView")&&(p=[{id:"filterBFTrades",label:"Select Bid Form Trades",callback:_.bind(function(t){var e=function(e){t.selectGroups(e),t.expandSelectedParents()};if(null!=this.options.bidFormGroupIds)e(this.options.bidFormGroupIds);else{var i=new PJQ.collections.bidForms.BidFormsSummary(null,{projectId:this.model.id});i.fetch({success:_.bind(function(){this.options.bidFormGroupIds=_.map(i.models,function(e){return e.get("groupId")}),e(this.options.bidFormGroupIds)},this)})}},this)}]),(e||t&&i)&&(this.groupSelectorPrivate=new PJQ.views.groups.GroupSelector(_.defaults({el:this.$(".group-selector-private"),headerButtons:p,onGroupSelected:_.bind(function(){this.groupSelectorPrivate.hideError()},this)},this.options.groupSelector))),t&&!i&&(this.groupSelectorPublic=new PJQ.views.groups.GroupSelector(_.defaults({el:this.$(".group-selector-public"),isPublicGroups:!0,headerButtons:p,onGroupSelected:_.bind(function(){this.groupSelectorPublic.hideError()},this)},this.options.groupSelector)))},numbersOnly:function(e){return PJQ.helpers.inputHelpers.numbersOnly(e)},radiusChanged:function(){this.setRadius(parseInt(this.$(".add-participants-radius").val()))},setRadius:function(e){isNaN(e)||e<1?e=1:300<e&&(e=300),this.radiusSlider.setValue(e),0<this.$(".add-participants-radius").val().length&&this.$(".add-participants-radius").val(e)},onCancel:function(){"function"==typeof this.options.onCancel&&this.options.onCancel()},sendMessage:function(){this.onSave(null,!0)},onSave:function(e){var i=1<arguments.length&&void 0!==arguments[1]&&arguments[1],t=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.HAS_GROUPS_LINKED),s=this.groupSelectorPublic?this.groupSelectorPublic.getGroupsData().selected:[],n=this.groupSelectorPrivate?this.groupSelectorPrivate.getGroupsData().selected:[],o=this.$(".add-participants-radius").val(),a=this.$(".add-participants-zip"),r=PJQ.helpers.formatHelpers.formatZip(a.val()),l=null,c=this.$(".cb-can-cross-state-bounds").prop("checked"),d=2,p=null!=this.bidPackages&&0<_.size(this.bidPackages.models);if(this.selectedGroupIds=_.union(n,s,this.selectedGroupIds),this.options.isWorkAreasEnabled){var u=this.locationTypeSelector.getValue(),h=-1<_.indexOf(u,1),m=-1<_.indexOf(u,2);h&&m?d=0:h?d=1:m&&(d=2)}if(this.options.isDirectoryEnabled){var f=this.directoryFilterSelectPicker.getValue(),g=-1<_.indexOf(f,1),P=-1<_.indexOf(f,2);g&&P?l=0:g?l=1:P&&(l=2)}var v=this.unionFilterSelectPicker.getValue(),b=-1<_.indexOf(v,1),C=-1<_.indexOf(v,2),y=-1<_.indexOf(v,3),S=-1<_.indexOf(v,4),w=!0;if(null!=this.directoryFilterSelectPicker&&(null==l?(this.directoryFilterSelectPicker.showError("You must select an address book"),w=!1):this.directoryFilterSelectPicker.hideError()),_.size(n),null==this.groupSelectorPublic||0!==_.size(s)||t||p?null!=this.bidPackageSelector&&0===_.size(this.selectedGroupIds)&&p?(this.bidPackageSelector.showError("You must select at least one trade or bid package"),this.$('a[href="#addParticipantsBidPackages"]').tab("show"),w=!1):(null!=this.groupSelectorPrivate&&this.groupSelectorPrivate.hideError(),null!=this.groupSelectorPublic&&this.groupSelectorPublic.hideError(),null!=this.bidPackageSelector&&this.bidPackageSelector.hideError()):(this.groupSelectorPublic.showError("You must select at least one public trade"),this.$('a[href="#addParticipantsGroupsPublic"]').tab("show"),w=!1),PJQ.helpers.validators.validateZip(r)?PJQ.helpers.inputHelpers.setInputError(a,!0):(PJQ.helpers.inputHelpers.setInputError(a,!1,{errorText:"Invalid zip code"}),w=!1),w){var J=new PJQ.Loader(this.$(".modal-content"));this.model.addParticipants(null!=this.selectedGroupIds?this.selectedGroupIds:_.union(n,s),r,o,d,c,l,b,C,y,S,this.options.isReturnContactIds,_.bind(function(e){this.removeModal();var t=_.size(e);0<t?PJQ.notifications.notify.successNotify({message:"Successfully added "+t.toString()+" participants"}):PJQ.notifications.notify.warningNotify({message:"No new participants were found"}),"function"==typeof this.options.onSave&&this.options.onSave(e,i)},this),function(){J.remove(),PJQ.notifications.notify.errorNotify({message:"Failed to add participants to the project.  Please contact customer service."})})}}}
1),PJQ.views.projectParticipants.AddParticipantsFromProjectModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Add-Participants-From-Project"),addButtonText:"Add Participants",maxWidth:"650px",isBidFormsEnabled:!1,isReturnContactIds:!1,projectResponses:[],onSave:_.noop,onCancel:_.noop},events:{"click .add-participants-cancel":"onCancel","click .add-participants-save":"onSave","click .add-participants-select-projects-continue":"completeProjectsStep","click .add-participants-select-trades-continue":"completeTradesStep","click .add-participants-jump-step":"goToStepEvent"},beforeRender:function(){this.renderData={options:this.options}},afterRender:function(){new PJQ.views.projects.ProjectSelector({el:this.$(".project-selector"),excludeProjectIds:[this.model.id],onProjectSelected:_.bind(function(e){this.selectedProjects=e,this.renderSelectedProjectCount(),this.$(".add-participants-select-projects-continue").prop("disabled",0===_.size(this.selectedProjects))},this),dataTableHeaderData:{isHideDeletedFilter:!0}}),this.renderSelectedProjectCount(),this.goToStep(1)},renderSelectedProjectCount:function(){var e=_.size(this.selectedProjects);this.$(".add-participants-projects-count").html(e.toString()),1<this.step?this.$(".add-participants-selected-projects").html(e.toString()+" selected"):this.$(".add-participants-selected-projects").empty()},completeProjectsStep:function(){this.goToStep(2)},completeTradesStep:function(){this.goToStep(3)},goToStepEvent:function(e){var t=parseInt($(e.currentTarget).data("step").toString());this.goToStep(t)},goToStep:function(e){this.step=e;var t=$(".step-"+this.step.toString()),i=$(".step-header-"+this.step.toString());this.$("[class*=step-]").not(t).collapse("hide"),this.$("[class*=step-header-]").not(i).removeClass("text-primary").addClass("text-dark op-4"),i.removeClass("text-dark op-4").addClass("text-primary"),t.collapse("show"),this.startStep()},startStep:function(){switch(this.step){case 1:this.$(".add-participants-selected-project-name").empty(),this.$(".add-participants-selected-trades").empty();break;case 2:this.$(".add-participants-selected-trades").empty(),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:0},{endpoint:"groups"}],[{parameter:"projects",value:_.map(this.selectedProjects,function(e){return e.id}).join(",")}])}).get().done(_.bind(function(e){this.createGroupSelector(new PJQ.collections.groups.Groups(e,{groupLevels:PJQ.app.session.project.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS)}))},this));break;case 3:for(var e=0;e<this.options.projectResponses.length;e++){var t=this.options.projectResponses[e];"array"===PJQ.helpers.objectHelpers.refinedType(t)&&(t=t[0]);var i=t.toLowerCase();if("yes"!==i&&"no"!==i&&"true"!==i&&"false"!==i){var s="<option value='"+t+"'>"+t+"</option>";this.$("select.add-participants-response-filter").append(s)}}this.projectResponseFilterSelectPicker=new PJQ.inputs.Selectpicker({el:this.$(".add-participants-response-filter"),isMultiple:!0})}this.renderSelectedProjectCount(),this.renderSelectedGroupCount(),this.$(".add-participants-save").prop("disabled",3!==this.step)},createGroupSelector:function(e){if(0<_.size(e.models)){this.$(".select-trades-instruction").show();var t=null;this.model.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_BID_FORMS)&&this.model.hasPermission("bidForms.canView")&&(t=[{id:"filterBFTrades",label:"Select Bid Form Trades",callback:_.bind(function(t){var e=function(e){t.selectGroups(e),t.expandSelectedParents()};if(null!=this.options.bidFormGroupIds)e(this.options.bidFormGroupIds);else{var i=new PJQ.collections.bidForms.BidFormsSummary(null,{projectId:this.model.id});i.fetch({success:_.bind(function(){this.options.bidFormGroupIds=_.map(i.models,function(e){return e.get("groupId")}),e(this.options.bidFormGroupIds)},this)})}},this)}]),this.groupSelector=new PJQ.views.groups.GroupSelector({el:this.$(".group-selector"),isShowNoGroup:!0,groups:e.models,headerButtons:t,onGroupSelected:_.bind(function(){this.selectedGroups=this.groupSelector.getGroupsData().new,this.renderSelectedGroupCount(),this.$(".add-participants-select-trades-continue").prop("disabled",0===_.size(this.selectedGroups))},this)}),this.renderSelectedGroupCount()}
1else this.$(".select-trades-instruction").hide(),new PJQ.Alert(this.$(".group-selector"),{type:"warning",text:0<_.size(this.selectedProjects)?"These projects do not contain any trades":"This project does not contain any trades"})},renderSelectedGroupCount:function(){var e=_.size(this.selectedGroups);this.$(".add-participants-trades-count").html(e),2<this.step?this.$(".add-participants-selected-trades").html(e.toString()+" selected"):this.$(".add-participants-selected-trades").empty()},onCancel:function(){"function"==typeof this.options.onCancel&&this.options.onCancel()},onSave:function(){var i=!!this.options.isBidFormsEnabled&&this.$(".add-participants-copy-bid-forms").prop("checked"),e=0<_.size(this.options.projectResponses)?this.projectResponseFilterSelectPicker.getValue():[],t=new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.model.id},{endpoint:"participants"},{endpoint:"copy"}],[{parameter:"projects",value:_.map(this.selectedProjects,function(e){return e.id}).join(",")}]),data:{groupIds:_.map(this.selectedGroups,function(e){return e.id}),isCopyBidForms:i,projectResponses:e}}),s=new PJQ.Loader(this.$(".modal-content"));t.post().done(_.bind(function(e){this.removeModal();var t="";0<e.participantsCopied.length||0<e.bidFormsCopied?(t=i&&0<e.bidFormsCopied?e.participantsCopied.length.toString()+(1===e.participantsCopied.length?" participant":" participants")+" and "+e.bidFormsCopied.toString()+" bid "+(1===e.bidFormsCopied?"form":"forms")+" copied successfully.":e.participantsCopied.length.toString()+(1===e.participantsCopied.length?" participant":" participants")+" copied successfully.",PJQ.notifications.notify.successNotify({message:t})):(t=i?"No new participants or bid forms could be found on the selected project":"No new participants could be found on the selected project",PJQ.notifications.notify.warningNotify({message:t})),"function"==typeof this.options.onSave&&this.options.onSave(this.options.isReturnContactIds?e.contactsCopied:e.participantsCopied)},this)).fail(function(){s.remove(),PJQ.notifications.notify.errorNotify({message:"Failed to add bidders to the project"})})}}),PJQ.models.projects={},PJQ.collections.projects={},PJQ.views.projects={},PJQ.models.projects.Project=PJQ.models.BaseModel.extend({options:{isDetail:!1},idAttribute:"projectId",notifyName:"Project",endpoint:function(e){return this.options.isDetail&&!e?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id}],[{parameter:"isDetail",value:this.options.isDetail}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id}])},beforeInit:function(e){null==this.preferences&&(this.preferences=new PJQ.models.preferences.Preferences)},fetchPermissions:function(e){null==this.permissions?(this.permissions=new PJQ.models.permissions.ProjectPermissions({projectId:PJQ.app.session.project?PJQ.app.session.project.id:this.id}),this.permissions.fetch({success:_.bind(function(){e(this.permissions)},this)})):e(this.permissions)},fetch:function(s){var e=this;PJQ.models.BaseModel.prototype.fetch.call(this,_.defaults({success:function(t,i){e.fetchPermissions(function(e){e&&0<e.get("contactId")&&(null==PJQ.app.session.contact||PJQ.app.session.contact.id!==e.get("contactId"))&&(PJQ.app.session.contact=new PJQ.models.contacts.Contact({id:e.get("contactId"),contactId:e.get("
1contactId")})),s&&"function"==typeof s.success&&s.success(t,i)})},error:s&&"function"==typeof s.error?s.error:null},s))},parse:function(e){return e&&(e.preferences&&(this.preferences&&e.preferences?(this.preferences.set(e.preferences),this.preferences.parse(e.preferences)):e.preferences&&(e.preferences instanceof PJQ.models.preferences.Preferences?this.preferences=e.preferences:this.preferences=new PJQ.models.preferences.Preferences(e.preferences))),this.subscription=new PJQ.models.subscriptions.Subscription(e.subscription),e.nda?this.nda=new PJQ.models.projects.ProjectNDA(_.extend({project:this},e.nda)):this.nda=null,e.user?this.user=new PJQ.models.projectContacts.ProjectContact(e.user):this.user=null,e.user2?this.user2=new PJQ.models.projectContacts.ProjectContact(e.user2):this.user2=null,e.orderSettings?this.orderSettings=new PJQ.models.BaseModel(e.orderSettings):this.orderSettings=null,e.participants?e.participants instanceof PJQ.collections.projectParticipants.ProjectParticipants?(this.participants=e.participants,this.participants.options.project=this):this.participants=new PJQ.collections.projectParticipants.ProjectParticipants(e.participants,{project:this}):this.participants=new PJQ.collections.projectParticipants.ProjectParticipants(null,{project:this}),e.projectContacts?e.projectContacts instanceof PJQ.collections.projectContacts.ProjectContacts?(this.projectContacts=e.projectContacts,this.projectContacts.options.project=this):(0<_.size(e.projectContacts)&&"number"==typeof e.projectContacts[0]&&(e.projectContacts=[]),this.projectContacts=new PJQ.collections.projectContacts.ProjectContacts(e.projectContacts,{project:this})):this.projectContacts=new PJQ.collections.projectContacts.ProjectContacts(null,{project:this})),e},hasPermission:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return null==this.permissions||this.permissions.hasPermission(e,t)},checkDownloadRequirements:function(t){if(t="function"==typeof t?t:_.noop,this.get("masterUserId")!==PJQ.app.session.get("masterUserId")){if(null!=PJQ.app.session.contact&&!0===this.preferences.hasPref(PJQ.constants.preferenceTypes.DOWNLOAD_CONTACT_UPDATE_REQ)&&null==PJQ.app.session.contact.get("updatedOn"))return void new PJQ.views.contacts.BaseEditContactModal({alert:"You must update your contact information before downloading.",onSave:_.bind(function(){PJQ.app.session.contact.set("updatedOn",new Date),this.checkDownloadRequirements(t)},this),model:new PJQ.models.projectContacts.ProjectContact({id:PJQ.app.session.contact.id,projectId:this.id})});if(null!=PJQ.app.session.contact&&null!=this.messageResponses&&0<_.size(_.filter(this.messageResponses.messages.models,function(e){return!0===e.get("isResponseRequired")}))&&this.preferences.hasPref(PJQ.constants.preferenceTypes.DOWNLOAD_RESPONSE_REQ)&&(0===_.size(this.get("bidResponse"))||"PENDING"===this.get("bidResponse")))return void this.fetchProjectMessageResponses(_.bind(function(e){null!=e.getContextMessage()?new PJQ.views.BaseModal({header:"Bid Response Required",body:"You must update your bid response before downloading.",isShowCancelButton:!1}):this.checkDownloadRequirements(t)},this));0<_.size(this.get("downloadTerms"))&&!this.get("downloadTermsAgreed")?new PJQ.views.projects.DownloadTermsModal({project:this,onAccept:_.bind(function(){this.checkDownloadRequirements(t)},this)}):t()}else t()},clone:function(t){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id},{endpoint:"clone"}])}).post().done(_.bind(function(e){t(new PJQ.models.projects.Project(e))},this))},copy:function(t){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id},{endpoint:"copy"}])}).post().done(_.bind(function(e){t(new PJQ.models.projects.Project(e))},this))},addParticipantsById:function(t,i){new PJQ.ajax.Request({endpoint:"/projects/"+PJQ.app.session.project.id.toString()+"/participants/ids",data:{ids:_.map(t,function(e){return e.id})}}).post().success(_.bind(function(e){PJQ.notifications.notify.successNotify({message:_.size(t)+" participants added successfully"}),"function"==typeof i&&i(e)},this)).fail(_.bind(function(){"function"==typeof i&&i(null)},this))},addParticipants:function(e,t,i,s,n,o,a,r,l,c,d,p,u){var h=[];0<_.size(e)&&(h=e[0].id?_.map(e,function(e){return e.id}):_.uniq(e));var m=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:PJQ.app.session.project.id},{endpoint:"participants"},{endpoint:"simple"}]);new PJQ.ajax.Request({endpoint:m,data:{projectId:this.id,groupIds:h,zip:t,radius:i,locationType:s,canCrossStateBoundaries:n,directoryFilter:o,isUnion:a,isNonUnion:r,
1isPrevailingWage:l,isNoLaborStatus:c,isReturnContactIds:d}}).post().done(_.bind(function(e){p(e)},this)).fail(function(){u()})},getCompanyLogoUrl:function(t){null!=this.get("logoUrl")&&t(this.get("logoUrl")),0<this.get("masterUserId")?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users",value:this.get("masterUserId")},{endpoint:"logo"}])}).get().done(_.bind(function(e){this.set("logoUrl",e.url),t(e.url)},this)):t(null)},updateResponse:function(e,t){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id},{endpoint:"respond",value:e}])}).put().done(_.bind(function(){t()},this))},fetchGroups:function(s){var n=this,e=1<arguments.length&&void 0!==arguments[1]&&arguments[1];return new Promise(function(t,i){if(e)return null!=n.companyGroups?("function"==typeof s&&s(n.companyGroups),void t(n.companyGroups)):void PJQ.app.session.fetchUserGroups(n.get("masterUserId"),function(e){if(null==e)return"function"==typeof s&&s(null),void i(null);n.companyGroups=e,"function"==typeof s&&s(e),t(e)});null==n.groups&&(n.groups=new PJQ.collections.groups.Groups(null,{project:n})),n.groups.isFetched?s(n.groups):n.groups.fetch({success:_.bind(function(){s(this.groups)},n)})})},fetchBidPackages:function(e){null==this.bidPackages&&(this.bidPackages=new PJQ.collections.bidPackages.BidPackages(null,{projectId:this.id})),this.bidPackages.isFetched?e(this.bidPackages):this.bidPackages.fetch({success:_.bind(function(){e(this.bidPackages)},this)})},fetchERPObject:function(s){var n=this;return new Promise(function(t,e){var i=n.get("externalObject");if(null!=i||n.erpObjectFetched)return"function"==typeof s&&s(i),void t(i);new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:n.id},{endpoint:"erpobject"}]),isAPIv2:!0}).get().done(function(e){null!=e&&n.set({externalObject:e},{silent:!0}),n.erpObjectFetched=!0,"function"==typeof s&&s(e),t(e)}).fail(function(){"function"==typeof s&&s(null),e(null)})})},linkERP:function(e,s){0!==_.size(e)?new PJQ.ajax.Request({endpoint:this.endpoint(!0)+"/linkerp?externalId="+e,isAPIv2:!0}).post().done(_.bind(function(e){"function"==typeof s&&(e&&0<_.size(e.externalId)&&this.set("externalObject",e),s(e))},this)).fail(_.bind(function(e,t,i){"function"==typeof s&&s(null)},this)):s(null)},fetchVersions:function(e){null==this.versions&&(this.versions=new PJQ.collections.drawings.Versions(null,{project:this})),this.versions.isFetched?e(this.versions):this.versions.fetch({success:_.bind(function(){e(this.versions)},this)})},fetchAttachments:function(e,s){var n;n=e&&!1===e.isPrivate?(null==this.sharedAttachments&&(this.sharedAttachments=new PJQ.collections.projects.ProjectAttachments(null,{project:this,isPrivate:!1,isS
1hared:!0})),this.sharedAttachments):e&&!1===e.isShared?(null==this.privateAttachments&&(this.privateAttachments=new PJQ.collections.projects.ProjectAttachments(null,{project:this,isShared:!1,isPrivate:!0})),this.privateAttachments):(null==this.attachments&&(this.attachments=new PJQ.collections.projects.ProjectAttachments(null,{project:this})),this.attachments);var t=_.bind(function(){var t=[];_.each(n.models,function(e){t.push(e.clone())});var i=new PJQ.collections.projects.ProjectAttachments(t,{project:this,isShared:n.options.isShared,isPrivate:n.options.isPrivate,isDeferred:n.options.isDeferred});i.isFetched=!0,e&&!1===e.includeDrawings||this.preferences.hasPref(PJQ.constants.preferenceTypes.DISABLE_DRAWINGS)?s(i):null==PJQ.app.session.project.permissions||PJQ.app.session.project.permissions.hasPermission("drawings.canView")?this.fetchVersions(_.bind(function(e){s(e.createPsuedoFolders(i))},this)):s(i)},this);e&&e.forceRecursive?(n.options.isDeferred=!1,n.fetch({success:function(){t()}})):new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id},{endpoint:"attachmentscount"}])}).get().done(_.bind(function(e){n.options.isDeferred=1500<e.total,n.fetch({success:function(){t()}})},this)).fail(function(){})},downloadAttachments:function(e,t){var i=[],s=[],n=!1,o=PJQ.helpers.objectHelpers.refinedType(e,!0),a=function(e){if(-1===e.get("entryId"))n=!0,i.push.apply(i,_toConsumableArray(_.map(e.getFolderAttachments(),function(e){return e.id}))),_.each(e.getFolderAttachments(),function(e){e.get("isFolder")||s.push(e.get("isDrawing")?-1*e.get("drawingId"):e.get("entryId"))});else if(i.push(e.id),e.get("isFolder")||s.push(e.get("isDrawing")?-1*e.get("drawingId"):e.get("entryId")),!n){var t=e.getParentFolder(!0);0===t.length?"Private"!==e.get("name")&&(n=!0):"Private"!==t[t.length-1].get("name")&&(n=!0)}};("backboneCollection"===o?_.each(e.models,function(e){a(e)}):"array"===o?_.each(e,function(e){a(e)}):a(e),null!=this.orderSettings&&0<this.orderSettings.get("downloadPerFileFee")&&(this.get("masterUserId")!==PJQ.app.session.get("masterUserId")||PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_ADMIN_PAID_DOWNLOADS)&&n)&&!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.IS_DOCUMENT_CLERK))?null!=PJQ.app.session.project&&PJQ.app.session.project.get("masterUserId")===PJQ.app.session.get("masterUserId")&&(PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.CAN_ORDER_ON_ACCOUNT)||PJQ.app.session.hasPermission("documents.onAccount"))?new PJQ.views.drawings.OrderDownloadAdmin({entryIds:s,orderSettings:this.options.orderSettings}):new PJQ.views.files.OrderPrintsModal({mode:PJQ.constants.files.modes.DOWNLOAD,files:e,orderSettings:this.orderSettings,project:null!=PJQ.app.session.project?PJQ.app.session.project:t.project}):null!=_.find(i,function(e){return e<-1})?PJQ.files.downloadDrawings(e,this,t):PJQ.files.queueDownload(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id},{endpoint:"attachments"}]),{entryList:i})},attachFiles:function(e,t){"object"===PJQ.helpers.objectHelpers.refinedType(e)&&(e=[e]),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id},{endpoint:"attachments"},{endpoint:"attach"}],[{parameter:"entryList",value:_.map(e,function(e){return e.get("entryId")}).join(",")}]),data:{cloudFlareFix:!0}}).put().done(function(){t(!0)}).fail(function(){t(!1)})},detachFiles:function(e,t){"object"===PJQ.helpers.objectHelpers.refinedType(e)&&(e=[e]),new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id},{endpoint:"attachments"},{endpoint:"detach"}],[{parameter:"entryList",value:_.map(e,function(e){return e.get("entryId")}).join(",")}])}).delete().done(_.bind(function(){t(!0)},this)).fail(_.bind(function(){t(!1)},this))},fetchProjectMessageResponses:function(e){null==this.messageResponses&&(this.messageResponses=new PJQ.models.projectMessages.ProjectMessagesResponse({projectId:this.id})),this.messageResponses.isFetched?e(this.messageResponses):this.messageResponses.fetch({success:_.bind(function(){e(this.messageResponses)},this)})},fetchParticipants:function(e){null==this.participants&&(this.participants=new PJQ.collections.projectParticipants.ProjectParticipants(null,{project:this})),this.participants.isFetched?e(this.participants):this.participants.fetch({success:_.bind(function(){e(this.participants)},this)})},fetchProjectContacts:function(e){null==this.projectContacts&&(this.projectContacts=new PJQ.collections.projectContacts.ProjectContacts(null,{project:this})),this.projectContacts.isFetched?e(this.projectContacts):this.projectContacts.fetch({success:_.bind(function(){e(this.projectContacts)},this)})},fetchDailyReportSettings:function(e){this.dailyReportSettings=new PJQ.models.dailyReports.Settings({project:this}),this.dailyReportSettings.fetch({success:_.bind(function(){e(this.dailyReportSettings)},this)})},fetchBidFormSettings:function(e){this.bidFormSettings=new PJQ.models.bidForms.Settings({projectId:this.id}),this.bidFormSettings.fetch({success:_.bind(function(){e(this.bidFormSettings)},this)})},fetchNDA:function(e){this.nda=new PJQ.models.projects.ProjectNDA({project:this}),this.nda.fetch({success:_.bind(function(){e(this.nda)},this)})},fetchPunchListItems:function(i){var s=this;return new Promise(function(e,t){if(null!=s.punchListItems)return"function"==typeof i&&i(s.punchListItems),void e(s.punchListItems);s.punchListItems=new PJQ.collections.punchlists.PunchlistItems(null,{project:s}),s.punchListItems.fetch({success:function(){"function"==typeof i&&i(s.punchListItems),e(s.punchListItems)},error:function(){"function"==typeof i&&i(s.actionItems),t(new Error("Failed to fetch project punchlist items"))}})})},fetchPunchListCustomFields:function(i){var s=this;return new Promise(function(e,t){null!=s.punchlistCustomFields&&(e(s.punchlistCustomFields),"function"==typeof i&&i(s.punchlistCustomFields)),s.punchlistCustomFields=new PJQ.collections.punchlists.PunchlistCustomFields(null,{project:s}),s.punchlistCustomFields.fetch({success:function(){e(s.punchlistCustomFields),"function"==typeof i&&i(s.punchlistCustomFields)},error:function(){t(new Error("Failed to fetch contract field settings")),"function"==typeof i&&i(s.punchlistCustomFields)}})})},fetchRFICustomFields:function(e){null==this.rfiCustomFields?(this.rfiCustomFields=new PJQ.collections.rfi.CustomFields(null,{project:this}),this.rfiCustomFields.fetch({success:_.bind(function(){"function"==typeof e&&e(this.rfiCustomFields)},this)})):"function"==typeof e&&e(this.rfiCustomFields)},fetchActionItems:function(i){var s=this;return new Promise(function(e,t){if(null!=s.actionItems)return"function"==typeof i&&i(s.actionItems),void e(s.actionItems);s.actionItems=new PJQ.collections.actionItems.ActionItems(null,{project:s}),s.actionItems.fetch({success:function(){"function"==typeof i&&i(s.actionItems),e(s.actionItems)},error:function(){"function"==typeof i&&i(s.actionItems),t(new Error("Failed to fetch project action items"))}})})},fetchActionItemCustomFields:function(e){null==this.actionItemCustomFields?(this.actionItemCustomFields=new PJQ.collections.actionItems.ActionItemCustomFields(null,{project:this}),this.actionItemCustomFields.fetch({success:_.bind(function(){"function"==typeof e&&e(this.actionItemCustomFields)},this)})):"function"==typeof e&&e(this.actionItemCustomFields)},fetchSubmittalWorkflowTemplates:function(i){var s=this;return new Promise(function(e,t){if(null!=s.submittalWorkflowTemplates)return"function"==typeof i&&i(s.submittalWorkflowTemplates),void e(s.submittalWorkflowTemplates);s.submittalWorkflowTemplates=new PJQ.collections.submittals.WorkflowTemplates(null,{projectId:s.id}),s.submittalWorkflowTemplates.fetch({success:function(){"function"==typeof i&&i(s.submittalWorkflowTemplates),e(s.submittalWorkflowTemplates)},error:function(){t(new Error("Failed to fetch submittal workflow templates"))}})})},fetchSubmittalSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.submittalSettings)return"function"==typeof i&&i(s.submittalSettings),void e(s.submittalSettings);s.submittalSettings=new PJQ.models.submittals.Settings({projectId:s.id}),s.submittalSettings.fetch({success:function(){"function"==typeof i&&i(s.submittalSettings),e(s.submittalSettings)},error:function(){t(new Error("Failed to fetch submittal settings"))}})})},fetchSubmittalStatuses:function(i,s){var n=this;return new Promise(function(e,t){if(!0!==i&&null!=n.submittalStatuses)return"function"==typeof s&&s(n.submittalStatuses),void e(n.submittalStatuses);n.submittalStatuses=new PJQ.collections.submittals.Statuses(null,{projectId:n.id}),n.submittalStatuses.fetch({success:function(){"function"==typeof s&&s(n.submittalStatuses),e(n.submittalStatuses)},error:function(){t(new Error("Failed to fetch submittal statuses"))}})})},fetchSubmittalItemTypes:function(i){var s=this;return new Promise(function(e,t){if(null!=s.submittalItemTypes)return"function"==typeof i&&i(s.submittalItemTypes),void e(s.submittalItemTypes);s.submittalItemTypes=new PJQ.collections.submittals.ItemTypes(null,{projectId:s.id}),s.submittalItemTypes.fetch({success:function(){"function"==typeof i&&i(s.submittalItemTypes),e(s.submittalItemTypes)},error:function(){t(new Error("Failed to fetch submittal item types"))}})})},fetchSubmittalCustomFields:function(e,i){var s=this;return new Promise(function(e,t){if(null!=s.submittalCustomFields)return"function"==typeof i&&i(s.submittalCustomFields),void e(s.submittalCustomFields);s.submittalCustomFields=new PJQ.collections.submittals.SubmittalCustomField(null,{projectId:s.id}),s.submittalCustomFields.fetch({success:function(){e(s.submittalCustomFields),"function"==typeof i&&i(s.submittalCustomFields)},error:function(){t(new Error("Failed to fetch submittal custom fields"))}})})},fetchSubmittalTemplates:function(i){var s=this;return new Promise(function(e,t){if(null!=s.submittalTemplates)return"function"==typeof i&&i(s.submittalTemplates),void e(s.submittalTemplates);s.submittalTemplates=new PJQ.collections.submittals.Templates(null,{projectId:s.id}),s.submittalTemplates.fetch({success:function(){e(s.submittalTemplates),"function"==typeof i&&i(s.submittalTemplates)},error:function(){t(new Error("Failed to fetch submittal templates"))}})})},fetchActionItemTemplates:function(e){this.actionItemTemplates=new PJQ.collections.actionItems.Templates,this.actionItemTemplates.fetch({success:_.bind(function(){"function"==typeof e&&e(this.actionItemTemplates)},this)})},fetchPunchlistTemplates:function(e){this.punchlistTemplates=new PJQ.collections.punchlists.Templates,this.punchlistTemplates.fetch({success:_.bind(function(){"function"==typeof e&&e(this.punchlistTemplates)},this)})},fetchMeetingTemplates:function(e){this.meetingTemplates=new PJQ.collections.meetings.Templates,this.meetingTemplates.fetch({success:_.bind(function(){"function"==typeof e&&e(this.meetingTemplates)},this)})},fetchActionItemSettings:function(e){null==this.actionItemSettings?(this.actionItemSettings=new PJQ.models.actionItems.Settings({project:this}),this.actionItemSettings.fetch({success:_.bind(function(){e(this.actionItemSettings)},this)})):e(this.actionItemSettings)},fetchPunchListSettings:function(e){null==this.punchlistSettings?(this.punchlistSettings=new PJQ.models.punchlists.Settings({project:this}),this.punchlistSettings.fetch({success:_.bind(function(){e(this.punchlistSettings)},this)})):e(this.punchlistSettings)},fetchRFIs:function(e){null==this.rfis?(this.rfis=new PJQ.collections.rfi.RFIS(null,{project:this}),this.rfis.fetch({success:_.bind(function(){e(this.rfis)},this)})):e(this.rfis)},fetchRFISettings:function(e){null==this.rfiSettings?(this.rfiSettings=new PJQ.models.rfi.Settings({project:this}),this.rfiSettings.fetch({success:_.bind(function(){e(this.rfiSettings)},this)})):e(this.rfiSettings)},fetchGalleryPhotos:function(e){null==this.galleryPhotos?(this.galleryPhotos=new PJQ.collections.projects.ProjectPhotos(null,{project:this}),this.galleryPhotos.fetch({success:_.bind(function(){e(this.galleryPhotos)},this)})):e(this.galleryPhotos)},fetchProjectCustomFields:function(e){null==this.customFields?(this.customFields=new PJQ.collections.projects.ProjectCustomFields(null,{project:this}),this.customFields.fetch({success:_.bind(function(){"function"==typeof e&&e(this.customFields)},this)})):"function"==typeof e&&e(this.customFields)},fetchLocations:function(i){var s=this;return new Promise(function(e,t){if(null!=s.locations)return"function"==typeof i&&i(s.locations),void e(s.locations);s.locations=new PJQ.collections.projects.Locations(null,{project:s}),s.locations.fetch({success:_.bind(function(){"function"==typeof i&&i(this.locations),e(this.locations)},s),error:function(){t(new Error("Failed to fetch project locations"))}})})},fetchUserMessageTypes:function(e){null==this.userMessageTypes?(this.userMessageTypes=new PJQ.collections.userMessages.UserMessageTypes(null,{project:this}),null!=PJQ.app.session.contact?this.userMessageTypes.fetch({success:_.bind(function(){"function"==typeof e&&e(this.userMessageTypes)},this)}):"function"==typeof e&&e(this.userMessageTypes)):"function"==typeof e&&e(this.userMessageTypes)},fetchScheduleSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.scheduleSettings)return"function"==typeof i&&i(s.scheduleSettings),void e(s.scheduleSettings);s.scheduleSettings=new PJQ.models.schedule.Settings({projectId:s.id}),s.scheduleSettings.fetch({success:function(){"function"==typeof i&&i(s.scheduleSettings),e(s.scheduleSettings)},error:function(){t(new Error("Failed to fetch schedule settings"))}})})},fetchSchedule:function(i){var s=this;return new Promise(function(e,t){if(null!=s.schedule)return"function"==typeof i&&i(s.schedule),void e(s.schedule);s.schedule=new PJQ.models.schedule.Schedule({projectId:s.id}),s.schedule.fetch({success:function(){"function"==typeof i&&i(s.schedule),e(s.schedule)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch project schedule"))}})})},fetchScheduleLookAheads:function(i){var s=this;return new Promise(function(e,t){if(null!=s.scheduleLookAheads)return"function"==typeof i&&i(s.scheduleLookAheads),void e(s.scheduleLookAheads);s.scheduleLookAheads=new PJQ.collections.schedule.LookAheads([],{projectId:s.id}),s.scheduleLookAheads.fetch({success:function(){"function"==typeof i&&i(s.scheduleLookAheads),e(s.scheduleLookAheads)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch schedule look-aheads"))}})})},fetchScheduleNotifications:function(i,s){var n=this;return new Promise(function(e,t){if(!s&&null!=n.scheduleNotifications)return"function"==typeof i&&i(n.scheduleNotifications),void e(n.scheduleNotifications);n.scheduleNotifications=new PJQ.collections.schedule.Notifications(null,{projectId:n.id}),n.scheduleNotifications.fetch({success:function(){"function"==typeof i&&i(n.scheduleNotifications),e(n.scheduleNotifications)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch project schedule notifications"))}})})},fetchScheduleTemplates:function(e){this.scheduleTemplates=new PJQ.collections.schedule.Templates,this.scheduleTemplates.fetch({success:_.bind(function(){"function"==typeof e&&e(this.scheduleTemplates)},this)})},fetchAnnotationLayers:function(e){null==this.annotationLayers?(this.annotationLayers=new PJQ.collections.drawings.Layers(null,{projectId:this.id}),this.annotationLayers.fetch({success:_.bind(function(){"function"==typeof e&&e(this.annotationLayers)},this)})):"function"==typeof e&&e(this.annotationLayers)},deleteAllPunchLists:function(e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id},{endpoint:"punchlists"}])}).delete().done(_.bind(function(){"function"==typeof e&&e(!0)},this)).fail(function(){"function"==typeof e&&e(!1)})},deleteAllActionItems:function(e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id},{endpoint:"actionitems"}])}).delete().done(_.bind(function(){"function"==typeof e&&e(!0)},this)).fail(function(){"function"==typeof e&&e(!1)})},deleteAllScheduleTasks:function(e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{e
1ndpoint:"projects",value:this.id},{endpoint:"schedule"},{endpoint:"tasks"}])}).delete().done(_.bind(function(){"function"==typeof e&&(null!=this.schedule&&(this.schedule.tasks.reset(),this.schedule.dependencies.reset(),this.schedule.dependencies.reset(),this.schedule.pendingRequestedChanges.reset()),e(!0))},this)).fail(function(){"function"==typeof e&&e(!1)})},getProjectStatuses:function(t){null==this.projectStatuses?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.id},{endpoint:"statuses"}])}).get().done(_.bind(function(e){this.projectStatuses=e,t(this.projectStatuses)},this)):t(this.projectStatuses)},getProjectStatusList:function(){var i=[],e=PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_STATUS_LIST)?PJQ.app.session.project.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_STATUS_LIST):"ACCEPT|true,DECLINE|true,BID RECEIVED|false,AWARDED|false";return _.each(e.split(","),_.bind(function(e){var t=e.split("|");"PENDING"!==t[0]&&"UNSENT"!==t[0]&&i.push([t[0],"true"===t[1].toLowerCase()])},this)),i},getMessageStatusList:function(){var i=[],e=PJQ.app.session.project.preferences.hasPref(PJQ.constants.preferenceTypes.MESSAGE_STATUS_LIST)?PJQ.app.session.project.preferences.getPref(PJQ.constants.preferenceTypes.MESSAGE_STATUS_LIST):"YES|true,NO|true";return _.each(e.split(","),_.bind(function(e){var t=e.split("|");i.push([t[0],"true"===t[1].toLowerCase()])},this)),i},openInApp:function(){var e,t,i=PJQ.helpers.mobile.getDevice();e="android"===i?"https://play.google.com/store/apps/details?id=com.pantera&hl=en":"https://itunes.apple.com/us/app/pantera-mobile/id1208253224?ls=1&mt=8",t=null!=PJQ.app.session.contact?"pantera://panteratools/project/"+this.id+"/contact/"+PJQ.app.session.contact.id:"pantera://panteratools/project/"+this.id,setTimeout(_.bind(function(){window.location=e},this),25),window.location=t},fetchSubJobs:function(i){var s=this;return new Promise(function(e,t){if(null!=s.subJobs)return"function"==typeof i&&i(s.subJobs),void e(s.subJobs);s.subJobs=new PJQ.collections.budget.SubJobs(null,{projectId:s.id}),s.subJobs.fetch({success:function(){"function"==typeof i&&i(s.subJobs),e(s.subJobs)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch project sub jobs"))}})})},fetchCostCodes:function(i,s){var n=this;return new Promise(function(e,t){if(null!=n.costCodes&&!s)return"function"==typeof i&&i(n.costCodes),void e(n.costCodes);n.costCodes=new PJQ.collections.budget.CostCodes(null,{projectId:n.id}),n.costCodes.fetch({success:function(){"function"==typeof i&&i(n.costCodes),e(n.costCodes)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch project cost codes"))}})})},fetchCostTypes:function(s,t){var n=this;return new Promise(function(i,e){if(null!=n.costTypes&&!t)return"function"==typeof s&&s(n.costTypes),void i(n.costTypes);n.costTypes=new PJQ.collections.budget.CostTypes(null,{projectId:n.id}),n.costTypes.fetch({success:function(){if(null==n.get("externalObject"))return"function"==typeof s&&s(n.costTypes),void i(n.costTypes);PJQ.app.session.fetchERPIntegration(function(e){if(null!=e&&!e.hasAvailableAction(PJQ.constants.integrations.actions.PUSH_COST_TYPES)){var t=_.filter(n.costTypes.models,function(e){return e.isERPSynced()});n.costTypes.reset(t)}"function"==typeof s&&s(n.costTypes),i(n.costTypes)})},error:function(){"function"==typeof s&&s(null),e(new Error("Failed to fetch project cost types"))}})})},fetchTaxCodes:function(i,e){var s=this;return new Promise(function(e,t){if(null!=s.taxCodes)return"function"==typeof i&&i(s.taxCodes),void e(s.taxCodes);s.taxCodes=new PJQ.collections.budget.TaxCodes(null,{projectId:s.id}),s.taxCodes.fetch({success:function(){"function"==typeof i&&i(s.taxCodes),e(s.taxCodes)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch tax codes"))}})})},fetchUnitsOfMeasure:function(i){var s=this;return new Promise(function(e,t){if(null!=s.unitsOfMeasure)return"function"==typeof i&&i(s.unitsOfMeasure),void e(s.unitsOfMeasure);s.unitsOfMeasure=new PJQ.collections.budget.UnitsOfMeasure(null,{projectId:s.id}),s.unitsOfMeasure.fetch({success:function(){"function"==typeof i&&i(s.unitsOfMeasure),e(s.unitsOfMeasure)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch units of measure"))}})})},fetchBudgetTimeStats:function(i,e){var s=this;return new Promise(function(t,e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:s.id},{endpoint:"timecards"},{endpoint:"stats"}]),isAPIv2:!0}).get().done(function(e){"function"==typeof i&&i(e),t(e)}).fail(function(){"function"==typeof i&&i(null),e(null)})})},fetchBudget:function(i,s){var n=this;return new Promise(function(e,t){if(null!=n.budget&&(null==s||!0!==s.force))return"function"==typeof i&&i(n.budget),void e(n.budget);n.budget=new PJQ.models.budget.Budget({projectId:n.id}),n.budget.fetch({success:function(){"function"==typeof i&&i(n.budget),e(n.budget)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch project budget"))}})})},fetchBudgetViews:function(i){var s=this;return new Promise(function(e,t){if(null!=s.budgetViews)return"function"==typeof i&&i(s.budgetViews),void e(s.budgetViews);s.budgetViews=new PJQ.collections.budget.BudgetViews,s.budgetViews.fetch({success:function(){"function"==typeof i&&i(s.budgetViews),e(s.budgetViews)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch project budget views"))}})})},fetchBudgetSnapshots:function(i){var s=this;return new Promise(function(e,t){if(null!=s.snapshots)return"function"==typeof i&&i(s.snapshots),void e(s.snapshots);s.snapshots=new PJQ.collections.budget.Snapshots(null,{projectId:s.id}),s.snapshots.fetch({success:function(){"function"==typeof i&&i(s.snapshots),e(s.snapshots)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch project budget snapshots"))}})})},fetchCommitmentSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentSettings)return"function"==typeof i&&i(s.commitmentSettings),void e(s.commitmentSettings);s.commitmentSettings=new PJQ.models.commitments.Settings({},{projectId:s.id}),s.commitmentSettings.fetch({success:function(){"function"==typeof i&&i(s.commitmentSettings),e(s.commitmentSettings)},error:function(){t(new Error("Failed to fetch commitment settings"))}})})},fetchCommitmentFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentFieldSettings)return"function"==typeof i&&i(s.commitmentFieldSettings),void e(s.commitmentFieldSettings);s.commitmentFieldSettings=new PJQ.collections.commitments.FieldSettings(null,{projectId:s.id}),s.commitmentFieldSettings.fetch({success:function(){e(s.commitmentFieldSettings),"function"==typeof i&&i(s.commitmentFieldSettings)},error:function(){t(new Error("Failed to fetch commitment field settings"))}})})},fetchCommitmentTerms:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentTerms)return"function"==typeof i&&i(s.commitmentTerms),void e(s.commitmentTerms);s.commitmentTerms=new PJQ.collections.commitments.Terms(null,{projectId:s.id}),s.commitmentTerms.fetch({success:function(){"function"==typeof i&&i(s.commitmentTerms),e(s.commitmentTerms)},error:function(){t(new Error("Failed to fetch commitment terms"))}})})},fetchCommitmentCustomFields:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentCustomFields)return"function"==typeof i&&i(s.commitmentCustomFields),void e(s.commitmentCustomFields);s.commitmentCustomFields=new PJQ.collections.commitments.CustomFields(null,{projectId:s.id}),s.commitmentCustomFields.fetch({success:function(){"function"==typeof i&&i(s.commitmentCustomFields),e(s.commitmentCustomFields)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch commitment custom fields"))}})})},fetchDirectCostCustomFields:function(i){var s=this;return new Promise(function(e,t){if(null!=s.directCostCustomFields)return"function"==typeof i&&i(s.directCostCustomFields),void e(s.directCostCustomFields);s.directCostCustomFields=new PJQ.collections.directcosts.CustomFields(null,{projectId:s.id}),s.directCostCustomFields.fetch({success:function(){"function"==typeof i&&i(s.directCostCustomFields),e(s.directCostCustomFields)},error:function(){t(new Error("Failed to fetch direct cost custom fields"))}})})},fetchMeetingCustomFields:function(i){var s=this;return new Promise(function(e,t){if(null!=s.meetingCustomFields)return"function"==typeof i&&i(s.meetingCustomFields),void e(s.meetingCustomFields);s.meetingCustomFields=new PJQ.collections.meetings.CustomFields(null,{projectId:s.id}),s.meetingCustomFields.fetch({success:function(){"function"==typeof i&&i(s.meetingCustomFields),e(s.meetingCustomFields)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch meeting custom fields"))}})})},fetchMeetingSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.meetingSettings)return"function"==typeof i&&i(s.meetingSettings),void e(s.meetingSettings);s.meetingSettings=new PJQ.models.meetings.Settings(null,{projectId:s.id}),s.meetingSettings.fetch({success:function(){"function"==typeof i&&i(s.meetingSettings),e(s.meetingSettings)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch meeting settings"))}})})},fetchCommitmentChangeOrderSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentChangeOrderSettings)return"function"==typeof i&&i(s.commitmentChangeOrderSettings),void e(s.commitmentChangeOrderSettings);s.commitmentChangeOrderSettings=new PJQ.models.commitments.ChangeOrderSettings({},{projectId:s.id}),s.commitmentChangeOrderSettings.fetch({success:function(){"function"==typeof i&&i(s.commitmentChangeOrderSettings),e(s.commitmentChangeOrderSettings)},error:function(){t(new Error("Failed to fetch commitment change order settings"))}})})},fetchCommitmentChangeOrderFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentChangeOrderFieldSettings)return"function"==typeof i&&i(s.commitmentChangeOrderFieldSettings),void e(s.commitmentChangeOrderFieldSettings);s.commitmentChangeOrderFieldSettings=new PJQ.collections.commitments.ChangeOrderFieldSettings(null,{projectId:s.id}),s.commitmentChangeOrderFieldSettings.fetch({success:function(){"function"==typeof i&&i(s.commitmentChangeOrderFieldSettings),e(s.commitmentChangeOrderFieldSettings)},error:function(){t(new Error("Failed to fetch commitment change order field settings"))}})})},fetchCommitmentChangeOrderCustomFields:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentCOCustomFields)return"function"==typeof i&&i(s.commitmentCOCustomFields),void e(s.commitmentCOCustomFields);s.commitmentCOCustomFields=new PJQ.collections.commitments.ChangeOrderCustomFields(null,{projectId:s.id}),s.commitmentCOCustomFields.fetch({success:function(){"function"==typeof i&&i(s.commitmentCOCustomFields),e(s.commitmentCOCustomFields)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch commitment change order custom fields"))}})})},fetchPrimeContractFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractFieldSettings)return"function"==typeof i&&i(s.primeContractFieldSettings),void e(s.primeContractFieldSettings);s.primeContractFieldSettings=new PJQ.collections.primeContracts.FieldSettings(null,{projectId:s.id}),s.primeContractFieldSettings.fetch({success:function(){e(s.primeContractFieldSettings),"function"==typeof i&&i(s.primeContractFieldSettings)},error:function(){t(new Error("Failed to fetch contract field settings"))}})})},fetchPrimeContractTerms:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractTerms)return"function"==typeof i&&i(s.primeContractTerms),void e(s.primeContractTerms);s.primeContractTerms=new PJQ.collections.primeContracts.Terms(null,{projectId:s.id}),s.primeContractTerms.fetch({success:function(){e(s.primeContractTerms),"function"==typeof i&&i(s.primeContractTerms)},error:function(){t(new Error("Failed to fetch contract terms"))}})})},fetchPrimeContractSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractSettings)return"function"==typeof i&&i(s.primeContractSettings),void e(s.primeContractSettings);s.primeContractSettings=new PJQ.models.primeContracts.Settings({},{projectId:s.id}),s.primeContractSettings.fetch({success:function(){e(s.primeContractSettings),"function"==typeof i&&i(s.primeContractSettings)},error:function(){t(new Error("Failed to fetch contract settings "))}})})},fetchPrimeContractCustomFields:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractCustomFields)return"function"==typeof i&&i(s.primeContractCustomFields),void e(s.primeContractCustomFields);s.primeContractCustomFields=new PJQ.collections.primeContracts.CustomFields(null,{projectId:s.id}),s.primeContractCustomFields.fetch({success:function(){e(s.primeContractCustomFields),"function"==typeof i&&i(s.primeContractCustomFields)},error:function(){t(new Error("Failed to fetch contract custom fields"))}})})},fetchPayableInvoiceSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.payableInvoiceSettings)return"function"==typeof i&&i(s.payableInvoiceSettings),void e(s.payableInvoiceSettings);s.payableInvoiceSettings=new PJQ.models.invoicing.PayableInvoiceSettings(null,{projectId:s.id}),s.payableInvoiceSettings.fetch({success:function(){"function"==typeof i&&i(s.payableInvoiceSettings),e(s.payableInvoiceSettings)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch payable invoice settings"))}})})},fetchPayableInvoiceFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.payableInvoiceFieldSettings)return"function"==typeof i&&i(s.payableInvoiceFieldSettings),void e(s.payableInvoiceFieldSettings);s.payableInvoiceFieldSettings=new PJQ.collections.invoicing.PayableInvoiceFieldSettings(null,{projectId:s.id}),s.payableInvoiceFieldSettings.fetch({success:function(){"function"==typeof i&&i(s.payableInvoiceFieldSettings),e(s.payableInvoiceFieldSettings)},error:function(){t(new Error("Failed to fetch payable invoice field settings"))}})})},fetchPayableInvoiceCustomFields:function(i){var s=this;return new Promise(function(e,t){if(null!=s.payableInvoiceCustomFields)return"function"==typeof i&&i(s.payableInvoiceCustomFields),void e(s.payableInvoiceCustomFields);s.payableInvoiceCustomFields=new PJQ.collections.invoicing.PayableInvoiceCustomFields(null,{projectId:s.id}),s.payableInvoiceCustomFields.fetch({success:function(){"function"==typeof i&&i(s.payableInvoiceCustomFields),e(s.payableInvoiceCustomFields)},error:function(){t(new Error("Failed to fetch payable invoice custom fields"))}})})},fetchReceivableInvoiceSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.receivableInvoiceSettings)return"function"==typeof i&&i(s.receivableInvoiceSettings),void e(s.receivableInvoiceSettings);s.receivableInvoiceSettings=new PJQ.models.invoicing.ReceivableInvoiceSettings,s.receivableInvoiceSettings.fetch({success:function(){e(s.receivableInvoiceSettings),"function"==typeof i&&i(s.receivableInvoiceSettings)},error:function(){t(new Error("Failed to fetch receivable invoice settings "))}})})},fetchReceivableInvoiceCustomFields:function(i){var s=this;return new Promise(function(e,t){if(null!=s.receivableInvoiceCustomFields)return"function"==typeof i&&i(s.receivableInvoiceCustomFields),void e(s.receivableInvoiceCustomFields);s.receivableInvoiceCustomFields=new PJQ.collections.invoicing.ReceivableInvoiceCustomFields(null,{projectId:s.id}),s.receivableInvoiceCustomFields.fetch({success:function(){e(s.receivableInvoiceCustomFields),"function"==typeof i&&i(s.receivableInvoiceCustomFields)},error:function(){t(new Error("Failed to fetch receivable invoice custom fields"))}})})},fetchPrimeContractChangeOrderFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractChangeOrderFieldSettings)return"function"==typeof i&&i(s.primeContractChangeOrderFieldSettings),void e(s.primeContractChangeOrderFieldSettings);s.primeContractChangeOrderFieldSettings=new PJQ.collections.
1primeContracts.ChangeOrderFieldSettings(null,{projectId:s.id}),s.primeContractChangeOrderFieldSettings.fetch({success:function(){e(s.primeContractChangeOrderFieldSettings),"function"==typeof i&&i(s.primeContractChangeOrderFieldSettings)},error:function(){t(new Error("Failed to fetch contract change order field settings"))}})})},fetchPrimeContractChangeOrderSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractChangeOrderSettings)return"function"==typeof i&&i(s.primeContractChangeOrderSettings),void e(s.primeContractChangeOrderSettings);s.primeContractChangeOrderSettings=new PJQ.models.primeContracts.ChangeOrderSettings({},{projectId:s.id}),s.primeContractChangeOrderSettings.fetch({success:function(){e(s.primeContractChangeOrderSettings),"function"==typeof i&&i(s.primeContractChangeOrderSettings)},error:function(){t(new Error("Failed to fetch contract change order settings"))}})})},fetchPrimeContractChangeOrderCustomFields:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractCOCustomFields)return"function"==typeof i&&i(s.primeContractCOCustomFields),void e(s.primeContractCOCustomFields);s.primeContractCOCustomFields=new PJQ.collections.primeContracts.ChangeOrderCustomFields(null,{projectId:s.id}),s.primeContractCOCustomFields.fetch({success:function(){e(s.primeContractCOCustomFields),"function"==typeof i&&i(s.primeContractCOCustomFields)},error:function(){t(new Error("Failed to fetch contract change order custom custom fields"))}})})},fetchChangeRequestSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.changeRequestSettings)return"function"==typeof i&&i(s.changeRequestSettings),void e(s.changeRequestSettings);s.changeRequestSettings=new PJQ.models.changeRequests.Settings({},{projectId:s.id}),s.changeRequestSettings.fetch({success:function(){e(s.changeRequestSettings),"function"==typeof i&&i(s.changeRequestSettings)},error:function(){t(new Error("Failed to fetch change request settings"))}})})},fetchChangeRequestCustomFields:function(i){var s=this;return new Promise(function(e,t){if(null!=s.changeRequestCustomFields)return"function"==typeof i&&i(s.changeRequestCustomFields),void e(s.changeRequestCustomFields);s.changeRequestCustomFields=new PJQ.collections.changeRequests.CustomFields(null,{projectId:s.id}),s.changeRequestCustomFields.fetch({success:function(){"function"==typeof i&&i(s.changeRequestCustomFields),e(s.changeRequestCustomFields)},error:function(){t(new Error("Failed to fetch change request custom fields"))}})})},fetchBillingPeriodSettings:function(i){var s=this,n=1<arguments.length&&void 0!==arguments[1]&&arguments[1];return new Promise(function(e,t){if(null!=s.billingPeriodSettings)return n&&!s.billingPeriodSettings.get("allowAutomate")&&(s.billingPeriodSettings.set("allowAutomate",n),fnFetch()),"function"==typeof i&&i(s.billingPeriodSettings),void e(s.billingPeriodSettings);s.billingPeriodSettings=new PJQ.models.budget.BillingPeriodSettings({projectId:s.id,allowAutomate:n}),s.billingPeriodSettings.fetch({success:function(){"function"==typeof i&&i(s.billingPeriodSettings),e(s.billingPeriodSettings)},error:function(){t(new Error("Failed to fetch billing period settings"))}})})}}),PJQ.models.projects.ProjectCustomField=PJQ.models.customFields.CustomField.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"customfields",value:this.id}])}}),PJQ.models.projects.ProjectSettings=PJQ.models.BaseModel.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"settings"}])},parse:function(e){return e},isColumnSelected:function(t){return void 0!==_.find(this.get("columns"),function(e){return e===t})}}),PJQ.models.projects.ProjectInvitesSettings=PJQ.models.BaseModel.extend({setFavoriteFilter:function(e){e?PJQ.helpers.cookieHelpers.setCookie(PJQ.constants.cookies.PROJECT_INVITES_FAVORITE_FILTER,!0):PJQ.helpers.cookieHelpers.removeCookie(PJQ.constants.cookies.PROJECT_INVITES_FAVORITE_FILTER)},getFavoriteFilter:function(){return"true"===PJQ.helpers.cookieHelpers.getCookie(PJQ.constants.cookies.PROJECT_INVITES_FAVORITE_FILTER)}}),PJQ.collections.projects.Projects=PJQ.collections.BaseCollection.extend({options:{isSimple:!0,isBidding:!1,customFieldIds:[],isMyProjects:!1,isProjectInvites:!1},model:PJQ.models.projects.Project,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"}],[{parameter:"isSimple",value:this.options.isSimple},{parameter:"isBidding",value:this.options.isBidding},{parameter:"status",value:this.options.status},{parameter:"customFieldIds",value:this.options.customFieldIds},{parameter:"isMyProjects",value:this.options.isMyProjects},{parameter:"isProjectInvites",value:this.options.isProjectInvites}])}}),PJQ.collections.projects.ProjectPhotos=PJQ.collections.BaseCollection.extend({model:PJQ.models.files.File,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"photos"}])}}),PJQ.collections.projects.ProjectCustomFields=PJQ.collections.customFields.CustomFields.extend({model:PJQ.models.projects.ProjectCustomField,options:{masterUserId:null},endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project?this.options.project.id:null},{endpoint:"customfields"}],[{parameter:"masterUserId",value:0<this.options.masterUserId?this.options.masterUserId:PJQ.app.session.get("masterUserId")}])}}),PJQ.views.projects.ProjectParticipantHistoryModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Project-Participant-History"),subTemplates:{singleProjectHistory:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Participant-Single-Project-History"),overallHistory:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Participant-Overall-History")},isShowCloseButton:!0,maxWidth:"1000px",type:"THIS",onGoToProject:_.noop},events:{"keyup .input-history-search":"search","click .link-project":"goToProject","click .btn-copy-access-key":"copyAccessKey","click .btn-view-downloads":"viewDownloads","click .btn-export":"export","click .btn-show-message":"showProjectMessage"},beforeModalCreated:function(){this.options.project=PJQ.app.session.project},search:function(){this.$(".datatable-search").val(this.$(".input-history-search").val())},getContextMenuItems:function(){return[{name:"Resend Message",iconClass:"fal fa-paper-plane",onClick:_.bind(function(e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:PJQ.app.session.project.id},{endpoint:"projectmessages",value:e.data().projectMessageId},{endpoint:"resend"}],[{parameter:"projectMessageContactBroadcastIds",value:[e.data().projectMessageContactBroadcastId]}])}).post().done(_.bind(function(e){PJQ.notifications.notify.successNotify({message:"Message is being resent."})},this))},this),isShown:_.bind(function(e){var t=e.data();return 1<t.projectMessageContactBroadcastId&&"projectmessage"===t.auditAction.toLowerCase()},this)}]},afterRender:function(){this.options.project?(this.historyTypeSelectPicker=new PJQ.inputs.Selectpicker({el:this.$(".history-type"),onChange:_.bind(function(e){this.renderHistory(e)},this)}),this.options.project.getProjectStatuses(_.bind(function(e){this.statuses=e,this.renderHistory(this.options.type)},this))):new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"settings"},{endpoint:"statuses"}])}).get().done(_.bind(function(e){this.statuses=e,this.$(".select-project-history-type").hide(),this.renderHistory("ALL")},this)).fail(_.bind(function(){this.statuses=null,this.$(".select-project-history-type").hide(),this.renderHistory("ALL")},this))},renderHistory:function(e){var t=this.$(".history-data");if("THIS"===e)this.renderSubTemplate(!1,this.options.subTemplates.singleProjectHistory,t,{},_.bind(function(){null==this.singleProjectData?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"participants",value:this.options.contactId},{endpoint:"history"}])}).get().done(_.bind(function(e){this.singleProjectData=e,this.renderSingleProjectHistory()},this)):this.renderSingleProjectHistory()},this));
1else{var i=new PJQ.Loader(t),s=_.bind(function(e){this.overallData=e,this.renderSubTemplate(!1,this.options.subTemplates.overallHistory,t,{statuses:_.uniq(_.map(this.overallData,function(e){return 0<_.size(e.projectStatus)?e.projectStatus.toUpperCase():"PENDING"}))},_.bind(function(){this.renderOverallHistory(),i.remove()},this))},this);null==this.overallData?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.options.contactId},{endpoint:"projecthistory"}])}).get().done(s):s(this.overallData)}},getStatusColor:function(t){var e=_.find(this.statuses,function(e){return e.name.toUpperCase()===t.toUpperCase()});return null!=e?e.backgroundColor:"#eee"},renderSingleProjectHistory:function(){_.each(this.singleProjectData,_.bind(function(e){"MessageKeyDownload"===e.auditAction&&this.$(".btn-view-downloads").removeClass("hidden")},this));var e=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.RESPONSE_DUE_LABEL)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.RESPONSE_DUE_LABEL):"Response Due";new PJQ.views.dataTables.DataTable({el:this.$(".single-project-data-table"),rowId:"projectMessageContactBroadcastId",pageLength:5,isHideSearch:!0,data:this.singleProjectData,dom:"<'row no-gutters'<'table-outer col-sm-12'tr>><'row no-gutters'<'col-sm-5 mt-1'l><'col-sm-7 mt-2'p>>",contextMenuOptions:{actions:this.getContextMenuItems(),isHideNoActions:!0},order:[0,"desc"],columns:[{data:{_:function(e){return new Date(e.created)},filter:"created",display:function(e){return PJQ.helpers.dateHelpers.getDateString(new Date(e.created),PJQ.helpers.dateHelpers.dateFormats.DATE_TIME)}},title:"Date",orderable:!1},{data:"description",title:"Description",width:"300px",orderable:!1,render:function(e,t,i){return("ProjectMessage"===i.auditAction||"PrivateMessage"===i.auditAction)&&null!=i.subject?'<a href="javascript:void(0)" data-id=" '+i.projectMessageId+'" class="btn-show-message" title="Click to view Message">'+i.subject+"</a>":e}},{data:{_:function(e){var t="ProjectMessage"===e.auditAction?"No Response Required":"N/A";switch(e.messageType){case"PROJECT":t="ACCEPT/DECLINE";break;case"MESSAGE":t="YES/NO"}return t}},title:"Response Type",orderable:!1},{data:{_:function(e){var t="N/A";return"ProjectMessage"===e.auditAction&&(t=e.bidDueDate,e.bidDueTime.startsWith(" ")||(t+=" "+e.bidDueTime+" "+e.bidDueTimeZone)),t}},title:e,orderable:!1},{data:"accessKey",title:"Access Key",orderable:!1,render:function(e,t,i){var s='<div style="min-width:100px;" class="d-flex align-items-center">';return s+='<div class="flex-fill '+(i.accessKey?"":"text-muted")+'">'+(i.accessKey?i.accessKey:"")+"</div>",0<_.size(i.accessKey)&&(s+='<button type="button" class="btn btn-transparent-dark btn-copy-access-key" title="Copy Access Key" data-access-key="'+i.accessKey+'"><i class="far fa-key text-dark"></i></button>'),s+="</div>"}},{data:"broadcastStatus",title:"Broadcast Status",render:function(e,t,i){var s="ProjectMessage"===i.auditAction?0===_.size(i.broadcastStatus)?"PENDING":i.broadcastStatus:"";return'<span title="'+(0===_.size(i.broadcastErrorMessage)?s:i.broadcastErrorMessage)+'" >'+s+"</span>"},orderable:!1},{data:"response",title:"Response",render:_.bind(function(e,t,i){var s="N/A";return 0<_.size(i.response)&&(s='<span style="color:'+this.getStatusColor(i.response)+'">'+i.response+"</span>"),s},this),orderable:!1},{data:"responded",title:"Responded",render:function(e,t,i){var s="N/A";return"ProjectMessage"===i.auditAction&&(s="",0<_.size(i.responded)&&(s=PJQ.helpers.dateHelpers.getDateString(new Date(i.responded),PJQ.helpers.dateHelpers.dateFormats.DATE_TIME,!0))),s},orderable:!1}]})},renderOverallHistory:function(){var i={},s=[],n={responded:0,notResponded:0};_.each(this.overallData,function(e){var t=0<_.size(e.projectStatus)?e.projectStatus.toUpperCase():"PENDING";null==i[t]?i[t]=1:i[t]=i[t]+1,"PENDING"===t?n.notResponded=n.notResponded+1:n.responded=n.responded+1}),_.each(i,function(e,t){var i={label:t,backgroundColor:this.getStatusColor(t),data:[e]};s.push(i)},this),new PJQ.charts.Chart(this.$(".statuses-chart"),{type:"bar",height:250,width:250,data:{datasets:s},options:{cutoutPercentage:70,scales:{yAxes:[{ticks:{min:0}}]}},onClick:_.bind(function(e){if(0<_.size(e)){var t=e[0],i=stats.datasets[t._index];PJQ.app.router.navigate("projects/"+this.options.project.id+"/"+i.route,{trigger:!0})}},this)});var e,t=[n.responded,n.notResponded],o=[PJQ.constants.colors.BLUE,PJQ.constants.colors.GRAY];new PJQ.charts.Chart(this.$(".responses-chart"),{type:"doughnut",height:250,width:250,options:{cutoutPercentage:70},data:{labels:["Responded","Not Responded"],datasets:[{data:t,backgroundColor:o}]},onClick:_.bind(function(e){if(0<_.size(e)){var t=e[0],i=stats.datasets[t._index];PJQ.app.router.navigate("projects/"+this.options.project.id+"/"+i.route,{trigger:!0})}},this)}),new PJQ.inputs.Selectpicker({el:this.$(".select-history-filter"),noneSelectedText:"No Filters",onChange:_.bind(function(e){},this)});var a,r,l=(e=null!=PJQ.app.session.project?PJQ.app.session.project.preferences:PJQ.app.session.preferences).hasPref(PJQ.constants.preferenceTypes.RESPONSE_DUE_LABEL)?e.getPref(PJQ.constants.preferenceTypes.RESPONSE_DUE_LABEL):"Response Due";r=(this.options.project,a=e.hasPref(PJQ.constants.preferenceTypes.PROJECT_START_LABEL)?e.getPref(PJQ.constants.preferenceTypes.PROJECT_START_LABEL):"Start Date",e.hasPref(PJQ.constants.preferenceTypes.PROJECT_FINISH_LABEL)?e.getPref(PJQ.constants.preferenceTypes.PROJECT_FINISH_LABEL):"Finish Date"),this.dataTable=new PJQ.views.dataTables.DataTable({el:this.$(".overall-data-table"),subTemplates:{header:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Data-Table-Header-Participant-Overall-History")},headerData:_.bind(function(){return{statuses:this.statuses,getStatusColor:this.getStatusColor}},this),afterHeaderRender:function(t,e){new PJQ.inputs.Selectpicker({el:e.find(".select-history-filter"),onChange:function(e){t.setFilter("status",e)},isMultiple:!0,noneSelectedText:"No Filters"})},getFilterData:function(e,t){var i=e.getFilter("status");return 0<_.size(i)?_.filter(t,function(e){return-1!==i.indexOf(e.projectStatus.toLowerCase())}):t}
1,pageLength:10,data:this.overallData,dom:'<"top"<"clear">>rt<"bottom"p<"clear">>',order:[],columns:[{data:"projectName",title:"Name",render:_.bind(function(e,t,i){return'<a class="link-project" href="/#projects/'+i.projectId.toString()+'/dashboard">'+e+"</a>"},this)},{data:"city",title:"City"},{data:"projectStatus",title:"Status",width:"80px",render:_.bind(function(e,t,i){var s=0<_.size(i.projectStatus)?i.projectStatus.toUpperCase():"PENDING";return'<span style="color:'+this.getStatusColor(s)+'">'+s+"</span>"},this)},{data:{_:function(e){var t=new Date;return null==e.responseDue||"N/A"==e.responseDue?t.addDays(-2e4):"ASAP"===e.responseDue?t.addDays(-1e4):new Date(e.responseDue)},filter:"responseDue",display:function(e){return null==e.responseDue||"N/A"==e.responseDue?"N/A":"ASAP"===e.responseDue?e.responseDue:PJQ.helpers.dateHelpers.getDateString(new Date(e.responseDue),PJQ.helpers.dateHelpers.dateFormats.DATE,!0)}},title:l},{data:{_:function(e){var t=new Date;return null==e.startDate?t.addDays(-2e4):new Date(e.startDate)},filter:"startDate",display:function(e){return null==e.startDate?"N/A":PJQ.helpers.dateHelpers.getDateString(new Date(e.startDate),PJQ.helpers.dateHelpers.dateFormats.DATE,!0)}},title:a},{data:{_:function(e){var t=new Date;return null==e.endDate?t.addDays(-2e4):new Date(e.endDate)},filter:"endDate",display:function(e){return null==e.endDate?"N/A":PJQ.helpers.dateHelpers.getDateString(new Date(e.endDate),PJQ.helpers.dateHelpers.dateFormats.DATE,!0)}},title:r},{data:"emailSuccessCount",title:"Sent/Failed",width:"80px",render:_.bind(function(e,t,i){return(i.emailSuccessCount+i.faxSuccessCount).toString()+" / "+(i.emailFailedCount+i.faxFailedCount).toString()},this)}]})},goToProject:function(){this.removeModal(),this.options.onGoToProject&&this.options.onGoToProject()},showProjectMessage:function(e){var t=$(e.currentTarget),i=_.find(this.singleProjectData,function(e){return e.projectMessageId===parseInt(t.data("id"))});e.target.outerHTML=i.description},copyAccessKey:function(e){var t="h_input_"+_.uniqueId(),i=$("<input>",{value:$(e.currentTarget).data("accessKey"),style:"position: absolute;left:-2000px;top:-2000px",id:t});this.$el.append(i),i[0].select(),document.execCommand("copy"),i.remove(),PJQ.notifications.notify.successNotify({message:"Access Key copied to clipboard."})},viewDownloads:function(){new PJQ.views.projects.ProjectParticipantDownloadHistoryModal({contactId:this.options.contactId})},export:function(){null!=this.historyTypeSelectPicker&&"THIS"===this.historyTypeSelectPicker.getValue()?PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:PJQ.app.session.project.id},{endpoint:"participants",value:this.options.contactId},{endpoint:"history"},{endpoint:"export"}])):PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.options.contactId},{endpoint:"projecthistory"},{endpoint:"export"}]))}}),PJQ.views.projects.ProjectParticipantDownloadHistoryModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Project-Participant-Download-History"),minWidth:"900px"},events:{"click .btn-export":"export"},beforeModalCreated:function(){this.options.project=PJQ.app.session.project},afterRender:function(){var e=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:PJQ.app.session.project.id},{endpoint:"participants",value:this.options.contactId},{endpoint:"downloadhistory"}]);new PJQ.ajax.Request({endpoint:e}).get().done(_.bind(function(e){new PJQ.views.dataTables.DataTable({el:this.$(".download-table"),pageLength:5,isHideSearch:!0,data:e,dom:'<"top"<"clear">>rt<"bottom"p<"clear">>',order:[],columns:[{data:"title",title:"Filename",orderable:!1},{data:{_:function(e){return new Date(e.downloadedOn)},display:function(e){return PJQ.helpers.dateHelpers.getDateString(new Date(e.downloadedOn),PJQ.helpers.dateHelpers.dateFormats.DATE_TIME,!0)}},title:"Downloaded On",orderable:!1}]})},this)).fail(function(){PJQ.notifications.notify.errorNotify({message:"Something went wrong."})})},export:function(){PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:PJQ.app.session.project.id},{endpoint:"participants",value:this.options.contactId},{endpoint:"downloadhistory"},{endpoint:"export"}]))}}),PJQ.views.projects.ProjectSelector=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Project-Selector"),isDisableSelected:!1,isSingleChoice:!1,onProjectSelected:_.n
1oop,excludeProjectIds:[],dataTableHeaderData:{isHideDeletedFilter:!1},dataTableColumns:null},events:{"change .select-project":"selectProject"},beforeFirstRender:function(){null===this.options.dataTableColumns&&(this.options.dataTableColumns=[{name:"projectName",sort:1},{name:"city",sort:0},{name:"state",sort:0}]),this.options.isSingleChoice||(this.selectedProjects=[]),this.collection=new PJQ.collections.projects.Projects,this.listenTo(this.collection,"sync",this.render),this.collection.fetch()},afterRender:function(){var i=null;_.each(this.options.dataTableColumns,_.bind(function(e,t){0!==e.sort&&(i=[t+1,1===e.sort?"asc":"desc"])},this)),this.dataTable=new PJQ.views.projects.ProjectSelectorDataTable({el:".projects-data-table-container",data:_.filter(this.collection.models,_.bind(function(e){return-1===this.options.excludeProjectIds.indexOf(e.id)},this)),columns:this.getColumns(),order:i,subTemplates:{header:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Data-Table-Header-Project-Selector")},headerData:this.options.dataTableHeaderData})},getColumns:function(){var s=[{data:"attributes.isSelected",title:"",orderable:!1,searchable:!1,render:_.bind(function(e){return'<div class="text-align-center"><div class="pretty p-default p-smooth fs-18 m-0"><input type="checkbox" '+(e?"checked":"")+' class="select-project"/><div class="state p-primary"><label class="wd-0">&nbsp;</label></div></div></div>'},this)}];return _.each(this.options.dataTableColumns,_.bind(function(e,t){switch(e.name){case"projectId":s.push({data:"attributes.projectId",title:"Project Id"});break;case"projectName":s.push({data:"attributes.projectName",title:"Project Name"});break;case"address1":s.push({data:"attributes.address1",title:"Address 1"});break;case"address2":s.push({data:"attributes.address2",title:"Address 2"});break;case"city":s.push({data:"attributes.city",title:"City"});break;case"state":s.push({data:"attributes.state",title:"State"});break;case"zip":s.push({data:"attributes.zip",title:"Zip"});break;case"created":s.push({data:{_:function(e){return new Date(e.attributes.created)},filter:"attributes.created",display:function(e){return PJQ.helpers.dateHelpers.getDateString(new Date(e.attributes.created),PJQ.helpers.dateHelpers.dateFormats.DATE_TIME,!0)}},title:"Created"});break;case"bidsdue":var i=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.RESPONSE_DUE_LABEL)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.RESPONSE_DUE_LABEL):"Response Due";s.push({data:{_:function(e){var t=new Date;return null==e.attributes.bidsDue?t.addDays(-2e4):"ASAP"===e.attributes.rDueText?t.addDays(-1e4):new Date(e.attributes.bidsDue)},filter:"attributes.bidsDue",display:function(e){return null==e.attributes.bidsDue?"N/A":"ASAP"===e.attributes.rDueText?e.attributes.rDueText:PJQ.helpers.dateHelpers.getDateString(new Date(e.attributes.bidsDue),PJQ.helpers.dateHelpers.dateFormats.DATE_TIME)}},title:i});break;case"userDisplayName":s.push({data:{_:function(e){return e.attributes.user&&e.attributes.user.displayName?e.attributes.user.displayName:""}},title:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_USER_1_LABEL)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_USER_1_LABEL):"Project Contact"});break;case"user2DisplayName":s.push({data:{_:function(e){return e.attributes.user2&&e.attributes.user2.displayName?e.attributes.user2.displayName:""}},title:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_USER_2_LABEL)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_USER_2_LABEL):"Project Contact 2"})}},this)),s},selectProject:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr")).data();this.options.isSingleChoice?(this.$(".select-project").not(t).text("Select").prop("checked",!1),i.get("isSelected")?(i.set("isSelected",!1),this.selectedProject=null):(i.set("isSelected",!0),this.selectedProject=i,this.collection.get(i.id),_.each(this.collection.models,_.bind(function(e){i.id!==e.id&&e.set("isSelected",!1)},this))),this.options.onProjectSelected(this.selectedProject)):(i.get("isSelected")?(t.text("Select").addClass("btn-primary").removeClass("btn-secondary"),i.set("isSelected",!1),this.selectedProjects=_.reject(this.selectedProjects,function(e){return e.id===i.id})):(t.text("Deselect").addClass("btn-secondary").removeClass("btn-primary"),i.set("isSelected",!0),this.selectedProjects.push(i)),this.options.onProjectSelected(this.selectedProjects))}}),PJQ.views.projects.ProjectSelectorModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-project-select"),width:"40%",maxWidth:800,model:null,isShowCloseButton:!1,isSingleChoice:!1,onSave:_.noop(),excludeProjects:null,excludeProjectIds:null},events:{"click .btn-save":"save","click .btn-cancel":"cancel"},afterRender:function(){this.projects=null,new PJQ.views.projects.ProjectSelector({el:this.$(".project-selector"),excludeProjectIds:this.options.excludeProjectIds,isSingleChoice:this.options.isSingleChoice,onProjectSelected:_.bind(function(e){this.projects=e},this),dataTableColumns:[{name:"projectName",sort:1},{name:"city",sort:0},{name:"state",sort:0},{name:"bidsdue",sort:0},{name:"created",sort:0}],dataTableHeaderData:{isHideDeletedFilter:!0}})},save:function(){"function"==typeof this.options.onSave&&this.options.onSave(this.projects),this.removeModal()},cancel:function(){this.removeModal()}}),PJQ.views.projects.ProjectSelectorInput=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Projects-Select-Input"),subTemplates:{projectBadge:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Projects-Select-Input-Projects")},isSingleChoice:!1,onAdd:_.noop,onChange:_.noop,onDelete:_.noop,c
1anEdit:!1,selectedProjects:null,selectedProjectIds:null,emptyNotice:"No Projects Selected"},events:{"click .project-select-input-add":"edit","click .project-select-input-delete":"deleteProject"},beforeFirstRender:function(){this.selectedProjects=this.options.selectedProjects?this.options.selectedProjects:this.options.isSingleChoice?null:[],this.projects=this.options.projects,this.isFetched=!1,this.projects||(this.projects=new PJQ.collections.projects.Projects),this.projects.isFetched?this.isFetched=!0:this.projects.fetch({success:_.bind(function(){this.isFetched=!0,this.render()},this)})},afterRender:function(){if(this.isFetched){var e=this.$el.closest(".form-group"),t=e.find("label").find(".project-select-input-add");if(0<_.size(t)&&t.remove(),this.options.canEdit&&(t=$('<button type="button" class="btn btn-transparent-light text-info btn-sm ml-1 project-select-input-add"><i class="fal fa-sm fa-pencil"></i></button>'),e.find("label").first().append(t),t.on("click",_.bind(this.edit,this))),this.options.selectedProjectIds)if(this.options.isSingleChoice){var i="array"!==PJQ.helpers.objectHelpers.refinedType(this.options.selectedProjectIds)?this.options.selectedProjectIds:this.options.selectedProjectIds[0];this.selectedProjects=this.projects.get(i)}else{var s=[];_.each(this.options.selectedProjectIds,function(e){var t=this.projects.get(e);t&&s.push(t)},this),this.selectedProjects=s}this.renderSelectedProjects()}},renderSelectedProjects:function(){var e=this.selectedProjects;this.selectedProjects&&this.options.isSingleChoice&&(e=[this.selectedProjects]),0===_.size(e)?this.$(".project-select-list").html('<div class="text-muted font-weight-light mt-1 fs-16">'+this.options.emptyNotice+"</div>"):this.renderSubTemplate(!1,this.options.subTemplates.projectBadge,this.$(".project-select-list"),{models:e,isSingleChoice:this.options.isSingleChoice,canEdit:this.options.canEdit})},edit:function(){var e=[];this.options.isSingleChoice&&this.selectedProjects?e.push(this.selectedProjects.id):e=_.map(this.selectedProjects,function(e){return e.id},this),this.selector=new PJQ.views.projects.ProjectSelectorModal({contacts:this.options.contacts,excludeProjectIds:e,isSingleChoice:this.options.isSingleChoice,onSave:_.bind(function(e){this.selectedProjects=this.options.isSingleChoice?e:_.union(this.selectedProjects,e),this.renderSelectedProjects(),this.options.onAdd(e,this.selectedProjects),this.options.onChange(this.selectedProjects)},this)})},deleteProject:function(e){var t=$(e.target).closest(".select-project-container").data("projectId");if(this.options.isSingleChoice)this.options.onDelete(this.selectedProjects,null),this.options.onChange(null),this.selectedProjects=null;else{var i=_.find(this.selectedProjects,function(e){return e.id===t});null!=i&&(this.selectedProjects=_.filter(this.selectedProjects,function(e){return e.id!==t}),this.options.onDelete(i,this.selectedProjects),this.options.onChange(this.selectedProjects))}this.renderSelectedProjects()}}),PJQ.views.projects.ProjectSelectorDataTable=PJQ.views.dataTables.DataTable.extend({options:{subTemplates:{header:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Data-Table-Header-Project-Selector")}},events:{"keyup .datatable-search":"search","click .project-selector-clear-filters":"clearFilters"},beforeDataTableRender:function(){this.projectStatusFilter=["ready"],this.projectStatusFilterPicker=new PJQ.inputs.Selectpicker({el:this.$(".project-selector-status-filter"),onChange:_.bind(function(e){this.projectStatusFilter=e,this.filter(e)},this),isMultiple:!0,noneSelectedText:"No Filters",defaultValue:this.projectStatusFilter})},getFilterData:function(){return _.filter(this.options.data,function(e){return 0===_.size(this.projectStatusFilter)||-1!==_.indexOf(this.projectStatusFilter,e.attributes.status.toLowerCase())},this)},afterSearch:function(){this.$(".project-selector-clear-filters").prop("disabled",0===_.size(this.$("input.datatable-search").val())&&0===_.size(this.projectStatusFilter))},clearFilters:function(){this.projectStatusFilter=null,this.projectStatusFilterPicker.deselectAll(),this.$("input.datatable-search").val(""),this.search()}}),PJQ.models.projects.ProjectAttachment=PJQ.models.files.File.extend({idAttribute:"entryId"}),PJQ.collections.projects.ProjectAttachments=PJQ.collections.files.Files.extend({model:PJQ.models.projects.ProjectAttachment,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"attachments"}
1],[{parameter:"shared",value:null==this.options.isShared||this.options.isShared},{parameter:"priv",value:null==this.options.isPrivate||this.options.isPrivate},{parameter:"recursive",value:!this.options.isDeferred}])}}),PJQ.models.projects.ProjectNDA=PJQ.models.BaseModel.extend({idAttribute:"ndaId",endpoint:function(){return null!=this.project?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.project.id},{endpoint:"nda"}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"nda",value:this.id}])},parse:function(e){return e&&null!=e.project&&(this.project=e.project),e}}),PJQ.collections.projects.ProjectNDAs=PJQ.collections.BaseCollection.extend({model:PJQ.models.projects.ProjectNDA,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"nda"}])}}),PJQ.views.projects.ProjectSelector=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Project-Selector"),isDisableSelected:!1,isSingleChoice:!1,onProjectSelected:_.noop,excludeProjectIds:[],dataTableHeaderData:{isHideDeletedFilter:!1},dataTableColumns:null},events:{"change .select-project":"selectProject"},beforeFirstRender:function(){null===this.options.dataTableColumns&&(this.options.dataTableColumns=[{name:"projectName",sort:1},{name:"city",sort:0},{name:"state",sort:0}]),this.options.isSingleChoice||(this.selectedProjects=[]),this.collection=new PJQ.collections.projects.Projects,this.listenTo(this.collection,"sync",this.render),this.collection.fetch()},afterRender:function(){var i=null;_.each(this.options.dataTableColumns,_.bind(function(e,t){0!==e.sort&&(i=[t+1,1===e.sort?"asc":"desc"])},this)),this.dataTable=new PJQ.views.projects.ProjectSelectorDataTable({el:".projects-data-table-container",data:_.filter(this.collection.models,_.bind(function(e){return-1===this.options.excludeProjectIds.indexOf(e.id)},this)),columns:this.getColumns(),order:i,subTemplates:{header:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Data-Table-Header-Project-Selector")},headerData:this.options.dataTableHeaderData})},getColumns:function(){var s=[{data:"attributes.isSelected",title:"",orderable:!1,searchable:!1,render:_.bind(function(e){return'<div class="text-align-center"><div class="pretty p-default p-smooth fs-18 m-0"><input type="checkbox" '+(e?"checked":"")+' class="select-project"/><div class="state p-primary"><label class="wd-0">&nbsp;</label></div></div></div>'},this)}];return _.each(this.options.dataTableColumns,_.bind(function(e,t){switch(e.name){case"projectId":s.push({data:"attributes.projectId",title:"Project Id"});break;case"projectName":s.push({data:"attributes.projectName",title:"Project Name"});break;case"address1":s.push({data:"attributes.address1",title:"Address 1"});break;case"address2":s.push({data:"attributes.address2",title:"Address 2"});break;case"city":s.push({data:"attributes.city",title:"City"});break;case"state":s.push({data:"attributes.state",title:"State"});break;case"zip":s.push({data:"attributes.zip",title:"Zip"});break;case"created":s.push({data:{_:function(e){return new Date(e.attributes.created)},filter:"attributes.created",display:function(e){return PJQ.helpers.dateHelpers.getDateString(new Date(e.attributes.created),PJQ.helpers.dateHelpers.dateFormats.DATE_TIME,!0)}},title:"Created"});break;case"bidsdue":var i=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.RESPONSE_DUE_LABEL)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.RESPONSE_DUE_LABEL):"Response Due";s.push({data:{_:function(e){var t=new Date;return null==e.attributes.bidsDue?t.addDays(-2e4):"ASAP"===e.attributes.rDueText?t.addDays(-1e4):new Date(e.attributes.bidsDue)},filter:"attributes.bidsDue",display:function(e){return null==e.attributes.bidsDue?"N/A":"ASAP"===e.attributes.rDueText?e.attributes.rDueText:PJQ.helpers.dateHelpers.getDateString(new Date(e.attributes.bidsDue),PJQ.helpers.dateHelpers.dateFormats.DATE_TIME)}},title:i});break;case"userDisplayName":s.push({data:{_:function(e){return e.attributes.user&&e.attributes.user.displayName?e.attributes.user.displayName:""}},title:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_USER_1_LABEL)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_USER_1_LABEL):"Project Contact"});break;case"user2DisplayName":s.push({data:{_:function(e){return e.attributes.user2&&e.attributes.user2.displayName?e.attributes.user2.displayName:""}},title:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PROJECT_USER_2_LABEL)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PROJECT_USER_2_LABEL):"Project Contact 2"})}},this)),s},selectProject:function(e){var t=$(e.currentTarget),i=this.dataTable.getRow(t.closest("tr")).data();this.options.isSingleChoice?(this.$(".select-project").not(t).text("Select").prop("checked",!1),i.get("isSelected")?(i.set("isSelected",!1),this.selectedProject=null):(i.set("isSelected",!0),this.selectedProject=i,this.collection.get(i.id),_.each(this.collection.models,_.bind(function(e){i.id!==e.id&&e.set("isSelected",!1)},this))),this.options.onProjectSelected(this.selectedProject)):(i.get("isSelected")?(t.text("Select").addClass("btn-primary").removeClass("btn-secondary"),i.set("isSelected",!1),this.selectedProjects=_.reject(this.selectedProjects,function(e){return e.id===i.id})):(t.text("Deselect").addClass("btn-secondary").removeClass("btn-primary"),i.set("isSelected",!0),this.selectedProjects.push(i)),this.options.onProjectSelected(this.selectedProjects))}}),PJQ.views.projects.PublicProjects=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Public-Projects-Note")},events:{"click .project-header":"projectClicked"},beforeFirstRender:function(){PJQ.app.session.isFetched||PJQ.app.session.fetch(),this.collection=new PJQ.collections.projects.Projects([],{isBidding:!0}),this.collection.fetch({success:_.bind(function(){this.render()},this)})},renderData:function(){return{collection:this.collection,emptyMessage:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PUBLIC_PROJECTS_EMPTY_MESSAGE)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.PUBLIC_PROJECTS_EMPTY_MESSAGE):"There currently aren't any public projects"}},projectClicked:function(e){var t=$(e.currentTarget).data("cid"),i=this.collection.get(t);this.goToProject(i)},goToProject:function(e){if(PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PUBLIC_PROJECTS_REQ_REG)){var t=PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.REGISTRATION_TAB_ID);window.location.href=window.location.origin+"/Default.aspx?tabid="+t.toString()+"&subselfreg=1"}else PJQ.helpers.projectHelpers.accessKeyNavigate(e.get("accessKey"),_.bind(function(e){null!=e&&this.renderError(e)},this))}}),PJQ.views.projects.BlueBookPublishModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Blue-Book-Publish"),subTemplates:{dodgeTooltip:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"dodge-details-tooltip")},maxWidth:"800px",onAccept:null},events:{"click .btn-publish":"publish"},renderData:function(){return{model:this.model}},beforeRender:function(){if(null==this.model){var e=PJQ.app.session.user;e.fetch({success:_.bind(function(){this.model=new PJQ.models.projects.BlueBookProject({project:this.options.project,user:e}),this.model.fetch({success:_.bind(function(){this.render()},this)})},this)})}},afterRender:function(){if(null!=this.model){new PJQ.Binder(this.$el,this.model,{watchElements:["input","textarea"]}),new PJQ.Tooltip(this.$(".dda-details"),{template:this.options.subTemplates.dodgeTooltip,container:this.$el,placement:"right",trigger:"click",renderData:_.bind(function(){return{}},this)});var e=new PJQ.inputs.StatePicker({el:this.$(".contact-state"),defaultValue:this.model.get("contactState")?this.model.get("contactState").toUpperCase():null,country:this.model.get("contactCountry")?this.model.get("contactCountry").toUpperCase():null,onChange:_.bind(function(e){this.model.set("contactState",e)},this)});new PJQ.inputs.CountryPicker({el:this.$(".contact-country"),defaultValue:this.model.get("contactCountry")?this.model.get("contactCountry").toUpperCase():null,
1statePicker:e,zipInput:this.$(".contact-zip"),onChange:_.bind(function(e){this.model.set("contactCountry",e)},this)});var t=new PJQ.inputs.StatePicker({el:this.$(".project-state"),country:this.model.get("projectCountry")?this.model.get("projectCountry").toUpperCase():null,defaultValue:this.model.get("projectState")?this.model.get("projectState").toUpperCase():null,onChange:_.bind(function(e){this.model.set("projectState",e)},this)});new PJQ.inputs.CountryPicker({el:this.$(".project-country"),defaultValue:this.model.get("projectCountry")?this.model.get("projectCountry").toUpperCase():null,statePicker:t,zipInput:this.$(".project-zip"),onChange:_.bind(function(e){this.model.set("projectCountry",e)},this)}),new PJQ.inputs.Selectpicker({el:this.$(".project-role"),defaultValue:this.model.get("projectRole"),onChange:_.bind(function(e){this.model.set("projectRole",e)},this)}),new PJQ.inputs.Selectpicker({el:this.$(".project-type"),defaultValue:this.model.get("projectType"),onChange:_.bind(function(e){this.model.set("projectType",e)},this)}),new PJQ.inputs.Selectpicker({el:this.$(".input-labor-status"),isMultiple:!0,defaultValue:this.model.get("laborStatus"),onChange:_.bind(function(e){this.model.set("laborStatus",e)},this)}),this.model.project.fetchGroups(_.bind(function(e){this.model.set("groups",e.models),this.groupSelector=new PJQ.views.groups.GroupSelector({el:this.$(".group-selector"),selectedGroups:e,onGroupSelected:_.bind(function(){this.model.set("groups",this.groupSelector.getGroupsData().selected)},this)})},this)),PJQ.helpers.inputHelpers.inputMaskPhone(this.$(".input-contact-phone")),new PJQ.inputs.Datepicker({el:this.$(".input-bids-due"),datepickerOptions:{defaultDate:this.model.get("bidsDue")},onChange:_.bind(function(e){this.model.set("bidsDue",e)},this)})}},publish:function(){var e=this.$(".error-container");if(0===_.size(this.model.get("groups")))return this.groupSelector.showError("You must select at least 1 trade"),void e.removeClass("hidden");e.addClass("hidden"),this.groupSelector.hideError();var t=new PJQ.Loader(this.$(".btn-publish"),{loadingText:"Publishing..."});this.model.save(null,{success:_.bind(function(){this.removeModal(),PJQ.notifications.notify.successNotify({message:"Project Published to The Blue Book"})},this),error:_.bind(function(){t.remove(),PJQ.notifications.notify.successNotify({message:"Failed to publish to the blue book.  Please try again in a few minutes"})},this)})}}),PJQ.models.projects.BlueBookProject=PJQ.models.BaseModel.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.project.id},{endpoint:"bluebook"}])},parse:function(e){return e&&(null!=e.user&&(e.companyName=e.user.get("companyName"),e.contactName=e.user.get("contactName"),e.contactAddress=(0<_.size(e.user.get("address1"))?e.user.get("address1")+" ":"")+(null!=e.user.get("address2")?e.user.get("address2"):""),e.contactCity=e.user.get("city"),e.contactState=e.user.get("state"),e.contactZip=e.user.get("zip"),e.contactCountry=e.user.get("country"),e.contactPhone=e.user.get("phone"),e.contactEmail=e.user.get("email")),null!=e.project&&(this.project=e.project,e.projectRole="General Contractor - Bidding",e.projectName=e.project.get("projectName"),e.projectAddress=(0<_.size(e.project.get("address1"))?e.project.get("address1")+" ":"")+(null!=e.project.get("address2")?e.project.get("address2"):""),e.projectCity=e.project.get("city"),e.projectState=e.project.get("state"),e.projectZip=e.project.get("zip"),e.projectCountry=e.project.get("country"),e.bidsDue=e.project.get("bidsDue")),null!==e.contactNameOverride&&(e.contactName=e.contactNameOverride),null!==e.emailOverride&&(e.contactEmail=e.emailOverride)),e}}),PJQ.views.projects.UploadParticipantBidDocumentsModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Upload-Participant-Bid-Docs"),minWidth:"500px",onSave:_.noop,contact:null},events:{"click .save-attachments":"onSave"},beforeRender:function(){this.renderData={contact:this.options.contact}},afterRender:function(){this.uploader=new PJQ.views.files.FileUploaderGrid({el:this.$(".uploader")})},onSave:function(){if(0!==this.uploader.collection.length){var e={attachments:this.uploader.collection.toJSON()},t=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:PJQ.app.session.project.id},{endpoint:"participants",value:this.options.contact.get("contactId")},{endpoint:"bids"}]);new PJQ.ajax.Request({endpoint:t,data:e,isApi2:!0}).post().done(_.bind(function(e){"function"==typeof this.options.onSave&&this.options.onSave(e),PJQ.notifications.notify.successNotify({message:"Bid documents uploaded successfully."})},this)).fail(function(){PJQ.notifications.notify.errorNotify({message:"Something went wrong!"})}),this.removeModal()}}}),PJQ.collections.projects.Scopes=PJQ.collections.BaseCollection.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"scopes"}])}}),PJQ.views.projectScopes={}
1,PJQ.views.projectScopes.CopyScopesFromProjectModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Copy-Scopes-From-Project"),maxWidth:"725px",onCancel:_.noop,onCopy:_.noop},events:{"click .copy-scopes-cancel":"onCancel","click .copy-scopes-save":"onCopy"},beforeRender:function(){this.renderData={}},afterRender:function(){new PJQ.views.projects.ProjectSelector({el:this.$(".project-selector"),excludeProjectIds:[PJQ.app.session.project.id],isSingleChoice:!0,onProjectSelected:_.bind(function(e){this.selectedProject=e,this.$(".copy-scopes-save").prop("disabled",0===_.size(this.selectedProject)||!this.selectedProject.get("isSelected"))},this),dataTableHeaderData:{isHideDeletedFilter:!0},dataTableColumns:PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.COPY_SCOPES_GRID_LAYOUT)?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.COPY_SCOPES_GRID_LAYOUT):null})},onCancel:function(){"function"==typeof this.options.onCancel&&this.options.onCancel(),this.removeModal()},onCopy:function(){"function"==typeof this.options.onCopy&&this.options.onCopy(this.selectedProject),this.removeModal()}}),PJQ.models.projectStatuses={},PJQ.models.projectStatuses.ProjectStatus=PJQ.models.BaseModel.extend({idAttribute:"projectStatusId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"statuses",value:this.id<0?-this.id:this.id}])}}),PJQ.collections.projectStatuses={},PJQ.collections.projectStatuses.ProjectStatuses=PJQ.collections.BaseCollection.extend({model:PJQ.models.projectStatuses.ProjectStatus,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"statuses"}])},getDefault:function(){return _.find(this.models,function(e){return e.get("isDefault")})},copy:function(t){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects"},{endpoint:"statuses"},{endpoint:"copy"}])}).post().done(_.bind(function(e){this.reset(e),t()},this))}}),PJQ.models.rawFileUploads={},PJQ.models.rawFileUploads.RawFileUpload=PJQ.models.BaseModel.extend({idAttribute:"rawFileUploadId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.get("projectId")},{endpoint:"rawfileuploads",value:this.id}])}}),PJQ.views.contacts.Register=PJQ.views.contacts.BaseEditContactView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"register"),detectGroupLevels:!0,canEdit:!0},events:{"change .contact-edit-phone,.contact-edit-fax,.contact-edit-cell":"formatPhone","keydown .contact-edit-phone-ext":"numbersOnly","click .btn-continue":"register"},beforeFirstRender:function(){return null!=PJQ.app.session.contact&&(this.model=PJQ.app.session.contact),PJQ.app.session.get("portalId")===PJQ.constants.panteraPortalId?(null!=this.model?this.options.masterUserId=this.model.get("masterUserId"):this.options.masterUserId=PJQ.constants.publicUserId,this.model.get("masterUserId")===PJQ.constants.publicUserId&&(this.options.fieldSettingsEnabled=!0,PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.PREVENT_NATIONWIDE_WORK_AREAS,!0),PJQ.app.session.preferences.setPref(PJQ.constants.preferenceTypes.RESTRICT_GROUP_COUNT,10))):PJQ.app.session.preferences.hasPref("portalOwner")&&(this.options.masterUserId=PJQ.app.session.preferences.getPref("portalOwner")),PJQ.views.contacts.BaseEditContactView.prototype.beforeFirstRender.call(this)},register:function(){var e=this.validateCoreFields(),t=e.$scrollTo;e.valid?e.valid&&(null!=this.groupSelector&&this.model.groups.reset(this.groupSelector.getGroupsData().all),this.model.set("companyCustomFieldValues",null!=this.companyCustomFieldsForm?this.companyCustomFieldsForm.getChanged():null),this.model.set("contactCustomFieldValues",null!=this.contactCustomFieldsForm?this.contactCustomFieldsForm.getChanged():null),this.model.set({groups:_.map(this.model.groups.models,function(e){return{groupId:e.id,isDeleted:e.get("isDeleted")}})}),this.model.set({workAreas:_.map(this.model.workAreas.models,function(e){return{contactWorkAreaId:e.id,workAreaId:e.get("workAreaId"),isDeleted:e.get("isDeleted")}})}),new PJQ.ajax.Request({endpoint:"/contacts/register",data:this.model}).post().done(_.bind(function(e){this.model.isNew()&&0<e.id?(this.model.set("contactId",e.id),this.model.set("contactCompanyId",e.contactCompanyId),this.model.set("userId",e.userId),PJQ.app.session.contact=this.model):0<e.id&&
1(this.model.set("isApprovalRequired",e.isApprovalRequired),PJQ.app.session.contact=this.model),null!=PJQ.app.session.user?PJQ.app.router.navigate("/",{trigger:!0}):0<this.model.get("userId")?new PJQ.views.contacts.RegisterAuth({el:PJQ.app.$el,mode:"SIGN_IN"}):new PJQ.views.contacts.RegisterAuth({el:PJQ.app.$el,mode:"SIGN_UP"})},this))):(new PJQ.Alert(this.$(".validation-error"),{type:"danger",text:"Required fields are empty or have an incorrect value"}),0<_.size(t)&&this.scrollTo(t.offset().top))}}),PJQ.views.contacts.RegisterAuth=PJQ.views.auth.Auth.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"register-auth"),routeToRoot:!0},renderResetPassword:function(){new PJQ.views.auth.RequestResetPasswordModal}}),PJQ.modules.register={routes:[{route:"register",title:"Register",name:"register",callback:function(){null!=PJQ.app.session.user&&null==PJQ.app.session.contact||PJQ.app.session.get("portalId")!==PJQ.constants.panteraPortalId?PJQ.app.router.routeToRoot():new PJQ.views.contacts.Register({el:PJQ.app.$el})}}]},PJQ.app.addRoutes(PJQ.modules.register.routes),PJQ.views.reporting={},PJQ.views.reporting.GenerateReportModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Generate-Report"),subTemplates:{reportOption:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Generate-Report-Option")},onDownload:null},events:{"click .modal-report-download":"onDownload"},beforeRender:function(){this.renderData={model:this.model}},afterRender:function(){_.each(this.model.get("options"),_.bind(function(t){this.renderSubTemplate(!0,this.options.subTemplates.reportOption,this.$(".report-options-outer"),{option:t},function(e){switch(t.type){case"DATE_RANGE":new PJQ.inputs.Datepicker({el:e.find(".input-date-from"),datepickerOptions:{defaultDate:t.defaultValue?t.defaultValue.from:null,format:PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE},onChange:function(e){"object"!==_typeof(t.value)&&(t.value={}),t.value.from=e}}),new PJQ.inputs.Datepicker({el:e.find(".input-date-to"),datepickerOptions:{defaultDate:t.defaultValue?t.defaultValue.to:null,format:PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE},onChange:function(e){"object"!==_typeof(t.value)&&(t.value={}),t.value.to=e}})}})},this))},onDownload:function(){var a=!0;if(_.each(this.model.get("options"),_.bind(function(e){if(e.isRequired){var t=!0;switch(e.type){case"DATE_RANGE":var i=null!=e.value?e.value.to:null,s=null!=e.value?e.value.from:null,n=null!=i&&s<i,o=null!=s&&s<i;PJQ.helpers.inputHelpers.setInputError(this.$('.input-date-from[data-cid="'+e.id+'"]'),o),PJQ.helpers.inputHelpers.setInputError(this.$('.input-date-to[data-cid="'+e.id+'"]'),n),t=o&&n}t||(a=!1)}},this)),a&&"function"==typeof this.options.onDownload){var e=new PJQ.Loader(this.$(".modal-content"));this.options.onDownload(this.model.get("options"),_.bind(function(){e.remove(),this.removeModal()},this))}}}),PJQ.models.reporting={},PJQ.models.reporting.Report=PJQ.models.BaseModel.extend({idAttribute:"reportId",endpoint:function(){},parse:function(e){return e},generate:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,i=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"reports"},{endpoint:"js"}]);PJQ.files.queueDownload(i,{data:e,templateName:this.get("name"),fileName:0<_.size(this.get("fileName"))?this.get("fileName").replace(".",""):"export"},function(){"function"==typeof t&&t()})}}),PJQ.Resizable=function(){function s(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,s);var i=this;i.$el=e,i.options=_.defaults(t,{addClasses:"selected",stop:function(){i.onStop()}}),0<_.size(i.$el)&&i.$el.resizable(i.options)}return _createClass(s,[{key:"onStop",value:function(){"function"==typeof this.options.onStop&&this.options.onStop()}}]),s}(),PJQ.models.sessions={},PJQ.models.sessions.Session=PJQ.models.BaseModel.extend({idAttribute:"sessionId",endpoint:"/session",coreFields:{contact:{},user:{}},customFields:{company:{},contact:{},project:{},actionItems:{},punchList:{},rfi:{},primeContracts:{},payableInvoices:{},receivableInvoices:{},schedule:{},submittals:{},user:{},meetings:{}},groups:{},data:{dailyReports:{templates:null}},fetch:function(e){return PJQ.models.BaseModel.prototype.fetch.call(this,e)},parse:function(e){return e&&0<_.size(e)?(this.preferences&&null!=e.preferences?(this.preferences.set(e.preferences),this.preferences.parse(e.preferences)):null!=e.preferences?e.preferences instanceof PJQ.models.preferences.Preferences?this.preferences=e.preferences:this.preferences=new PJQ.models.preferences.Preferences(e.preferences):this.preferences=new PJQ.models.preferences.Preferences,this.subscription=new PJQ.models.subscriptions.Subscription(e.subscription),null!=e.systemPermissions?this.systemPermissions=new PJQ.models.permissions.SystemPermissions(e.systemPermissions):this.systemPermissions=null,null!=this.userTypes&&null!=e.userTypes?this.userTypes.reset(e.userTypes):null!=e.userTypes?e.userTypes instanceof PJQ.collections.userTypes.UserTypes?this.userTypes=e.userTypes:this.userTypes=new PJQ.collections.users.Users(e.userTypes):this.userTypes=new PJQ.collections.userTypes.UserTypes,null!=this.project&&null!=e.project?(this.project.set(e.project),this.project.parse(e.project)):null!=e.project?e.project instanceof PJQ.models.projects.Project?this.project=e.project:this.project=new PJQ.models.projects.Project(e.project):this.project=null,null!=this.contact&&null!=e.contact?(this.contact.set(e.contact),this.contact.parse(e.contact)):null!=e.contact?e.contact instanceof PJQ.models.contacts.Contact?this.contact=e.contact:this.contact=new PJQ.models.contacts.Contact(e.contact):this.contact=null,null!=this.user&&null!=e.user?(this.user.set(e.user),this.user.parse(e.user)):null!=e.user?e.user instanceof PJQ.models.users.User?this.user=e.user:this.user=new PJQ.models.users.User(e.user):this.user=null,null!=this.users&&null!=e.users?this.users.reset(e.users):null!=e.users?e.users instanceof PJQ.collections.users.Users?this.users=e.users:this.users=new PJQ.collections.users.Users(e.users):this.users=new PJQ.collections.users.Users):(this.systemPermissions=null,this.preferences=new PJQ.models.preferences.Preferences,this.project=null,this.contact=null,this.user=null,this.users=new PJQ.collections.users.Users,this.userTypes=new PJQ.collections.userTypes.UserTypes),this.emailTemplates={},this.emailTemplates.projectMessage=null,e},joinDirectory:function(t){var i=null!=this.contact;i&&!this.contact.get("isBlacklisted")||null==this.user||new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"joindirectory"}])}).post().done(_.bind(function(e){this.contact=new PJQ.models.contacts.Contact(e),null!=PJQ.app.navigator&&PJQ.app.navigator.refreshCommands(),PJQ.notifications.notify.successNotify({message:"You have "+(i?"activated":"joined")+" the Pantera contractor directory"}),"function"==typeof t&&t()},this))},leaveDirectory:function(t){null!=this.contact&&null!=this.user&&new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"leavedirectory"}])}).post().done(_.bind(function(e){this.contact.set("isBlacklisted",!0),null!=PJQ.app.navigator&&PJQ.app.navigator.refreshCommands(),PJQ.notifications.notify.successNotify({message:"You have de-activated the Pantera contractor directory"}),"function"==typeof t&&t()},this))},isPanteraPortal:function(){return 4===this.get("portalId")},hasPermission:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS)&&!PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_PERMISSIONS_PORTAL)||0===_.size(e)||null!=this.systemPermissions&&this.systemPermissions.hasPermission(e,t)},fetchERPIntegration:function(){var n=this,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;return new Promise(function(t,e){var i=function(e){"function"==typeof o&&o(e),t(e)};if(null==PJQ.app.session.user||PJQ.app.session.get("portalId")!==PJQ.constants.panteraPortalId&&!PJQ.app.session.get("ownsPortal"))i(null);else if(null==n.erpIntegration)if(null==n.integrations||(n.erpIntegration=n.integrations.findWhere({erp:!0}
1),null==n.erpIntegration)){var s=new PJQ.integrations.models.Integration({},{erp:!0});s.fetch({success:function(){0<s.id&&(n.erpIntegration=s),i(n.erpIntegration)},error:function(){i(null),e(new Error("Failed to fetch erp integration"))}})}else i(n.erpIntegration);else i(n.erpIntegration)})},fetchIntegrations:function(e){null==this.integrations?(this.integrations=new PJQ.integrations.collections.Integrations,this.integrations.fetch({success:_.bind(function(){"function"==typeof e&&e(this.integrations)},this)})):e(this.integrations)},fetchUserLimits:function(e){null==this.userLimits?(this.userLimits=new PJQ.models.companies.UserLimits,this.userLimits.fetch({success:_.bind(function(){"function"==typeof e&&e(this.userLimits)},this)})):e(this.userLimits)},fetchNDAs:function(e){null==this.ndas&&(this.ndas=new PJQ.collections.projects.ProjectNDAs(null)),this.ndas.isFetched?e(this.ndas):this.ndas.fetch({success:_.bind(function(){e(this.ndas)},this)})},fetchSystemPermissions:function(e){this.systemPermissions=new PJQ.models.permissions.SystemPermissions,this.systemPermissions.fetch({success:_.bind(function(){e(this.systemPermissions)},this)})},fetchBidPackageTemplates:function(e){null==this.bidPackageTemplates?(this.bidPackageTemplates=new PJQ.collections.bidPackages.Templates,this.bidPackageTemplates.fetch({success:_.bind(function(){"function"==typeof e&&e(this.bidPackageTemplates)},this)})):e(this.bidPackageTemplates)},fetchBidFormTemplates:function(e){this.bidFormTemplates=new PJQ.collections.bidForms.Templates,this.bidFormTemplates.fetch({success:_.bind(function(){"function"==typeof e&&e(this.bidFormTemplates)},this)})},fetchBidFormSettings:function(e){null==this.bidFormSettings?(this.bidFormSettings=new PJQ.models.bidForms.Settings,this.bidFormSettings.fetch({success:_.bind(function(){e(this.bidFormSettings)},this)})):e(this.bidFormSettings)},fetchUnitsOfMeasure:function(e){null==this.unitsOfMeasure?(this.unitsOfMeasure=new PJQ.collections.budget.UnitsOfMeasure,this.unitsOfMeasure.fetch({success:_.bind(function(){e(this.unitsOfMeasure)},this)})):e(this.unitsOfMeasure)},fetchCostCodes:function(i){var s=this;return new Promise(function(e,t){if(null!=s.costCodes)return"function"==typeof i&&i(s.costCodes),void e(s.costCodes);s.costCodes=new PJQ.collections.budget.CostCodes,s.costCodes.fetch({success:function(){"function"==typeof i&&i(s.costCodes),e(s.costCodes)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch project cost codes"))}})})},fetchCostTypes:function(i){var s=this;return new Promise(function(e,t){if(null!=s.costTypes)return"function"==typeof i&&i(s.costTypes),void e(s.costTypes);s.costTypes=new PJQ.collections.budget.CostTypes,s.costTypes.fetch({success:function(){"function"==typeof i&&i(s.costTypes),e(s.costTypes)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch project cost types"))}})})},fetchTaxCodes:function(e,t){null==this.taxCodes||t?(this.taxCodes=new PJQ.collections.budget.TaxCodes,this.taxCodes.fetch({success:_.bind(function(){e(this.taxCodes)},this)})):e(this.taxCodes)},fetchInspectionTypes:function(i){var s=this;return new Promise(function(e,t){if(null!=s.inspectionTypes)return"function"==typeof i&&i(s.inspectionTypes),void e(s.inspectionTypes);s.inspectionTypes=new PJQ.collections.inspections.Types,s.inspectionTypes.fetch({success:function(){"function"==typeof i&&i(s.inspectionTypes),e(s.inspectionTypes)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch inspection types"))}})})},fetchInspectionResponseTypes:function(i){var s=this;return new Promise(function(e,t){if(null!=s.inspectionResponseTypes)return"function"==typeof i&&i(s.inspectionResponseTypes),void e(s.inspectionResponseTypes);s.inspectionResponseTypes=new PJQ.collections.inspections.ResponseTypes,s.inspectionResponseTypes.fetch({success:function(){"function"==typeof i&&i(s.inspectionResponseTypes),e(s.inspectionResponseTypes)},error:function(){"function"==typeof i&&i(null),t(new Error("Failed to fetch inspection response types"))}})})},fetchInspectionUserSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.inspectionUserSettings)return"function"==typeof i&&i(s.inspectionUserSettings),void e(s.inspectionUserSettings);s.inspectionUserSettings=new PJQ.models.inspections.UserSettings,s.inspectionUserSettings.fetch({success:function(){e(s.inspectionUserSettings),"function"==typeof i&&i(s.inspectionUserSettings)},error:function(){t(new Error("Failed to fetch inspection user settings"))}})})},fetchRFISettings:function(e){null==this.rfiSettings?(this.rfiSettings=new PJQ.models.rfi.Settings,this.rfiSettings.fetch({success:_.bind(function(){e(this.rfiSettings)},this)})):e(this.rfiSettings)}
1,fetchPlanRoomSettings:function(e){null==this.planRoomSettings?(this.planRoomSettings=new PJQ.models.settings.PlanRoomSettings,this.planRoomSettings.fetch({success:_.bind(function(){e(this.planRoomSettings)},this)})):e(this.planRoomSettings)},fetchOrderingSettings:function(e){null==this.orderingSettings?(this.orderingSettings=new PJQ.models.settings.OrderingSettings,this.orderingSettings.fetch({success:_.bind(function(){e(this.orderingSettings)},this)})):e(this.orderingSettings)},fetchAddressBookSettings:function(e){null==this.addressBookSettings?(this.addressBookSettings=new PJQ.models.settings.AddressBookSettings,this.addressBookSettings.fetch({success:_.bind(function(){e(this.addressBookSettings)},this)})):e(this.addressBookSettings)},fetchActionItemCustomFields:function(i,s){var n=this;return new Promise(function(e,t){null==i&&(i=PJQ.app.session.get("masterUserId")),null==n.customFields.actionItems[i]?(n.customFields.actionItems[i]=new PJQ.collections.actionItems.ActionItemCustomField(null,{masterUserId:i}),n.customFields.actionItems[i].fetch({success:function(){e(n.customFields.actionItems[i]),"function"==typeof s&&s(n.customFields.actionItems[i])},error:function(){t(new Error("Failed to fetch action item field settings"))}})):(e(n.customFields.actionItems[i]),"function"==typeof s&&s(n.customFields.actionItems[i]))})},fetchPunchListCustomFields:function(i,s){var n=this;return new Promise(function(e,t){null==i&&(i=PJQ.app.session.get("masterUserId")),null==n.customFields.punchList[i]?(n.customFields.punchList[i]=new PJQ.collections.punchlists.PunchlistCustomFields(null,{masterUserId:i}),n.customFields.punchList[i].fetch({success:function(){e(n.customFields.punchList[i]),"function"==typeof s&&s(n.customFields.punchList[i])},error:function(){t(new Error("Failed to fetch contract field settings")),"function"==typeof s&&s(n.customFields.punchList[i])}})):(e(n.customFields.punchList[i]),"function"==typeof s&&s(n.customFields.punchList[i]))})},fetchMeetingCustomFields:function(i,s){var n=this;return new Promise(function(e,t){null==i&&(i=PJQ.app.session.get("masterUserId")),null==n.customFields.meetings[i]?(n.customFields.meetings[i]=new PJQ.collections.meetings.CustomFields(null,{masterUserId:i}),n.customFields.meetings[i].fetch({success:function(){e(n.customFields.meetings[i]),"function"==typeof s&&s(n.customFields.meetings[i])},error:function(){t(new Error("Failed to fetch contract field settings"))}})):(e(n.customFields.meetings[i]),"function"==typeof s&&s(n.customFields.meetings[i]))})},fetchRFICustomFields:function(e,t){null==e&&(e=PJQ.app.session.get("masterUserId")),null==this.customFields.rfi[e]?(this.customFields.rfi[e]=new PJQ.collections.rfi.CustomFields(null,{masterUserId:e}),this.customFields.rfi[e].fetch({success:_.bind(function(){"function"==typeof t&&t(this.customFields.rfi[e])},this)})):"function"==typeof t&&t(this.customFields.rfi[e])},fetchContactFieldSettings:function(e,t){null==e&&(e=PJQ.app.session.get("masterUserId")),null==this.coreFields.contact[e]?(this.coreFields.contact[e]=new PJQ.collections.contacts.ContactFieldSettings(null,{masterUserId:e}),this.coreFields.contact[e].fetch({success:_.bind(function(){"function"==typeof t&&t(this.coreFields.contact[e])},this)})):"function"==typeof t&&t(this.coreFields.contact[e])},fetchUserFieldSettings:function(e,t){null==e&&(e=PJQ.app.session.get("masterUserId")),null==this.coreFields.user[e]?(this.coreFields.user[e]=new PJQ.collections.users.UserFieldSettings(null,{masterUserId:e}),this.coreFields.user[e].fetch({success:_.bind(function(){"function"==typeof t&&t(this.coreFields.user[e])},this)})):"function"==typeof t&&t(this.coreFields.user[e])},fetchPrimeContractFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractFieldSettings)return"function"==typeof i&&i(s.primeContractFieldSettings),void e(s.primeContractFieldSettings);s.primeContractFieldSettings=new PJQ.collections.primeContracts.FieldSettings,s.primeContractFieldSettings.fetch({success:function(){e(s.primeContractFieldSettings),"function"==typeof i&&i(s.primeContractFieldSettings)},error:function(){t(new Error("Failed to fetch contract field settings"))}})})},fetchPrimeContractChangeOrderFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractChangeOrderFieldSettings)return"function"==typeof i&&i(s.primeContractChangeOrderFieldSettings),void e(s.primeContractChangeOrderFieldSettings);s.primeContractChangeOrderFieldSettings=new PJQ.collections.primeContracts.ChangeOrderFieldSettings,s.primeContractChangeOrderFieldSettings.fetch({success:function(){e(s.primeContractChangeOrderFieldSettings),"function"==typeof i&&i(s.primeContractChangeOrderFieldSettings)},error:function(){t(new Error("Failed to fetch contract change order field settings"))}})})},fetchReceivableInvoiceFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.receivableInvoiceFieldSettings)return"function"==typeof i&&i(s.receivableInvoiceFieldSettings),void e(s.receivableInvoiceFieldSettings);s.receivableInvoiceFieldSettings=new PJQ.collections.invoicing.ReceivableInvoiceFieldSettings,s.receivableInvoiceFieldSettings.fetch({success:function(){e(s.receivableInvoiceFieldSettings),"function"==typeof i&&i(s.receivableInvoiceFieldSettings)},error:function(){t(new Error("Failed to fetch receivable invoice field settings"))}})})},fetchCommitmentFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentFieldSettings)return"function"==typeof i&&i(s.commitmentFieldSettings),void e(s.commitmentFieldSettings);s.commitmentFieldSettings=new PJQ.collections.commitments.FieldSettings,s.commitmentFieldSettings.fetch({success:function(){e(s.commitmentFieldSettings),"function"==typeof i&&i(s.commitmentFieldSettings)},error:function(){t(new Error("Failed to fetch commitment field settings"))}})})},fetchCommitmentChangeOrderFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentChangeOrderFieldSettings)return"function"==typeof i&&i(s.commitmentChangeOrderFieldSettings),void e(s.commitmentChangeOrderFieldSettings);s.commitmentChangeOrderFieldSettings=new PJQ.collections.commitments.ChangeOrderFieldSettings,s.commitmentChangeOrderFieldSettings.fetch({success:function(){"function"==typeof i&&i(s.commitmentChangeOrderFieldSettings),e(s.commitmentChangeOrderFieldSettings)},error:function(){t(new Error("Failed to fetch commitment change order field settings"))}})})},fetchPayableInvoiceFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.payableInvoiceFieldSettings)return"function"==typeof i&&i(s.payableInvoiceFieldSettings),void e(s.payableInvoiceFieldSettings);s.payableInvoiceFieldSettings=new PJQ.collections.invoicing.PayableInvoiceFieldSettings,s.payableInvoiceFieldSettings.fetch({success:function(){"function"==typeof i&&i(s.payableInvoiceFieldSettings),e(s.payableInvoiceFieldSettings)},error:function(){t(new Error("Failed to fetch payable invoice field settings"))}})})},fetchDirectCostFieldSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.directCostFieldSettings)return"function"==typeof i&&i(s.directCostFieldSettings),void e(s.directCostFieldSettings);s.directCostFieldSettings=new PJQ.collections.directcosts.DirectCostFieldSettings,s.directCostFieldSettings.fetch({success:function(){"function"==typeof i&&i(s.directCostFieldSettings),e(s.directCostFieldSettings)},error:function(){t(new Error("Failed to fetch direct cost field settings"))}})})},fetchContactCustomFields:function(i,s){var n=this;return new Promise(function(e,t){if(null==i&&(i=PJQ.app.session.get("masterUserId")),null!=n.customFields.contact[i])return"function"==typeof s&&s(n.customFields.contact[i]),void e(n.customFields.contact[i]);n.customFields.contact[i]=new PJQ.collections.contacts.ContactCustomFields(null,{masterUserId:i}),n.customFields.contact[i].fetch({success:function(){"function"==typeof s&&s(n.customFields.contact[i]),e(n.customFields.contact[i])}})})},fetchPrimeContractCustomFields:function(e,t){null==e&&(e=PJQ.app.session.get("masterUserId")),null==this.customFields.primeContracts[e]?(this.customFields.primeContracts[e]=new PJQ.collections.primeContracts.CustomFields(null,{masterUserId:e}),this.customFields.primeContracts[e].fetch({success:_.bind(function(){"function"==typeof t&&t(this.customFields.primeContracts[e])},this)})):"function"==typeof t&&t(this.customFields.primeContracts[e])},fetchPayableInvoiceCustomFields:function(e,t){null==e&&(e=PJQ.app.session.get("masterUserId")),null==this.customFields.payableInvoices[e]?(this.customFields.payableInvoices[e]=new PJQ.collections.invoicing.PayableInvoiceCustomFields(null,{masterUserId:e}),this.customFields.payableInvoices[e].fetch({success:_.bind(function(){"function"==typeof t&&t(this.customFields.payableInvoices[e])},this)})):"function"==typeof t&&t(this.customFields.payableInvoices[e])},fetchPayableInvoiceUserSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.payableInvoiceUserSettings)return"function"==typeof i&&i(s.payableInvoiceUserSettings),void e(s.payableInvoiceUserSettings);s.payableInvoiceUserSettings=new PJQ.models.invoicing.PayableInvoiceUserSettings,s.payableInvoiceUserSettings.fetch({success:function(){"function"==typeof i&&i(s.payableInvoiceUserSettings),e(s.payableInvoiceUserSettings)},error:function(){t(new Error("Failed to fetch payable invoice user settings"))}})})},fetchReceivableInvoiceCustomFields:function(e,t){null==e&&(e=PJQ.app.session.get("masterUserId")),null==this.customFields.receivableInvoices[e]?(this.customFields.receivableInvoices[e]=new PJQ.collections.invoicing.ReceivableInvoiceCustomFields(null,{masterUserId:e}),this.customFields.receivableInvoices[e].fetch({success:_.bind(function(){"function"==typeof t&&t(this.customFields.receivableInvoices[e])},this)})):"function"==typeof t&&t(this.customFields.receivableInvoices[e])},fetchReceivableInvoiceUserSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.receivableInvoiceUserSettings)return"function"==typeof i&&i(s.receivableInvoiceUserSettings),void e(s.receivableInvoiceUserSettings);s.receivableInvoiceUserSettings=new PJQ.models.invoicing.ReceivableInvoiceUserSettings,s.receivableInvoiceUserSettings.fetch({success:function(){e(s.receivableInvoiceUserSettings),"function"==typeof i&&i(s.receivableInvoiceUserSettings)},error:function(){t(new Error("Failed to fetch receivable invoice user settings"))}})})},fetchUserCustomFields:function(i,s){var n=this;return new Promise(function(e,t){if(null==i&&(i=PJQ.app.session.get("masterUserId")),null!=n.customFields.user[i])return"function"==typeof s&&s(n.customFields.user[i]),void e(n.customFields.user[i]);n.customFields.user[i]=new PJQ.collections.users.UserCustomFields(null,{masterUserId:i}),n.customFields.user[i].fetch({success:function(){"function"==typeof s&&s(n.customFields.user[i]),e(n.customFields.user[i])}})})},fetchScreeningSettings:function(e){null==this.screeningSettings?(this.screeningSettings=new PJQ.models.addressBook.ProqualSettings,this.screeningSettings.fetch({success:_.bind(function(){"function"==typeof e&&e(this.screeningSettings)},this)})):"function"==typeof e&&e(this.screeningSettings)},fetchSubmittalSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.submittalSettings)return"function"==typeof i&&i(s.submittalSettings),void e(s.submittalSettings);s.submittalSettings=new PJQ.models.submittals.Settings,s.submittalSettings.fetch({success:function(){"function"==typeof i&&i(s.submittalSettings),e(s.submittalSettings)},error:function(){t(new Error("Failed to fetch submittal settings"))}})})},fetchSubmittalUserSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.submittalUserSettings)return"function"==typeof i&&i(s.submittalUserSettings),void e(s.submittalUserSettings);s.submittalUserSettings=new PJQ.models.submittals.SubmittalUserSettings,s.submittalUserSettings.fetch({success:function(){"function"==typeof i&&i(s.submittalUserSettings),e(s.submittalUserSettings)},error:function(){t(new Error("Failed to fetch submittal user settings"))}})})},fetchSubmittalStatuses:function(i,s){var n=this;return new Promise(function(e,t){if(!0!==i&&null!=n.submittalStatuses)return"function"==typeof s&&s(n.submittalStatuses),void e(n.submittalStatuses);n.submittalStatuses=new PJQ.collections.submittals.Statuses,n.submittalStatuses.fetch({success:function(){"function"==typeof s&&s(n.submittalStatuses),e(n.submittalStatuses)},error:function(){t(new Error("Failed to fetch submittal statuses"))}})})},fetchSubmittalItemTypes:function(i){var s=this;return new Promise(function(e,t){if(null!=s.submittalItemTypes)return"function"==typeof i&&i(s.submittalItemTypes),void e(s.submittalItemTypes);s.submittalItemTypes=new PJQ.collections.submittals.ItemTypes,s.submittalItemTypes.fetch({success:function(){"function"==typeof i&&i(s.submittalItemTypes),e(s.submittalItemTypes)},error:function(){t(new Error("Failed to fetch submittal item types"))}})})},fetchSubmittalCustomFields:function(i,s){var n=this;return new Promise(function(e,t){if(null==i&&(i=PJQ.app.session.get("masterUserId")),null!=n.customFields.submittals[i])return"function"==typeof s&&s(n.customFields.submittals[i]),void e(n.customFields.submittals[i]);n.customFields.submittals[i]=new PJQ.collections.submittals.SubmittalCustomField(null,{masterUserId:i}),n.customFields.submittals[i].fetch({success:function(){e(n.customFields.submittals[i]),"function"==typeof s&&s(n.customFields.submittals[i])},error:function(){t(new Error("Failed to fetch submittal custom fields"))}})})},fetchCompanyCustomFields:function(e,t){null==e&&(e=PJQ.app.session.get("masterUserId")),null==this.customFields.company[e]?(this.customFields.company[e]=new PJQ.collections.contacts.CompanyCustomFields(null,{masterUserId:e}),this.customFields.company[e].fetch({success:_.bind(function(){"function"==typeof t&&t(this.customFields.company[e])},this)})):"function"==typeof t&&t(this.customFields.company[e])},fetchScheduleCustomFields:function(e,t){null==e&&(e=PJQ.app.session.get("masterUserId")),null==this.customFields.schedule[e]?(this.customFields.schedule[e]=new PJQ.collections.schedule.ScheduleCustomFields(null,{masterUserId:e}),this.customFields.schedule[e].fetch({success:_.bind(function(){"function"==typeof t&&t(this.customFields.schedule[e])},this)})):"function"==typeof t&&t(this.customFields.schedule[e])},fetchUserTypes:function(e){null==this.userTypes&&(this.userTypes=new PJQ.collections.userTypes.UserTypes),this.userTypes.isFetched?"function"==typeof e&&e(this.userTypes):this.userTypes.fetch({success:_.bind(function(){"function"==typeof e&&e(this.userTypes)},this)})},fetchProjectStatuses:function(i){var s=this;return new Promise(function(e,t){if(null!=s.projectStatuses)return"function"==typeof i&&i(s.projectStatuses),void e(s.projectStatuses);s.projectStatuses=new PJQ.collections.projectStatuses.ProjectStatuses,s.projectStatuses.fetch({success:function(){"function"==typeof i&&i(s.projectStatuses),e(s.projectStatuses)},error:function(){t(new Error("Failed to fetch project statuses"))}})})},fetchProjectCustomFields:function(n,o){var a=this;return new Promise(function(e,t){var i=0<n?n:PJQ.app.session.get("masterUserId");if(null!=a.customFields.project[i])return"function"==typeof o&&o(a.customFields.project[i]),void e(a.customFields.project[i]);var s=new PJQ.collections.projects.ProjectCustomFields(null,{masterUserId:i});s.fetch({success:function(){i!==PJQ.app.session.get("masterUserId")&&(s=new PJQ.collections.projects.ProjectCustomFields(_.filter(s.models,function(e){if(e.get("isVisibleInRSVP"))return e}))),a.customFields.project[i]=s,"function"==typeof o&&o(a.customFields.project[i]),e(a.customFields.project[i])},error:function(){t(new Error("Failed to fetch project custom fields"))}})})},fetchScheduleStatuses:function(i){var s=this;return new Promise(function(e,t){if(null!=s.scheduleTaskStatuses)return"function"==typeof i&&i(s.scheduleTaskStatuses),void e(s.scheduleTaskStatuses);s.scheduleTaskStatuses=new PJQ.collections.schedule.TaskStatuses,s.scheduleTaskStatuses.fetch({success:function(){"function"==typeof i&&i(s.scheduleTaskStatuses),e(s.scheduleTaskStatuses)},error:function(){t(new Error("Failed to fetch schedule task statuses"
1))}})})},fetchPrequalForm:function(i,s){var n=this;return new Promise(function(e,t){if(null==i&&(i=PJQ.app.session.get("masterUserId")),null==n.prequalForms&&(n.prequalForms={}),null!=n.prequalForms[i])return"function"==typeof s&&s(n.prequalForms[i]),void e(n.prequalForms[i]);n.prequalForms[i]=new PJQ.models.prequal.Form({masterUserId:i}),n.prequalForms[i].fetch({success:_.bind(function(){"function"==typeof s&&s(this.prequalForms[i]),e(this.prequalForms[i])},n),error:function(){t(new Error("Failed to fetch prequal form"))}})})},fetchCalendarSettings:function(e){var t=_.bind(function(){"function"==typeof e&&e(this.calendarSettings)},this);null!=this.calendarSettings?t():(this.calendarSettings=new PJQ.models.calendars.CalendarSettings,this.calendarSettings.fetch({success:_.bind(function(){t()},this)}))},fetchScheduleSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.scheduleSettings)return"function"==typeof i&&i(s.scheduleSettings),void e(s.scheduleSettings);s.scheduleSettings=new PJQ.models.schedule.Settings,s.scheduleSettings.fetch({success:function(){"function"==typeof i&&i(s.scheduleSettings),e(s.scheduleSettings)},error:function(){t(new Error("Failed to fetch schedule settings"))}})})},fetchUserGroups:function(n,o){var a=this;return new Promise(function(e,t){var i=PJQ.app.session.get("masterUserId");if(null!=n&&n!==i||(n=-1),null!=a.groups[n])return"function"==typeof o&&o(a.groups[n]),void e(a.groups[n]);var s=new PJQ.collections.groups.Groups(null,{userId:n});s.fetch({success:function(){a.groups[n]=s,"function"==typeof o&&o(a.groups[n]),e(a.groups[n])},error:function(){t(new Error("Failed to fetch user groups"))}})})},fetchProjectMessageEmailTemplates:function(i){var s=this;return new Promise(function(e,t){if(null!=s.emailTemplates.projectMessage)return"function"==typeof i&&i(s.emailTemplates.projectMessage),void e(s.emailTemplates.projectMessage);s.emailTemplates.projectMessage=new PJQ.collections.emailTemplates.EmailTemplates(null,{projectMessage:!0}),s.emailTemplates.projectMessage.fetch({success:function(){"function"==typeof i&&i(s.emailTemplates.projectMessage),e(s.emailTemplates.projectMessage)},error:function(){t(new Error("Failed to fetch project message templates"))}})})},fetchUsers:function(e){null==this.users&&(this.users=new PJQ.collections.users.Users),this.users.isFetched?"function"==typeof e&&e(this.users):this.users.fetch({success:_.bind(function(){"function"==typeof e&&e(this.users)},this)})},fetchSSOProviders:function(e){null==this.ssoProviders&&(this.ssoProviders=new PJQ.collections.sso.Providers),this.ssoProviders.isFetched?"function"==typeof e&&e(this.ssoProviders):this.ssoProviders.fetch({success:_.bind(function(){"function"==typeof e&&e(this.ssoProviders)},this)})},fetchDailyReportTemplates:function(e){null==this.data.dailyReports.templates?(this.data.dailyReports.templates=new PJQ.collections.dailyReports.SurveyTemplates,this.data.dailyReports.templates.fetch({success:_.bind(function(){"function"==typeof e&&e(this.data.dailyReports.templates)},this)})):"function"==typeof e&&e(this.data.dailyReports.templates)},fetchBillingInfo:function(e){null==this.billingInfo&&(this.billingInfo=new PJQ.models.billing.BillingInfo),this.billingInfo.isFetched?e(this.billingInfo):this.billingInfo.fetch({success:_.bind(function(){e(this.billingInfo)},this)})},fetchCommitmentSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentSettings)return"function"==typeof i&&i(s.commitmentSettings),void e(s.commitmentSettings);s.commitmentSettings=new PJQ.models.commitments.Settings,s.commitmentSettings.fetch({success:function(){"function"==typeof i&&i(s.commitmentSettings),e(s.commitmentSettings)},error:function(){t(new Error("Failed to fetch commitment settings"))}})})},fetchCommitmentTerms:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentTerms)return"function"==typeof i&&i(s.commitmentTerms),void e(s.commitmentTerms);s.commitmentTerms=new PJQ.collections.commitments.Terms,s.commitmentTerms.fetch({success:function(){"function"==typeof i&&i(s.commitmentTerms),e(s.commitmentTerms)},error:function(){t(new Error("Failed to fetch commitment terms"))}})})},fetchCommitmentUserSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentUserSettings)return"function"==typeof i&&i(s.commitmentUserSettings),void e(s.commitmentUserSettings);s.commitmentUserSettings=new PJQ.models.commitments.CommitmentUserSettings,s.commitmentUserSettings.fetch({success:function(){"function"==typeof i&&i(s.commitmentUserSettings),e(s.commitmentUserSettings)},error:function(){t(new Error("Failed to fetch commitment user settings"))}})})},fetchCommitmentChangeOrderSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentChangeOrderSettings)return"function"==typeof i&&i(s.commitmentChangeOrderSettings),void e(s.commitmentChangeOrderSettings);s.commitmentChangeOrderSettings=new PJQ.models.commitments.ChangeOrderSettings,s.commitmentChangeOrderSettings.fetch({success:function(){"function"==typeof i&&i(s.commitmentChangeOrderSettings),e(s.commitmentChangeOrderSettings)},error:function(){t(new Error("Failed to fetch commitment change order settings"))}})})},fetchCommitmentChangeOrderUserSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.commitmentChangeOrderUserSettings)return"function"==typeof i&&i(s.commitmentChangeOrderUserSettings),void e(s.commitmentChangeOrderUserSettings);s.commitmentChangeOrderUserSettings=new PJQ.models.commitments.ChangeOrderUserSettings,s.commitmentChangeOrderUserSettings.fetch({success:function(){"function"==typeof i&&i(s.commitmentChangeOrderUserSettings),e(s.commitmentChangeOrderUserSettings)},error:function(){t(new Error("Failed to fetch commitment change order user settings"))}})})},fetchDirectCostSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.directCostSettings)return"function"==typeof i&&i(s.directCostSettings),void e(s.directCostSettings);s.directCostSettings=new PJQ.models.directcosts.Settings,s.directCostSettings.fetch({success:function(){"function"==typeof i&&i(s.directCostSettings),e(s.directCostSettings)},error:function(){t(new Error("Failed to fetch direct cost settings"))}})})},fetchMeetingSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.meetingSettings)return"function"==typeof i&&i(s.meetingSettings),void e(s.meetingSettings);s.meetingSettings=new PJQ.models.meetings.Settings,s.meetingSettings.fetch({success:function(){"function"==typeof i&&i(s.meetingSettings),e(s.meetingSettings)},error:function(){t(new Error("Failed to fetch meetings settings"))}})})},fetchDirectCostUserSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.directCostUserSettings)return"function"==typeof i&&i(s.directCostUserSettings),void e(s.directCostUserSettings);s.directCostUserSettings=new PJQ.models.directcosts.UserSettings,s.directCostUserSettings.fetch({success:function(){"function"==typeof i&&i(s.directCostUserSettings),e(s.directCostUserSettings)},error:function(){t(new Error("Failed to fetch direct cost user settings"))}})})},fetchPrimeContractTerms:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractTerms)return"function"==typeof i&&i(s.primeContractTerms),void e(s.primeContractTerms);s.primeContractTerms=new PJQ.collections.primeContracts.Terms,s.primeContractTerms.fetch({success:function(){e(s.primeContractTerms),"function"==typeof i&&i(s.primeContractTerms)},error:function(){t(new Error("Failed to fetch contract terms"))}})})},fetchPrimeContractSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractSettings)return"function"==typeof i&&i(s.primeContractSettings),void e(s.primeContractSettings);s.primeContractSettings=new PJQ.models.primeContracts.Settings,s.primeContractSettings.fetch({success:function(){e(s.primeContractSettings),"function"==typeof i&&i(s.primeContractSettings)},error:function(){t(new Error("Failed to fetch contract settings "))}})})},fetchPrimeContractUserSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractUserSettings)return"function"==typeof i&&i(s.primeContractUserSettings),void e(s.primeContractUserSettings);s.primeContractUserSettings=new PJQ.models.primeContracts.PrimeContractUserSettings,s.primeContractUserSettings.fetch({success:function(){e(s.primeContractUserSettings),"function"==typeof i&&i(s.primeContractUserSettings)},error:function(){t(new Error("Failed to fetch contract user settings"))}})})},fetchPrimeContractChangeOrderSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractChangeOrderSettings)return"function"==typeof i&&i(s.primeContractChangeOrderSettings),void e(s.primeContractChangeOrderSettings);s.primeContractChangeOrderSettings=new PJQ.models.primeContracts.ChangeOrderSettings,s.primeContractChangeOrderSettings.fetch({success:function(){e(s.primeContractChangeOrderSettings),"function"==typeof i&&i(s.primeContractChangeOrderSettings)},error:function(){t(new Error("Failed to fetch contract change order settings"))}})})},fetchPrimeContractChangeOrderUserSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.primeContractChangeOrderUserSettings)return"function"==typeof i&&i(s.primeContractChangeOrderUserSettings),void e(s.primeContractChangeOrderUserSettings);s.primeContractChangeOrderUserSettings=new PJQ.models.primeContracts.ChangeOrderUserSettings,s.primeContractChangeOrderUserSettings.fetch({success:function(){e(s.primeContractChangeOrderUserSettings),"function"==typeof i&&i(s.primeContractChangeOrderUserSettings)},error:function(){t(new Error("Failed to fetch contract change order user settings"))}})})},fetchChangeRequestSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.changeRequestSettings)return"function"==typeof i&&i(s.changeRequestSettings),void e(s.changeRequestSettings);s.changeRequestSettings=new PJQ.models.changeRequests.Settings,s.changeRequestSettings.fetch({success:function(){"function"==typeof i&&i(s.changeRequestSettings),e(s.changeRequestSettings)},error:function(){t(new Error("Failed to fetch change request custom fields"))}})})},fetchChangeRequestUserSettings:function(i){var s=this;return new Promise(function(e,t){if(null!=s.changeRequestUserSettings)return"function"==typeof i&&i(s.changeRequestUserSettings),void e(s.changeRequestUserSettings);s.changeRequestUserSettings=new PJQ.models.changeRequests.ChangeRequestUserSettings,s.changeRequestUserSettings.fetch({success:function(){"function"==typeof i&&i(s.changeRequestUserSettings),e(s.changeRequestUserSettings)},error:function(){t(new Error("Failed to fetch change request user settings"))}})})},isLoggedIn:function(){return null!=this.user&&0<this.user.id},hasFeature:function(e){return null!=this.subscription&&this.subscription.hasFeature(e)},updateTrial:function(e,t,i){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"trial"}],[{parameter:"id",value:e}])}).put().done(_.bind(function(e){null!=e&&null!=e.subscription||"function"==typeof i&&i(e),this.subscriptionChanged(e.subscription),"function"==typeof t&&t(e)},this)).fail(_.bind(function(e){"function"==typeof i&&i(e)},this))},changeSubscription:function(e,t,i){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"subscription"}],[{parameter:"id",value:e}])}).put().done(_.bind(function(e){null!=e&&null!=e.subscription||"function"==typeof i&&i(e),this.subscriptionChanged(e.subscription),"function"==typeof t&&t(e)},this)).fail(_.bind(function(e){"function"==typeof i&&i(e)},this))},subscriptionChanged:function(e){e instanceof PJQ.models.subscriptions.Subscription?this.subscription=e:this.subscription=new PJQ.models.subscriptions.Subscription(e),null==this.subscription.newSubscription&&$(".alert-sub-expiration").remove(),PJQ.app.navigator.renderHeaderSubscription(),PJQ.app.navigator.refreshCommands(),PJQ.app.navigator.renderActiveItem(),null!=this.subscriptionChangedListeners&&_.each(this.subscriptionChangedListeners,function(e){e()})},listenSubscriptionChanged:function(e,t){"function"==typeof t&&(null==this.subscriptionChangedListeners&&(this.subscriptionChangedListeners={}),this.subscriptionChangedListeners[e]=t)},updateAutoRenew:function(e,t,i){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"autorenew"}],[{parameter:"enable",value:e}])}).put().done(_.bind(function(e){null!=e&&null!=e.subscription||"function"==typeof i&&i(e),this.subscriptionChanged(e.subscription),null==this.subscription.newSubscription&&$(".alert-sub-expiration").remove(),"function"==typeof t&&t(e)},this)).fail(_.bind(function(e){"function"==typeof i&&i(e)},this))},changeUserSeats:function(e,t,i){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"userseats"}],[{parameter:"userSeats",value:e}])}).put().done(_.bind(function(e){null!=e&&null!=e.subscription||"function"==typeof i&&i(e),this.subscriptionChanged(e.subscription),"function"==typeof t&&t(e)},this)).fail(_.bind(function(e){"function"==typeof i&&i(e)},this))}}),PJQ.views.sharing={},PJQ.views.sharing.SharingModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Share"),subTemplates:{contact:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Share-Contact"),emailBadge:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Share-Email-Badge")},isEmailOnly:!1,canEditSubject:!0,subject:"Files have been shared with you",preventExpiration:null,onSave:null,onCancel:null},events:{"click .input-share-link,.btn-share-link-copy":"copyShareLink","keyup .input-share-search":"searchChanged","click .share-contact":"addEmail","click .share-email-delete":"deleteEmail","change .cb-prevent-expire":"preventExpiration","click .modal-share-send":"send","click .modal-share-cancel":"cancel"},beforeModalCreated:function(){this.selectedEmails=[],this.options.preventExpiration=PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.DRAWING_SHARE_PREVENT_EXPIRATION)},renderData:function(){return{options:this.options}},afterRender:function(){if(0===_.size(this.options.url)&&(this.urlLoader=new PJQ.Loader(this.$(".share-link-outer"),{type:"small"})),null!=this.options.project){var e=new PJQ.Loader(this.$(".share-contacts-outer"));this.options.project.fetchProjectContacts(_.bind(function(){this.contacts=this.options.project.projectContacts,e.remove(),this.searchChanged()},this))}else this.contacts=new PJQ.collections.contacts.Contacts,this.searchChanged();this.renderPreventExpire()},copyShareLink:function(){this.$(".input-share-link")[0].select(),document.execCommand("copy");var e=this.$(".text-link-copied");e.animateCSS("fadeIn",function(){setTimeout(function(){e.animateCSS("fadeOut")},1500)})},urlChanged:function(e){0<_.size(e)&&!this.options.isEmailOnly&&(this.options.url=e,this.$(".input-share-link").val(e),this.$(".share-link-outer").removeClass("hidden"),null!=this.urlLoader&&(this.urlLoader.remove(),this.urlLoader=null)),this.renderPreventExpire()},searchChanged:function(){var e,i=this.$(".input-share-search").val().toLowerCase();e=0<_.size(i)?_.filter(this.contacts.models,_.bind(function(e){var t=e.get("email").toLowerCase();return 0!==_.size(t)&&-1===_.indexOf(this.selectedEmails,t)&&(-1!==e.get("
1contactName").toLowerCase().indexOf(i)||-1!==t.indexOf(i))},this)):_.filter(this.contacts.models,_.bind(function(e){var t=e.get("email").toLowerCase();return 0<_.size(t)&&-1===_.indexOf(this.selectedEmails,t)},this));var t=this.$(".share-add-email"),s=PJQ.helpers.validators.validateEmail(i).success;s&&0===_.size(e)?(this.$(".share-suggested-contacts").append($("<div>",{text:i})),this.$(".share-add-email .share-contact").data("email",i),this.$(".share-email-entry-letter").html(i[0].toUpperCase()),this.$(".share-email-entry").text(i),t.removeClass("hidden")):t.addClass("hidden");var n=this.$(".share-search-results"),o=this.$(".share-search-results-outer");n.empty(),0<_.size(e)?(_.each(_.sortBy(e,function(e){return e.get("contactName")}),_.bind(function(e){this.renderSubTemplate(!0,this.options.subTemplates.contact,n,{model:e})},this)),o.removeClass("hidden")):o.addClass("hidden");var a=this.$(".share-search-no-results");s||0<_.size(e)?a.addClass("hidden"):a.removeClass("hidden")},renderRecipientCount:function(){var e=_.size(this.selectedEmails);this.$(".recipient-count").html(e.toString()+(1===e?" recipient":" recipients"))},addEmail:function(e){var t=$(e.currentTarget).closest(".share-contact").data("email");this.renderSubTemplate(!0,this.options.subTemplates.emailBadge,this.$(".share-selected-emails"),{email:t}),this.selectedEmails.push(t.toLowerCase()),this.$(".input-share-search").val(""),this.searchChanged(),this.$(".modal-share-send").prop("disabled",!1),this.renderRecipientCount()},deleteEmail:function(e){var t=$(e.currentTarget).closest(".share-email");this.selectedEmails=_.without(this.selectedEmails,t.data("email").toLowerCase()),t.remove(),this.searchChanged(),this.$(".modal-share-send").prop("disabled",0===_.size(this.selectedEmails)),this.renderRecipientCount()},send:function(){"function"==typeof this.options.onSave&&this.options.onSave({emails:this.selectedEmails,subject:this.options.canEditSubject?this.$(".input-share-subject").val():null})},cancel:function(){"function"==typeof this.options.onCancel&&this.options.onCancel()},preventExpiration:function(){this.options.preventExpiration=this.$(".cb-prevent-expire").prop("checked"),this.options.preventExpiration&&PJQ.notifications.createNotifyModal({header:"Prevent Drawing Link Expiration",notification:"You have selected for this share link to prevent expiration.  <b>With this selected, all drawings in the selected versions will be included in this share</b> and any individual drawing selections you made will be removed.",cookie:PJQ.constants.cookies.NOTIFY_DRAWING_SHARE_PREVENT_EXPIRE}),null!=this.collection&&(this.collection.options.allDrawings=this.options.preventExpiration,this.collection.update()),this.renderPreventExpire()},renderPreventExpire:function(){null!=this.collection&&0<_.size(this.collection.options.versionIds)&&(this.$(".prevent-expire-outer").removeClass("hidden"),this.$(".prevent-expire").prop("checked",this.options.preventExpiration)),this.options.preventExpiration?this.$preventExpireAlert=new PJQ.Alert(this.$(".alert-header"),{text:"You have selected for this link to prevent expiration.  With this selected, only full versions can be shared.  When drawings in the shared versions change, this link will be updated with the changes."}):null!=this.$preventExpireAlert&&(this.$preventExpireAlert.destroy(),this.$preventExpireAlert=null)}}),PJQ.views.signatures={},PJQ.views.signatures.SignatureSubmitModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Signature-Submit"),headerText:"Sign Below",headerSubText:"",fetchSignature:!0},events:{"click .signature-erase":"onErase","click .signature-close":"onClose","click .signature-submit":"onSubmit"},afterRender:function(){if(this.$canvas=this.$(".signature-canvas"),this.canvas=this.$canvas[0],this.renderSignaturePad(),this.options.fetchSignature)this.fetchUserSignature();else{var e=this.options.signature;this.isNewSignature=!0,e&&this.signaturePad.fromDataURL(e)}},renderData:function(){return{options:this.options}},renderSignaturePad:function(){null!=this.signaturePad&&this.signaturePad.off(),this.signaturePad=new SignaturePad(this.canvas),this.signaturePad.minWidth=1,this.signaturePad.maxWidth=1,this.resizeCanvas()},onSubmit:function(){new PJQ.Loader(this.$(".modal-content")),this.options.onSubmit&&!this.isSubmitted&&(this.isSubmitted=!0,this.options.onSubmit(this.isNewSignature?this.signaturePad.toDataURL():null,_.bind(function(){this.removeModal()},this)))},onClose:function(){this.options.onClose&&this.options.onClose(this.model)},onErase:function(){this.isNewSignature=!0,this.renderSignaturePad()},resizeCanvas:function(){var e=Math.max(window.devicePixelRatio||1,1);this.canvas.width=this.canvas.offsetWidth*e,this.canvas.height=this.canvas.offsetHeight*e,this.canvas.getContext("2d").scale(e,e)},fetchUserSignature:function(){this.signaturePad.off(),this.signaturePad.fromDataURL(PJQ.helpers.urlHelpers.buildAPIURL("/users/signature",!1,!0)),new PJQ.ajax.Request({endpoint:"/users/signature"}).get().done(_.bind(function(){this.isNewSignature=!0,this.signaturePad.on()},this))}}),PJQ.views.signatures.SignatureTermsModal=PJQ.views.signatures.SignatureSubmitModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Signature-Terms"),maxWidth:"1200px",fitHeight:!0},beforeRender:function(){this.renderData={terms:this.options.terms}}}),PJQ.Slider=function(){function i(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,i),this.$el=e,this.options=_.defaults(t,{fitHorizontal:!0,onChange:_.noop}
1),0<_.size(this.$el)&&(this.slider=this.$el.bootstrapSlider(this.options).on("change",_.bind(this.onChange,this)),this.options.fitHorizontal&&this.$el.prev(".slider.slider-horizontal").addClass("wd-100"),this.refresh())}return _createClass(i,[{key:"refresh",value:function(){this.slider.bootstrapSlider("refresh")}},{key:"getValue",value:function(){return this.slider.bootstrapSlider("getValue")}},{key:"setValue",value:function(e){this.slider.bootstrapSlider("setValue",e)}},{key:"onChange",value:function(e){this.options.onChange(e.value)}}]),i}(),PJQ.Sortable=function(){function s(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,s);var i=this;i.$el=e,i.options=_.defaults(t,{selectedClass:"selected",start:function(){i.onStart()},stop:function(e,t){i.onStop(e,t)}}),0<_.size(i.$el)&&0<_.size(i.options.items)&&(i.$el.find(i.options.items).addClass("sortable-item"),i.options.multiple?i.$el.multisortable(i.options):i.$el.sortable(i.options))}return _createClass(s,[{key:"refreshPositions",value:function(){this.options.multiple?this.$el.multisortable("refreshPositions"):this.$el.sortable("refreshPositions")}},{key:"getSelected",value:function(){return this.$el.find(this.options.items).filter("."+this.options.selectedClass)}},{key:"moveSelectedTop",value:function(){this.getSelected().prependTo(this.$el),this.$el.scrollTop(0),this.onStop()}},{key:"moveSelectedBottom",value:function(){this.getSelected().appendTo(this.$el),this.$el.scrollTop(this.$el.height()+100),this.onStop()}},{key:"onStop",value:function(e,t){"function"==typeof this.options.onStop&&this.options.onStop(e,t)}},{key:"onStart",value:function(){"function"==typeof this.options.onStart&&this.options.onStart()}}]),s}(),PJQ.StepIndicator=function(){function n(e){var t,i,s=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,n),this.$el=e,this.options=_.defaults(s,{}),this.steps=null!==(t=this.options.steps)&&void 0!==t?t:[],this.activeStep=null!==(i=this.options.activeStep)&&void 0!==i?i:0,0<_.size(this.$el)&&this.refresh()}return _createClass(n,[{key:"refresh",value:function(){var s=this,n='<div class="stepper-wrapper">';_.each(this.steps,function(e,t){var i="";s.activeStep===t?i="active":s.activeStep>t&&(i="completed"),n+='<div class="stepper-item '+i+'"><div class="step-counter">'+(t+1).toString()+'</div><div class="step-name">'+e.name+"</div></div>"}),n+="</div>",this.$el.html(n)}},{key:"setStep",value:function(e){}}]),n}(),PJQ.constants.subscriptions=(_defineProperty(_PJQ$constants$subscr={types:{FREE:1,BASIC:2,PRO:3,ENTERPRISE:4},colors:{1:"#7e7e7e",2:"#EF6C00",3:"#3073bb",4:"#5E35B1"},names:{1:"FREE",2:"BASIC",3:"PRO",4:"ENTERPRISE"}},"names",{1:"FREE",2:"BASIC",3:"PRO",4:"ENTERPRISE"}),_defineProperty(_PJQ$constants$subscr,"costs",{1:0,2:999,3:1999,4:4999}),_PJQ$constants$subscr),PJQ.models.subscriptions={},PJQ.models.subscriptions.Subscription=PJQ.models.BaseModel.extend({idAttribute:"subscriptionId",parse:function(e){return null!=e&&(null!=e.newSubscription?this.newSubscription=new PJQ.models.subscriptions.Subscription(e.newSubscription):this.newSubscription=null),e},hasFeature:function(e){if(PJQ.app.session.get("onAccount")||PJQ.app.session.get("portalId")!==PJQ.constants.panteraPortalId)return!0;switch(e.toLowerCase()){case"projects":return this.get("hasProjects");case"contacts":return this.get("hasContacts");case"documents":return this.get("hasDocuments");case"calendar":return this.get("hasCalendar");case"reports":return this.get("hasReports");case"projectmessaging":return this.get("hasProjectMessaging");case"privatemessaging":return this.get("hasPrivateMessaging");case"bidforms":return this.get("hasBidForms");case"drawings":return this.get("hasDrawings");case"projectattachments":return this.get("hasProjectAttachments");case"rfi":return this.get("hasRFI");case"submittals":return this.get("hasSubmittals");case"dailyreports":return this.get("hasDailyReports");case"schedule":return this.get("hasSchedule");case"punchlist":return this.get("hasPunchList");case"actionitems":return this.get("hasActionItems");case"projectreports":return this.get("hasProjectReports");case"bidfiler":return this.get("hasBidFiler");default:return!0}},getCostsPerUser:function(t){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"subscription"},{endpoint:"cost"}])}).get().done(_.bind(function(e){"function"==typeof t&&t(e)},this)).fail(_.bind(function(){"function"==typeof t&&t(data)},this))}}),PJQ.views.subscriptions={},PJQ.views.subscriptions.EditSubscriptionModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-edit-subscription"),maxWidth:1200,isVerticalCenter:!0,isShowCloseButton:!0,preventTrial:!1,onSave:null},events:{"click .sub-option":"subscriptionSelected","click .btn-submit":"submit","click .btn-submit-trial":"submitTrial"},beforeModalCreated:function(){PJQ.app.session.subscription.id!==PJQ.constants.subscriptions.types.FREE?this.selectedSubscriptionId=PJQ.app.session.subscription.id:this.selectedSubscriptionId=PJQ.constants.subscriptions.types.FREE,this.options.forTrialOffer=!this.options.preventTrial&&(null==PJQ.app.session.subscription.get("trialExpiresOn")||0<PJQ.helpers.dateHelpers.getDateDiff(new Date(PJQ.app.session.subscription.get("trialExpiresOn")),new Date,"days")+1)},renderData:function(){return{forTrialOffer:this.options.forTrialOffer,activeSubscription:PJQ.app.session.subscription,selectedSubscriptionId:this.selectedSubscriptionId}},subscriptionSelected:function(e){this.selectedSubscriptionId=parseInt($(e.currentTarget).data("subId")),this.render()},submitTrial:function(){var e=this.$(".error-outer");this.selectedSubscriptionId!==PJQ.constants.subscriptions.types.FREE?(e.empty(),PJQ.app.session.updateTrial(this.selectedSubscriptionId,_.bind(function(e){null==e||null==e.subscription?PJQ.notifications.notify.errorNotify({message:"Encountered an error starting your free trial.  Please contact customer service."}):(PJQ.notifications.notify.successNotify({message:"Free trial started"}),this.removeModal())},this),_.bind(function(){PJQ.notifications.notify.errorNotify({message:"Encountered an error starting your free trial.  Please contact customer service."}),this.removeModal()},this))):e.html("Please select a plan")},submit:function(){var e=this.$(".error-outer"),t=PJQ.app.session.subscription.get("newSubscription");if(this.selectedSubscriptionId!==PJQ.constants.subscriptions.types.FREE)if(this.selectedSubscriptionId!==PJQ.app.session.subscription.id||null!=t)if(e.empty(),PJQ.app.session.subscription.get("isFreeTrial")||this.selectedSubscriptionId>PJQ.app.session.subscription.id)this.removeModal(),new PJQ.views.payment.SubscriptionPaymentModal({selectedSubscriptionId:this.selectedSubscriptionId});else{var i=new PJQ.Loader(this.$(".modal-content")),s=function(){i.remove(),PJQ.notifications.notify.errorNotify({message:"Encountered an error upgrading your subscription.  Please contact customer service."})};PJQ.app.session.changeSubscription(this.selectedSubscriptionId,_.bind(function(e){null==e||null==e.subscription?s():(PJQ.notifications.notify.successNotify({message:"Subscription successfully updated"}),this.removeModal(),"function"==typeof this.options.onSave&&this.options.onSave())},this),_.bind(function(){s()},this))}else e.html("This plan is already active on your account");else e.html("Please select a plan")}}),PJQ.views.subscriptions.DisableAutoRenewModal=PJQ.views.BaseModal.extend({beforeModalCreated:function(){this.options=_.defaults({header:"Disable Auto Renew",body:"Are you sure you want to disable auto-renew?<br />Your users will continue to have access to your current subscription's features until it expires on <strong>"+PJQ.helpers.dateHelpers.getDateString(new Date(this.options.subscription.get("expiresOn")),PJQ.helpers.dateHelpers.dateFormats.DATE,!0)+"</strong>.",isShowOkButton:!0,okButtonColorClass:"danger",okButtonText:"Disable Auto-Renew",onOk:_.bind(function(){"function"==typeof this.options.onYes&&this.options.onYes()},this),isShowSecondaryButton:!0,secondaryButtonText:"Keep Auto-Renew Enabled",onSecondary:_.b
1ind(function(){"function"==typeof this.options.onNo&&this.options.onNo()},this)},this.options)}}),PJQ.TokenManager=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,t),_defineProperty(this,"UPDATE_EVENT","TOKENS_UPDATED"),this.Key_Access_Token="access_token",this.Key_Refresh_Token="refresh_token",this.enabled=e&&!0===e.enabled,this.setAccessToken(e.accessToken),this.setRefreshToken(e.refreshToken),this.enabled&&this.addBroadcastChannelListener()}return _createClass(t,[{key:"addBroadcastChannelListener",value:function(){this.bc=new BroadcastChannel("TOKEN_CHANNEL"),this.bc.addEventListener("message",_.bind(function(e){null!=e.data&&(this.setAccessToken(e.data.accessToken),this.setRefreshToken(e.data.refreshToken))},this))}},{key:"setAccessToken",value:function(e){window.sessionStorage.removeItem(this.Key_Access_Token),0<_.size(e)&&window.sessionStorage.setItem(this.Key_Access_Token,e)}},{key:"setRefreshToken",value:function(e){window.sessionStorage.removeItem(this.Key_Refresh_Token),_.size(e)&&window.sessionStorage.setItem(this.Key_Refresh_Token,e)}},{key:"updateTokens",value:function(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};this.setAccessToken(e),this.setRefreshToken(t),null!=i.expiresOn&&this.updateCookies(i.expiresOn,i.onCookiesUpdated,i.cookieParams),!1!==i.broadcast&&new BroadcastChannel("TOKEN_CHANNEL").postMessage({accessToken:this.getAccessToken(),refreshToken:this.getRefreshToken()})}},{key:"updateCookies",value:function(e,t){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[],s=this.getAccessToken(),n=this.getRefreshToken();0<_.size(n)&&0<_.size(s)&&null!=e&&new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:PJQ.app.options.isK8?"token":"Token.ashx"}],_.union(i,[{parameter:"r",value:n},{parameter:"a",value:s},{parameter:"exp",value:e}])),isOrigin:!0}).get().done(_.bind(function(){"function"==typeof t&&t(!0)},this)).fail(_.bind(function(){"function"==typeof t&&t(!1)},this))}},{key:"getRefreshToken",value:function(){return window.sessionStorage.getItem(this.Key_Refresh_Token)}},{key:"getAccessToken",value:function(){return window.sessionStorage.getItem(this.Key_Access_Token)}},{key:"getTokensForAccessKey",value:function(e,t){return this.getTokensForUser(null,null,t,{accessKey:e})}},{key:"getTokensForUser",value:function(e,t,i){var s,n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},o=function(e,t){"function"==typeof i&&i(null!=e&&e,null!=t?t:null)};if(0<_.size(n.accessKey)){if(0<_.size(this.getAccessToken())&&this.accessKey===n.accessKey)return void o(!0);this.accessKey=n.accessKey,s=[{parameter:"accessKey",value:n.accessKey}]}else s=[{parameter:"username",value:e},{parameter:"password",value:t}];new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"token"}],s),isAPIv2:!0}).post().done(_.bind(function(t){if(0<_.size(t.access_token)){this.updateTokens(t.access_token,t.refresh_token);var e={Authorization:"Bearer "+t.access_token};new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"token"},{endpoint:"signin"}]),headers:e}).get().done(_.bind(function(e){e.success?this.updateTokens(t.access_token,t.refresh_token,{expiresOn:PJQ.helpers.dateHelpers.getNewDateAddSeconds(new Date,300),cookieParams:[{parameter:"dnn",value:e.cookie},{parameter:"s",value:e.sessionId}],onCookiesUpdated:_.bind(function(){o(!0)},this)}):o(!0,"CUSTOMER_SERVICE")},this))}else o(!1,0<_.size(t.error)?t.error:"CUSTOMER_SERVICE")},this)).fail(_.bind(function(e){o(!1,0<_.size(e.error)?e.error:"CUSTOMER_SERVICE")},this))}},{key:"refreshAccessToken",value:function(t){var e=this.getRefreshToken();0<_.size(e)?new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"token"}],[{parameter:"refresh_token",value:e}]),isAPIv2:!0,canAuthRetry:!1}).post().done(_.bind(function(e){0<_.size(e.access_token)?this.updateTokens(e.access_token,e.refresh_token,{expiresOn:PJQ.helpers.dateHelpers.getNewDateAddSeconds(new Date,e.expires_in),onCookiesUpdated:_.bind(function(){"function"==typeof t&&t(this.getAccessToken())},this)}):"function"==typeof t&&t(this.getAccessToken())},this)).fail(_.bind(function(){this.handleUnauthorized()},this)):this.handleUnauthorized()}},{key:"handleUnauthorized",value:function(){PJQ.app.options.isK8?window.location.href="/signout":window.location.href="/Signout.aspx?r="+encodeURIComponent(window.location.origin+"/#signin")}}]),t}(),PJQ.views.toolbars={},PJQ.views.toolbars.BaseToolbar=PJQ.views.BaseView.extend({beforeFirstRender:function(){var e=0<_.size(this.$el)?this.$el:$("body"),t=e.find("#toolbarsContainer");0===_.size(t)&&(t=$("<div>",{id:"toolbarsContainer"}),e.append(t)),this.setElement(t)},hide:function(){var e=this.$(".toolbar");e.animate({height:"0px"},300,_.bind(function(){e.addClass("hidden")},this))},show:function(){this.$(".toolbar").removeClass("hidden").animate({height:"50px"})},save:function(){"function"==typeof this.options.onSave&&this.options.onSave()},close:function(){"function"==typeof this.options.onClose&&this.options.onClose();var e=this.$(".toolbar");e.animate({height:"0px"},300,_.bind(function(){e.addClass("hidden")},this))}}),PJQ.views.toolbars.ProfileSaveToolbar=PJQ.views.toolbars.BaseToolbar.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Profile-Save"),hideWhenZero:!0,onClose:null,onSave:null},events:{"click .btn-profile-save":"save","click .btn-profile-cancel-save":"close"},afterRender:function(){this.workAreaCount=0,setTimeout(_.bind(function(){this.listenTo(this.options.model,"change",_.bind(this.renderChangedCount,this)),this.listenTo(this.options.workAreaMap,"update",_.bind(this.renderChangedCount,this)),_.each(this.options.workAreaMap.models,function(e){e&&(this.workAreaCount+=1)},this),this.groupsCount=this.options.groupSelector.getGroupsData().selected.length,this.renderChangedCount()},this),500)},autoShowToolbar:function(){this.$(".btn-profile-save, .btn-profile-cancel-save").prop("disabled",!1),this.$(".toolbar").removeClass("hidden").animate({height:"50px"})},renderChangedCount:function(){var e=this.options.model.hasChanged(),t=this.options.groupSelector.getGroupsData().selected.length,i=this.options.workAreaMap.length,s=this.$(".toolbar"),n=s.hasClass("hidden");this.options.hideWhenZero&&!e&&!n&&i===this.workAreaCount&&t===this.groupsCount||!this.options.isEdit?(this.$(".btn-profile-save, .btn-profile-cancel-save").prop("disabled",!0),this.close()):(n&&e||n&&i!==this.workAreaCount||n&&t!==this.groupsCount)&&(this.$(".btn-profile-save, .btn-profile-cancel-save").prop("disabled",!1),s.removeClass("hidden").animate({height:"50px"}))}}),PJQ.views.toolbars.SettingsSaveToolbar=PJQ.views.toolbars.BaseToolbar.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Toolbar-Save"),validate:_.noop},events:{"click .btn-settings-save":"save","click .btn-settings-cancel-save":"clearSaveModels"},beforeFirstRender:function(){this.saveArray=[]},renderData:function(){return{options:this.options}},afterRender:function(){this.renderToolbar()},addSaveModel:function(t){this.saveArray=_.reject(this.saveArray,function(e){return e.cid===t.cid}),null==_.find(this.saveArray,function(e){return e.cid===t.cid})&&this.saveArray.push(t),this.renderToolbar()},clearSaveModels:function(){_.each(this.saveArray,function(e){e.fetch()}),this.saveArray=[],this.renderToolbar()},renderToolbar:function(){var e=_.size(this.saveArray),t=this.$(".toolbar").hasClass("hidden");0!==e||t?t&&0<e&&this.show():this.hide()},save:function(){var e=0,t=_.bind(function(){++e===_.size(this.saveArray)&&(PJQ.notifications.notify.successNotify({message:"Settings saved"}),PJQ.app.session.fetch(),this.clearSaveModels())},this);("function"!=typeof this.options.validate||this.options.validate())&&_.each(this.saveArray,function(e){e instanceof PJQ.models.users.User||e instanceof PJQ.models.schedule.Settings||e instanceof PJQ.models.bidForms.Settings||e instanceof PJQ.models.submittals.Settings||e instanceof PJQ.models.submittals.SubmittalUserSettings?e.save(null,{success:_.bind(function(){PJQ.app.navigator.refreshCommands(),t()},this)}):e instanceof PJQ.models.rfi.Settings?e.put(null,{success:_.bind(function(){t()},this)}):e.patch(null,{success:_.bind(function(){t()},this)})},this)}}),PJQ.views.toolbars.FilesToolbar=PJQ.views.toolbars.BaseToolbar.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Toolbar-Files"),previewImageDimension:160,hideWhenZero:!0,isPhotos:!1,onClose:_.noop},events:{"click .btn-files-download":"download","click .btn-files-share":"share","click .toolbar-close":"close"},beforeRender:function(){null==this.collection&&(this.collection=new PJQ.collections.files.Files(null,{isPhotos:this.options.isPhotos})),this.listenTo(this.collection,"update",_.bind(this.renderSelectedCount,this))},renderData:function(){return{collection:this.collection,options:this.options}},afterRender:function(){this.renderSelectedCount()},addFiles:function(e){this.collection.add(e)},removeFiles:function(e){this.collection.remove(e)},renderSelectedCount:function(){var e=_.size(this.collection.models),t=this.$(".toolbar"),i=t.hasClass("hidden");this.options.hideWhenZero&&0===e&&!i?this.close():i&&0<e&&t.removeClass("hidden").animate({height:"50px"}),this.$(".selected-files-label").html(e.toString()+" file"+(0<e?"s":"")+" selected"),this.$(".download-files, .btn-share").prop("disabled",0===e)},download:function(){var e=_.size(this.collection.models);1<e?this.collection.download():1===e&&this.collection.models[0].download()},share:function(){var t=PJQ.app.session.project,i=new PJQ.views.sharing.SharingModal({project:t,onSave:_.bind(function(e){this.collection.share(e,t,_.bind(function(e){},this))},this)});this.collection.share(null,t,function(e){_.bind(i.urlChanged,i)(e.url)})},close:function(){this.collection.reset(),this.options.onClose();var e=this.$(".toolbar");e.animate({height:"0px"},300,_.bind(function(){e.addClass("hidden"),this.$(".selected-file-count").html(0)},this))}}),PJQ.views.toolbars.ExportSelectedToolbar=PJQ.views.toolbars.BaseToolbar.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Toolbar-Export-Selected"),previewImageDimension:160,selectedCount:0,onExport:null,onClose:null},events:{"click .btn-export":"export","click .toolbar-close":"destroy"},afterRender:function(){this.renderSelectedCount(),this.show()},updateSelectedCount:function(e){this.options.selectedCount=e,this.renderSelectedCount()},renderSelectedCount:function(){this.$(".selected-label").html(this.options.selectedCount.toString()+" selected"),this.$(".btn-export").prop("disabled",0===this.options.selectedCount)},export:function(){"function"==typeof this.options.onExport&&this.options.onExport()},destroy:function(){this.hide(),setTimeout(_.bind(function(){this.remove()},this),500)}}),PJQ.Tooltip=function(){function i(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,i),null==e&&0<_.size(t.container)?(this.$el=$("<div>",{class:"position-absolute wd-100 ht-100 left-0 top-0"}),t.container.append(this.$el)):this.$el=e instanceof $?e:$(e),t.show||this.$el.addClass("popup-trigger"),this.options=_.defaults(t,{placement:"auto",trigger:t.show?"focus":"hover",html:!0,sanitize:!1,allowMultiple:!1,template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Tooltip-Default")}),this.init()}return _createClass(i,[{key:"init",value:function(){this.getTemplate(_.bind(function(e){if(this.$el.popover(_.defaults({content:_.bind(function(){return e.outerHTML()},this)},_.omit(this.options,"template"))),this.options.show)this.$el.popover("show");else if(0<_.size(this.options.container)){var t=this;this.options.container.off("click.tooltip"),this.options.container.on("click.tooltip",function(e){0===$(e.target).closest(".popup-trigger").length&&t.options.container.children(".popover").popover("hide")}),this.options.allowMultiple||(this.$el.off("show.bs.popover"),this.$el.on("show.bs.popover",function(){t.options.container.children(".popover").not(this).popover("hide")}),"function"==typeof this.options.onShow&&this.options.onShow(this))}"function"==typeof this.options.afterRender&&this.options.afterRender(this)},this))}},{key:"getTemplate",value:function(e){this.options.template.render(this.renderData(),e)}},{key:"renderData",value:function(){return null!=this.options.renderData?"function"==typeof this.options.renderData?this.options.renderData():this.options.renderData:{title:this.options.title}}},{key:"show",value:function(){this.$el.popover("show")}},{key:"hide",value:function(){this.$el.popover("hide")}},{key:"remove",value:function(){this.$el.popover("dispose"),0<_.size(this.options.container)&&this.options.container.find(".popover").remove(),this.$el.off("show.bs.popover").off("shown.bs.popover"),this.options.container.off("click.tooltip")}}]),i}(),PJQ.tours={},PJQ.views.tours={},PJQ.helpers.tours={initTour:function(){PJQ.app.session.get("onAccount")||PJQ.app.session.user.get("tourDone")||PJQ.app.session.get("portalId")!==PJQ.constants.panteraPortalId||new PJQ.views.tours.SubscriptionTourIntro}},PJQ.tours.BaseTour=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,t),this.options=_.defaults(e,{onEnd:_.bind(function(){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"tour"}])}).put().done(function(){}).fail(function(){})},this),framework:"bootstrap4",showIfUnintendedOrphan:!0,showProgressText:!1,showProgressBar:!1,steps:[{element:".nav-myprojects",content:"The Projects tab is where you can view, create, and manage all of your projects.  Let's take a look at a sample project to get you familiar with some of the tools.",container:"#Body",placement:"auto",onShow:_.bind(function(){PJQ.app.router.navigate("myprojects",{trigger:!0})},this),onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("projects")||(this.tour.getCurrentStepIndex()<0?this.prev():this.next())},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projects")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/dashboard",{trigger:!0})},this)},{element:".project-dashboard",orphan:!0,content:"This is your project dashboard.  It's the first thing you will see when you enter your project. Here you can get an overview for your project, see shared documents, and check the project news feed.",placement:"auto",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("projects")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projects")&&PJQ.app.router.navigate("myprojects",{trigger:!0})},this)},{element:".nav-project",content:"Here you can navigate through all of your project tools.  Next we'll take a look at Project Details.",placement:"right",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("projects")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projects")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/dashboard",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projects")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/details",{trigger:!0})},this)},{element:".nav-details",content:"Project Details is where you can add, view, or modify information relating to the Project.  You can also add custom fields in the settings if there is other information you would like to be shown.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("projects")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projectMessaging")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/messaging",{trigger:!0})},this)},{element:".nav-messaging",content:"Messaging is where you will manage all of your Invitations to Bid.  It's extremely easy to invite people from your address book, or quickly send to a 
1single email.  Once you have an existing project you can also invite from those projects.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("projectMessaging")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projects")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/details",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("privateMessaging")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/privatemessaging",{trigger:!0})},this)},{element:".nav-privatemessaging",content:"Anyone who has access to this project can easily message you which can also include attachments they wish for you to see.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("privateMessaging")||(this.previousStep>this.tour.getCurrentStepIndex()?this.tour.prev():this.tour.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projectMessaging")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/messaging",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("bidForms")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/bidforms",{trigger:!0})},this)},{element:".nav-bidforms",content:"Send bid forms to project participants, or add a bid form to a specific trade.  You can also manage, and view any existing bid forms.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("bidForms")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("privateMessaging")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/privatemessaging",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projects")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/contacts",{trigger:!0})},this)},{element:".nav-projectcontacts",content:"Here is where you will manage any of your Project Contacts.  Project contacts will be anyone you will want to assign to handle tasks such as Daily Reports.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("projects")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("bidForms")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/bidforms",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("drawings")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/drawings",{trigger:!0})},this)},{element:".nav-drawings",content:"View and manage all of your drawings!  It's easy to upload, revise, and share all of your drawings.  When your drawings are uploaded, our system will automatically attempt to find the page number and name it accordingly for quick organization.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("drawings")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projects")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/contacts",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projectAttachments")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/attachments",{trigger:!0})},this)},{element:".nav-attachments",content:"Easily upload, organize, store, and share all of your documents.  All attachments uploaded through the project can be accessed here.  By default there will be a shared and private folder, but you can also add more folders as needed.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("projectAttachments")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("drawings")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/drawings",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("schedule")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/schedule",{trigger:!0})},this)},{element:".nav-projectschedule",content:"Scheduling is your most important tool for staying on top of your project. Add tasks with dependencies and successors and create a critical path.",placement:"bottom",onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projectAttachments")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/attachments",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("photoGallery")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/photos",{trigger:!0})},this),onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("schedule")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this)},{element:".nav-projectphotos",content:"Your Photo Gallery contains any photos uploaded throughout your project.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("photoGallery")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("schedule")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/schedule",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("rfi")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/rfi",{trigger:!0})},this)},{element:".nav-rfi",content:"Send, receive, and collaborate on RFIs with other project contacts",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("rfi")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("photoGallery")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/photos",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("submittals")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/submittals",{trigger:!0})},this)},{element:".nav-submittals",content:"Create, collect, and manage your submittals for the project",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("submittals")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("rfi")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/rfi",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("dailyReports")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/dailyreports",{trigger:!0})},this)},{element:".nav-dailyreports",content:"Track daily, weekly, and monthly project tasks and details with your Daily Reports.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("dailyReports")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("submittals")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/submittals",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("punchList")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/punchlists",{trigger:!0})},this)},{element:".nav-punchlists",content:"Assign a punch list item to one of your project contacts. They’ll receive an immediate notification!",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("punchList")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("dailyReports")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/dailyreports",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projectReports")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/reports",{trigger:!0})},this)},{element:".nav-projectreports",content:"View and export reports related to the project.  Reports include a detailed participant list, project stats, and more!",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("projectReports")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("punchList")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/punchlists",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.router.navigate("projectinvites",{trigger:!0})},this)},{element:".nav-projectinvites",content:"The Project Invites tab is where you can view all of your Invitations to Bid from other contractors.",placement:"bottom",onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("projectReports")&&PJQ.app.router.navigate("projects/"+this.options.projectId+"/reports",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("contacts")&&PJQ.app.router.navigate("contacts",{trigger:!0})},this)},{element:".nav-contacts",content:"Using the address book makes it easy to manage your contacts and add them to your projects.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("contacts")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.router.navigate("projectinvites",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("documents")&&PJQ.app.router.navigate("documents",{trigger:!0})},this)},{element:".nav-documents",content:"Quickly view documents from all of your projects.",placement:"bottom",onShown:_.bind(function(){PJQ.app.session.subscription.hasFeature("documents")||(this.previousStep>this.tour.getCurrentStepIndex()?this.prev():this.next())},this),onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("contacts")&&PJQ.app.router.navigate("contacts",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.router.navigate("profile",{trigger:!0})},this)},{element:".nav-profile",content:"Here’s where you can make sure all of your profile settings are correct. \n<br> <br> PRO TIP: Always check and make sure your Work Areas is up to date so you can receive the best leads!\n",placement:"bottom",onPrev:_.bind(function(){this.setStep(),PJQ.app.session.subscription.hasFeature("documents")||PJQ.app.router.navigate("documents",{trigger:!0})},this),onNext:_.bind(function(){this.setStep(),PJQ.app.router.navigate("prequal",{trigger:!0})},this)},{element:".nav-prequal",content:"Save even more time by filling out your PreQualification details here, so you can easily share them with a General Contractor.",placement:"bottom",onPrev:_.bind(function(){this.setStep(),PJQ.app.router.navigate("profile",{trigger:!0})},this)},{element:".screening-dashboard-body",content:"Congratulations! You've made it to the end our your Pantera Tools tour. When you're ready, click the \"End Tour\" button below to start getting more leads!",placement:"left"}]}),this.start()}return _createClass(t,[{key:"start",value:function(){this.tour=new Tour(this.options),this.tour.start(!0)}},{key:"next",value:function(){this.tour.next()}},{key:"prev",value:function(){this.tour.prev()}},{key:"setStep",value:function(){this.previousStep=this.tour.getCurrentStepIndex()}}]),t}(),PJQ.views.tours.SubscriptionTourIntro=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"modal-tour-intro"),maxWidth:800,isVerticalCenter:!0},events:{"click .btn-start-tour":"startTour","click .btn-skip-tour":"skipTour"},startTour:function(){PJQ.app.session.user.get("tourDone")&&window.localStorage.clear();var t=null;new PJQ.collections.projects.Projects(null,{isSimple:!1,status:"ready",isMyProjects:!0}).fetch({success:_.bind(function(e){_.each(_.filter(e.models,function(e){return"Sample Project"===e.get("projectName")}
1),function(e){t=e.get("projectId")}),null!=t?PJQ.app.tour=new PJQ.tours.BaseTour({projectId:t}):0<e.models.length&&null!=(t=e.models[0].get("projectId"))&&(PJQ.app.tour=new PJQ.tours.BaseTour({projectId:t}))},this)}),this.removeModal()},skipTour:function(){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"tour"}])}).put().done(function(){}).fail(function(){})}}),PJQ.models.userMessages={},PJQ.models.userMessages.UserMessage=PJQ.models.BaseModel.extend({idAttribute:"userMessageId",endpoint:function(){return 0<this.id?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usermessages",value:this.id}]):0<this.get("replyToMessageId")?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usermessages",value:this.get("replyToMessageId")}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.project.id},{endpoint:"usermessages"}])},parse:function(e){return null!=e?(this.project=e.project,null!=e.from&&(this.from=new PJQ.models.contacts.Contact(e.from)),null!=e.to&&(this.to=new PJQ.models.contacts.Contact(e.to)),this.attachments=new PJQ.collections.files.Files(e.attachments),this.attachments.on("update",_.bind(function(){this.isDirty=!0},this))):this.attachments=new PJQ.collections.files.Files,e},beforeSave:function(){this.set("attachments",this.attachments.getChangedModels()),null!=this.userMessageType&&this.set("userMessageTypeId",this.userMessageType.id)},updateViewed:function(){this.set("viewedOn",new Date),0<this.id&&new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usermessages",value:this.id},{endpoint:"viewed"}])}).put()}}),PJQ.models.userMessages.UserMessageType=PJQ.models.BaseModel.extend({idAttribute:"internalMessageTypeId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usermessages"},{endpoint:"types",value:this.id}])}}),PJQ.collections.userMessages={},PJQ.collections.userMessages.UserMessages=PJQ.collections.BaseCollection.extend({model:PJQ.models.userMessages.UserMessage,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"usermessages",value:this.options.userId},{endpoint:0<_.size(this.options.view)?this.options.view:"inbox"}])}}),PJQ.collections.userMessages.UserMessageThread=PJQ.collections.BaseCollection.extend({model:PJQ.models.userMessages.UserMessage,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usermessages",value:this.options.message.id},{endpoint:"thread"}])}}),PJQ.collections.userMessages.UserMessageTypes=PJQ.collections.BaseCollection.extend({model:PJQ.models.userMessages.UserMessageType,endpoint:function(){return null!=this.options.project&&0<this.options.project.id?PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"projects",value:this.options.project.id},{endpoint:"usermessages"},{endpoint:"types"}]):PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usermessages"},{endpoint:"types"}])}}),PJQ.helpers.users={sendPasswordReset:function(e,s){var t={success:!1,error:null};new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"requestpasswordreset"}],[{parameter:"masterUserId",value:PJQ.app.session.get("masterUserId")},{parameter:"username",value:e}])}).post().done(_.bind(function(e){t.success=e.success,t.success||(t.error=PJQ.Errors.auth[e.error]),"function"==typeof s&&s(t)},this)).fail(_.bind(function(e,t,i){i.error=PJQ.Errors.auth.CUSTOMER_SERVICE,"function"==typeof s&&s(i),new PJQ.logging.Debug(PJQ.logging.LoggingActions.AUTH_RESET_PASSWORD,{error:t,result:i})},this))}},PJQ.models.users={},PJQ.models.users.User=PJQ.models.contacts.Contact.extend({idAttribute:"userId",defaults:{type:"user"},endpoint:function(){var e=[];return this.isNew()&&e.push.apply(e,[{parameter:"username",value:this.get("username")},{parameter:"password",value:this.get("password")}]),PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users",value:this.id<0?-this.id:this.id}],e)},parse:function(e){return null!=e?(null!=PJQ.app.session&&(null!=e.userTypeId&&(this.userType=PJQ.app.session.userTypes.get(e.userTypeId)),null===this.userType&&(this.userType=PJQ.app.session.userTypes.getDefault(!0))),null==this.groups?this.groups=new PJQ.collections.groups.Groups(e.groups,{groupLevels:PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS)}):(null!=e.groups&&(e.groups=e.groups),this.groups.reset(0<_.size(e.groups)?e.groups:null),this.groups.options.groupLevels=PJQ.app.session?PJQ.app.session.preferences.getPref(PJQ.constants.preferenceTypes.GROUP_LEVELS):1),null==e.companyId&&(e.companyId=0)):this.userType=null!=PJQ.app.session?PJQ.app.session.userTypes.getDefault(!0):null,e},fetchRFISettings:function(e){null==this.rfiSettings?(this.rfiSettings=new PJQ.models.rfi.Settings,this.rfiSettings.fetch({success:_.bind(function(){e(this.rfiSettings)},this)})):e(this.rfiSettings)},sendPasswordReset:function(t){PJQ.helpers.users.sendPasswordReset(this.get("username"),function(e){"function"==typeof t&&t(e)})},unlock:function(e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users",value:this.id},{endpoint:"unlock"}])}).put().done(_.bind(function(){this.set("lockedOn",null),e(!0)},this)).fail(function(){e(!1)})},beforeSave:function(){this.groups&&this.set({groups:_.map(this.groups.models,function(e){return{groupId:e.id,isDeleted:e.get("isDeleted")}})})}}),PJQ.models.users.UserFieldSetting=PJQ.models.BaseModel.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"user"},{endpoint:"fields"}])}}),PJQ.collections.users={},PJQ.collections.users.Users=PJQ.collections.contacts.Contacts.extend({model:PJQ.models.users.User,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"}],[{parameter:"isDetail",value:this.options.isDetail}])},getByUserType:function(t){return null==t?this.models:_.filter(this.models,function(e){return t===e.get("userTypeId")}
1)}}),PJQ.views.users={},PJQ.app.addRoutes({route:"resetpassword/:guid",name:"resetPassword",callback:function(e){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"resetpassword",value:e}])}).get().done(function(e){e.error?PJQ.app.router.signInNavigate():PJQ.app.module===PJQ.constants.modules.APP?new PJQ.views.auth.AppResetPassword({el:PJQ.app.$el,request:e,onReset:function(){new PJQ.views.BaseModal({header:"Password Reset Successfully",body:"Your password has been successfully reset.",isShowSecondaryButton:!1,okButtonText:"Go To Sign In",onOk:_.bind(function(){PJQ.app.router.signInNavigate()},this)})}}):new PJQ.views.auth.ResetPasswordModal({request:e})}).fail(function(){})}}),PJQ.models.users.UserCustomField=PJQ.models.customFields.CustomField.extend({endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"customfields",value:this.id}])}}),PJQ.collections.users.UserCustomFields=PJQ.collections.customFields.CustomFields.extend({model:PJQ.models.users.UserCustomField,options:{masterUserId:null},endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"customfields"}],[{parameter:"masterUserId",value:0<this.options.masterUserId?this.options.masterUserId:PJQ.app.session.get("masterUserId")}])}}),PJQ.collections.users.UserFieldSettings=PJQ.collections.BaseCollection.extend({model:PJQ.models.users.UserFieldSetting,endpoint:function(){var e;return e=0<this.options.masterUserId?[{parameter:"masterUserId",value:this.options.masterUserId}]:null,PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"users"},{endpoint:"fields"}],e)}}),PJQ.models.userTypes={},PJQ.models.userTypes.UserType=PJQ.models.BaseModel.extend({idAttribute:"userTypeId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"userTypes",value:this.id<0?-this.id:this.id}])},fetchSystemPermissions:function(e){var t=new PJQ.models.permissions.SystemPermissions({userTypeId:this.id});0<this.id?t.fetch({success:_.bind(function(){e(t)},this)}):e(t)},fetchProjectPermissions:function(e){var t=new PJQ.models.permissions.ProjectPermissions({userTypeId:this.id});0<this.id?t.fetch({success:_.bind(function(){e(t)},this)}):e(t)},fetchSystemNotificationSettings:function(e){var t=new PJQ.models.notificationSettings.SystemNotificationSettings({userTypeId:this.id});0<this.id?t.fetch({success:_.bind(function(){e(t)},this)}):e(t)},fetchProjectNotificationSettings:function(e){var t=new PJQ.models.notificationSettings.ProjectNotificationSettings({userTypeId:this.get("userTypeId")});0<this.id?t.fetch({success:_.bind(function(){e(t)},this)}):e(t)}}),PJQ.collections.userTypes={},PJQ.collections.userTypes.UserTypes=PJQ.collections.BaseCollection.extend({model:PJQ.models.userTypes.UserType,endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"userTypes"}])},getDefault:function(){var t=0<arguments.length&&void 0!==arguments[0]&&arguments[0];return _.find(this.models,function(e){return t===e.get("isCompanyUser")&&e.get("isDefault")})},getById:function(t){return _.find(this.models,function(e){return e.id==t})},getByIsCompany:function(t){return null==t?this.models:_.filter(this.models,function(e){return t===e.get("isCompanyUser")})},copy:function(t){new PJQ.ajax.Request({endpoint:PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"usertypes"},{endpoint:"copy"}])}).post().done(_.bind(function(e){this.reset(e),t()},this))}}),$.fn.outerHTML=function(e){return e?this.before(e).remove():jQuery("<p>").append(this.eq(0).clone()).html()},"function"!=typeof Object.assign&&(Object.assign=function(e){"use strict";if(null==e)throw new TypeError("Cannot convert undefined or null to object");e=Object(e);for(var t=1;t<arguments.length;t++){var i=arguments[t];if(null!=i)for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(e[s]=i[s])}return e}),window.onScriptError=function(){},window.ValidateEmail=function(e){return PJQ.helpers.validators.validateEmail(e)},PJQ.models.weather={},PJQ.models.weather.WeatherDay=PJQ.models.BaseModel.extend({idAttribute:"weatherId",parse:function(e){return null!=(e=e||{}).hours&&(this.hours=new PJQ.collection.weather.WeatherHours(e.hours)),e},conditionIconUrl:function(){var e=this.get("conditionIconId");if(0<e)return"/assets/modules2/global/images/weather/"+e.toString()+".png"},minTempDisplay:function(){var e=this.get("minTemperature");
1if(null!=e)return parseInt(e).toString()+"&#176;F"},maxTempDisplay:function(){var e=this.get("maxTemperature");if(null!=e)return parseInt(e).toString()+"&#176;F"}}),PJQ.models.weather.WeatherHour=PJQ.models.BaseModel.extend({idAttribute:"weatherHourId"}),PJQ.collections.weather={},PJQ.collections.weather.WeatherHours=PJQ.collections.BaseCollection.extend({model:PJQ.models.weather.WeatherHour}),PJQ.constants.weather={MAX_FORECAST_DAYS:13},PJQ.models.workAreas={},PJQ.models.workAreas.WorkArea=PJQ.models.BaseModel.extend({idAttribute:"workAreaId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("contactId")},{endpoint:"workareas",value:this.id}])},isStateWorkArea:function(){return 0<_.size(this.get("state"))&&!this.isCountyWorkArea()},isCountyWorkArea:function(){return 0<_.size(this.get("county"))}}),PJQ.models.workAreas.ContactWorkArea=PJQ.models.workAreas.WorkArea.extend({idAttribute:"contactWorkAreaId",endpoint:function(){return PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.get("contactId")},{endpoint:"workareas",value:0<this.id?this.get("workAreaId"):null}])}}),PJQ.collections.workAreas={},PJQ.collections.workAreas.WorkAreas=PJQ.collections.BaseCollection.extend({model:PJQ.models.workAreas.WorkArea,endpoint:function(){var e=[];return 0<_.size(this.options.country)&&e.push({parameter:"country",value:this.options.country}),0<_.size(this.options.state)&&e.push({parameter:"state",value:this.options.state}),0<_.size(this.options.zip)&&e.push({parameter:"zip",value:this.options.zip}),0<this.options.radius&&e.push({parameter:"radius",value:this.options.radius}),PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"workAreas"}],e)},getExistingWorkArea:function(t){return _.find(this.models,function(e){return!e.get("isDeleted")&&(e.get("workAreaId")===t.get("workAreaId")||e.get("state")===t.get("state")&&e.isStateWorkArea())})}}),PJQ.collections.workAreas.ContactWorkAreas=PJQ.collections.workAreas.WorkAreas.extend({model:PJQ.models.workAreas.ContactWorkArea,endpoint:function(){var e=[];return 0<_.size(this.options.zip)&&e.push({parameter:"zip",value:this.options.zip}),0<this.options.radius&&e.push({parameter:"radius",value:this.options.radius}),PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.options.contactId},{endpoint:"workAreas"}],e)}}),PJQ.views.workAreas={},PJQ.views.workAreas.WorkAreaMap=PJQ.views.BaseView.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Work-Area-Map-Inline"),isInline:!0,isStacked:!1,isEdit:!1,isMapOnly:!1,isSync:!0,defaultRadius:50,mapZoom:4,mapCenter:null,onChange:_.noop,onDelete:_.noop,onFetch:_.noop},events:{"keyup .work-area-zip":"workAreaZipInputChanged","keyup .work-area-radius":"workAreaRadiusInputChanged","click .add-work-area-state-county":"addWorkAreaByStateCounty","click .add-work-area-zip":"addWorkAreasByZipRadius","click .delete-work-area":"deleteWorkAreaEvent","click .delete-all-work-areas":"deleteAllWorkAreas"},beforeFirstRender:function(){return this.options.mapCenter="object"===("undefined"==typeof google?"undefined":_typeof(google))?new google.maps.LatLng(38.6159,-100.7456):null,this.options.isInline||(this.options.template=new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Work-Area-Map")),0<this.options.contactId||null==PJQ.app.session.contact||(this.options.contactId=PJQ.app.session.contact.id),null==this.collection&&(this.collection=new PJQ.collections.workAreas.ContactWorkAreas([],{contactId:this.options.contactId})),this.listenTo(this.collection,"update fetch",_.bind(function(){this.renderDeleteAllButtons()},this)),!this.options.isFetched&&0<this.collection.options.contactId?this.collection.fetch({success:_.bind(function(){this.options.isFetched=!0,this.render(),"function"==typeof this.options.onFetch&&this.options.onFetch()},this)}):this.render(),!1},beforeRender:function(){this.renderData={options:this.options}},afterRender:function(){this.renderUI()},renderUI:function(){this.options.isEdit&&this.renderInputs(),this.renderDataTables(),this.renderDeleteAllButtons(),this.renderMap(),0<_.size(this.options.error)&&this.showError(this.options.error)},renderInputs:function(){this.radiusSlider=new PJQ.Slider(this.$(".work-area-radius-slider"),{ticks:[1,50,100,150,200,250,300],ticks_labels:[1,50,100,150,200,250,300],value:this.options.defaultRadius,onChange:_.bind(function(e){this.setWorkAreaRadius(e.newValue)},this)}),this.countryPicker=new PJQ.inputs.Selectpicker({el:this.$(".work-area-country"),defaultValue:PJQ.constants.countries[0].toUpperCase(),onChange:_.bind(function(e){this.populateStateSelect(),"ca"===e.toLowerCase()?this.$(".work-area-county").closest("div.input-group").addClass("invisible"):this.$(".work-area-county").closest("div.input-group").removeClass("invisible"),this.workAreaStateCountyInputChanged()},this)}),this.statePicker=new PJQ.inputs.Selectpicker({el:this.$(".work-area-state"),noneSelectedText:"State",hideDisabled:!1,isMultiple:!0,onChange:_.bind(function(){this.populateCountySelect(),this.workAreaStateCountyInputChanged()},this)}),this.countyPicker=new PJQ.inputs.Selectpicker({el:this.$(".work-area-county"),noneSelectedText:"County",isIntChoices:!0,isMultiple:!0,hideDisabled:!1,onChange:_.bind(function(){this.workAreaStateCountyInputChanged()},this)}),this.populateStateSelect()},getStates:function(e,t){if(null==this.states&&(this.states=[]),0<_.size(e)&&null==this.states[e]){var i=new PJQ.collections.workAreas.WorkAreas([],{country:e});i.fetch({success:_.bind(function(){this.states[e]=i,t(this.states[e])},this)})}else t(this.states[e])},populateStateSelect:function(){var e=this.countryPicker.getValue();this.$("select.work-area-state").empty(),this.$("select.work-area-state").append('<option value="" disabled>State</option>
1'),0<_.size(e)?this.getStates(e,_.bind(function(e){_.each(e.models,function(t){this.$("select.work-area-state").append('<option value="'+t.get("workAreaId").toString()+'" '+(null!=_.find(this.collection.models,function(e){return!0!==e.get("isDeleted")&&e.get("workAreaId")===t.get("workAreaId")})?"disabled":"")+">"+t.get("state")+"</option>")},this),this.statePicker.refresh()},this)):this.statePicker.refresh(),this.workAreaStateCountyInputChanged()},getCounties:function(e,t,i){if(null==this.counties&&(this.counties=[]),0<_.size(e)&&0<_.size(t)&&null==this.counties[t]){var s=new PJQ.collections.workAreas.WorkAreas([],{country:e,state:t});s.fetch({success:_.bind(function(){this.counties[t]=s,i(this.counties[t])},this)})}else i(this.counties[t])},populateCountySelect:function(){var e=this.countryPicker.getValue(),t=this.statePicker.getValue(),i=0<_.size(e)&&1===_.size(t)?this.states[e].get(t[0]):null;this.getCounties(e,null!=i?i.get("state"):null,_.bind(function(e){this.$("select.work-area-county").empty(),this.$("select.work-area-county").append('<option value="" disabled>County</option>'),null!=e&&_.each(e.models,function(t){this.$("select.work-area-county").append('<option value="'+t.get("workAreaId").toString()+'" '+(null!=_.find(this.collection.models,function(e){return!0!==e.get("isDeleted")&&e.get("workAreaId")===t.get("workAreaId")})?"disabled":"")+">"+t.get("county")+"</option>")},this),this.countyPicker.refresh()},this)),this.workAreaStateCountyInputChanged()},renderMap:function(){this.map=new PJQ.maps.GoogleMap(this.$(".work-area-map"),{zoom:this.options.mapZoom,center:this.options.mapCenter}),this.renderMapLayers(),this.refresh()},renderDataTables:function(){var e;this.workAreaDataTable&&this.workAreaDataTable.removeAllRows(),this.collection.models=_.filter(this.collection.models,function(t){return!t.get("isDeleted")&&(0===_.size(t.get("county"))||null==_.find(this.collection.models,function(e){return t.id!==e.id&&t.get("state").toLowerCase()===e.get("state").toLowerCase()&&0===_.size(e.get("county"))}))},this),e=this.options.isEdit?[{data:"attributes.country",title:"Country"},{data:"attributes.state",title:"State"},{data:"attributes.county",title:"County"},{title:'<button type="button" class="btn btn-danger delete-all-work-areas m-0a"><i class="fal fa-trash"></i></button>',defaultContent:'<button type="button" class="btn btn-danger delete-work-area m-0a"><i class="fal fa-trash"></i></button>',orderable:!1}]:[{data:"attributes.country",title:"Country"},{data:"attributes.state",title:"State"},{data:"attributes.county",title:"County"}],this.workAreaDataTable=new PJQ.views.dataTables.DataTable({el:this.$(".work-area-data-table"),data:_.sortBy(_.filter(this.collection.models,_.bind(function(e){return e.get("state")&&0<e.get("state").length},this)),function(e){return e.get("state")}),language:{emptyTable:"No work areas added",zeroRecords:"No work areas match the search criteria"},rowId:"cid",deferRender:!0,columns:e,dom:'<"top"<"clear">p>rt<"bottom"p<"clear">>'})},renderMapLayers:function(){this.renderStateLayers(),this.renderCountyLayers()},renderStateLayers:function(){var e=_.map(_.filter(this.collection.models,function(e){return!e.get("isDeleted")&&e.isStateWorkArea()}),function(e){return e.get("state")});this.stateLayerGuid&&(this.map.removeMapObject(this.stateLayerGuid),this.stateLayerGuid=null),0<_.size(e)&&(this.stateLayerGuid=this.map.addKMLStatesLayer(e))},renderCountyLayers:function(){var e=_.map(_.filter(this.collection.models,function(e){return!e.get("isDeleted")&&e.isCountyWorkArea()}),function(e){return e.get("workAreaId")});this.countyLayerGuid&&(this.map.removeMapObject(this.countyLayerGuid),this.countyLayerGuid=null),0<_.size(e)&&(this.countyLayerGuid=this.map.addKMLCountiesLayer(e))},reCenter:function(){this.map&&this.map.setCenter(this.options.mapCenter)},refresh:function(){this.map&&this.map.resize(),this.radiusSlider&&this.radiusSlider.refresh()},workAreaRadiusInputChanged:function(){this.setWorkAreaRadius(parseInt(this.$(".work-area-radius").val()))},setWorkAreaRadius:function(e){isNaN(e)||e<1?e=1:300<e&&(e=300),this.radiusSlider.setValue(e),0<this.$(".work-area-radius").val().length&&this.$(".work-area-radius").val(e)},workAreaZipInputChanged:function(){this.$(".add-work-area-zip").prop("disabled",!PJQ.helpers.validators.validateZip(this.$(".work-area-zip").val()))},workAreaStateCountyInputChanged:function(){var e=this.countryPicker.getValue(),t=this.statePicker.getValue(),i=this.countyPicker.getValue();0<_.size(e)?this.statePicker.enable():this.statePicker.disable(),0<t?this.countyPicker.enable():this.countyPicker.disable(),(PJQ.app.session.contact?PJQ.app.session.contact.
1id:null)===this.options.contactId&&PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PREVENT_NATIONWIDE_WORK_AREAS_SUB)||PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PREVENT_NATIONWIDE_WORK_AREAS_PORTAL)||PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.PREVENT_NATIONWIDE_WORK_AREAS)?this.$(".add-work-area-state-county").prop("disabled",!(0<t)):this.$(".add-work-area-state-county").prop("disabled",!(0<_.size(e)||0<t||0<i))},addWorkAreaByStateCounty:function(){var i=this.countryPicker.getValue();if(0!==_.size(i)){var e=this.statePicker.getValue(),t=this.countyPicker.getValue();if(null==e||0===_.size(e))this.addNewWorkAreas(_.filter(this.states[i].models,function(e){return-1===_.indexOf(["hi","ak"],e.get("state").toLowerCase())}));else{var s=null,n=[];if(1===_.size(e)){var o=this.states[i].get(e[0]);0<_.size(t)?_.each(t,function(e){if(e){var t=this.counties[o.get("state")].get(e);n.push(t)}},this):s=o}else 1<_.size(e)&&_.each(e,function(e){if(e){var t=this.states[i].get(e);n.push(t)}},this);0<_.size(n)?this.addNewWorkAreas(n):this.addNewWorkAreas([s])}}},addWorkAreasByZipRadius:function(){null!=this.zipRadiusError&&(this.zipRadiusError.destroy(),this.zipRadiusError=null);var e=this.$(".work-area-radius").val(),t=PJQ.helpers.formatHelpers.formatZip(this.$(".work-area-zip").val()),i=new PJQ.collections.workAreas.WorkAreas([],{zip:t,radius:e});i.fetch({success:_.bind(function(){var e=_.size(_.uniq(_.map(i.models,function(e){return e.get("state")})));i=new PJQ.collections.workAreas.WorkAreas(_.filter(i.models,_.bind(function(e){return null==this.collection.getExistingWorkArea(e)},this))),0<_.size(i.models)?PJQ.app.session.preferences.hasPref(PJQ.constants.preferenceTypes.ENABLE_WORK_AREAS_ZIP_RADIUS_COUNTY_PICKER)||1<e?new PJQ.views.workAreas.SelectWorkAreasModal({collection:i,onSave:_.bind(function(e){this.addNewWorkAreas(e,!0)},this)}):this.addNewWorkAreas(i.models,!0):this.showZipRadiusError()},this)})},addNewWorkAreas:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=!1,a=!1,r=[];if(_.each(e,function(t){var e=t.isStateWorkArea();if(e){var i=_.filter(this.collection.models,function(e){return e.get("state")===t.get("state")&&!e.get("isDeleted")});_.each(i,_.bind(function(e){this.deleteWorkArea(this.workAreaDataTable.getRow(e.cid)),o=!0},this))}var s=this.collection.getExistingWorkArea(t);if(null==s){o=t.isCountyWorkArea()||o,a=e||a;var n=new PJQ.models.workAreas.ContactWorkArea(_.defaults({contactId:this.options.contactId},t.toJSON()));this.collection.add(n),this.onChange("add",n),this.workAreaDataTable.addRow(n),this.options.isSync&&r.push(n)}else s.get("isDeleted")&&(s.set("isDeleted",!1),this.onChange("add",s),this.workAreaDataTable.addRow(s))},this),this.options.isSync&&0<_.size(r)){var i=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.collection.options.contactId},{endpoint:"workareas"},{endpoint:"bulk"}]);new PJQ.ajax.Request({endpoint:i,data:{workAreaIds:_.map(r,function(e){return e.get("workAreaId")})}}).post().done(_.bind(function(){},this)).fail(function(){PJQ.notifications.notify.errorNotify({message:"Something went wrong!"})})}o&&this.renderCountyLayers(),a&&this.renderStateLayers(),this.populateStateSelect(),this.populateCountySelect(),t&&this.resetZipEntry()},showZipRadiusError:function(){this.zipRadiusError=new PJQ.Alert(this.$(".add-work-area-zip-button-container"),{type:"danger",text:"Unable to find new counties to add within the entered zip/radius",isPrepend:!0,animation:{in:"fadeIn"}})},deleteWorkAreaEvent:function(e){var t=this.workAreaDataTable.getRow($(e.currentTarget).parents("tr")),i=t.data();this.deleteWorkArea(t),this.populateStateSelect(),this.populateCountySelect(),i.isStateWorkArea()?this.renderStateLayers():i.isCountyWorkArea()&&this.renderCountyLayers()},deleteAllWorkAreas:function(){new PJQ.views.modals.DeleteCancel({header:"Confirm Deletion",body:"Are you sure you want to delete all work areas?",onDelete:_.bind(function(){_.each(_.clone(_.filter(this.collection.models,function(e){return!e.get("isDeleted")})),_.bind(function(e){this.deleteWorkArea(this.workAreaDataTable.getRow(e.cid))},this)),this.populateStateSelect(),this.renderStateLayers(),this.populateCountySelect(),this.renderCountyLayers()},this)})},deleteWorkArea:function(e){var t=e.data();this.workAreaDataTable.removeRow(e),this.options.isSync||t.isNew()?t.destroy():0<t.id&&t.set("isDeleted",!0),this.onChange("delete",t),this.options.onDelete()},renderDeleteAllButtons:function(){this.$(".delete-all-work-areas").prop("disabled",0===_.size(this.collection.models))},resetZipEntry:function(){this.$(".work-area-zip").val(""),this.setWorkAreaRadius(this.options.defaultRadius),this.workAreaZipInputChanged()},save:function(t){var i=_.filter(this.collection.models,function(e){return e.isNew()}),e=this.collection.where({isDeleted:!0}
1),s=_.bind(function(){if(0<_.size(i)){var e=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.collection.options.contactId},{endpoint:"workareas"},{endpoint:"bulk"}]);new PJQ.ajax.Request({endpoint:e,data:{workAreaIds:_.map(i,function(e){return e.get("workAreaId")})}}).post().done(_.bind(function(){"function"==typeof t&&t()},this)).fail(function(){PJQ.notifications.notify.errorNotify({message:"Something went wrong!"})})}else"function"==typeof t&&t()},this);if(0<_.size(e)){var n=PJQ.helpers.urlHelpers.generateEndpoint([{endpoint:"contacts",value:this.collection.options.contactId},{endpoint:"workareas"},{endpoint:"bulk"}]);new PJQ.ajax.Request({endpoint:n,data:{workAreaIds:_.map(e,function(e){return e.get("workAreaId")})}}).delete().done(_.bind(function(){0<_.size(i)?s():"function"==typeof t&&t()},this)).fail(function(){PJQ.notifications.notify.errorNotify({message:"Something went wrong!"})})}else s()},onChange:function(e,t){this.options.onChange({event:e,data:t,workAreas:this.collection})},showError:function(e){this.hideError(),this.errorAlert=new PJQ.Alert(this.$el,{type:"danger",extraClasses:["mt-1, mb-1"],text:e,isPrepend:!0})},hideError:function(){this.errorAlert&&this.errorAlert.destroy()}}),PJQ.views.workAreas.WorkAreaMapModal=PJQ.views.BaseModal.extend({defaults:{template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Work-Area-Map"),minWidth:800,isSync:!1,isEdit:!0,onSave:null},events:{"click .btn-save":"save"},afterRender:function(){this.workAreaMap=new PJQ.views.workAreas.WorkAreaMap({el:this.$(".map-outer"),collection:this.collection,isSync:this.options.isSync,isEdit:this.options.isEdit})},save:function(){"function"==typeof this.options.onSave&&this.options.onSave(this.workAreaMap.collection),this.removeModal()}}),PJQ.views.workAreas.SelectWorkAreasModal=PJQ.views.BaseModal.extend({defaults:{isSingleChoice:!1,template:new PJQ.templating.Template(PJQ.constants.modules.GLOBAL,"Modal-Work-Area-Select"),minWidth:500,onSave:null},events:{"click .select-all-work-areas":"selectAllWorkAreas","click .select-work-area":"selectWorkArea","click .select-work-areas-save":"save"},beforeModalCreated:function(){this.selectedWorkAreas=[]},afterRender:function(){this.workAreasDataTable=new PJQ.views.dataTables.DataTable({el:this.$(".work-area-data-table"),data:this.collection.models,language:{emptyTable:"No work areas added",zeroRecords:"No work areas match the search criteria"},order:[[0,"asc"],[1,"asc"]],rowId:"cid",deferRender:!0,columns:[{data:"attributes.state",title:"State"},{data:"attributes.county",title:"County"},{data:"attributes.isSelected",title:'<button type="button" class="btn btn-orange select-all-work-areas m-0a">Select All</button>',orderable:!1,render:function(e){return e?'<button type="button" class="btn btn-secondary select-work-area wd-80p m-0a">Deselect</button>':'<button type="button" class="btn btn-primary select-work-area wd-80p m-0a">Select</button>'}}],dom:'<"top"<"clear">p>rt<"bottom"p<"clear">>'})},selectAllWorkAreas:function(){this.selectedWorkAreas=this.collection.models,_.each(this.collection.models,function(e){e.set("isSelected",!0)}),this.$(".select-work-area").text("Deselect").addClass("btn-secondary").removeClass("btn-primary"),this.selectWorkAreasChanged()},selectWorkArea:function(e){var t=$(e.currentTarget),i=this.workAreasDataTable.getRow(t.parents("tr")).data();t.hasClass("btn-primary")?(t.text("Deselect").addClass("btn-secondary").removeClass("btn-primary"),this.selectedWorkAreas.push(i)):(t.text("Select").addClass("btn-primary").removeClass("btn-secondary"),this.selectedWorkAreas=_(this.selectedWorkAreas).filter(function(e){return e.get("workAreaId")!==i.get("workAreaId")})),i.set("isSelected",!0),this.selectWorkAreasChanged()},selectWorkAreasChanged:function(){this.$(".select-all-work-areas").prop("disabled",_.size(this.selectedWorkAreas)===_.size(this.collection.models)),this.$(".select-work-areas-save").prop("disabled",0===_.size(this.selectedWorkAreas))},save:function(){"function"==typeof this.options.onSave&&this.options.onSave(this.selectedWorkAreas)}});
2//# sourceMappingURL=app.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.