www.givecampus.com Open in urlscan Pro
2606:4700::6810:c948  Public Scan

Submitted URL: https://foundationcccgivingcampaigns.cmail19.com/t/j-l-zjikihl-dldudrilq-d/
Effective URL: https://www.givecampus.com/campaigns/25404/donations/new?a=5030240
Submission: On December 17 via api from US — Scanned from DE

Form analysis 1 forms found in the DOM

POST /campaigns/25404/donations

<form class="simple_form max-w-full max-h-full" id="contribution_form" aria-label="donation form" action="/campaigns/25404/donations" accept-charset="UTF-8" method="post" novalidate="novalidate"><input name="utf8" type="hidden" value="✓"><input
    type="hidden" name="authenticity_token" value="t-eOwo4rN5AxMREiz9wYIzKLhBp_JZNxhGjfNWuJ0ME2Sdkx248pXd2T4Nj_Ulqq0d2wrnOnww7B6tEPude87Q"><input type="hidden" name="adid" id="adid"><input type="hidden" name="nid" id="nid">
  <div class="input hidden contribution_advocate"><input value="5030240" class="hidden form-control" type="hidden" name="contribution[advocate]" id="contribution_advocate"></div>
  <div class="input hidden contribution_currency"><input class="hidden form-control" type="hidden" value="USD" name="contribution[currency]" id="contribution_currency"></div>
  <div class="input hidden contribution_referal_link"><input class="hidden form-control" type="hidden" name="contribution[referal_link]" id="contribution_referal_link"></div>
  <div>
    <div class="suggested-giving-amounts" id="one-time-amounts" style="display: block;">
      <div class="flex justify-between mt-4"><button class="w-1/3 w-full suggested-amount rounded shadow-sm py-1 cursor-pointer btn-school  mr-2" onclick="moveNumbers('2,500', false, '')" type="button">
          <div class="text-center">
            <div class="font-semibold"><span class="currency-symbol">$</span><span class="suggested_value">2,500</span><span class="right-span currency-symbol"></span></div>
          </div>
        </button><button class="w-1/3 w-full suggested-amount rounded shadow-sm py-1 cursor-pointer btn-school ml-2 mr-2" onclick="moveNumbers('250', false, '')" type="button">
          <div class="text-center">
            <div class="font-semibold"><span class="currency-symbol">$</span><span class="suggested_value">250</span><span class="right-span currency-symbol"></span></div>
          </div>
        </button><button class="w-1/3 w-full suggested-amount rounded shadow-sm py-1 cursor-pointer btn-school ml-2" onclick="moveNumbers('25', false, '')" type="button">
          <div class="text-center">
            <div class="font-semibold"><span class="currency-symbol">$</span><span class="suggested_value">25</span><span class="right-span currency-symbol"></span></div>
          </div>
        </button></div>
    </div>
  </div>
  <script>
    var amountFieldHasChanged = false;
    $(function() {
      var showDefaultAmountOnPageLoad = true;
      if (false) {
        showRecurring(showDefaultAmountOnPageLoad);
      } else {
        showOneTime(showDefaultAmountOnPageLoad);
      }
      amountFieldHasChanged = false;
      document.getElementById("contribution_value").addEventListener('keypress', registerAmountChange);
      $("#contribution_recur").on("change", function() {
        if (this.checked) {
          showRecurring();
        } else {
          showOneTime();
        }
      });
    });
    $(".suggested-amount").click(function() {
      $(".suggested-amount").removeClass("btn-school-primary").addClass("btn-school");
      $(this).addClass("btn-school-primary");
      amountFieldHasChanged = true;
    });

    function registerAmountChange() {
      amountFieldHasChanged = true;
    }

    function showOneTime(setDefaultAmount) {
      $("#one-time-amounts").show();
      $("#recurring-amounts").hide();
      $(".recurring-button").removeClass("btn-school-primary").addClass("btn-school");
      $(".one-time-button").removeClass("btn-school").addClass("btn-school-primary");
      $("#one-time-amounts .suggested-amount").removeClass("btn-school-primary");
      $(".btn-one-time-default").addClass("btn-school-primary");
      var recurringDiv = $("#recurringGift");
      recurringDiv.addClass("hidden");
      recurringDiv.slideUp();
      if (setDefaultAmount) {
        var numToPass = "" + "";
        if (amountFieldHasChanged) {
          $(".suggested-amount").removeClass("btn-school-primary").addClass("btn-school");
          numToPass = $("#contribution_value").val();
        }
        moveNumbers(numToPass, false, null);
      }
    }

    function showRecurring(setDefaultAmount) {
      $("#recurring-amounts").show();
      $("#one-time-amounts").hide();
      $(".one-time-button").removeClass("btn-school-primary").addClass("btn-school");
      $(".recurring-button").removeClass("btn-school").addClass("btn-school-primary");
      $("#recurring-amounts .suggested-amount").removeClass("btn-school-primary");
      $(".btn-recurring-default").addClass("btn-school-primary");
      var recurringDiv = $("#recurringGift");
      recurringDiv.removeClass("hidden");
      recurringDiv.slideDown();
      if (setDefaultAmount) {
        var numToPass = "" + "";
        if (amountFieldHasChanged) {
          $(".suggested-amount").removeClass("btn-school-primary").addClass("btn-school");
          numToPass = $("#contribution_value").val();
        }
        moveNumbers(numToPass, true, $(".btn-recurring-default .suggested-amount-label").text().trim());
      }
    }

    function moveNumbers(num, recur, freq) {
      if (num) {
        var contributionValueInput = $("#contribution_value");
        contributionValueInput.val(num.replace(',', ''));
        // trigger necessary validations
        contributionValueInput.trigger("keyup");
        contributionValueInput.trigger("change");
        // Triggers on-change event in React Designations 3.0 component for value field
        if ($('#designation-split-amount-trigger').length) {
          var input = document.querySelector('#designation-split-amount-trigger');
          var nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
          nativeInputValueSetter.call(input, num.replace(',', ''));
          var ev = new Event('input', {
            bubbles: true
          });
          input.dispatchEvent(ev);
        }
      }
      if (recur) {
        if ($('#contribution_recur').prop('checked') == false && !$("#recurringGift").hasClass("block")) {
          $('#contribution_recur').trigger('click');
        }
      } else if ($('#contribution_recur').prop('checked') == true) {
        $('#contribution_recur').trigger('click');
      }
      if (freq !== null) {
        if (freq === 'per month') {
          $('#contribution_period_monthly').trigger('click');
        } else if (freq === 'per year') {
          $('#contribution_period_yearly').trigger('click');
        }
      }
    }
  </script>
  <div></div><br>
  <div aria-label="Value" class="row" style="padding: 0.5em 0">
    <div class="form-group">
      <div class="col-sm-3"><label class="value required" for="contribution_value" aria-required="true">Amount</label></div>
      <div class="col-sm-8">
        <script>
          // toggle recurring on browser back
          $(document).ready(function() {
            var contributionRecurCheckbox = document.getElementById('contribution_recur');
            var recurringGiftDiv = document.getElementById('recurringGift');
            if (contributionRecurCheckbox.checked) {
              recurringGiftDiv.className += "block";
            }
            $("#contribution_recur").on("change", function() {
              var recurringDiv = $("#recurringGift");
              if ($(this).is(":checked")) {
                recurringDiv.removeClass("hidden");
                recurringDiv.slideDown();
              } else {
                recurringDiv.addClass("hidden");
                recurringDiv.slideUp();
              }
            });
            var $recurInputsContainer = $("#recur-inputs-container");
            var $recurHiddenContainer = $("#recur-hidden-container");
            var $recurSelectContainer = $("#recur-select-container");
            var recurMax = -1;
            var oneYearOnly = recurMax === 1;
            var selectedPeriod = $("input[name='contribution[period]']").val();
            var selectedRecurLength = 0;
            var defaultRecurLengthLabel = $(".recur_length_label").html();
            var defaultRecurLengthOptions = $("#contribution_recur_length").html();
            var maxRecurringMonths = -12;
            var indefiniteEnabled = true
            if (indefiniteEnabled) {
              maxRecurringMonths = 60;
            }

            function toggleRecurringOptions(period) {
              oneYearOnly ? toggleRecurringOptionsOneYear(period) : toggleRecurringOptionsMultiYear(period);
            }

            function toggleRecurringOptionsMultiYear(period) {
              switch (period) {
                case "yearly":
                  $(".recur_length_label").html(defaultRecurLengthLabel);
                  $("#contribution_recur_length").html(defaultRecurLengthOptions);
                  $("#contribution_recur_length option[value='1']").remove();
                  if (selectedRecurLength > 0) {
                    $("#contribution_recur_length").val("");
                  }
                  break;
                case "monthly":
                  $(".recur_length_label").html(defaultRecurLengthLabel);
                  $("#contribution_recur_length").html(defaultRecurLengthOptions);
                  break;
                case "limited_months":
                  $(".recur_length_label").html("For how many months?");
                  // add select options
                  $("#contribution_recur_length").html("");
                  for (var i = maxRecurringMonths; i > 1; i--) {
                    $("#contribution_recur_length").append("<option value='" + i + "'>" + i + "</option>");
                  }
                  break;
                default:
                  $(".recur_length_label").html(defaultRecurLengthLabel);
                  $("#contribution_recur_length").html(defaultRecurLengthOptions);
                  break;
              }
            }

            function toggleRecurringOptionsOneYear(period) {
              switch (period) {
                case "yearly":
                  $recurInputsContainer.prepend($recurHiddenContainer);
                  $recurSelectContainer.remove();
                  break;
                case "monthly":
                  $recurInputsContainer.prepend($recurHiddenContainer);
                  $recurSelectContainer.remove();
                  break;
                case "limited_months":
                  $recurHiddenContainer.remove();
                  $recurInputsContainer.append($recurSelectContainer);
                  $(".recur_length_label").html("For how many months?");
                  // add select options
                  $("#contribution_recur_length").html("");
                  for (var i = maxRecurringMonths; i > 1; i--) {
                    $("#contribution_recur_length").append("<option value='" + i + "'>" + i + "</option>");
                  }
                  break;
                default:
                  $recurInputsContainer.prepend($recurHiddenContainer);
                  $recurSelectContainer.hide();
                  break;
              }
            }
            // load selections on ready
            toggleRecurringOptions(selectedPeriod);
            // toggle options on change
            $("input[name='contribution[period]']").change(function() {
              selectedPeriod = $(this).val();
              toggleRecurringOptions(selectedPeriod);
            });
          });
        </script>
        <div class="row">
          <div class="col-md-12 margin-bottom-10"><input aria-label="value" class="input-lg" id="contribution_value" min="1" name="contribution[value]" placeholder="$" required="required" step="0.01" style=" " type="number" value=""
              aria-required="true"></div>
          <div class="col-sm-12 mobile-margin-top-10">
            <div class="margin-top-10">
              <div class="my-4"><label class="margin-top-10" for="contribution_recur" id="recurring-checkbox-label"><input class="h-4 w-4" id="contribution_recur" name="contribution[recur]" type="checkbox" value="1">Make this gift recurring</label>
                <div class="my-4 hidden" id="recurringGift" style="">
                  <div>
                    <div class="text-sm font-semibold text-gray-800 my-2">This gift will recur monthly</div>
                    <div class="input hidden contribution_period"><input value="monthly" class="hidden form-control" type="hidden" name="contribution[period]" id="contribution_period"></div>
                  </div>
                  <div class="py-4" id="recur-inputs-container">
                    <div id="recur-hidden-container"></div>
                    <div id="recur-select-container">
                      <div class="recurring-divider text-left"><label class="recur_length_label" for="contribution_recur_length">For how many years?</label>
                        <div class="input select required contribution_recur_length" aria-required="true"><select class="select required form-control black form-control" required="required" aria-required="true" name="contribution[recur_length]"
                            id="contribution_recur_length">
                            <option value="indefinitely">indefinitely</option>
                            <option value="5">5</option>
                            <option value="4">4</option>
                            <option value="3">3</option>
                            <option value="2">2</option>
                            <option value="1">1</option>
                          </select></div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <div aria-label="Special instructions or comment" class="row" style="padding: 0.5em 0">
    <div class="form-group">
      <div class="col-sm-3"><label class="special_instructions_or_comment" for="special_instructions_or_comment">Message or comments</label></div>
      <div class="col-sm-8"><input aria-label="special_instructions_or_comment" class="input-lg" id="special_instructions_or_comment" name="contribution[addtnl_fields][special_instructions_or_comment]" placeholder="" type="text"></div>
    </div>
  </div>
  <div aria-label="Payer name" class="row" style="padding: 0.5em 0">
    <div class="form-group">
      <div class="col-sm-3"><label class="payer_name required" for="contribution_payer_name" aria-required="true">Name</label></div>
      <div class="col-sm-8"><input aria-label="payer_name" class="input-lg" id="contribution_payer_name" name="contribution[payer_name]" placeholder="First, MI, Last Name" required="required" type="text" aria-required="true"></div>
    </div>
  </div>
  <div aria-label="First name" class="row" style="padding: 0.5em 0">
    <div class="form-group">
      <div class="col-sm-3"><label class="first_name required" for="first_name" aria-required="true">First name</label></div>
      <div class="col-sm-8"><input aria-label="first_name" class="input-lg" id="first_name" name="contribution[addtnl_fields][first_name]" placeholder="First name" required="required" type="text" aria-required="true"></div>
    </div>
  </div>
  <div aria-label="Last name" class="row" style="padding: 0.5em 0">
    <div class="form-group">
      <div class="col-sm-3"><label class="last_name required" for="last_name" aria-required="true">Last name</label></div>
      <div class="col-sm-8"><input aria-label="last_name" class="input-lg" id="last_name" name="contribution[addtnl_fields][last_name]" placeholder="Last name" required="required" type="text" aria-required="true"></div>
    </div>
  </div>
  <div aria-label="Payer email" class="row" style="padding: 0.5em 0">
    <div class="form-group">
      <div class="col-sm-3"><label class="payer_email required" for="contribution_payer_email" aria-required="true">Email</label></div>
      <div class="col-sm-8"><input aria-label="payer_email" class="input-lg" id="contribution_payer_email" name="contribution[payer_email]" placeholder="Email" required="required" type="email" aria-required="true"></div>
    </div>
  </div>
  <div aria-label="Organization" class="row" style="padding: 0.5em 0">
    <div class="form-group">
      <div class="col-sm-3"><label class="organization" for="organization">Organization</label></div>
      <div class="col-sm-8"><input aria-label="organization" class="input-lg" id="organization" name="contribution[addtnl_fields][organization]" placeholder="" type="text">
        <div class="help-block">What organization or school are you affiliated with?</div>
      </div>
    </div>
  </div>
  <div aria-label="Addr country" class="row" style="padding: 0.5em 0">
    <div class="form-group">
      <div class="col-sm-3"><label class="addr_country required" for="contribution_addr_country" aria-required="true">Country</label></div>
      <div class="col-sm-8"><select aria-label="address country" class="form-control country-select" id="contribution_addr_country" name="contribution[addr_country]">
          <option data-zip-required="true" value="Canada">Canada</option>
          <option data-zip-required="true" value="United Kingdom">United Kingdom</option>
          <option data-zip-required="true" selected="selected" value="United States">United States</option>
          <option disabled="disabled">---------------------------------------------------------------------------------</option>
          <option data-zip-required="true" value="Afghanistan">Afghanistan</option>
          <option data-zip-required="true" value="Albania">Albania</option>
          <option data-zip-required="true" value="Algeria">Algeria</option>
          <option data-zip-required="true" value="American Samoa">American Samoa</option>
          <option data-zip-required="true" value="Andorra">Andorra</option>
          <option data-zip-required="false" value="Angola">Angola</option>
          <option data-zip-required="true" value="Anguilla">Anguilla</option>
          <option data-zip-required="false" value="Antigua and Barbuda">Antigua and Barbuda</option>
          <option data-zip-required="true" value="Argentina">Argentina</option>
          <option data-zip-required="true" value="Armenia">Armenia</option>
          <option data-zip-required="false" value="Aruba">Aruba</option>
          <option data-zip-required="true" value="Australia">Australia</option>
          <option data-zip-required="true" value="Austria">Austria</option>
          <option data-zip-required="true" value="Azerbaijan">Azerbaijan</option>
          <option data-zip-required="false" value="Bahamas">Bahamas</option>
          <option data-zip-required="true" value="Bahrain">Bahrain</option>
          <option data-zip-required="true" value="Bangladesh">Bangladesh</option>
          <option data-zip-required="true" value="Barbados">Barbados</option>
          <option data-zip-required="true" value="Belarus">Belarus</option>
          <option data-zip-required="true" value="Belgium">Belgium</option>
          <option data-zip-required="false" value="Belize">Belize</option>
          <option data-zip-required="false" value="Benin">Benin</option>
          <option data-zip-required="true" value="Bermuda">Bermuda</option>
          <option data-zip-required="true" value="Bhutan">Bhutan</option>
          <option data-zip-required="true" value="Bolivia">Bolivia</option>
          <option data-zip-required="true" value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
          <option data-zip-required="false" value="Botswana">Botswana</option>
          <option data-zip-required="true" value="Brazil">Brazil</option>
          <option data-zip-required="true" value="Brunei Darussalam">Brunei Darussalam</option>
          <option data-zip-required="true" value="Bulgaria">Bulgaria</option>
          <option data-zip-required="false" value="Burkina Faso">Burkina Faso</option>
          <option data-zip-required="false" value="Burundi">Burundi</option>
          <option data-zip-required="true" value="Cambodia">Cambodia</option>
          <option data-zip-required="false" value="Cameroon">Cameroon</option>
          <option data-zip-required="true" value="Canada">Canada</option>
          <option data-zip-required="true" value="Cape Verde">Cape Verde</option>
          <option data-zip-required="true" value="Cayman Islands">Cayman Islands</option>
          <option data-zip-required="false" value="Central African Republic">Central African Republic</option>
          <option data-zip-required="true" value="Chad">Chad</option>
          <option data-zip-required="true" value="Chile">Chile</option>
          <option data-zip-required="true" value="China">China</option>
          <option data-zip-required="true" value="Colombia">Colombia</option>
          <option data-zip-required="false" value="Comoros">Comoros</option>
          <option data-zip-required="false" value="Congo">Congo</option>
          <option data-zip-required="false" value="Cook Islands">Cook Islands</option>
          <option data-zip-required="true" value="Costa Rica">Costa Rica</option>
          <option data-zip-required="false" value="Cote D'Ivoire">Cote D'Ivoire</option>
          <option data-zip-required="true" value="Croatia">Croatia</option>
          <option data-zip-required="true" value="Cuba">Cuba</option>
          <option data-zip-required="true" value="Cyprus">Cyprus</option>
          <option data-zip-required="true" value="Czech Republic">Czech Republic</option>
          <option data-zip-required="false" value="Democratic Republic of the Congo">Democratic Republic of the Congo</option>
          <option data-zip-required="true" value="Denmark">Denmark</option>
          <option data-zip-required="false" value="Djibouti">Djibouti</option>
          <option data-zip-required="false" value="Dominica">Dominica</option>
          <option data-zip-required="true" value="Dominican Republic">Dominican Republic</option>
          <option data-zip-required="true" value="Ecuador">Ecuador</option>
          <option data-zip-required="true" value="Egypt">Egypt</option>
          <option data-zip-required="true" value="El Salvador">El Salvador</option>
          <option data-zip-required="false" value="Equatorial Guinea">Equatorial Guinea</option>
          <option data-zip-required="false" value="Eritrea">Eritrea</option>
          <option data-zip-required="true" value="Estonia">Estonia</option>
          <option data-zip-required="true" value="Ethiopia">Ethiopia</option>
          <option data-zip-required="true" value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>
          <option data-zip-required="true" value="Faroe Islands">Faroe Islands</option>
          <option data-zip-required="false" value="Fiji">Fiji</option>
          <option data-zip-required="true" value="Finland">Finland</option>
          <option data-zip-required="true" value="France">France</option>
          <option data-zip-required="true" value="French Guiana">French Guiana</option>
          <option data-zip-required="true" value="French Polynesia">French Polynesia</option>
          <option data-zip-required="true" value="Gabon">Gabon</option>
          <option data-zip-required="false" value="Gambia">Gambia</option>
          <option data-zip-required="true" value="Georgia">Georgia</option>
          <option data-zip-required="true" value="Germany">Germany</option>
          <option data-zip-required="false" value="Ghana">Ghana</option>
          <option data-zip-required="true" value="Gibraltar">Gibraltar</option>
          <option data-zip-required="true" value="Greece">Greece</option>
          <option data-zip-required="true" value="Greenland">Greenland</option>
          <option data-zip-required="false" value="Grenada">Grenada</option>
          <option data-zip-required="true" value="Guadeloupe">Guadeloupe</option>
          <option data-zip-required="true" value="Guam">Guam</option>
          <option data-zip-required="true" value="Guatemala">Guatemala</option>
          <option data-zip-required="false" value="Guinea">Guinea</option>
          <option data-zip-required="true" value="Guinea-Bissau">Guinea-Bissau</option>
          <option data-zip-required="false" value="Guyana">Guyana</option>
          <option data-zip-required="true" value="Haiti">Haiti</option>
          <option data-zip-required="true" value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>
          <option data-zip-required="true" value="Honduras">Honduras</option>
          <option data-zip-required="false" value="Hong Kong">Hong Kong</option>
          <option data-zip-required="true" value="Hungary">Hungary</option>
          <option data-zip-required="true" value="Iceland">Iceland</option>
          <option data-zip-required="true" value="India">India</option>
          <option data-zip-required="true" value="Indonesia">Indonesia</option>
          <option data-zip-required="true" value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>
          <option data-zip-required="true" value="Iraq">Iraq</option>
          <option data-zip-required="false" value="Ireland">Ireland</option>
          <option data-zip-required="true" value="Israel">Israel</option>
          <option data-zip-required="true" value="Italy">Italy</option>
          <option data-zip-required="false" value="Jamaica">Jamaica</option>
          <option data-zip-required="true" value="Japan">Japan</option>
          <option data-zip-required="true" value="Jordan">Jordan</option>
          <option data-zip-required="true" value="Kazakhstan">Kazakhstan</option>
          <option data-zip-required="false" value="Kenya">Kenya</option>
          <option data-zip-required="false" value="Kiribati">Kiribati</option>
          <option data-zip-required="false" value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>
          <option data-zip-required="true" value="Kuwait">Kuwait</option>
          <option data-zip-required="true" value="Kyrgyzstan">Kyrgyzstan</option>
          <option data-zip-required="true" value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>
          <option data-zip-required="true" value="Latvia">Latvia</option>
          <option data-zip-required="false" value="Lebanon">Lebanon</option>
          <option data-zip-required="true" value="Lesotho">Lesotho</option>
          <option data-zip-required="true" value="Liberia">Liberia</option>
          <option data-zip-required="true" value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option>
          <option data-zip-required="true" value="Liechtenstein">Liechtenstein</option>
          <option data-zip-required="true" value="Lithuania">Lithuania</option>
          <option data-zip-required="true" value="Luxembourg">Luxembourg</option>
          <option data-zip-required="false" value="Macao">Macao</option>
          <option data-zip-required="true" value="Macedonia, the Former Yugoslav Republic of">Macedonia, the Former Yugoslav Republic of</option>
          <option data-zip-required="true" value="Madagascar">Madagascar</option>
          <option data-zip-required="false" value="Malawi">Malawi</option>
          <option data-zip-required="true" value="Malaysia">Malaysia</option>
          <option data-zip-required="true" value="Maldives">Maldives</option>
          <option data-zip-required="false" value="Mali">Mali</option>
          <option data-zip-required="true" value="Malta">Malta</option>
          <option data-zip-required="true" value="Marshall Islands">Marshall Islands</option>
          <option data-zip-required="true" value="Martinique">Martinique</option>
          <option data-zip-required="false" value="Mauritania">Mauritania</option>
          <option data-zip-required="false" value="Mauritius">Mauritius</option>
          <option data-zip-required="true" value="Mexico">Mexico</option>
          <option data-zip-required="true" value="Micronesia, Federated States of">Micronesia, Federated States of</option>
          <option data-zip-required="true" value="Moldova, Republic of">Moldova, Republic of</option>
          <option data-zip-required="true" value="Monaco">Monaco</option>
          <option data-zip-required="true" value="Mongolia">Mongolia</option>
          <option data-zip-required="false" value="Montserrat">Montserrat</option>
          <option data-zip-required="true" value="Morocco">Morocco</option>
          <option data-zip-required="true" value="Mozambique">Mozambique</option>
          <option data-zip-required="true" value="Myanmar">Myanmar</option>
          <option data-zip-required="true" value="Namibia">Namibia</option>
          <option data-zip-required="false" value="Nauru">Nauru</option>
          <option data-zip-required="true" value="Nepal">Nepal</option>
          <option data-zip-required="true" value="Netherlands">Netherlands</option>
          <option data-zip-required="false" value="Netherlands Antilles">Netherlands Antilles</option>
          <option data-zip-required="true" value="New Caledonia">New Caledonia</option>
          <option data-zip-required="true" value="New Zealand">New Zealand</option>
          <option data-zip-required="true" value="Nicaragua">Nicaragua</option>
          <option data-zip-required="true" value="Niger">Niger</option>
          <option data-zip-required="true" value="Nigeria">Nigeria</option>
          <option data-zip-required="false" value="Niue">Niue</option>
          <option data-zip-required="true" value="Norfolk Island">Norfolk Island</option>
          <option data-zip-required="true" value="Northern Mariana Islands">Northern Mariana Islands</option>
          <option data-zip-required="true" value="Norway">Norway</option>
          <option data-zip-required="true" value="Oman">Oman</option>
          <option data-zip-required="true" value="Pakistan">Pakistan</option>
          <option data-zip-required="true" value="Palau">Palau</option>
          <option data-zip-required="true" value="Palestine">Palestine</option>
          <option data-zip-required="false" value="Panama">Panama</option>
          <option data-zip-required="true" value="Papua New Guinea">Papua New Guinea</option>
          <option data-zip-required="true" value="Paraguay">Paraguay</option>
          <option data-zip-required="true" value="Peru">Peru</option>
          <option data-zip-required="true" value="Philippines">Philippines</option>
          <option data-zip-required="true" value="Pitcairn">Pitcairn</option>
          <option data-zip-required="true" value="Poland">Poland</option>
          <option data-zip-required="true" value="Portugal">Portugal</option>
          <option data-zip-required="true" value="Puerto Rico">Puerto Rico</option>
          <option data-zip-required="false" value="Qatar">Qatar</option>
          <option data-zip-required="true" value="Reunion">Reunion</option>
          <option data-zip-required="true" value="Romania">Romania</option>
          <option data-zip-required="true" value="Russia">Russia</option>
          <option data-zip-required="false" value="Rwanda">Rwanda</option>
          <option data-zip-required="true" value="Saint Helena">Saint Helena</option>
          <option data-zip-required="false" value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
          <option data-zip-required="false" value="Saint Lucia">Saint Lucia</option>
          <option data-zip-required="true" value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>
          <option data-zip-required="true" value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option>
          <option data-zip-required="true" value="Samoa">Samoa</option>
          <option data-zip-required="true" value="San Marino">San Marino</option>
          <option data-zip-required="false" value="Sao Tome and Principe">Sao Tome and Principe</option>
          <option data-zip-required="false" value="Saudi Arabia">Saudi Arabia</option>
          <option data-zip-required="true" value="Senegal">Senegal</option>
          <option data-zip-required="true" value="Serbia">Serbia</option>
          <option data-zip-required="false" value="Seychelles">Seychelles</option>
          <option data-zip-required="false" value="Sierra Leone">Sierra Leone</option>
          <option data-zip-required="true" value="Singapore">Singapore</option>
          <option data-zip-required="true" value="Slovakia">Slovakia</option>
          <option data-zip-required="true" value="Slovenia">Slovenia</option>
          <option data-zip-required="false" value="Solomon Islands">Solomon Islands</option>
          <option data-zip-required="false" value="Somalia">Somalia</option>
          <option data-zip-required="false" value="South Africa">South Africa</option>
          <option data-zip-required="true" value="South Korea">South Korea</option>
          <option data-zip-required="true" value="Spain">Spain</option>
          <option data-zip-required="true" value="Sri Lanka">Sri Lanka</option>
          <option data-zip-required="true" value="Sudan">Sudan</option>
          <option data-zip-required="false" value="Suriname">Suriname</option>
          <option data-zip-required="true" value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>
          <option data-zip-required="true" value="Swaziland">Swaziland</option>
          <option data-zip-required="true" value="Sweden">Sweden</option>
          <option data-zip-required="true" value="Switzerland">Switzerland</option>
          <option data-zip-required="false" value="Syrian Arab Republic">Syrian Arab Republic</option>
          <option data-zip-required="true" value="Taiwan">Taiwan</option>
          <option data-zip-required="true" value="Tajikistan">Tajikistan</option>
          <option data-zip-required="false" value="Tanzania, United Republic of">Tanzania, United Republic of</option>
          <option data-zip-required="true" value="Thailand">Thailand</option>
          <option data-zip-required="true" value="Togo">Togo</option>
          <option data-zip-required="false" value="Tokelau">Tokelau</option>
          <option data-zip-required="false" value="Tonga">Tonga</option>
          <option data-zip-required="false" value="Trinidad and Tobago">Trinidad and Tobago</option>
          <option data-zip-required="true" value="Tunisia">Tunisia</option>
          <option data-zip-required="true" value="Turkey">Turkey</option>
          <option data-zip-required="true" value="Turkmenistan">Turkmenistan</option>
          <option data-zip-required="true" value="Turks and Caicos Islands">Turks and Caicos Islands</option>
          <option data-zip-required="false" value="Tuvalu">Tuvalu</option>
          <option data-zip-required="false" value="Uganda">Uganda</option>
          <option data-zip-required="true" value="Ukraine">Ukraine</option>
          <option data-zip-required="false" value="United Arab Emirates">United Arab Emirates</option>
          <option data-zip-required="true" value="United Kingdom">United Kingdom</option>
          <option data-zip-required="true" value="United States">United States</option>
          <option data-zip-required="true" value="Uruguay">Uruguay</option>
          <option data-zip-required="true" value="Uzbekistan">Uzbekistan</option>
          <option data-zip-required="false" value="Vanuatu">Vanuatu</option>
          <option data-zip-required="true" value="Venezuela">Venezuela</option>
          <option data-zip-required="true" value="Vietnam">Vietnam</option>
          <option data-zip-required="true" value="Virgin Islands, British">Virgin Islands, British</option>
          <option data-zip-required="true" value="Virgin Islands, U.s.">Virgin Islands, U.s.</option>
          <option data-zip-required="true" value="Wallis and Futuna">Wallis and Futuna</option>
          <option data-zip-required="true" value="Western Sahara">Western Sahara</option>
          <option data-zip-required="false" value="Yemen">Yemen</option>
          <option data-zip-required="true" value="Zambia">Zambia</option>
          <option data-zip-required="false" value="Zimbabwe">Zimbabwe</option>
        </select>
        <script>
          var zipcodeRequired = true;
          var defaultCountry = "United States";
          // If an autofill token or autofill param is set then the country may be autofilled after we already autofilled state.
          // This would trigger a wipe of the state without this conditional
          var autofill_state_set = "false"
          $("#contribution_addr_country").change(function() {
            var country = {
              name: $(this).val(),
              reqZip: $(this).children('option:selected').data('zip-required')
            };
            if ($("#addr_state").length > 0) {
              if (country.name !== "United States") {
                $("label.addr_state").slideUp();
                $("#addr_state").slideUp();
                $("#addr_state").val("");
              } else {
                $("label.addr_state").slideDown();
                $("#addr_state").slideDown();
                if (autofill_state_set !== "true") {
                  $("#addr_state").val("");
                }
              }
            }
            if ($("#contribution_mail_address").length > 0) {
              if (country.name !== "United States") {
                $("#contribution_mail_address").attr("placeholder", 'Street, City, State')
              } else {
                $("#contribution_mail_address").attr("placeholder", 'Street')
              }
            }
            if (country.reqZip) {
              zipcodeRequired = true;
              $("#contribution_zipcode").slideDown();
              $("label.zipcode").slideDown();
            } else {
              zipcodeRequired = false;
              $("label.zipcode").slideUp();
              $("#contribution_zipcode").slideUp();
              $("#contribution_zipcode").val("");
            }
          });
          $(function() {
            if ("false" !== 'true') {
              $("#contribution_addr_country").val(defaultCountry);
              $("#contribution_addr_country").trigger("change");
            }
          });
        </script>
      </div>
    </div>
  </div>
  <div aria-label="Zipcode" class="row" style="padding: 0.5em 0">
    <div class="form-group">
      <div class="col-sm-3"><label class="zipcode required" for="contribution_zipcode" aria-required="true" style="display: inline-block;">ZIP code</label></div>
      <div class="col-sm-8"><input aria-label="zipcode" class="input-lg" id="contribution_zipcode" name="contribution[zipcode]" placeholder="ZIP or postal code" required="required" type="text" aria-required="true" style="">
        <div class="help-block zipcode"></div>
      </div>
    </div>
  </div>
  <style type="text/css">
    .g-recaptcha {
      display: inline-block;
      margin-bottom: 10px;
    }
  </style><input aria-hidden="true" aria-label="Country" autocomplete="false" class="contribution-a-zipcode" id="contribution_a_country" name="contribution[a_country]" style="display:none !important" tabindex="-1" type="text" value="">
  <div aria-label="terms of service" class="w-full my-4 mt-8"><label class="tos_label text-xs text-gray-600" for="contribution_accept_tos" id="tos-checkbox"><input class="checkbox w-4 h-4" id="contribution_accept_tos" name="contribution[accept_tos]"
        type="checkbox" value="0">I have read and agree to the <a target="_blank" class="underline" href="/terms">terms of service</a> and the <a target="_blank" class="underline" href="/privacy">privacy policy.</a><span
        class="text-red-500">*</span></label>
    <div aria-label="checkout button" class="my-4 text-center">
      <script>
        // Updated in `app/views/projects/contributions/_paypal.html.slim`
        var canRenderPayPalBtns = false;
        // Updated in `app/views/form_templates/fields/_google_apple_pay_button.html.slim`
        var canRenderStripeSdkBtns = false;

        function checkAndRenderOrDivider() {
          if (canRenderPayPalBtns || canRenderStripeSdkBtns) {
            $("#or-divider").show();
          }
        }
        $(function() {
          checkAndRenderOrDivider();
        });
      </script>
      <div id="advanced-payprocs-new-donation-form">
        <script src="https://js.stripe.com/v3/"></script>
        <div class="margin-tb-10 StripeElement" id="payment-request-button">
          <div class="__PrivateStripeElement" style="margin: 0px !important; padding: 0px !important; border: none !important; display: block !important; background: transparent !important; position: relative !important; opacity: 1 !important;">
            <iframe name="__privateStripeFrame5829" frameborder="0" allowtransparency="true" scrolling="no" allow="payment *"
              src="https://js.stripe.com/v3/elements-inner-payment-request-4395ff1eda7c49fb44d9f0cd3774908c.html#wait=false&amp;mids[guid]=NA&amp;mids[muid]=NA&amp;mids[sid]=NA&amp;style[paymentRequestButton][height]=44px&amp;rtl=false&amp;componentName=paymentRequestButton&amp;keyMode=live&amp;apiKey=pk_live_K4b2fnppomknqVdM5jEY4YUR&amp;referrer=https%3A%2F%2Fwww.givecampus.com%2Fcampaigns%2F25404%2Fdonations%2Fnew%3Fa%3D5030240&amp;controllerId=__privateStripeController5821"
              title="Secure payment button frame"
              style="border: none !important; margin: 0px !important; padding: 0px !important; width: 1px !important; min-width: 100% !important; overflow: hidden !important; display: block !important; user-select: none !important; transform: translate(0px) !important; height: 44px;"></iframe><input
              class="__PrivateStripeElement-input" aria-hidden="true" aria-label=" " autocomplete="false" maxlength="1"
              style="border: none !important; display: block !important; position: absolute !important; height: 1px !important; top: -1px !important; left: 0px !important; padding: 0px !important; margin: 0px !important; width: 100% !important; opacity: 0 !important; background: transparent !important; pointer-events: none !important; font-size: 16px !important;">
          </div>
        </div>
        <script>
          $(document).ready(function() {
            var stripe = Stripe("pk_live_K4b2fnppomknqVdM5jEY4YUR");
            var clientSecret = "";
            var contributionId = 0;
            var projectId = 25404;
            var paymentRequest = stripe.paymentRequest({
              country: "US",
              currency: "usd",
              total: {
                label: "Initialized paymentRequest for FY22 Annual Campaign: Innovation Challenge",
                amount: 0,
              },
            });
            var elements = stripe.elements();
            var prButton = elements.create("paymentRequestButton", {
              paymentRequest: paymentRequest,
              style: {
                paymentRequestButton: {
                  height: '44px'
                },
              },
            });
            paymentRequest.canMakePayment().then(function(result) {
              if (result) {
                prButton.mount("#payment-request-button");
                canRenderStripeSdkBtns = true;
                checkAndRenderOrDivider();
              } else {
                document.getElementById("payment-request-button").style.display = "none";
              }
            });
            prButton.on("click", function(event) {
              trackHeapEvent(3079, 25404, "Form", "Click - User clicks Google/Apple pay button on pre-payment form for " + productType)
              // when using designation nodes, trigger its form submitting behavior so the designation selection data gets set
              if (window.designationSelectors) {
                window.designationSelectors.submitForm();
              }
              if (window.directedDesignationSelectors) {
                window.directedDesignationSelectors.submitForm();
              }
              if (!document.getElementById("contribution_form").checkValidity() || !checkFormValidity()) {
                // This is to make the simple_form validations show up; form won't actually submit
                event.preventDefault();
                $("#contribution_form").submit();
              }
              paymentRequest.update({
                total: {
                  label: "$" + $("#contribution_value").val() + " to FY22 Annual Campaign: Innovation Challenge",
                  amount: parseInt($("#contribution_value").val()) * 100,
                }
              });
              postBody = $("#contribution_form").serializeJSON();
              postBody.source_sdk = "stripe_payment_request";
              postBody = JSON.stringify(postBody)
              return fetch("/campaigns/" + projectId + "/donations/", {
                method: "post",
                headers: {
                  "content-type": "application/json",
                  "X-Requested-With": "XMLHttpRequest"
                },
                body: postBody,
              }).then(function(response) {
                return response.json();
              }).then(function(data) {
                if (data.error) {
                  paymentRequest.abort()
                  raisePaymentError(data);
                } else {
                  clientSecret = data.client_secret;
                  contributionId = data.contribution_id;
                }
              });
            });
            paymentRequest.on("paymentmethod", function(ev) {
              // Confirm the PaymentIntent without handling potential next actions (yet).
              stripe.confirmCardPayment(clientSecret, {
                payment_method: ev.paymentMethod.id
              }, {
                handleActions: false
              }).then(function(confirmResult) {
                if (confirmResult.error) {
                  // Report to the browser that the payment failed, prompting it to
                  // re-show the payment interface, or show an error message and close
                  // the payment interface.
                  ev.complete("fail");
                  raisePaymentError({
                    error_message: confirmResult.error.message
                  });
                } else {
                  // Report to the browser that the confirmation was successful, prompting
                  // it to close the browser payment method collection interface.
                  ev.complete("success");
                  // Check if the PaymentIntent requires any actions and if so let Stripe.js
                  // handle the flow. If using an API version older than "2019-02-11" instead
                  // instead check for: `paymentIntent.status === "requires_source_action"`.
                  if (confirmResult.paymentIntent.status === "requires_action") {
                    // Let Stripe.js handle the rest of the payment flow.
                    stripe.confirmCardPayment(clientSecret).then(function(result) {
                      if (result.error) {
                        // The payment failed -- ask your customer for a new payment method.
                        raisePaymentError();
                      } else {
                        // The payment has succeeded.
                        confirmChargeAndRedirect(projectId, contributionId);
                      }
                    });
                  } else {
                    // The payment has succeeded.
                    confirmChargeAndRedirect(projectId, contributionId);
                  }
                }
              });
            });
          })

          function confirmChargeAndRedirect(projectId, contributionId) {
            $("#advanced-payprocs-new-donation-form").append(new Spinner().spin().el);
            $("body").css({
              "pointer-events": "none",
              "opacity": 0.7
            });
            $.ajax({
              url: "/payments/stripe_charge",
              method: "POST",
              data: {
                contribution_id: contributionId
              }
            }).then(function() {
              window.location.replace("/campaigns/" + projectId + "/donations/" + contributionId);
            });
          }

          function raisePaymentError(err = null) {
            if (err) {
              swal({
                title: "Payment Error",
                text: err.error_message,
                type: "error",
                timer: 5000
              }, function() {
                if (err.no_redirect) {
                  return false;
                } else if (err.redirect_path) {
                  window.location.href = (window.location.origin + err.redirect_path);
                } else {
                  window.location.reload();
                }
              })
            } else {
              swal({
                title: "Payment Error",
                text: "Something went wrong with your payment. Please try again, or use another payment method.",
                type: "error"
              }, function() {
                window.location.reload()
              });
            }
          }
        </script>
        <div class="bold-txt text-center pad-tb-7" id="or-divider" style="">or</div>
      </div><input type="submit" name="commit" value="Donate Now" id="payment_button" class="btn-school-primary p-2 w-full rounded cursor-pointer font-medium text-xl" style="height: 44px;" aria-label="Donate Now" data-disable-with="Donate Now">
    </div>
  </div>
  <div class="clearfix"></div>
  <div class="text-xs text-gray-500 my-4 text-center required-fields-message"><span class="text-red-500 text-sm font-bold">*</span><span class="ml-1">Indicates required field</span></div>
  <script>
    var productType = false ? "SFP Campaign" : "Giving Form"
    $(document).ready(function() {
      trackHeapEvent(3079, 25404, "Form", "View - New donation form for " + productType, {
        gfv2_enabled_for_school_or_project: "true",
        gf1_vs_gf2_control_group: ""
      });
      if (false) {
        $("#contribution_phantom").on("change", function() {
          if ($(this).is(':checked')) {
            $("#payment_button").removeClass("hidden");
            $("#preview_pay_button").addClass("hidden");
          } else {
            $("#preview_pay_button").removeClass("hidden");
            $("#payment_button").addClass("hidden");
          }
        });
      }
      // disabled button and un-check tos on load
      var submit = document.querySelector("input[type=submit]");
      if (submit !== null) {
        submit.removeAttribute("disabled");
      }
      var tosCheckbox = document.querySelector("#contribution_accept_tos");
      if (tosCheckbox) {
        tosCheckbox.removeAttribute("checked");
        // setup tos onchange event
        var tosCheckboxChangeEvent = function(event) {
          if (tosCheckbox.checked == true) {
            tosCheckbox.value = 1;
          } else {
            tosCheckbox.value = 0;
          }
        };
        tosCheckbox.onchange = tosCheckboxChangeEvent;
        tosCheckboxChangeEvent();
      }
      var contributionValueInput = $("#contribution_value");
      if (contributionValueInput.val() > 0) {
        // re-contributionValueInput contribution value
        contributionValueInput.trigger("change");
      }
      // check for tos selected on submit
      $("#contribution_form").submit(function(event) {
        return checkFormValidity()
      });
    });
    $("#contribution_value").on("change", function() {
      var contributionValue = $("#contribution_value").val();
      var leastExpensiveIncentiveValue = 0;
      var projectRequiresIncentives = false;
      if (leastExpensiveIncentiveValue > 0) {
        if (contributionValue < leastExpensiveIncentiveValue) {
          disableIncentiveRequirement();
        } else if (projectRequiresIncentives) {
          enableIncentiveRequirement();
        }
      }
    });
    $("#contribution_reward_id").on("change", function() {
      var incentiveField = $("#contribution_reward_id");
      var incentiveText = incentiveField.children("option:selected").html();
      if (incentiveText.indexOf("No incentive") >= 0) {
        disableIncentiveRequirement();
        var incentiveField = $("#contribution_reward_id");
        $("<input type='hidden' name='contribution[intentionally_opted_out_of_reward]' value='true' />").insertBefore(incentiveField);
      } else {
        $("input[name='contribution[intentionally_opted_out_of_reward]']").val("false");
      }
    });

    function disableIncentiveRequirement() {
      var incentiveField = $("#contribution_reward_id");
      incentiveField.removeAttr("required");
      incentiveField.removeClass("required");
      incentiveField.attr("aria-required", false);
      $("label[for='contribution_reward_id']").removeClass("required");
      $("label[for='incentive']").removeClass("required");
    }

    function enableIncentiveRequirement() {
      var incentiveField = $("#contribution_reward_id");
      incentiveField.attr("required", true);
      incentiveField.addClass("required");
      incentiveField.attr("aria-required", true);
      $("label[for='contribution_reward_id']").addClass("required");
      $("label[for='incentive']").addClass("required");
    }
    var userNotYetNotifiedAboutMisspelledEmail = true

    function checkFormValidity() {
      var formIsValid = true;
      var designationsRequired = false;
      var useReactDesignationNodes = false;
      if (useReactDesignationNodes && designationsRequired && document.querySelectorAll(".selected-designation").length === 0) {
        formIsValid = false;
        $(".designation-search-input").addClass("input-invalid");
        $("#contribution_designation-error").css('display', 'block');
        $("#contribution_designation-error").text("This field is required");
        $(".designation-search-input").focus();
      } else {
        $(".designation-search-input").removeClass("input-invalid");
        $("#contribution_designation-error").css('display', 'none');
      }
      // verify designation was selected and amount was entered
      var allowMultiSplitDesigs = false;
      if (allowMultiSplitDesigs) {
        $("#multiSplitDesignations select, #multiSplitDesignations input").each(function(select) {
          var designationIsInvalid = false && $(this).hasClass("multi-desigs-select") && $(this).val() == "";
          var amountIsBlank = $(this).hasClass("amount-input") && ($(this).val() == "" || $(this).val() == 0);
          if (designationIsInvalid || amountIsBlank) {
            $(this).addClass("input-invalid");
          } else {
            $(this).removeClass("input-invalid");
            $(this).parent(".select2-focusser").removeClass("input-invalid");
          }
        });
        if (hasMultiSplitDesignationValidationErrors()) {
          showMultiSplitDesignationError();
          formIsValid = false;
        } else {
          $(".multi-split-designations-errors").hide();
        }
        if (hasMatchValueError()) {
          showMaxMatchValueWarning();
          formIsValid = false;
        } else {
          $(".match-contribution-value-errors").hide();
        }
      }
      // verify that checked affiliations have class years attached to them
      var givingFormAffiliationFieldRequired = false
      if (false || givingFormAffiliationFieldRequired) {
        var checked_affiliations = $("[name^='contribution[selected_affiliations]']:checked");
        $("#affiliation-errors").hide();
        for (var i = 0; i < checked_affiliations.length; i++) {
          var affiliation = checked_affiliations[i];
          var affiliation_col_name = affiliation.id.replace("_checked", "");
          var affiliation_year_select = $("select[id=selected_affiliations_" + affiliation_col_name + "_0]")[0]
          if (affiliation_year_select !== undefined) {
            var affiliation_year = affiliation_year_select.value;
            if (affiliation_year === "") {
              formIsValid = false;
              $("#affiliation-errors").html("Please make a selection down below.").show();
            }
          }
        }
      }
      // verify tos was accepted
      var tos = $("#contribution_accept_tos");
      if (tos.val() == 0) {
        $(".tos_label").addClass("input-invalid error-text");
        tos.focus();
        $(".tos_label").fadeTo(100, 1.0, function() {
          $(".tos_label").fadeTo(100, 0.3);
        });
        $(".tos_label").fadeTo(100, 0.3, function() {
          $(".tos_label").fadeTo(100, 1.0);
        });
        formIsValid = false;
      } else {
        $(".tos_label").removeClass("input-invalid error-text");
      }
      // verify captcha completed
      var captchaVisibleOnScreen = $(".g-recaptcha").length > 0 && $(".g-recaptcha").is(":visible")
      var captchaNotSet = $("#g-recaptcha-response").length > 0 && $("#g-recaptcha-response").val().length == 0
      if (captchaVisibleOnScreen && captchaNotSet) {
        var captcha = $(".g-recaptcha");
        captcha.focus();
        swal("Please complete captcha before checking out!")
        formIsValid = false;
      }
      if (false) {
        var contribution_value = parseInt($("#contribution_value").val());
        if (true) {
          if (contribution_value < 5000) {
            swal("What a generous gift!", "Please email support@givecampus.com to discuss options for adding matches and challenges under $5,000");
            formIsValid = false;
          }
        }
        $('input[type="datetime-local"]').each(function() {
          var dateString = this.value;
          var year = dateString.split("-")[0];
          if (this.validity.badInput) {
            swal("Check your start or end date", "Please fill out date AND time information if you choose to enter a start or end date", "error")
            formIsValid = false;
          } else if (year && year < 2000) {
            swal("Date too far back in the past", "You've entered a date too far in the past, please enter a date after the year 2000", "error");
            formIsValid = false;
          }
        })
      }
      if (false && $("#contribution_phantom").val() !== "true") {
        if (false && ("" !== $('#contribution_payer_email').val().toLowerCase()) && false) {
          swal({
            title: "Warning",
            text: "You are logged into your administrator account, and the email address you entered does not match your profile.\n\n" +
              "If you are making a gift on behalf of one of your constituents, please logout before returning to this page. " + "That way, the donation will not be tied to your GiveCampus account."
          });
          formIsValid = false;
        }
      }
      if ($("input.error:visible, label.error:visible, .input-invalid.error-text:visible").length) {
        swal({
          title: "Error",
          text: "One or more required fields are missing/invalid. Please correct them and try again.",
          type: "error"
        });
        var errors = [];
        $("label.error:visible, .input-invalid.error-text:visible").each(function() {
          errors.push(`${this.htmlFor}: ${this.innerText}`)
        })
        event.preventDefault();
        trackHeapEvent(3079, 25404, "Form", "Click - User attempts to submit pre-form with errors", {
          errors: errors.join("; ")
        })
      }
      var submittedEmail = $("#contribution_payer_email").val()
      if (userNotYetNotifiedAboutMisspelledEmail && emailHasCommonMisspelling(submittedEmail)) {
        formIsValid = false
        userNotYetNotifiedAboutMisspelledEmail = false
        var submittedEmailDomain = submittedEmail.split("@").pop()
        swal({
          title: 'Is "' + submittedEmailDomain + '" correct?',
          text: "We noticed there might be a typo in your email. If it is correct, please close this window and re-submit!",
          type: "warning",
        })
      }
      return formIsValid;
    }

    function hasMultiSplitDesignationValidationErrors() {
      return $('#multiSplitDesignations .input-invalid').length > 0
    }

    function showMultiSplitDesignationError() {
      if (false) {
        $(".multi-split-designations-errors").html("You must select a designation and enter an amount or remove the designation.");
      } else {
        $(".multi-split-designations-errors").html("You must enter an amount or remove the designation.");
      }
      $(".multi-split-designations-errors").show();
      $('html,body').animate({
        scrollTop: $(".multi-split-designations-errors").offset().top
      });
    }

    function hasMatchValueError() {
      if ($('#contribution_per_unit').length && $('#contribution_per_unit').val().length) {
        return parseFloat($('#contribution_per_unit').val()) > parseFloat($($('input#contribution_value')[1]).val())
      } else {
        return false
      }
    }

    function showMaxMatchValueWarning() {
      $(".match-contribution-value-errors").html("You must enter a value less than your maximum value");
      $(".match-contribution-value-errors").show();
      $('html,body').animate({
        scrollTop: $(".match-contribution-value-errors").offset().top
      });
    }

    function emailHasCommonMisspelling(email) {
      var commonlyMisspelledGmailServers = "gnail,gmali,gmai,gmal,gmil,gamil".split(",") || []
      var commonlyMisspelledYahooServers = "yhoo,yaho".split(",") || []
      var commonlyMisspelledMiscEmailServers = "".split(",") || []
      var commonlyMisspelledComEmailTLDs = "cm,ocm,om,coom,comm,con,vom".split(",") || []
      var commonlyMisspelledNetEmailTLDs = "ne,nt,et".split(",") || []
      var commonlyMisspelledMiscEmailTLDs = "co,ed".split(",") || []
      // match(/(.*)\.(.*)/) will split the domain at the last occurrence of '.' in case the domain has multiple '.'s
      var emailDomain = email.split("@").pop()
      var emailServer = emailDomain.match(/(.*)\.(.*)/)?.[1]
      var emailTLD = emailDomain.match(/(.*)\.(.*)/)?.[2]
      if (commonlyMisspelledGmailServers.includes(emailServer)) {
        $("#contribution_payer_email").val(email.replace(emailDomain, "gmail.com"))
        return false
      } else if (commonlyMisspelledYahooServers.includes(emailServer)) {
        $("#contribution_payer_email").val(email.replace(emailDomain, "yahoo.com"))
        return false
      } else if (commonlyMisspelledMiscEmailServers.includes(emailServer)) {
        appendMisspellingParamsToPostRequest(email, "server")
        return true
      } else if (commonlyMisspelledNetEmailTLDs.includes(emailTLD)) {
        $("#contribution_payer_email").val(email.replace(emailTLD, "net"))
        return false
      } else if (commonlyMisspelledComEmailTLDs.includes(emailTLD)) {
        $("#contribution_payer_email").val(email.replace(emailTLD, "com"))
        return false
      } else if (commonlyMisspelledMiscEmailTLDs.includes(emailTLD)) {
        appendMisspellingParamsToPostRequest(email, "TLD")
        return true
      } else {
        return false
      }
    }

    function appendMisspellingParamsToPostRequest(misspelled_email, misspelled_part) {
      var emailDetails = {
        misspelled_email,
        misspelled_part
      }
      $.each(Object.keys(emailDetails), function(i, key) {
        $('<input />').attr('type', 'hidden').attr('name', key).attr('value', emailDetails[key]).appendTo('#contribution_form')
      })
    }
  </script><br>
</form>

Text Content

Sign in or create donor account


JOIN THE INNOVATION CHALLENGE!

In a time of great change, the challenge is to innovate! Your generous gift will
help FoundationCCC provide bold, entrepreneurial, and creative solutions to some
of the most challenging problems confronting California Community Colleges and
students today. Give now! FoundationCCC is a 501(c)(3) organization (EIN
68-0412350). Checks can be sent to FoundationCCC, Development, 1102 Q St., Ste.
4800, Sacramento, CA 95811. Please write in the memo line “Innovation
Challenge.”


JOIN THE INNOVATION CHALLENGE!

In a time of great change, the challenge is to innovate! Your generous gift will
help FoundationCCC provide bold, entrepreneurial, and creative solutions to some
of the most challenging problems confronting California Community Colleges and
students today. Give now!

FoundationCCC is a 501(c)(3) organization (EIN 68-0412350). Checks can be sent
to FoundationCCC, Development, 1102 Q St., Ste. 4800, Sacramento, CA 95811.
Please write in the memo line “Innovation Challenge.”

$2,500
$250
$25


Amount
Make this gift recurring
This gift will recur monthly

For how many years?
indefinitely 5 4 3 2 1
Message or comments

Name

First name

Last name

Email

Organization
What organization or school are you affiliated with?
Country
CanadaUnited KingdomUnited
States---------------------------------------------------------------------------------AfghanistanAlbaniaAlgeriaAmerican
SamoaAndorraAngolaAnguillaAntigua and
BarbudaArgentinaArmeniaArubaAustraliaAustriaAzerbaijanBahamasBahrainBangladeshBarbadosBelarusBelgiumBelizeBeninBermudaBhutanBoliviaBosnia
and HerzegovinaBotswanaBrazilBrunei DarussalamBulgariaBurkina
FasoBurundiCambodiaCameroonCanadaCape VerdeCayman IslandsCentral African
RepublicChadChileChinaColombiaComorosCongoCook IslandsCosta RicaCote
D'IvoireCroatiaCubaCyprusCzech RepublicDemocratic Republic of the
CongoDenmarkDjiboutiDominicaDominican RepublicEcuadorEgyptEl SalvadorEquatorial
GuineaEritreaEstoniaEthiopiaFalkland Islands (Malvinas)Faroe
IslandsFijiFinlandFranceFrench GuianaFrench
PolynesiaGabonGambiaGeorgiaGermanyGhanaGibraltarGreeceGreenlandGrenadaGuadeloupeGuamGuatemalaGuineaGuinea-BissauGuyanaHaitiHoly
See (Vatican City State)HondurasHong KongHungaryIcelandIndiaIndonesiaIran,
Islamic Republic
ofIraqIrelandIsraelItalyJamaicaJapanJordanKazakhstanKenyaKiribatiKorea,
Democratic People's Republic ofKuwaitKyrgyzstanLao People's Democratic
RepublicLatviaLebanonLesothoLiberiaLibyan Arab
JamahiriyaLiechtensteinLithuaniaLuxembourgMacaoMacedonia, the Former Yugoslav
Republic ofMadagascarMalawiMalaysiaMaldivesMaliMaltaMarshall
IslandsMartiniqueMauritaniaMauritiusMexicoMicronesia, Federated States
ofMoldova, Republic
ofMonacoMongoliaMontserratMoroccoMozambiqueMyanmarNamibiaNauruNepalNetherlandsNetherlands
AntillesNew CaledoniaNew ZealandNicaraguaNigerNigeriaNiueNorfolk IslandNorthern
Mariana IslandsNorwayOmanPakistanPalauPalestinePanamaPapua New
GuineaParaguayPeruPhilippinesPitcairnPolandPortugalPuerto
RicoQatarReunionRomaniaRussiaRwandaSaint HelenaSaint Kitts and NevisSaint
LuciaSaint Pierre and MiquelonSaint Vincent and the GrenadinesSamoaSan MarinoSao
Tome and PrincipeSaudi ArabiaSenegalSerbiaSeychellesSierra
LeoneSingaporeSlovakiaSloveniaSolomon IslandsSomaliaSouth AfricaSouth
KoreaSpainSri LankaSudanSurinameSvalbard and Jan
MayenSwazilandSwedenSwitzerlandSyrian Arab RepublicTaiwanTajikistanTanzania,
United Republic ofThailandTogoTokelauTongaTrinidad and
TobagoTunisiaTurkeyTurkmenistanTurks and Caicos IslandsTuvaluUgandaUkraineUnited
Arab EmiratesUnited KingdomUnited
StatesUruguayUzbekistanVanuatuVenezuelaVietnamVirgin Islands, BritishVirgin
Islands, U.s.Wallis and FutunaWestern SaharaYemenZambiaZimbabwe
ZIP code

I have read and agree to the terms of service and the privacy policy.*
or

*Indicates required field