PageSourceSearch

https://venture-publishing.com/view/js/cart-team.js?v=573

js venture-publishing.com collected 2026-09-30 19:59:58 UTC 22,307 bytes, 499 lines download raw bytes

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.