PageSourceSearch

https://www.todos-math.org/wp-content/plugins/give-tributes/assets/js/give-tributes-common.js?ver=2.3.1

js todos-math.org collected 2026-09-24 09:38:14 UTC 16,429 bytes, 540 lines download raw bytes

1/**
2 * Give Tributes Frontend JS.
3 */
4
5var give_global_vars,
6  give_tributes_public_strings,
7  Give_Tribute,
8  give_tributes_common_vars;
9
10jQuery(document).ready(function ($) {
11  var $body = $("body");
12
13  /**
14   * On Change Show dedication.
15   */
16  $body
17    .on(
18      "change",
19      'input[name="give_tributes_show_dedication"]:radio',
20      function () {
21        var form = $(this).closest("form.give-form");
22
23        if (0 === form.length) {
24          form = $(this).closest(
25            "#give_md_create_payment, #give-tributes-edit-donation, #give-tributes-edit-donation"
26          );
27          if (!form) {
28            form = $(this).parents("form");
29          }
30        }
31
32        Give_Tribute.give_tributes_show_dedication(form);
33      }
34    )
35    .change();
36
37  /**
38   * On Change of Would like to option.
39   */
40  $body
41    .on("change", 'input[name="give_tributes_would_to"]', function () {
42      var form = $(this).closest("form.give-form");
43
44      if (0 === form.length) {
45        form = $(this).closest(
46          "#give_md_create_payment, #give-tributes-edit-donation"
47        );
48        if (!form) {
49          form = $(this).parents("form");
50        }
51      }
52      Give_Tribute.give_tributes_would_to(form);
53    })
54    .change();
55
56  /**
57   * Get state list based on Country.
58   */
59  $body
60    .on("change", 'select[name="give_tributes_address_country"]', function () {
61      var $this = $(this),
62        form = $this.closest("form.give-form");
63
64      if (0 === form.length) {
65        form = $(this).closest(
66          "#give_md_create_payment, #give-tributes-edit-donation"
67        );
68      }
69      Give_Tribute.give_tributes_address_country(form);
70    })
71    .change();
72
73  /**
74   * Give Tribute type Buttons: Update tribute type Field based on select.
75   */
76  $body.on(
77    "change touchend click",
78    ".give-tribute-type-button, .give-tribute-type-radio, .give-tributes-type-select, .give-tributes-type-input",
79    function () {
80      var give_tribute_type = $(this).val(),
81        form = $(this).closest("form.give-form"),
82        this_btn = $(this);
83
84      if (!form) {
85        form = $(this).parents("form");
86      }
87
88      if (0 === form.length) {
89        form = $(this).closest(
90          "#give_md_create_payment, #give-tributes-edit-donation"
91        );
92
93        if ($(this).hasClass("give-tribute-type-button")) {
94          $(form)
95            .find(".give-tribute-type-button")
96            .each(function (i, em) {
97              $(this).removeClass("active");
98            });
99
100          // Add active class.
101          this_btn.addClass("active");
102        }
103      }
104
105      form.find(".give-tributes-type").val(give_tribute_type);
106    }
107  );
108
109  /**
110   * Character count logic for eCard.
111   */
112  $body.on(
113    "keyup change",
114    'textarea.give-tributes-personalized-message, textarea[name="give-tributes-mail-card-personalized-message"]',
115    function () {
116      var $this = $(this);
117
118      $this
119        .closest(".give_tributes_send_ecard_fields")
120        .find(".give-tributes-ecard-personalized-message-left")
121        .text(
122          parseInt($this.attr("maxlength")) -
123            $this.val().length +
124            " " +
125            give_tributes_common_vars.give_tribute_characters_left
126        );
127    }
128  );
129
130  /**
131   * Character count logic for Mail card.
132   */
133  $body.on(
134    "keyup change",
135    'textarea[name="give-tributes-mail-card-personalized-message"]',
136    function () {
137      var $this = $(this);
138
139      $this
140        .closest(".give_tributes_mail_card_personalized_message")
141        .find(".give-tributes-mail-card-personalized-message-left")
142        .text(
143          parseInt($this.attr("maxlength")) -
144            $this.val().length +
145            " " +
146            give_tributes_common_vars.give_tribute_characters_left
147        );
148    }
149  );
150
151  /**
152   * Control repeater for notification field.
153   *
154   * @since 1.0
155   */
156  $(document).on("click", "span.give-tributes-clone-field", function (e) {
157    // Prevent Default.
158    e.preventDefault();
159
160    var form = $(this).closest("form.give-form"),
161      lists_container = $(this).closest(".give-tributes-notification-lists");
162
163    if (0 === form.length) {
164      form = $(this).closest(
165        "#give_md_create_payment, #give-tributes-edit-donation"
166      );
167
168      if (!form) {
169        form = $(this).parents("form");
170      }
171    }
172
173    // Get the button action.
174    var btn_action = jQuery(this).data("action"),
175      recipient_fields = $(this).closest(".give_tributes_send_ecard_fields"),
176      count_recipient = lists_container.find(
177        ".give_tributes_send_ecard_fields"
178      ).length,
179      max_length = recipient_fields
180        .find("textarea.give-tributes-personalized-message")
181        .attr("maxlength"),
182      form_id = form.find('input[name="give-form-id"]').val(),
183      recipient_count = 0;
184
185    // If 'add' action were requested.
186    if ("add" === btn_action) {
187      // Limit exceed after 5 receipts.
188      if (count_recipient >= 5) {
189        alert(give_tributes_public_strings.give_tribute_receipt_limit_exceed);
190        return false;
191      }
192
193      // Increase recipient count.
194      recipient_count = recipient_count + 1;
195
196      // Wrap receipt field-set into a div container.
197      recipient_fields =
198        '<div id="give-tributes-send-ecard-fields-' +
199        form_id +
200        "-recipient-" +
201        recipient_count +
202        '" class="' +
203        recipient_fields.attr("class") +
204        ' cloned-field" >' +
205        recipient_fields.html() +
206        "</div>";
207
208      var appended_html = lists_container.append(recipient_fields),
209        notify_person_section = jQuery(
210          "#give-tributes-send-ecard-fields-" +
211            form_id +
212            "-recipient-" +
213            recipient_count
214        );
215
216      // Loop all the label
217      notify_person_section.find(".give-label").each(function (em, i) {
218        var $this = $(this),
219          attr_for = $this.attr("for"),
220          new_id = attr_for + "-" + recipient_count;
221
222        $(this).attr("for", new_id);
223        notify_person_section
224          .find("input#" + attr_for + ",textarea#" + attr_for)
225          .attr("id", new_id);
226      });
227
228      var character_left = appended_html.find(
229        ".cloned-field .give-tributes-ecard-personalized-message-left"
230      );
231
232      if (character_left.length > 0) {
233        character_left.html(character_left.html().replace(/\d+/, max_length));
234      }
235
236      // Add recipient field.
237      appended_html
238        .find(".cloned-field input")
239        .val("")
240        .closest(".cloned-field")
241        .removeClass("cloned-field");
242
243      if (
244        !$(this).closest(
245          "#give_md_create_payment, #give-tributes-edit-donation"
246        )
247      ) {
248        // Floating labels.
249        give_fl_trigger();
250      }
251    } else if ("remove" === btn_action) {
252      // If the action is about to remove the fieldset.
253
254      // Do not remove if, its last recipient.
255      if (count_recipient <= 1) {
256        return false;
257      }
258
259      // Remove receipt set group.
260      jQuery(this).closest(".give_tributes_send_ecard_fields").remove();
261    }
262
263    // Remove Cross sign.
264    Give_Tribute.remove_cross_sign();
265  });
266
267  /**
268   * Give Tribute init.
269   */
270  Give_Tribute = {
271    /**
272     * Init.
273     */
274    init: function () {
275      var forms = $("form.give-form");
276
277      // If there is no form element then trigger init() function for manual donation.
278      if (0 === forms.length) {
279        // Get the form from manual donation creation or edit donation.
280        var $form = $("#give_md_create_payment, #give-tributes-edit-donation");
281
282        Give_Tribute.initial_trigger($form);
283
284        $form.find("button.give-tribute-type-button").each(function (i, em) {
285          if (i === 0) {
286            $(this).addClass("active");
287          }
288          $(this).addClass("button");
289        });
290      } else {
291        forms.each(function () {
292          Give_Tribute.initial_trigger($(this));
293        });
294      }
295    },
296
297    /**
298     * Initial load
299     *
300     * @since 2.0 Trigger change event on the "show_dedication" radio to prevent the display of hidden fields in the first form render
301     * @since 1.4.1
302     *
303     * @param $form
304     */
305    initial_trigger: function ($form) {
306      Give_Tribute.give_tributes_show_dedication($form);
307      Give_Tribute.give_tributes_would_to($form);
308      Give_Tribute.remove_cross_sign();
309      $('input[name="give_tributes_show_dedication"]:radio').trigger("change");
310    },
311
312    /**
313     * Show dedication.
314     *
315     * @param $form
316     */
317    give_tributes_show_dedication: function ($form) {
318      var form_id = Give_Tribute.getFormID($form),
319        value = $form
320          .find('input[name="give_tributes_show_dedication"]')
321          .filter(':radio:checked,[type="hidden"]')
322          .val(),
323        tribute_type_wrap = $form.find("#give-tributes-type-wrap-" + form_id),
324        tribute_info_wrap = $form.find("#give-tributes-info-wrap-" + form_id),
325        tribute_grab_info_wrap = $form.find(
326          "#give-tributes-grab-info-wrap-" + form_id
327        ),
328        tribute_mail_card_fields = $form.find(
329          "#give-tributes-mail-card-fields-" + form_id
330        ),
331        tribute_ecard_fields = $form.find(
332          "#give-tributes-notification-list-" + form_id
333        ),
334        give_tribute_type = $form
335          .find(".give-tributes-type-button-list li:first button")
336          .val(),
337        give_tribute_email = $(
338          "#give_md_create_payment, #give-tributes-edit-donation"
339        ).find("tr.give-tributes-row.give-tributes-email-option");
340
341      if (tribute_type_wrap.hasClass("has_radios")) {
342        give_tribute_type = $form
343          .find('input[name="give_tributes_radio_type"]:radio:checked')
344          .val();
345      } else if (tribute_type_wrap.hasClass("has_dropdown")) {
346        give_tribute_type = $form
347          .find(".give-tributes-type-select option:first")
348          .val();
349      }
350
351      var give_tribute_type_append_value = $form.find(
352        ".give-tributes-type-" + form_id
353      );
354      give_tribute_type_append_value.val(give_tribute_type);
355
356      // If enable show other fields.
357      if ("no" === value) {
358        // Hide it.
359        tribute_type_wrap.hide();
360        tribute_info_wrap.hide();
361        tribute_grab_info_wrap.hide();
362        tribute_mail_card_fields.hide();
363        tribute_ecard_fields.hide();
364        give_tribute_email.hide();
365
366        tribute_type_wrap.closest("tr.give-tributes-row").hide();
367        tribute_info_wrap.closest("tr.give-tributes-row").hide();
368        tribute_grab_info_wrap.closest("tr.give-tributes-row").hide();
369        tribute_mail_card_fields.closest("tr.give-tributes-row").hide();
370        tribute_ecard_fields.closest("tr.give-tributes-row").hide();
371      } else {
372        // Otherwise, show rest of fields.
373        tribute_type_wrap.show();
374        tribute_info_wrap.show();
375        tribute_grab_info_wrap.show();
376        tribute_mail_card_fields.show();
377        tribute_ecard_fields.show();
378        give_tribute_email.show();
379
380        // Show manual donation entities.
381        tribute_type_wrap.closest("tr.give-tributes-row").show();
382        tribute_info_wrap.closest("tr.give-tributes-row").show();
383        tribute_grab_info_wrap.closest("tr.give-tributes-row").show();
384        tribute_mail_card_fields.closest("tr.give-tributes-row").show();
385        tribute_ecard_fields.closest("tr.give-tributes-row").show();
386
387        $('input[name="give_tributes_would_to"]').trigger("change");
388      } // End if().
389    },
390
391    /**
392     *
393     * @param $form
394     */
395    give_tributes_would_to: function ($form) {
396      var form_id = Give_Tribute.getFormID($form),
397        give_tributes_would_like_to = $form
398          .find(
399            "#give-tributes-grab-info-wrap-" +
400              form_id +
401              ' input[name="give_tributes_would_to"]'
402          )
403          .filter(':radio:checked,[type="hidden"]')
404          .val(),
405        give_tributes_mail_card_fields = $form.find(
406          "#give-tributes-mail-card-fields-" + form_id
407        ),
408        give_tributes_ecard_fields = $form.find(
409          ".give-tributes-notification-lists"
410        ),
411        give_tribute_email = $(
412          "#give_md_create_payment, #give-tributes-edit-donation"
413        ).find("tr.give-tributes-row.give-tributes-email-option");
414
415      if ("send_eCard" === give_tributes_would_like_to) {
416        give_tributes_ecard_fields.show();
417        give_tributes_ecard_fields.closest("tr.give-tributes-row").show(); // Manual Donation.
418
419        give_tributes_mail_card_fields.hide();
420        give_tributes_mail_card_fields.closest("tr.give-tributes-row").show(); // Manual Donation.
421        give_tribute_email.show();
422      } else if ("send_mail_card" === give_tributes_would_like_to) {
423        give_tributes_ecard_fields.hide();
424        give_tributes_mail_card_fields.show();
425
426        give_tributes_ecard_fields.closest("tr.give-tributes-row").show(); // Manual Donation.
427        give_tribute_email.hide();
428      } else {
429        give_tributes_ecard_fields.hide();
430        give_tributes_mail_card_fields.hide();
431
432        give_tributes_mail_card_fields.closest("tr.give-tributes-row").hide(); // Manual Donation.
433        give_tributes_ecard_fields.closest("tr.give-tributes-row").hide(); // Manual Donation.
434        give_tribute_email.hide();
435      }
436    },
437
438    /**
439     * Tributes Mail a Card Address Country Change.
440     *
441     * @param $form
442     */
443    give_tributes_address_country: function ($form) {
444      var form_id = Give_Tribute.getFormID($form),
445        state_wrap = $form.find("#give-tributes-mail-card-state-" + form_id),
446        default_country = $form
447          .find("#give_tributes_address_country_" + form_id)
448          .val();
449
450      if ("undefined" !== typeof default_country && "" !== default_country) {
451        var data = {
452          action: "give_get_states",
453          country: default_country,
454          field_name: "give_tributes_address_state",
455          form_id: form_id,
456        };
457
458        $.post(give_tributes_common_vars.ajax_url, data, function (response) {
459          state_wrap
460            .find("*")
461            .not(".give_tributes_address_state_label, span")
462            .remove();
463
464          // Show the states dropdown menu.
465          state_wrap.removeClass("give-hidden");
466
467          // Add support to zip fields.
468          $form.find(".give_tributes_adjust_zip").removeClass("form-row-wide");
469          $form.find(".give_tributes_adjust_zip").addClass("form-row-last");
470
471          if (
472            "undefined" !== typeof response.states_found &&
473            true === response.states_found
474          ) {
475            state_wrap.append(response.data);
476          } else {
477            state_wrap.append(
478              '<input aria-required="true" name="give_tributes_address_state" id="give_tributes_address_state_' +
479                form_id +
480                '" class="text give-input required" type="text" value="" />'
481            );
482
483            if (
484              "undefined" !== typeof response.show_field &&
485              false === response.show_field
486            ) {
487              // Hide the states drop-down menu.
488              state_wrap.addClass("give-hidden");
489
490              // Add support to zip fields.
491              $form.find(".give_tributes_adjust_zip").addClass("form-row-wide");
492              $form
493                .find(".give_tributes_adjust_zip")
494                .removeClass("form-row-last");
495            }
496          }
497        });
498      }
499    },
500
501    /**
502     * Get the Donation form Id from the manual donation page
503     * or from front-end donation form.
504     *
505     * @since 1.4.1
506     *
507     * @param $form
508     * @returns {*}
509     */
510    getFormID: function ($form) {
511      // Get the form ID.
512      var form_id = $form.find('input[name="give-form-id"]').val();
513
514      // If form id is undefined.
515      if (undefined === form_id) {
516        form_id = jQuery('select[name="forms[id]"]').val();
517      }
518
519      return form_id;
520    },
521
522    /**
523     * Remove cross sign for the first repeater field.
524     */
525    remove_cross_sign: function () {
526      var ecard_fields = jQuery(".give_tributes_send_ecard_fields");
527
528      ecard_fields.each(function (index) {
529        $(this).find(".give-icon-minus").parent().show();
530
531        if (0 === index && 1 === ecard_fields.length) {
532          $(this).find(".give-icon-minus").parent().hide();
533        }
534      });
535    },
536  };
537
538  // Give Tribute init.
539  Give_Tribute.init();
540});

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.