1"use strict"; 2 3var cartTeam = { 4 5 catpre: false, 6 7 className: 'cart-team', 8 9 favorite: [], 10 11 first: true, 12 13 hide: function () { 14 var t = (cartTeam.first) ? 0 : 300; 15 if (cartTeam.open) { 16 $('.cart-team h2').stop(true, false).animate({ opacity: 0.09 }, t); 17 $('.cart-team .content').stop(true, false).animate({ opacity: 0 }, t, function () { $(this).hide(); base.resize(); }); 18 $('.cart-team .wrapper').stop(true, false).animate({ height: 1 }, t, function () { $(this).css({ height: '' }); }); 19 if (cartTeam.next) { cartTeam.next.update(false); } 20 cartTeam.open = false; 21 } 22 cartTeam.first = false; 23 }, 24 25 init: function () { 26 $('input[name=teammembers]').click(cartTeam.memberClick); 27 var m0 = $('.cart-team .member0'); 28 if (m0.length) { 29 var pl = []; 30 $('.cart-products input[name=products]').each(function (i, o) { 31 var p = $(o).attr('hd-pid'); 32 if (pl.indexOf(p) == -1) { pl.push(p); } 33 }); 34 m0.attr('hd-pids', pl.join(',')); 35 } 36 }, 37 38 initMemberCount: function (pid) { 39 var ml = $('.cart-team .member:visible'); 40 if (ml.length) { 41 var mcount = cartTeam.memberCountLimit(); 42 var satm = $('.cart-team .showallteammembers'); 43 if ((mcount == 0) || ((ml.length - 1) < mcount)) { 44 satm.css({ display: 'none' }); 45 } 46 else { 47 satm.css({ display: '' }); 48 var pl = pid.slice(); 49 $(ml).each(function (i, o) { 50 if (pid.length < 2) { 51 if (i >= mcount) { $(o).hide(); } 52 } 53 else { 54 if (i >= mcount) { 55 var h = true; 56 if (pl.length) { 57 $('.prod:visible', o).each(function (ii, oo) { 58 if (pl.indexOf($(oo).attr('hd-pid')) > -1) { h = false; } 59 }); 60 } 61 if (h) { $(o).hide(); } 62 } 63 $('.prod:visible', o).each(function (ii, oo) { 64 var n = pl.indexOf($(oo).attr('hd-pid')); 65 if (n > -1) { pl.splice(n, 1); } 66 }); 67 } 68 }); 69 } 70 } 71 }, 72 73 initProducts: function (pl) { 74 var pp = {}; 75 var cnl = cartProducts.categoryNames; 76 var pls = pl.join(','); 77 if (cartTeam.initProductsLastProducts !== pls) { 78 cartTeam.initProductsLastProducts = pls; 79 $('#prod' + pl.join(',#prod') + ',#hprod' + pl.join(',#hprod')).each(function (i, o) { 80 var p = $(o).attr('hd-pid'); 81 var pn = $('.cart-products .pname' + p).html(); 82 var tm = $(o).attr('hd-time') || '0'; 83 var cn = cnl[$(o).attr('hd-pcid')] || ''; 84 var pno = $(o).attr('hd-packageoverrides'); 85 pp[p] = { cn, pn, tm, pno, o }; 86 }); 87 $(Object.keys(pp)).each(function (i, o) { 88 if (pp[o].pno) { 89 $(pp[o].pno.split('`|`')).each(function (i, oo) { 90 var ppp = oo.split('`~`'); 91 pp[ppp[0]].pn = ppp[1]; 92 }); 93 } 94 }) 95 $('.cart-team .member').show().each(function (i, o) { 96 var u = $(o).attr('hd-uid'); 97 var buf = ''; 98 $($(o).attr('hd-pids').split(',')).each(function (i, p) { 99 if (pl.indexOf(p) > -1) { 100 //previously selected? Keep the selection. 101 var pSel = false; 102 $(cartTeam.lastChosenProds).each(function (ii, c) { 103 if (c.length && c.indexOf(':') > -1) { 104 var cur = c.split(':'); 105 if (cur[0] == p && cur[1] == u) { 106 pSel = true; 107 return false; 108 } 109 } 110 }); 111 buf += '<tr class="prod p' + p + '" hd-pid="' + p + '"' + (((pp[p]) ? pp[p].tm : '0') == '0' ? '' : ' hd-appt="1"') + '><td style="width: 28px; vertical-align: top;"><input type="radio" name="prod' + p + '" id="up' + u + '-' + p + '" value="' + u + '" onclick="cartTeam.prodUpdate(this);"' + (pSel ? ' checked="checked"' : '') + ' /><td><label for="up' + u + '-' + p + '"' + (p == '0' ? ' class="updatecustomname"' : '') + ' style="display: block; line-height: 1.15em; padding: 0.1em 0 0.4em 0;">' + (cartTeam.catpre ? ((pp[p]) ? pp[p].cn + ': ' : '') : '') + ((pp[p]) ? pp[p].pn || '?' : '?') + '</label></td></tr>'; 112 } 113 }); 114 $('.products', o).html(buf); 115 }); 116 } 117 }, 118 119 initProductsLastProducts: '', 120 121 lastChosenProds: [], 122 123 memberClick: function (o) {
124 cartTeam.update(cartTeam.lastCart); 125 }, 126 127 memberCountLimit: function () { 128 return Number($('.cart-team .showallteammembers').attr('limit') || 0); 129 }, 130 131 mustdoall: false, 132 133 newusermode: false, 134 135 open: false, 136 137 prodUpdate: function (t) { 138 $('.cart-team .member0 .products input').prop('checked', $(t).closest('label').hasClass('member0')); 139 }, 140 141 register: function (o) { 142 if (o == undefined) { 143 window.firstCart = cartTeam; 144 $(function () { cartTeam.update({}); }); 145 } 146 else { 147 cartTeam.prev = o; 148 o.next = cartTeam; 149 } 150 }, 151 152 setProducts: function (t) { 153 $('.products input', t).prop('checked', true); 154 }, 155 156 setProductsIfVisible: function (u, p) { 157 var uprod = $('.cart-team .member' + u + ' .products input:visible'); 158 if (uprod.length) { 159 uprod.each(function (i, o) { 160 if ($(o).attr('name') == 'prod' + p) { 161 $(o).prop('checked', true).trigger('click'); //don't want to boolean on :isvisible as we only want to set and not uncheck if not qualify 162 } 163 }); 164 } 165 }, 166 167 show: function () { 168 if (!cartTeam.open) { 169 $('.cart-team h2').stop(true, false).animate({ opacity: 1 }); 170 $('.cart-team .content').stop(true, false).css({ opacity: 0 }).show().animate({ opacity: 1 }); 171 $('.cart-team .wrapper').stop(true, false).css({ overflow: 'hidden', height: 1 }).animate({ height: $('.cart-team .content').height() }, function () { $(this).css({ height: '' }); base.resize(); }); 172 cartTeam.open = true; 173 } 174 cartTeam.first = false; 175 }, 176 177 showAllMembers: function () { 178 $('.cart-team .member').css({ display: 'block !important' }); 179 $('.showallteammembers').attr('limit', '0').css({ display: 'none' }); 180 cartTeam.updateAll(); 181 }, 182 183 sortTeamMembers: function () { 184 var ml = $('.cart-team .member').map((i, o) => { return { d: parseFloat($(o).attr('hd-distance')), p: parseFloat($(o).attr('hd-priority')), s: ($(o).hasClass('anyavail') ? 3 : ($(o).hasClass('favorite') ? 3 : ($(o).hasClass('recentlyused') ? 2 : 1))), o: o} }); 185 ml.sort((v1, v2) => { return (v1.s != v2.s) ? (v2.s - v1.s) : ((v1.p != v2.p) ? (v1.p - v2.p) : v1.d - v2.d) }); 186 var prev; 187 $(ml).each((i, o) => { 188 if (i === 0) { 189 prev = $(o.o).prependTo($(o.o).parent()); 190 } 191 else { 192 prev = $(o.o).insertAfter(prev); 193 } 194 }); 195 }, 196 197 tagRecent: false, 198 199 teamuser: -1, 200 201 update: function (c) { 202 cartTeam.lastCart = c; 203 if (cartTeam.newusermode) { 204 if (cartUser && cartUser.lastEmailLookupData && cartUser.lastEmailLookupData.found === 0) { 205 $('.cart-team').hide(); 206 cartTeam.bypass = cartTeam.newusermode.bypass; 207 cartTeam.bypassname = cartTeam.newusermode.bypassname; 208 cartTeam.bypassmessage = cartTeam.newusermode.bypassmessage; 209 } 210 else { 211 $('.cart-team').show(); 212 cartTeam.bypass = undefined; 213 cartTeam.bypassname = undefined; 214 cartTeam.bypassmessage = undefined; 215 } 216 } 217 if (c == undefined) { 218 return false; 219 } 220 else if (c === false) { 221 cartTeam.hide(); 222 } 223 else { 224 if (typeof cartOrder !== 'undefined') { cartOrder.orderStartSave(c); } 225 cartTeam.show(); 226 cartTeam.sortTeamMembers(); 227 228 var pl = []; 229 var singleMode = true; 230 $('.cart-team .noteammembers').hide(); 231 $('.cart-team .member').show().removeClass('excluded'); 232 if (cartUser && cartUser.excludes) { 233 $(cartUser.excludes).each(function (i, o) { 234 $('.cart-team .member' + o).addClass('excluded'); 235 }); 236 } 237 if (cartTeam.extraExcludes) { cartTeam.extraExcludes(c); } 238 if (c && c.products && c.products.pid) { 239 pl = c.products.pid; 240 var fpl = pl.filter(function (o) { 241 var oo = $('#prod' + o + ',#hprod' + o).first(); 242 return !oo.attr('hd-produser') && !oo.closest('.product').hasClass('package'); 243 }); 244 if (fpl.length > 1 && !cartTeam.mustdoall) { 245 var singleMode = false;
246 cartTeam.initProducts(c.products.pid); 247 $('.cart-team .singlemember').hide(); 248 $('.cart-team .products').show(); 249 $('.cart-team .member').css({ cursor: 'default' }); 250 $('.cart-team .member .prod').hide(); 251 $(fpl).each(function (i, o) { $('.cart-team .member .p' + o).show(); }); 252 //commenting this out will allow products that only one person offer to still show up on the Any Available photographer (member0). Fixes the case where Any Available can be selected AND a single product (in those situations), thus showing multiple calendar messages. 253 //$('.cart-team .member0 .prod:visible').each(function (i, o) { 254 // if ($('.cart-team .member:visible').not('.member0').find('.prod.p' + $(o).attr('hd-pid')).length == 1) { $(o).hide(); } 255 //}); 256 $('.cart-team .member').each(function (i, o) { 257 if ($('.prod:visible', o).length == 0) { $(o).hide(); } 258 }); 259 $(pl).each(function (i, o) { 260 var p = $('.cart-team .p' + o + ':visible'); 261 if (p.length == 1) { 262 $('input', p).prop('checked', true); 263 } 264 }); 265 if (!c.location || !c.location.anyServiceArea || !c.location.anyServiceArea.fallbackuid) { 266 var m0 = $('.cart-team .member0:visible'); 267 if (m0.length) { 268 var f = false;
269 $('.cart-team .member:visible').not(m0).each(function (i, o) { 270 var af = true; 271 var upl = $(o).attr('hd-pids').split(','); 272 $(fpl).each(function (ii, oo) { if (upl.indexOf(oo) == -1) { af = false; } }); 273 if (af) { f = true; } 274 }); 275 if (!f) { m0.hide(); } 276 } 277 } 278 279 if (c.location && c.location.serviceareas) { 280 $('.cart-team .member:visible').each(function (i, o) { 281 if (($('.products tr[hd-appt=1]:visible', o).length == 0) || (window.cartUser && cartUser.waivetravelfee)) { 282 $('.travelfee', o).hide(); 283 } 284 else { 285 $('.travelfee', o).show(); 286 } 287 }); 288 } 289 else { 290 $('.travelfee').hide(); 291 } 292 } 293 else { 294 $('.cart-team .singlemember').show(); 295 $('.cart-team .products').hide(); 296 if (pl.length) { 297 if (fpl.length === 0) { 298 $('.cart-team .member').hide(); 299 } 300 else { 301 $('.cart-team .member').css({ cursor: 'pointer' }).each(function (i, o) { 302 var pids = $(o).attr('hd-pids').split(','); 303 $(fpl).each(function (pi, po) { 304 if (pids.indexOf(po) == -1) { $(o).hide(); } 305 }); 306 }); 307 } 308 if ($('.cart-team .member:visible').not('.member0').length == 1) { 309 if (!c.location || !c.location.anyServiceArea || !c.location.anyServiceArea.fallbackuid) { 310 $('.cart-team .member0').hide(); 311 } 312 } 313 if ($('.cart-team .member:visible').length == 1) { 314 $('.cart-team .member:visible .singlemember input').prop('checked', true); 315 } 316 if (c.location && c.location.serviceareas) { 317 $('.cart-team .travelfee').hide(); 318 if (!window.cartUser || (window.cartUser && !cartUser.waivetravelfee)) { //user has a waive travel fee 319 $(pl).each(function (pi, po) { 320 if (($('#prod' + po + ', #hprod' + po).attr('hd-time') || '0') != '0') { 321 $('.cart-team .travelfee').show(); 322 } 323 }); 324 } 325 } 326 else { 327 $('.travelfee').hide(); 328 } 329 } 330 } 331 var m0 = $('.cart-team .member0:visible'); 332 if (m0.length) { 333 if (window.cartUser && cartUser.waivetravelfee) { 334 //don't show/apply any travel fees. 335 $('.travelfee', m0).hide(); 336 } 337 else { 338 var tmin, tmax; 339 $('.cart-team .member:visible').not('.member0').each(function (i, o) { 340 var trav = parseFloat($(o).attr('hd-trav') || 0); 341 if ((tmin === undefined) || (tmin > trav)) { tmin = trav; } 342 if ((tmax === undefined) || (tmax < trav)) { tmax = trav; } 343 }); 344 var m0trav = m0.attr('hd-trav'); 345 if (m0trav !== undefined) { 346 if ((m0trav === '0') && (tmax == 0)) { 347 $('.travelfee', m0).hide(); 348 } 349 else { 350 $('.travelfee', m0).removeClass('nofee').show().find('.amount').html(base.money(m0trav, 2)); 351 } 352 } 353 else { 354 if (tmax == 0) { 355 $('.travelfee', m0).hide(); 356 } 357 else { 358 $('.travelfee', m0).removeClass('nofee').show().find('.amount').html((tmin == tmax) ? base.money(tmin, 2) : (tmin == 0 ? 'up' : base.money(tmin, 2)) + ' to ' + base.money(tmax, 2)); 359 } 360 } 361 } 362 } 363 } 364 else { 365 $('.cart-team .singlemember').show(); 366 $('.cart-team .products').hide(); 367 if ($('.cart-team .member:visible').not('.member0').length == 1) { $('.cart-team .member0').hide(); } 368 if ($('.cart-team .member:visible').length == 1) { 369 $('.cart-team .member:visible .singlemember input').prop('checked', true); 370 } 371 } 372 373 cartTeam.initMemberCount((c.products) ? c.products.pid : []); 374 375 var m = []; //all team members 376 var mos = []; //membersOnSite 377 var t = {}; 378 var complete = false;
379 var products = []; 380 var bp = cartTeam.bypass; 381 var fav = cartTeam.favorite || []; 382 383 if (bp) { 384 complete = true; 385 m.push(bp); 386 mos.push(bp); 387 $(pl).each(function (i, o) { 388 var pq = parseInt($('#prod' + o + ', #hprod' + o).attr('hd-qty') || -1); 389 var tt = parseInt($('#prod' + o + ', #hprod' + o).attr('hd-time') || 0); 390 t[bp] = ((tt == -1 || t[bp] == -1) ? -1 : ((t[bp] || 0) + (tt * Math.abs(pq)))); //treat -1 qty (non-multi product) as 1 for a harmless multiplier 391 }); 392 } 393 else if (singleMode) { 394 if ($('.cart-team .singlemember input:visible:checked').length == 0) { 395 if (fav.length > 0) { $('#teammem' + fav.join(':visible,#teammem') + ':visible').first().prop('checked', true); } 396 if ($('.cart-team .singlemember input:visible:checked').length == 0) { 397 var tm = $('.cart-team .singlemember input:visible'); 398 if (tm.length == 1) { 399 tm.prop('checked', true); 400 } 401 else if (tm.length > 1) { 402 if ($(tm[0]).closest('.member').attr('hd-priority') != $(tm[1]).closest('.member').attr('hd-priority')) { 403 $(tm[0]).prop('checked', true); 404 } 405 } 406 } 407 } 408 var u = $('.cart-team input[name=teammembers]:visible:checked').attr('hd-uid'); 409 if ((u) || ($('.cart-team input[name=teammembers]:visible').length == 0)) { 410 if (u) { m.push(u); mos.push(u); } 411 complete = true; 412 } 413 $(pl).each(function (i, o) { 414 var pq = parseInt($('#prod' + o + ', #hprod' + o).first().attr('hd-qty') || -1); 415 var tt = parseInt($('#prod' + o + ', #hprod' + o).first().attr('hd-time') || 0); 416 var uu = $('#prod' + o + ', #hprod' + o).first().attr('hd-produser') || u; 417 if (!uu) { uu = $('#prod' + o + ', #hprod' + o).first().attr('hd-uid'); } 418 if (m.indexOf(uu) == -1) { m.push(uu); } 419 t[uu] = ((tt == -1 || t[uu] == -1) ? -1 : ((t[uu] || 0) + (tt * Math.abs(pq)))); //treat -1 qty (non-multi product) as 1 for a harmless multiplier 420 products.push(o + ':' + (uu || '0') + (c.products.pqty[i] != -1 ? ':' + c.products.pqty[i] : '')); 421 }); 422 } 423 else { 424 complete = true; 425 $(pl).each(function (i, o) { 426 if (!$('#prod' + o + ',#hprod' + o).closest('.product').hasClass('package')) { 427 if ($('.cart-team .p' + o + ' input:visible:checked').length == 0 && fav.length > 0) { 428 $('#up' + fav.join('-' + o + ':visible,#up') + '-' + o + ':visible').first().prop('checked', true); 429 } 430 if ($('.cart-team .p' + o + ' input:visible:checked').length == 0) { 431 var tm = $('.cart-team .member').not('.member0').find('.p204803 input:visible'); 432 if (tm.length == 1) { 433 tm.prop('checked', true); 434 } 435 else if (tm.length > 1) { 436 var hdp0 = $(tm[0]).closest('.member').attr('hd-priority'); 437 var hdp1 = $(tm[1]).closest('.member').attr('hd-priority'); 438 if (hdp0 !== undefined && hdp0 != hdp1) { $(tm[0]).prop('checked', true); } 439 } 440 } 441 var u = $('.cart-team .p' + o + ' input:visible:checked').val(); 442 if (u && mos.indexOf(u) == -1) { mos.push(u); } 443 if (!u) { u = $('#prod' + o + ', #hprod' + o).first().attr('hd-produser'); } 444 if (!u) { u = $('#prod' + o + ', #hprod' + o).first().attr('hd-uid'); } 445 if (u) { 446 if (m.indexOf(u) == -1) { m.push(u); } 447 var pq = parseInt($('#prod' + o + ', #hprod' + o).attr('hd-qty') || -1); 448 products.push(o + ':' + (u || '0') + (pq != -1 ? ':' + pq : '')); 449 var tt = parseInt($('#prod' + o + ', #hprod' + o).attr('hd-time') || 0); 450 t[u] = ((tt == -1 || t[u] == -1) ? -1 : ((t[u] || 0) + (tt * Math.abs(pq)))); //treat -1 qty (non-multi product) as 1 for a harmless multiplier 451 } 452 else { 453 complete = false;
454 } 455 } 456 else if (cartProducts && cartProducts.packageuser) { 457 products.push(o + ':' + cartProducts.packageuser); 458 } 459 }); 460 } 461 462 $('.cart-team .member.selected').not($('.cart-team .member input:visible:checked').closest('.member').addClass('selected')).removeClass('selected'); 463 464 if (m.length == 0 || !complete) { 465 if ($('.cart-team .member:visible').length == 0) { 466 console.log('INVALID CONFIG!!!'); 467 $('.cart-team .noteammembers').show(); 468 $('.cart-team .showallteammembers').hide(); 469 } 470 if (cartTeam.next) { cartTeam.next.update(false); } 471 } 472 else { 473 if ($('.cart-team .member:visible').length == 0) { 474 $('.cart-team .noonsitephotographer').show(); 475 $('.cart-team .showallteammembers').hide(); 476 } 477 else { 478 $('.cart-team .noonsitephotographer').hide(); 479 } 480 var co = { team: { members: m, membersOnSite: mos, times: t, any: ($('.cart-team .member0 input:checked').length > 0) } }; 481 if ((bp) || (m.indexOf('0') > -1)) { co.team.teamcal = true; } 482 $.extend(true, co, c); 483 console.log('team', co); 484 if (co.products) { 485 cartTeam.lastChosenProds = products; 486 co.products.products = products.join(','); 487 } 488 if (cartTeam.next) { cartTeam.next.update(co); } 489 } 490 } 491 }, 492 493 updateAll: function () { 494 cartTeam.update(cartTeam.lastCart); 495 } 496 497}; 498 499$(cartTeam.init);
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.