Donations

The South Bay Lakers proudly assist non-profit organizations in Southern California by donating Lakers items to their fundraising events. Please read the donation guidelines below:
| Requesting organizations must be a valid 501(c)3 non-profit organization. |
| The non-profit organization or fundraising event must be based in Southern California. Priority is given to Los Angeles non-profit organizations. |
| All requests must be received at least 6 weeks prior to the fundraising event. |
| Non-profit organizations are only eligible to receive one donation per calendar year. |
| If you believe your non-profit organization is eligible to receive a donation, please take a moment to fill out the request form below. |
Visit our DonationX form to submit your donation request.
Please enter your first name.
Please enter your last name.
Please provide a valid email
Please enter 10 digits
Please enter a valid US ZIP code or Canadian postal code.
You must choose a purpose.
Please enter your company.
Please select an interest.
YES, I would like to receive information, offers and promotions from CvFirebirds.
By submitting, you hereby consent to our terms of use and privacy policy*You must agree before submitting.
By subscribing, I agree to receive commercial electronic messages from Oak View Group (including CvFirebirds), affiliate venues, and approved partners. This may include, but are not limited to, event announcements, ticket presales and on-sales, special promotions, contests, premium offerings and partner offers. You can unsubscribe at any time. document.addEventListener('DOMContentLoaded', function () { const FORM_ACTION = 'https://cloud.i.cvfirebirds.com/formSubmit'; const RECAPTCHA_SITE_KEY = '6LeX-b4tAAAAAKHgb7Yodv4xihYiGlwIfU8WTlbg'; // How long to wait for a reCAPTCHA token before submitting without one const RECAPTCHA_TIMEOUT_MS = 5000; const businessRadio = document.getElementById('business'); const personalRadio = document.getElementById('personal'); const companyGroup = document.getElementById('companyGroup'); const companyInput = document.getElementById('company'); const phoneInput = document.getElementById('phone'); const postalInput = document.getElementById('postal-code'); const form = document.getElementById('contactForm'); const emailInput = document.getElementById('email'); // Honeypot fields const favoriteArtistField = document.getElementById('favorite_artist'); const referenceCodeField = document.getElementById('reference_code'); // ── Mouse / touch movement detection ────────────────────────────────────── let hasHumanActivity = false; function markHumanActivity() { hasHumanActivity = true; form.setAttribute('action', FORM_ACTION); } document.addEventListener('mousemove', markHumanActivity, { once: true }); document.addEventListener('mousedown', markHumanActivity, { once: true }); document.addEventListener('keydown', markHumanActivity, { once: true }); document.addEventListener('touchstart', markHumanActivity, { once: true, passive: true }); document.addEventListener('touchmove', markHumanActivity, { once: true, passive: true }); // ────────────────────────────────────────────────────────────────────────── // Populate UTM fields from URL parameters function getParam(name) { try { const url = new URL(window.location.href); return url.searchParams.get(name); } catch (e) { return null; } } const utmFields = ["utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_id", "sfmc_id", "utm_bu"]; utmFields.forEach(param => { const field = document.getElementById(param); const value = getParam(param); if (field && value) field.value = value; }); // Toggle company field based on purpose selection function toggleCompanyField() { if (businessRadio.checked) { companyGroup.style.display = 'block'; companyInput.setAttribute('required', 'required'); } else { companyGroup.style.display = 'none'; companyInput.removeAttribute('required'); companyInput.value = ''; companyInput.classList.remove('is-invalid'); } } businessRadio.addEventListener('change', toggleCompanyField); personalRadio.addEventListener('change', toggleCompanyField); toggleCompanyField(); function restrictToLetters(input) { input.value = input.value.replace(/[^A-Za-z]/g, ''); } function capitalizeFirstLetter(input) { let v = input.value.trim(); if (v.length > 0) { input.value = v.charAt(0).toUpperCase() + v.slice(1).toLowerCase(); } } ['firstname', 'lastname'].forEach(id => { const fld = document.getElementById(id); fld.addEventListener('input', () => restrictToLetters(fld)); fld.addEventListener('blur', () => capitalizeFirstLetter(fld)); }); phoneInput.addEventListener('input', () => { let digits = phoneInput.value.replace(/[^0-9]/g, ''); // Strip a leading US country code that autofill often includes // (e.g. "+1 303-555-1234" -> "13035551234" -> "3035551234") if (digits.length === 11 && digits.startsWith('1')) { digits = digits.slice(1); } phoneInput.value = digits.slice(0, 10); }); postalInput.addEventListener('input', () => { postalInput.value = postalInput.value.toUpperCase().replace(/[^A-Z0-9 ]/g, ''); }); companyInput.addEventListener('blur', () => capitalizeFirstLetter(companyInput)); // Email domain validation — ported from TD Coliseum form const allowedDomains = [ 'gmail.com', 'yahoo.com', 'ymail.com', 'hotmail.com', 'outlook.com', 'live.com', 'msn.com', 'icloud.com', 'me.com', 'mac.com', 'protonmail.com', 'zoho.com', 'aol.com', 'comcast.net', 'verizon.net', 'sbcglobal.net', 'att.net', 'cox.net', 'rogers.com', 'bell.net', 'videotron.ca', 'shaw.ca', 'cogeco.ca', 'eastlink.ca', 'telus.net', 'gov', 'edu', 'ca' ]; form.addEventListener('submit', function (e) { e.preventDefault(); // ── Bot checks ──────────────────────────────────────────────────────────── // 1. Honeypot fields if (favoriteArtistField.value !== '' || referenceCodeField.value !== '') { console.log('Honeypot triggered - possible bot submission'); return false; } // 2. Human activity check if (!hasHumanActivity) { console.log('No human activity detected - possible bot submission'); return false; } // 3. Multiple radio buttons selected const purposeRadios = document.querySelectorAll('input[name="purpose"]'); const checkedPurposes = Array.from(purposeRadios).filter(r => r.checked); if (checkedPurposes.length > 1) { console.log('Multiple radio buttons selected - possible bot submission'); return false; } const interestRadios = document.querySelectorAll('input[name="interests"]'); const checkedInterests = Array.from(interestRadios).filter(r => r.checked); if (checkedInterests.length > 1) { console.log('Multiple radio buttons selected - possible bot submission'); return false; } let hasError = false; // Email validation — now enforces allowed domain list (ported from TD Coliseum form) let emailVal = emailInput.value.trim().toLowerCase(); emailInput.value = emailVal; const basicEmailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; let isEmailValid = basicEmailPattern.test(emailVal); if (isEmailValid) { const domain = emailVal.split('@')[1]; const isAllowed = allowedDomains.some(d => domain === d || domain.endsWith('.' + d) ); if (!isAllowed) { isEmailValid = false; } } if (!isEmailValid) { hasError = true; emailInput.classList.add('is-invalid'); emailInput.nextElementSibling.textContent = 'Please enter a valid email address'; } else { emailInput.classList.remove('is-invalid'); } // Phone validation const phoneVal = phoneInput.value.trim(); const phonePattern = /^\d{10}$/; if (!phonePattern.test(phoneVal)) { hasError = true; phoneInput.classList.add('is-invalid'); } else { phoneInput.classList.remove('is-invalid'); } // Postal code validation const postalVal = postalInput.value.trim().toUpperCase(); postalInput.value = postalVal; const usZipPattern = /^\d{5}(-\d{4})?$/; const caPostalPattern = /^[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d$/; if (!usZipPattern.test(postalVal) && !caPostalPattern.test(postalVal)) { hasError = true; postalInput.classList.add('is-invalid'); } else { postalInput.classList.remove('is-invalid'); } form.classList.add('was-validated'); if (form.checkValidity() && !hasError) { const utmCampaign = getParam("utm_campaign") || "no-campaign"; const uniqueId = "ID-" + utmCampaign + "-" + Date.now() + "-" + Math.floor(Math.random() * 10000); const submissionField = document.getElementById('submission_id'); if (submissionField) { submissionField.value = uniqueId; console.log("Submission ID set to:", uniqueId); } const thanksField = form.querySelector("input[name='thanks']"); if (thanksField) { const baseUrl = thanksField.value.split("?")[0]; thanksField.value = baseUrl + "?id=" + encodeURIComponent(uniqueId); console.log("Thank you URL updated to:", thanksField.value); } // ── reCAPTCHA + submit ────────────────────────────────────────────────── // Every path below ends in finish(), so a real submission is never // silently swallowed: the script being blocked (ad blocker / CSP), // execute() rejecting or throwing, or the token never coming back. let done = false; let fallbackTimer = null; function finish(token) { if (done) return; // token and timeout can race; only submit once done = true; clearTimeout(fallbackTimer); if (token) { // Fill both token fields so the processor finds it under either name document.getElementById('recaptcha-token').value = token; document.getElementById('recaptchaResponse').value = token; console.log("reCAPTCHA token obtained"); } HTMLFormElement.prototype.submit.call(form); } fallbackTimer = setTimeout(function () { console.log("reCAPTCHA timed out, submitting without a token"); finish(null); }, RECAPTCHA_TIMEOUT_MS); if (typeof grecaptcha === 'undefined' || typeof grecaptcha.ready !== 'function') { console.log("reCAPTCHA not loaded, submitting without a token"); finish(null); return; } try { grecaptcha.ready(function () { try { grecaptcha.execute(RECAPTCHA_SITE_KEY, { action: 'submit_form' }).then( function (token) { finish(token); }, function (err) { console.log("reCAPTCHA failed, submitting without a token:", err); finish(null); } ); } catch (err) { console.log("reCAPTCHA threw, submitting without a token:", err); finish(null); } }); } catch (err) { console.log("reCAPTCHA threw, submitting without a token:", err); finish(null); } } }); });